2012-10-01 4 views
5

W moim CKEdycierze usunąłem wejścia "linkType" i "protocol" w oknie dialogowym łącza.Okno dialogowe usuwania łącza CKEditor link

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'); 
     } 

    }); 

Jednak evertype wpisaniu w coś https://google.com jak tylko wpisać w „g” https: // zostanie usunięty.
Sprawdziłem dane wyjściowe i zawsze mówi http: // pomijając dane wejściowe.

Jak mogę zmienić to głupie zachowanie?

Odpowiedz

11

Po wielu badaniach, debugowaniu i poprawianiu udało mi się w końcu to zrobić !!!

Oto jak to zrobić:

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

Dziękujemy za udostępnienie! – flu

+0

Jestem nowy w korzystaniu z programu CKeditor. Zastanawiam się, gdzie powinienem umieścić ten kod? Czy jest to wewnątrz link.js? Lub po prostu umieścić na mojej stronie? – user2699175

+1

@ user2699175 Dodaj powyższy kod do pliku 'config.js', który znajduje się w katalogu głównym programu ckeditor. –

0

dla leniwych ludzi takich jak ja, po prostu zrobić szybkie plików rdzeń Hack:

  1. otwarte plugins/link/dialogi/link.js
  2. w wersji zminimalizowanej znaleźć d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
  3. usunąć http|https|ftp|
  4. Zapisz plik, prześlij go na swój serwer

Jeśli nie działa po ponownym załadowaniu, może to być problem z pamięcią podręczną. Otwórz przeglądarkę w trybie prywatnym, przejdź do swojego cedenta i spróbuj ponownie. Powodzenia.

0

Znalazłem niedawno sposób, aby ukryć typ łącza, więc nie trzeba go usunąć całkowicie (myślę, że pracuje dla protokołu jak dobrze, ale go nie testowane), który jest ustawienie styl dispaly : none jak:

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

Odpowiedziałem samo pytanie here

nadzieję, że to pomaga ktoś!

1

Oto jak usunąłem protokół w 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() }; 
     }; 
    } 
});