Tôi đang sử dụng CKEditor trên trang web và tôi cần có thể đặt thuộc tính dữ liệu đặc biệt trên một số liên kết được tạo thông qua trình chỉnh sửa. Người dùng sẽ chỉ ra rằng họ cần thuộc tính đặc biệt được đặt trên liên kết bằng cách chọn hộp kiểm trong hộp thoại liên kết. Tôi đã quản lý để thêm hộp kiểm vào hộp thoại liên kết với mã sau:Chỉnh sửa hộp thoại liên kết CKEditor để thêm thuộc tính tùy chỉnh vào liên kết
CKEDITOR.on('dialogDefinition', function(ev) {
if (ev.data.name == "link") {
var info = dialog.getContents("info");
info.elements.push({
type: "vbox",
id: "urlOptions",
children: [{
type: "hbox",
children: [{
id: "button",
type: "checkbox",
label: "Button",
commit: function(data) {
data.button = this.getValue()
console.log("commit", data.button, data);
},
setup: function(data) {
this.setValue(data.button);
console.log("setup", data.button, data);
}
}]
}]
});
}
});
Bây giờ tôi có hai vấn đề. Điều đầu tiên là mặc dù tôi thêm mã vào các hàm commit
và setup
sẽ lưu trạng thái của hộp kiểm, nó không hoạt động. Nó giống như là data
không thể giữ bất kỳ thông số nào khác nhưng thông số ở đó theo mặc định.
Vấn đề thứ hai là tôi không biết cách thêm/xóa thuộc tính dữ liệu trên các liên kết của mình. Dường như với tôi rằng tôi nên làm điều đó trong gọi lại onOk
của tôi trên hộp thoại, tuy nhiên, hộp thoại liên kết đã có một cuộc gọi lại onOk
, vì vậy tôi không chắc chắn làm thế nào tôi nên được tiến hành. Tôi, tất nhiên, không muốn sửa đổi bất kỳ tập tin của CKEditor trực tiếp.
Làm cách nào để tôi có thể thực hiện những việc này?
Điều này rất tốt, nhưng tôi lo lắng về việc cập nhật CKEditor và ghi đè những thay đổi này sau đó. Bạn có chắc chắn không có cách nào để sửa đổi tập tin? –
Tôi không nghĩ có một cách khác để làm điều này. Tôi thấy quan điểm của bạn, nhưng bạn chỉ đang thực hiện 3 thay đổi nhỏ cho 1 tệp trong mã nguồn sẽ mất 1 phút để thực hiện lại. Bạn luôn có thể sao lưu thư mục "liên kết" và coi đó là plugin. Vì vậy, nếu bạn cần cập nhật, bạn sẽ luôn giải nén tệp đó bao gồm chức năng của riêng bạn. –
@ Xeon06 bạn đã thử cái này chưa? Đọc mã nguồn của CKEditor, hộp thoại liên kết không hiển thị các chức năng này với cấu hình chính. Sửa đổi mã nguồn là giải pháp duy nhất. –