A documentação oficial é menos do que clara - qual é a maneira correta de integrar um navegador / uploader de arquivo personalizado com o CKEditor? (v3 - não FCKEditor)
Comece registrando seu navegador / uploader personalizado ao instanciar o CKEditor. Você pode designar URLs diferentes para um navegador de imagem e um navegador de arquivo geral.
<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>
Seu código personalizado receberá um parâmetro GET chamado CKEditorFuncNum. Salve - essa é a sua função de retorno de chamada. Digamos que você coloque em $callback
.
Quando alguém selecionar um arquivo, execute este JavaScript para informar ao CKEditor qual arquivo foi selecionado:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
Onde "url" é o URL do arquivo que eles escolheram. Um terceiro parâmetro opcional pode ser o texto que você deseja exibir em uma caixa de diálogo de alerta padrão, como "arquivo ilegal" ou algo assim. Defina url como uma string vazia se o terceiro parâmetro for uma mensagem de erro.
A aba "upload" do CKEditor irá submeter um arquivo no campo "upload" - em PHP, que vai para $ _FILES ['upload']. O que o CKEditor deseja que seu servidor produza é um bloco JavaScript completo:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;
Novamente, você precisa fornecer esse parâmetro de retorno de chamada, a URL do arquivo e, opcionalmente, uma mensagem. Se a mensagem for uma string vazia, nada será exibido; se a mensagem for um erro, o url deve ser uma string vazia.
A documentação oficial do CKEditor está incompleta em tudo isso, mas se você seguir o acima, ela funcionará como um campeão.
Publiquei um pequeno tutorial sobre a integração do FileBrowser disponível no antigo FCKEditor no CKEditor.
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
Ele contém instruções passo a passo para fazer isso e é muito simples. Espero que qualquer pessoa que esteja procurando por isso considere este tutorial útil.
fonte
Acabei de passar pelo processo de aprendizagem sozinho. Eu descobri, mas concordo que a documentação foi escrita de uma forma que foi meio intimidante para mim. O grande momento "aha" para mim foi entender que, para navegar, tudo que o CKeditor faz é abrir uma nova janela e fornecer alguns parâmetros na url. Ele permite que você adicione parâmetros adicionais, mas saiba que você precisará usar encodeURIComponent () em seus valores.
Eu chamo o navegador e o uploader com
Para o navegador , na janela aberta (browse.php) você usa php & js para fornecer uma lista de opções e, em seguida, em seu manipulador onclick fornecido, você chama uma função CKeditor com dois argumentos, o url / caminho para a imagem selecionada e CKEditorFuncNum fornecido por CKeditor no url:
Simarly, o uploader simplesmente chama a url que você fornece, por exemplo, upload.php , e novamente fornece $ _GET ['CKEditorFuncNum']. O destino é um iframe, então, depois de salvar o arquivo de $ _FILES, você passa seu feedback para o CKeditor da seguinte forma:
Abaixo está um script de navegador personalizado simples de entender. Embora não permita que os usuários naveguem no servidor, permite indicar de qual diretório extrair os arquivos de imagem ao chamar o navegador.
É uma codificação bastante básica, por isso deve funcionar em todos os navegadores relativamente modernos.
CKeditor simplesmente abre uma nova janela com o url fornecido
// ========= código completo abaixo para browse.php
fonte
Passei um tempo tentando descobrir isso e aqui está o que eu fiz. Eu o dividi de forma muito simples, pois era disso que eu precisava.
Diretamente abaixo da área de texto do ckeditor, insira o arquivo de upload assim >>>>
'e, em seguida, adicione seu arquivo de upload, aqui está o meu que está escrito em ASP. Se você estiver usando PHP, etc., simplesmente substitua o ASP pelo seu script de upload, mas certifique-se de que a saída da página seja a mesma.
fonte
Esta é a abordagem que usei. É bastante simples e funciona muito bem.
No diretório raiz do editor CK, há um arquivo chamado config.js
Eu adicionei isto (você não precisa do material de querystring, isto é apenas para nosso gerenciador de arquivos). Eu também incluí alguns skins e mudanças nos botões padrão mostrados:
Então, nosso gerenciador de arquivos chama isso de:
fonte
Um artigo no zerokspot intitulado Custom filebrowser callbacks in CKEditor 3.0 trata disso. A seção mais relevante é citada abaixo:
fonte
Comece registrando seu navegador / uploader personalizado ao instanciar o CKEditor.
Código para o arquivo de upload (ckFileUpload.php) e coloque o arquivo de upload no diretório raiz do seu projeto.
A documentação do Ck-editor não está clara depois de fazer um monte de P&D para upload de arquivo personalizado. Finalmente encontrei essa solução. Funciona para mim e espero que seja útil para outras pessoas também.
fonte
Para as pessoas que estão se perguntando sobre uma implementação de Servlet / JSP, veja como fazer isso ... Explicarei o uploadimage abaixo também.
1) Primeiro certifique-se de ter adicionado o filebrowser e a variável uploadimage ao seu arquivo config.js. Faça você também tem a uploadimage e filebrowser pasta dentro da pasta plugins também.
2) Esta parte é onde me tropeçou:
A documentação do site do Ckeditor diz que você precisa usar estes dois métodos:
Portanto, se o ckeditor foi inicializado na página editor.jsp , você precisa criar um navegador de arquivos (com html / css / javascript básico) na página filebrowser.jsp .
editor.jsp (tudo que você precisa é isso em sua tag de script) Esta página abrirá filebrowser.jsp em uma mini janela quando você clicar no botão de navegação do servidor.
filebrowser.jsp (é o navegador de arquivos personalizado que você construiu, que conterá os métodos mencionados acima)
3) O Servlet FileBrowser
4) Servlet UploadImage
Volte para o arquivo config.js para ckeditor e adicione a seguinte linha:
Em seguida, você também pode arrastar e soltar arquivos:
E isso é tudo pessoal. Espero que ajude alguém.
fonte