2012-10-01 14 views
5

En mi CKEditor eliminé las entradas 'linkType' y 'protocolo' del diálogo de enlace.CKEditor diálogo de enlace eliminación de protocolo

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

    }); 

Sin embargo, evertype que escriba algo así como https://google.com tan pronto como estoy escribiendo en el 'g' https: // consigue quitado.
Comprobé la salida y siempre dice http: // sin tener en cuenta la entrada.

¿Cómo puedo desactivar este estúpido comportamiento?

Respuesta

11

Después de mucha investigación, depuración y ajustes, ¡finalmente logré lograr esto!

Así es como lo hago:

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

Gracias por compartir! – flu

+0

Soy nuevo en el uso de CKeditor. Me pregunto dónde debería poner este código, ¿está dentro del link.js o simplemente lo puse en mi página? – user2699175

+1

@ user2699175 Agrega el código de arriba al 'config.js' que encuentras en la raíz de ckeditor. –

0

Para la gente perezosa como yo, acaba de hacer una rápida truco archivo central:

  1. abiertas plugins/enlace/diálogos/link.js
  2. en la versión minimizada encontrar d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
  3. eliminar http|https|ftp|
  4. excepto archivo, subirlo a su servidor

Si no funciona después de la recarga, esto podría ser un problema de caché. Abra el navegador en modo privado, navegue hasta su navegador e inténtelo de nuevo. Buena suerte.

0

Recientemente he encontrado una manera de ocultar el Tipo Enlace por lo que no tiene que quitar totalmente (creo que trabaja para el Protocolo también, pero no probado) que está junto establecimiento de estilo a dispaly : none como los siguientes:

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

me respondió la misma pregunta here

esperanza esta ayuda a alguien!

1

Así es como me quita el protocolo en 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() }; 
     }; 
    } 
}); 
Cuestiones relacionadas