2012-09-06 21 views
5

Tengo un problema con ocultar el elemento de vista previa en el complemento de imagen de CKEditor. Necesito un cuadro de diálogo de imagen muy simple con solo campo de entrada para fuente de imagen y formulario con botón para subir imágenes. Así que eliminan elementos innecesarios que utilizan estos valores de configuración personalizados:Eliminar htmlPreview en el complemento de imagen de 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'); 
    } 
}); 

Los problemas comienzan cuando intento de ocultar elemento htmlPreview. Si simplemente agrego infoTab.remove('htmlPreview ');, se producirá un error: Uncaught TypeError: Cannot call method 'setStyle' of null debido a dependencias de código para el elemento eliminado. Googled mucho y parece que hay dos maneras de resolver este problema - editar manualmente el código fuente de complemento como está escrito there (

supongo que la única solución es eliminar todas las funciones javascript de imagen/cuadros de diálogo /image.js que hacen referencia a estos objetos hTML, que ha extraído.

yo tratamos de seguir este consejo, pero no podían editar el archivo de origen y sin errores posteriores) o escribir mi propia. Por supuesto, simplemente puedo agregar algunas reglas CSS y ocultar elementos, pero supongo que no es una buena idea. Este problema es lo suficientemente antiguo y estoy seguro de que hay una buena solución, pero no pude encontrarlo. Espero que me ayudes. Gracias de antemano.

P.S. Tengo la última versión de CKEditor - 3.6.4.

Respuesta

7

Debido a la forma en que el diálogo de la imagen está escrito, no se puede quitar fácilmente la vista previa sin tener que ajustar aún más el resto del archivo para eliminar también todas sus referencias.

Yo te sugeriría que usar mi plugin de configuración (o escribir código similar) como se describe aquí: http://alfonsoml.blogspot.com.es/2012/04/hide-dialog-fields-in-ckeditor.html

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

Puede descargar el plug-in de mi blog o si ha cambiado a CKEditor 4, añadir a su construcción: http://ckeditor.com/addon/confighelper

+0

Todavía es una solución fácil y efectiva el 14 de noviembre. El complemento (disponible en el sitio ckeditor como vinculado) me ha ahorrado horas y horas. Gracias @AlfonsoML –

0

u puede tratar infoTab.remove('htmlPreview');

+0

No ha leído mi pregunta cuidadosamente. Mencioné que este método no funciona. –

Cuestiones relacionadas