La documentación oficial es menos clara: ¿cuál es la forma correcta de integrar un navegador / cargador de archivos personalizado con CKEditor? (v3 - no FCKEditor)
Comience registrando su navegador / cargador personalizado cuando cree una instancia de CKEditor. Puede designar diferentes URL para un navegador de imágenes frente a un navegador de archivos general.
<script type="text/javascript">
CKEDITOR.replace('content', {
filebrowserBrowseUrl : '/browser/browse/type/all',
filebrowserUploadUrl : '/browser/upload/type/all',
filebrowserImageBrowseUrl : '/browser/browse/type/image',
filebrowserImageUploadUrl : '/browser/upload/type/image',
filebrowserWindowWidth : 800,
filebrowserWindowHeight : 500
});
</script>
Su código personalizado recibirá un parámetro GET llamado CKEditorFuncNum. Guárdelo, esa es su función de devolución de llamada. Digamos que lo pones en $callback
.
Cuando alguien selecciona un archivo, ejecute este JavaScript para informar a CKEditor qué archivo se seleccionó:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
Donde "url" es la URL del archivo que eligieron. Un tercer parámetro opcional puede ser el texto que desea que se muestre en un cuadro de diálogo de alerta estándar, como "archivo ilegal" o algo así. Establezca la URL en una cadena vacía si el tercer parámetro es un mensaje de error.
La pestaña "cargar" de CKEditor enviará un archivo en el campo "cargar" - en PHP, que va a $ _FILES ['cargar']. Lo que CKEditor quiere que su servidor genere es un bloque completo de JavaScript:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;
Nuevamente, debe darle ese parámetro de devolución de llamada, la URL del archivo y, opcionalmente, un mensaje. Si el mensaje es una cadena vacía, no se mostrará nada; si el mensaje es un error, la URL debe ser una cadena vacía.
La documentación oficial de CKEditor está incompleta sobre todo esto, pero si sigue lo anterior, funcionará como un campeón.
He publicado un pequeño tutorial sobre la integración del FileBrowser disponible en el antiguo FCKEditor en CKEditor.
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
Contiene instrucciones paso a paso para hacerlo y es bastante simple. Espero que cualquiera que esté buscando esto encuentre útil este tutorial.
fuente
Yo solo pasé por el proceso de aprendizaje. Lo descubrí, pero estoy de acuerdo en que la documentación está escrita de una manera que me intimidaba. El gran momento "ajá" para mí fue entender que para navegar, todo lo que CKeditor hace es abrir una nueva ventana y proporcionar algunos parámetros en la URL. Le permite agregar parámetros adicionales, pero tenga en cuenta que deberá usar encodeURIComponent () en sus valores.
Llamo al navegador y al cargador con
Para el navegador , en la ventana abierta (navegar.php) usa php & js para proporcionar una lista de opciones y luego, en el controlador onclick proporcionado, llama a una función CKeditor con dos argumentos, la url / ruta a la imagen seleccionada y CKEditorFuncNum proporcionado por CKeditor en la URL:
De manera similar, el cargador simplemente llama a la URL que proporcionas, por ejemplo, upload.php , y nuevamente proporciona $ _GET ['CKEditorFuncNum']. El objetivo es un iframe, por lo que, después de guardar el archivo de $ _FILES, pasa sus comentarios a CKeditor de la siguiente manera:
A continuación se muestra un script de navegador personalizado fácil de entender. Si bien no permite que los usuarios naveguen por el servidor, sí le permite indicar de qué directorio extraer los archivos de imagen al llamar al navegador.
Todo es una codificación bastante básica, por lo que debería funcionar en todos los navegadores relativamente modernos.
CKeditor simplemente abre una nueva ventana con la URL proporcionada
// ========= código completo a continuación para navegar.php
fuente
Pasé un tiempo tratando de resolver esto y esto es lo que hice. Lo he desglosado de manera muy simple, ya que eso es lo que necesitaba.
Directamente debajo del área de texto de su ckeditor, ingrese el archivo de carga como este >>>>
'y luego agregue su archivo de carga, aquí está el mío que está escrito en ASP. Si está utilizando PHP, etc., simplemente reemplace el ASP con su script de carga, pero asegúrese de que la página muestre lo mismo.
fuente
Este es el enfoque que he usado. Es bastante sencillo y funciona bien.
En el directorio raíz del editor CK hay un archivo llamado config.js
Agregué esto (no necesitas las cadenas de consulta, esto es solo para nuestro administrador de archivos). También incluí algunos aspectos y cambios de los botones predeterminados que se muestran:
Entonces, nuestro administrador de archivos llama a esto:
fuente
Un artículo en zerokspot titulado Devoluciones de llamada personalizadas del navegador de archivos en CKEditor 3.0 maneja esto. La sección más relevante se cita a continuación:
fuente
Comience registrando su navegador / cargador personalizado cuando cree una instancia de CKEditor.
Código para el archivo de carga (ckFileUpload.php) y coloque el archivo de carga en el directorio raíz de su proyecto.
La documentación de Ck-editor no está clara después de realizar una gran cantidad de I + D para cargar archivos personalizados, finalmente encontré esta solución. Funciona para mí y espero que también sea útil para otros.
fuente
Para las personas que se preguntan acerca de una implementación de Servlet / JSP, así es como lo hacen ... También explicaré la imagen de carga a continuación.
1) Primero asegúrese de haber agregado el navegador de archivos y la variable uploadimage a su archivo config.js. Haga que también tenga la carpeta uploadimage y filebrowser dentro de la carpeta de complementos.
2) Esta parte es donde me hizo tropezar:
La documentación del sitio web de Ckeditor dice que debe utilizar estos dos métodos:
Entonces, si ha inicializado ckeditor en page editor.jsp, entonces necesita crear un navegador de archivos (con html básico / css / javascript) en la página filebrowser.jsp .
editor.jsp (todo lo que necesita es esto en su etiqueta de script) Esta página abrirá filebrowser.jsp en una mini ventana cuando haga clic en el botón de buscar servidor.
filebrowser.jsp (es el navegador de archivos personalizado que construyó y que contendrá los métodos mencionados anteriormente)
3) El Servlet FileBrowser
4) Servlet UploadImage
Regrese a su archivo config.js para ckeditor y agregue la siguiente línea:
Luego puede arrastrar y soltar archivos también:
Y eso es todo amigos. Espero que ayude a alguien.
fuente