2012-10-01 10 views
5

Nel mio CKEditor ho rimosso gli input "linkType" e "protocol" della finestra di dialogo di collegamento.CK Editor finestra di dialogo di collegamento rimozione protocollo

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

    }); 

Tuttavia, evertype ho digitare qualcosa come https://google.com non appena digito nel 'g' https: // viene rimosso.
Ho controllato l'output e dice sempre http: // ignorando l'input.

Come posso disattivare questo stupido comportamento?

risposta

11

Dopo molte ricerche, debugging e tweaking, sono finalmente riuscito a tirarlo fuori !!!

Ecco come lo faccio:

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

Grazie per la condivisione! – flu

+0

Sono nuovo nell'utilizzo di CKeditor. Mi chiedo dove dovrei inserire questo codice? È all'interno del link.js? O semplicemente inserito nella mia pagina? – user2699175

+1

@ user2699175 Aggiungi il codice sopra al 'config.js' che trovi nella radice di ckeditor. –

1

Ho paura che non ci sia modo di cambiarlo. Devi modificare manualmente a few lines of the code per farlo funzionare a modo tuo.

0

Per i più pigri come me, basta fare un rapido file core mod:

  1. aperti plugins/link/finestre di dialogo/link.js
  2. nella versione ridotta trovare d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
  3. rimuovere http|https|ftp|
  4. file di salvataggio, caricarlo al tuo server

Se non funziona dopo il ricaricamento, questo potrebbe essere un problema di cache. Apri il browser in modalità privata, naviga verso il tuo ckeditor e riprova. In bocca al lupo.

0

ho trovato di recente un modo per nascondere il tipo di collegamento in modo da non dover rimuovere totalmente (penso che funziona per il protocollo pure, ma non provato), che è di gran impostare lo stile di dispaly : none come il seguente:

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

ho risposto alla stessa domanda here

Spero che questo aiuto a qualcuno!

1

Ecco come ho rimosso il protocollo in 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() }; 
     }; 
    } 
}); 
Problemi correlati