Официальная документация не совсем ясна - как правильно интегрировать пользовательский браузер / загрузчик файлов с CKEditor? (v3 - не FCKEditor)
Начните с регистрации вашего пользовательского браузера / загрузчика при создании экземпляра CKEditor. Вы можете назначить разные URL-адреса для браузера изображений и обычного файлового браузера.
<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>
Ваш пользовательский код получит параметр GET с именем CKEditorFuncNum. Сохраните это - это ваша функция обратного вызова. Допустим, вы положили это в $callback
.
Когда кто-то выбирает файл, запустите этот JavaScript, чтобы сообщить CKEditor, какой файл был выбран:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
Где «url» - это URL-адрес выбранного файла. Необязательный третий параметр может быть текстом, который вы хотите отображать в стандартном диалоговом окне предупреждения, например «недопустимый файл» или что-то в этом роде. Задайте для url пустую строку, если третий параметр является сообщением об ошибке.
Вкладка «загрузка» CKEditor отправит файл в поле «загрузка» - в PHP это идет в $ _FILES ['upload']. CKEditor хочет, чтобы ваш сервер выводил полный блок JavaScript:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;
Опять же, вам нужно передать ему этот параметр обратного вызова, URL-адрес файла и, возможно, сообщение. Если сообщение представляет собой пустую строку, ничего не отображается; если сообщение является ошибкой, тогда url должен быть пустой строкой.
Официальная документация CKEditor по всему этому неполная, но если вы последуете вышесказанному, она будет работать как чемпион.
Я опубликовал одно небольшое руководство по интеграции FileBrowser, доступного в старом FCKEditor, в CKEditor.
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
Он содержит пошаговые инструкции для этого, и это довольно просто. Я надеюсь, что любой, кто ищет это, найдет этот урок полезным.
источник
Я просто сам прошел через процесс обучения. Я понял это, но согласен, что документация написана таким образом, что меня это немного пугало. Большим моментом "ага" для меня было понимание того, что для просмотра все, что делает CKeditor, - это открывает новое окно и предоставляет несколько параметров в URL-адресе. Он позволяет вам добавлять дополнительные параметры, но имейте в виду, что вам нужно будет использовать encodeURIComponent () для ваших значений.
Я вызываю браузер и загрузчик с помощью
Для браузера в открытом окне (browse.php) вы используете php & js для предоставления списка вариантов, а затем после предоставленного обработчика onclick вы вызываете функцию CKeditor с двумя аргументами: URL / путь к выбранному изображению и CKEditorFuncNum, предоставленный CKeditor в URL:
Точно так же загрузчик просто вызывает указанный вами URL, например, upload.php , и снова предоставляет $ _GET ['CKEditorFuncNum']. Целью является iframe, поэтому после сохранения файла из $ _FILES вы передаете свой отзыв в CKeditor следующим образом:
Ниже приведен простой для понимания сценарий настраиваемого браузера. Хотя он не позволяет пользователям перемещаться по серверу, он позволяет указать, из какого каталога извлекать файлы изображений при вызове браузера.
Это довольно простой код, поэтому он должен работать во всех относительно современных браузерах.
CKeditor просто открывает новое окно с предоставленным URL
// ========= ниже полный код для browse.php
источник
Я потратил некоторое время, пытаясь понять это, и вот что я сделал. Я разбил это очень просто, потому что это то, что мне нужно.
Непосредственно под текстовой областью ckeditor введите загружаемый файл следующим образом >>>>
', а затем добавьте файл загрузки, вот мой, написанный на ASP. Если вы используете PHP и т. Д., Просто замените ASP своим сценарием загрузки, но убедитесь, что страница выводит то же самое.
источник
Это тот подход, который я использовал. Это довольно просто и отлично работает.
В корневом каталоге редактора CK есть файл с именем config.js
Я добавил это (вам не нужны строки запроса, это только для нашего файлового менеджера). Я также добавил немного скинов и изменил показанные кнопки по умолчанию:
Затем наш файловый менеджер вызывает это:
источник
Статья на zerokspot под названием « Пользовательские обратные вызовы файлового браузера в CKEditor 3.0» посвящена этому. Наиболее актуальный раздел цитируется ниже:
источник
Начните с регистрации вашего пользовательского браузера / загрузчика при создании экземпляра CKEditor.
Код для загрузки файла (ckFileUpload.php) и поместите загружаемый файл в корневой каталог вашего проекта.
Документация по Ck-редактору непонятна после большого количества исследований и разработок для пользовательской загрузки файлов, наконец, я нашел это решение. Это работает для меня, и я надеюсь, что это поможет и другим.
источник
Для людей, интересующихся реализацией сервлета / JSP, вот как вы это делаете ... Я также объясню uploadimage ниже.
1) Сначала убедитесь , что вы добавили FileBrowser и uploadimage переменную в файл config.js. Сделайте так, чтобы в папке плагинов также были папки uploadimage и filebrowser .
2) В этой части меня это сбило с толку:
В документации веб-сайта Ckeditor говорится, что вам нужно использовать эти два метода:
Итак, если у вас есть ckeditor, инициализированный на странице editor.jsp, вам необходимо создать файловый браузер (с базовым html / css / javascript) на странице filebrowser.jsp .
editor.jsp (все, что вам нужно, это в теге сценария) Эта страница откроет файл filebrowser.jsp в мини-окне, когда вы нажмете кнопку просмотра сервера.
filebrowser.jsp (это созданный вами пользовательский файловый браузер, который будет содержать методы, упомянутые выше)
3) Сервлет FileBrowser
4) Сервлет UploadImage
Вернитесь в файл config.js для ckeditor и добавьте следующую строку:
Затем вы также можете перетаскивать файлы:
И это все, ребята. Надеюсь, это кому-то поможет.
источник