2012-10-01 50 views
5

Trong CKEditor của tôi, tôi đã loại bỏ đầu vào 'linkType' và 'protocol' của hộp thoại liên kết.Giao thức xóa hộp thoại liên kết CKEditor

CKEDITOR.on('dialogDefinition', function(ev) 
    { 
     var dialogName = ev.data.name; 
     var dialogDefinition = ev.data.definition; 

     if (dialogName == 'link') 
     { 
      var infoTab = dialogDefinition.getContents('info'); 
      infoTab.remove('linkType'); 
      infoTab.remove('protocol'); 
     } 

    }); 

Tuy nhiên, evertype tôi nhập một cái gì đó như https://google.com ngay khi tôi nhập vào 'g' https: // bị xóa.
Tôi đã kiểm tra đầu ra và nó luôn nói http: // bỏ qua đầu vào.

Làm cách nào để tắt hành vi ngu ngốc này?

Trả lời

11

Sau nhiều nghiên cứu, gỡ lỗi và chỉnh sửa, cuối cùng tôi đã xoay xở để loại bỏ điều này!

Đây là cách tôi làm điều đó:

CKEDITOR.on('dialogDefinition', function(e) { 
    // NOTE: this is an instance of CKEDITOR.dialog.definitionObject 
    var dd = e.data.definition; 

    if (e.data.name === 'link') { 
     dd.minHeight = 30; 

     // remove the unwanted tabs 
     dd.removeContents('advanced'); 
     dd.removeContents('target'); 
     dd.removeContents('upload'); 

     // remove all elements from the 'info' tab 
     var tabInfo = dd.getContents('info'); 
     while (tabInfo.elements.length > 0) { 
      tabInfo.remove(tabInfo.elements[0].id); 
     } 

     // add a simple URL text field 
     tabInfo.add({ 
      type : 'text', 
      id : 'urlNew', 
      label : 'URL', 
      setup : function(data) { 
       var value = ''; 
       if (data.url) { 
        if (data.url.protocol) { 
         value += data.url.protocol; 
        } 
        if (data.url.url) { 
         value += data.url.url; 
        } 
       } else if (data.email && data.email.address) { 
        value = 'mailto:' + data.email.address; 
       } 
       this.setValue(value); 
      }, 
      commit : function(data) { 
       data.url = { protocol: '', url: this.getValue() }; 
      } 
     }); 
    } 
}); 
+0

Cảm ơn đã chia sẻ! – flu

+0

Tôi mới sử dụng CKeditor. Tôi tự hỏi tôi nên đặt mã này ở đâu? Có phải là bên trong link.js? Hoặc chỉ cần đặt bên trong trang của tôi? – user2699175

+1

@ user2699175 Thêm mã ở trên vào 'config.js' mà bạn tìm thấy trong thư mục gốc của ckeditor. –

1

Tôi e rằng không có cách nào để thay đổi. Bạn phải chỉnh sửa thủ công a few lines of the code để làm cho nó hoạt động theo cách của bạn.

0

Đối với những người lười biếng như tôi, chỉ cần làm một tập tin lõi nhanh hack:

  1. mở plugins/link/hộp thoại/link.js
  2. trong phiên bản thu nhỏ tìm thấy d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
  3. xóa http|https|ftp|
  4. lưu tệp, tải tệp lên đến máy chủ của bạn

Nếu nó không hoạt động sau khi tải lại, đây có thể là sự cố bộ nhớ cache. Mở trình duyệt ở chế độ riêng tư, điều hướng đến ckeditor của bạn và thử lại. Chúc may mắn.

0

Tôi đã tìm thấy thời gian gần đây là một cách để che giấu sự Link Loại vì vậy bạn không cần phải gỡ bỏ nó hoàn toàn (Tôi nghĩ rằng nó hoạt động cho Nghị định thư là tốt, nhưng không thử nghiệm nó) mà là do thiết lập phong cách để dispaly : none như sau:

infoTab.get('linkType').style = 'display: none'; 

tôi trả lời cùng một câu hỏi here

Hope trợ giúp này một ai đó!

1

Đây là cách tôi loại bỏ các giao thức trong v4.5.1:

CKEDITOR.on('dialogDefinition', function(ev) { 
    var dialogName = ev.data.name; 
    var dialogDefinition = ev.data.definition; 

    if (dialogName === 'link') { 
     var infoTab = dialogDefinition.getContents('info'); 
     infoTab.remove('protocol'); 

     var url = infoTab.get('url'); 
     url.onKeyUp = function(){}; 
     url.setup = function(data) { 
      this.allowOnChange = false; 
      if (data.url) { 
       var value = ''; 
       if (data.url.protocol) { 
        value += data.url.protocol; 
       } 
       if (data.url.url) { 
        value += data.url.url; 
       } 
       this.setValue(value); 
      } 
      this.allowOnChange = true; 
     }; 
     url.commit = function(data) { 
      data.url = { protocol: '', url: this.getValue() }; 
     }; 
    } 
}); 
Các vấn đề liên quan