2012-09-06 16 views
5

Tôi gặp sự cố khi ẩn phần tử xem trước trong plugin hình ảnh của CKEditor. Tôi cần một hộp thoại hình ảnh rất đơn giản chỉ với trường nhập cho nguồn hình ảnh và biểu mẫu có nút để tải lên hình ảnh. Vì vậy, tôi loại bỏ các yếu tố không cần thiết sử dụng các thiết lập cấu hình tùy chỉnh:Xóa htmlPreview trong plugin hình ảnh của CKEditor

CKEDITOR.on('dialogDefinition', function(ev) 
{ 
    var dialogName = ev.data.name; 
    var dialogDefinition = ev.data.definition; 
    if (dialogName == 'image'){ 
     dialogDefinition.removeContents('advanced'); 
     dialogDefinition.removeContents('Link'); 
     var infoTab = dialogDefinition.getContents('info'); 
     infoTab.remove('ratioLock'); 
     infoTab.remove('txtHeight');   
     infoTab.remove('txtWidth');   
     infoTab.remove('txtBorder'); 
     infoTab.remove('txtHSpace'); 
     infoTab.remove('txtVSpace'); 
     infoTab.remove('cmbAlign'); 
     infoTab.remove('txtAlt'); 
    } 
}); 

Vấn đề bắt đầu khi tôi cố gắng để che giấu yếu tố htmlPreview. Nếu tôi chỉ cần thêm infoTab.remove('htmlPreview ');, lỗi sẽ xảy ra: Uncaught TypeError: Cannot call method 'setStyle' of null do phụ thuộc mã cho phần tử đã xóa. Tôi googled rất nhiều và có vẻ như rằng có hai cách để giải quyết vấn đề này - bằng tay chỉnh sửa mã nguồn của plugin như được viết there (

Tôi đoán là giải pháp duy nhất là để loại bỏ tất cả các chức năng javascript từ image/hộp thoại /image.js tham chiếu đến các đối tượng html, mà bạn gỡ bỏ.

tôi đã cố gắng làm theo lời khuyên này, nhưng không thể chỉnh sửa tập tin nguồn mà không có lỗi tiếp theo) hoặc gửi thư riêng của tôi. Tất nhiên, tôi có thể chỉ cần thêm một số quy tắc css và làm cho các yếu tố ẩn, nhưng tôi cho rằng đó không phải là một ý tưởng tốt. Vấn đề này là đủ lớn và tôi chắc chắn có một giải pháp tốt, nhưng tôi đã không tìm thấy nó. Hy vọng bạn sẽ giúp tôi. Cảm ơn bạn trước.

P.S. Tôi có phiên bản mới nhất của CKEditor - 3.6.4.

Trả lời

7

Do cách mà hộp thoại hình ảnh được viết, bạn không thể dễ dàng loại bỏ các bản xem trước mà không điều chỉnh thêm phần còn lại của tập tin cũng để loại bỏ tất cả các tài liệu tham khảo của nó.

tôi sẽ đề nghị bạn sử dụng plugin cấu hình của tôi (hoặc viết mã tương tự) như mô tả ở đây: http://alfonsoml.blogspot.com.es/2012/04/hide-dialog-fields-in-ckeditor.html

config.hideDialogFields="image:info:htmlPreview"; 

Bạn có thể tải plugin từ blog của tôi hoặc nếu bạn đã chuyển sang ckeditor 4, thêm nó để xây dựng của bạn: http://ckeditor.com/addon/confighelper

+0

Đây vẫn là một giải pháp dễ dàng và hiệu quả trong ngày 14 tháng 11. Plugin (có sẵn từ trang web ckeditor như được liên kết) đã lưu tôi giờ và giờ. Cảm ơn @AlfonsoML –

0

u có thể thử infoTab.remove('htmlPreview');

+0

Bạn chưa đọc kỹ câu hỏi của mình. Tôi đã đề cập phương pháp này không hoạt động. –