Nhúng trình soạn thảo
Chế độ xem và quyền
Chế độ edit và view, cách tính kết nối, các công tắc in, tải về, chép, và cùng sửa với nhiều chế độ trên một tài liệu.
Lớp nhúng v1 có hai chế độ và một nhóm công tắc giao diện. Quyền thật (ai được mở tệp nào) do máy chủ của bạn quyết định lúc ký config; O3O chỉ thực thi những gì config nói.
Hai chế độ#
| editor.mode | Người dùng làm được | Tính kết nối | Ghi chú |
|---|---|---|---|
edit | Xem, sửa, lưu, cùng sửa với người khác | Có, 1 kết nối mỗi phiên | Chạm trần thì phiên mới bị hạ xuống view. |
view | Chỉ xem (và in, tải về, chép nếu ui cho phép) | Không | Luôn mở được, kể cả khi đã chạm trần. |
Một người mở ba tài liệu ở chế độ sửa là ba kết nối; ba người cùng sửa một tài liệu cũng là ba kết nối. Chi tiết: cách đếm kết nối.
Công tắc giao diện#
| Trường ui | Thuộc tính WOPI tương ứng | Tác dụng khi false |
|---|---|---|
print | HidePrintOption, DisablePrint | Ẩn và chặn in. |
export | HideExportOption, DisableExport | Ẩn và chặn tải về dưới định dạng khác. |
copy | DisableCopy | Chặn chép nội dung ra ngoài khung. |
saveButton | HideSaveOption | Ẩn lệnh lưu; tự lưu vẫn chạy. |
userList | HideUserList | Ẩn danh sách người cùng sửa. |
closeButton (true) | ClosePostMessage | (khi true) hiện nút đóng và phát onClose. |
Cùng sửa và trộn chế độ#
Mọi phiên có cùng document.key cùng làm việc trên một tài liệu, mỗi người một editor.user.id. Người sửa và người xem có thể cùng lúc: người xem thấy thay đổi của người sửa theo thời gian thực.
<div id="editor-a" style="height: 45vh"></div>
<div id="editor-b" style="height: 45vh"></div>
<script src="http://localhost:8080/o3o/api.js"></script>
<script>
// Cùng một key = cùng một tài liệu. An sửa (1 kết nối), Bình chỉ xem (không tính).
const doc = { url: "http://localhost:8080/o3o/demo/sample.docx", title: "sample.docx", fileType: "docx", key: "coedit-demo-1" };
new O3O.Editor("editor-a", { document: doc, editor: { mode: "edit", lang: "vi", user: { id: "u-an", name: "An" } } });
new O3O.Editor("editor-b", {
document: doc,
editor: { mode: "view", lang: "vi", user: { id: "u-binh", name: "Bình" } },
ui: { print: false, export: false, copy: false } // người xem không in, không tải về, không chép ra ngoài
});
</script>Đổi chế độ khi đang mở#
editor.setReadOnly(true | false) lưu thay đổi nếu có, đổi chế độ ở gate (POST /o3o/embed/session/{id}/mode) rồi nạp lại khung. Chuyển sang sửa có xét trần kết nối.
document.getElementById("toggle").onchange = async (ev) => {
const { mode } = await editor.setReadOnly(!ev.target.checked); // lưu thay đổi nếu có, rồi nạp lại khung
if (ev.target.checked && mode === "view") {
ev.target.checked = false; // đã chạm trần: vẫn chỉ đọc, onLimitReached đã phát
}
};