Потестим кнопочку? (Простой вариант интеграции elFinder в CKEditor)

Главные вкладки

Аватар пользователя OldWarrior OldWarrior 15 апреля 2011 в 23:51

UPD. Как выяснилось из комментариев, модуль ckeditor с версии 6.x-1.3 официально поддерживает elfinder. Таким образом, всё написанное относится к возможному способу вывода "быстрой" кнопки elfinder'a на тулбар.

UPD2(08/05/2011). Плагин доработан до автоматического определения типа файла, возвращаемого elFinder

Нужен был файлменеджер/мультизагрузчик для редактора CKeditor (именно для drupal-модуля).

Я обычно использую IMCE и стал искать дополнения к IMCE, поддерживающие мультизагрузку.
Нашёл только IMCE Swfupload, но он ещё в бета-стадии и требует установки дополнительных модулей. В общем, не устроил.

Зато как-то неожиданно открыл для себя elFinder.

Менеджер показался очень удобным (на мой взгляд, даже получше IMCE).
Мультизагрузка, drag&drop, создание-удаление директорий, файлов. Автоматические тамбы картинок, ну и в целом как-то юзабельнее выглядит.

CKEditor (по крайней мере 6.x-1.3) позволяет интегрировать IMCE как "быструю" кнопку на тулбар (отдельно от диалога выбора ссылки/картинки/файла). Просто нужно раскомментировать соответствующие определения в ckeditor.config.js и убедиться что присутствует папка imce в /modules/ckeditor/plugins

Я стырил это решение и наскоро адаптировал его под elFinder в виде скромного плагина-кнопки (elFinder).
Результат: на тулбаре имеется самодельная кнопочка, по клику на которой сразу открывается окно этого файлового менеджера (т.е. минуя диалог выбора адреса).

Toolbar

После выбора файла (двойной щелчок или команда меню и т.д.) в менеджере, он закрывается и ссылка возвращается в CKeditor в обвязке тегов.

В общем, почти всё как в "обычном" elFinder или IMCE.

Желающие могут пойти дальше и доработать решение плагина. Для примера сравните код приложенного плагина и стандартного плагина кнопки IMCE (функция setFile()): /modules/ckeditor/plugins/imce/plugin.js

Потребуются модули:

- модуль CKEditor
- модуль elFinder
- сам файлменеджер elfinder (он отдельно от модуля).

Плагин кнопки в архиве приложен к посту. Описание установки - в файле README.TXT архива.

После установки не забыть установить необходимые разрешения ролям для доступа к elFinder, CKEditor (если вы это ещё не сделали).

Отображение кнопки не зависит от разрешений.
То есть - если вы запретили какой-то роли использовать elFinder, то кнопка не исчезнет с панели. Просто по клику на ней будет обычный "У вас нет прав для просмотра и т.д.".

ps. И это... Отписывайтесь, пожалуйста, у кого что получилось. Wink Будут доработки - велкам + респект и уважуха Smile

ВложениеРазмер
Иконка пакета elfinder.zip2.72 КБ

Комментарии

Аватар пользователя kodo kodo 23 апреля 2011 в 9:52

Вещь вроде и не плохая, но видно, что не закончена.
Удивительно, что вообще работа прошла не замеченной на д.ру.

Аватар пользователя OldWarrior OldWarrior 24 апреля 2011 в 4:24

"kodo" wrote:
Вещь вроде и не плохая, но видно, что не закончена.

Да отличный менеджер. Мультизагрузка радует.
Не закончена - да, у меня просто не было времени "копать" долго это направление. К тому же в JS я не очень-то "рулю".

Может, кто-то таки доработает решение.

Там всего-то нужно добавить в самую последнюю функцию плагина механизм определения типа файла по расширению. Обычные строковые операции, вообще-то. Исходная ссылка возвращается elFinder'ом как текст и передаётся в эту функцию как параметр. Просто сделать проверку последних символов после точки с конца строки. Если JPG, PNG, GIF - то обвязывать в img, если нет - то в обычную ссылку а-ля a href= и т.д. Хотя бы как-то так.

А можно усложнить решение и получить объект Image с тем, чтобы определить размеры изображения для вставки (т.е. with="" height="").

И ещё. Отметил такую забавную любопытную вещь. Модуль elfinder ругается, если включен IMCE, но если игнорировать эти сообщения и зайти в настройки модуля CKeditor (конкретно - в настройки профиля, где выбирается файловый менеджер), то в списке файловых менеджеров помимо IMCE появляется также и elFinder. Можно просто указать его как файловый менеджер и - бинго! elFinder начинает работать через стандартный диалог выбора картинки ("Просмотреть на сервере")!

Правда если не включен IMCE, то и elFinder не будет в этом списке. Но я как-то поэкспериментировал и добился результата так: включил оба модуля - IMCE и elFinder, зашел в настройки профиля CKeditor, установил там elFinder как файловый менеджер, потом отключил модуль IMCE, и всё стало ОК - elFinder "привязался" к CKeditor. Не знаю, почему это получилось Smile

А вообще - тут есть топик одного из разработчиков модуля:
http://www.drupal.ru/node/45147

Аватар пользователя root@localhost root@localhost 24 апреля 2011 в 22:29

В модуле CKEditor сейчас есть официальная поддержка elFinder. Предупреждение для imce сделано из-за возможных проблем с интеграцией - вызывать сам менеджер никто не мешает.

"OldWarrior" wrote:
Правда если не включен IMCE, то и elFinder не будет в этом списке.

Если это так, то это баг - надо отписать разработчикам ckeditor. Выбор elfinder не должен зависеть от imce.

Аватар пользователя OldWarrior OldWarrior 25 апреля 2011 в 1:11

"<a href="mailto:ph0enix@drupal.org">ph0enix@drupal.org</a>" wrote:
В модуле CKEditor сейчас есть официальная поддержка elFinder.

Спасибо! Видимо, я пропустил это событие. Приношу извинения.

"<a href="mailto:ph0enix@drupal.org">ph0enix@drupal.org</a>" wrote:
Если это так, то это баг - надо отписать разработчикам ckeditor. Выбор elfinder не должен зависеть от imce.

Проверил на свежей сборке - всё ок. Отпишу в посте, что есть штатная поддержка ckeditor.

PS. А может, тогда и "быструю" кнопочку сделаете официальную? Полезная же штучка - чтоб каждый раз не париться с диалогом "Просмотреть на сервере".

Аватар пользователя root@localhost root@localhost 21 мая 2011 в 13:20

OldWarrior wrote:

PS. А может, тогда и "быструю" кнопочку сделаете официальную? Полезная же штучка - чтоб каждый раз не париться с диалогом "Просмотреть на сервере".

Да, штука полезная. Завел у себя в трекере http://drupal.org/node/1164376

UPD: Модуль ckeditor не имеет api для расширения. Для добавления кнопки надо править файлы модуля. Могу конечно сделать чтобы elfinder сам кнопку там прописывал, но это опасно - структуру файла поменяют и работать не будет, либо сломается что-нибудь.

На уровне api возможно добавление кнопки в модуле wysiwig, причем сразу во все поддерживаемые редакторы - это попробую сделать. В идеале аналогичный api должен быть и у ckeditor, тем более что его допилить в этом плане несложно.

Аватар пользователя OldWarrior OldWarrior 21 мая 2011 в 20:37

<a href="mailto:ph0enix@drupal.org">ph0enix@drupal.org</a> wrote:
UPD: Модуль ckeditor не имеет api для расширения. Для добавления кнопки надо править файлы модуля. Могу конечно сделать чтобы elfinder сам кнопку там прописывал, но это опасно - структуру файла поменяют и работать не будет, либо сломается что-нибудь.

Ну вам виднее конечно, как именно делать. Но я хочу отметить, что если речь идёт только о правке /modules/ckeditor/ckeditor.config.js - то это в общем-то штатная процедура конфигурирования редактора по "вкусу". Он же для того и существует - это файл конфигурирования.

<a href="mailto:ph0enix@drupal.org">ph0enix@drupal.org</a> wrote:
На уровне api возможно добавление кнопки в модуле wysiwig, причем сразу во все поддерживаемые редакторы - это попробую сделать. В идеале аналогичный api должен быть и у ckeditor, тем более что его допилить в этом плане несложно.

Супер! Спасибо, будем ждать.

Аватар пользователя Anatoldev Anatoldev 1 мая 2011 в 1:02

"OldWarrior" wrote:
В этом же файле найти секцию, описывающую ваш toolbar и добавить кнопку ['elFinder'] (именно так). Можно, кстати, добавить во все тулбары, если нужно.

А можно поподробнее, потому что я, например, сам найти эту секцию в файле /modules/ckeditor/ckeditor.config.js не смог.

Аватар пользователя OldWarrior OldWarrior 1 мая 2011 в 19:02

"Anatoldev" wrote:
А можно поподробнее, потому что я, например, сам найти эту секцию в файле /modules/ckeditor/ckeditor.config.js не смог.

1. Открываем /modules/ckeditor/ckeditor.config.js
2. Находим такую секцию (это пример для тулбара DrupalFiltered):

  config.toolbar_DrupalFiltered = [
    ['Source'],
    ['Cut','Copy','Paste','PasteText','PasteFromWord','-','SpellChecker', 'Scayt'],
    ['Undo','Redo','Find','Replace','-','SelectAll','RemoveFormat'],
    ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar'],
    ['Maximize', 'ShowBlocks'],
    '/',
    ['Format'],
    ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
    ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiRtl','BidiLtr'],
    ['Link','Unlink','Anchor','LinkToNode', 'LinkToMenu'],
    ['DrupalBreak', 'DrupalPageBreak']
   ];

3. Группы кнопок (как они отображаются на тулбаре) заключены в квадратные скобки []. Можете добавить кнопку в любую группу, просто дописав 'elFinder' (не забыть отделить запятой).
Или же - как в моём примере - создать кнопку в отдельной группе, дописав ['elFinder'].

4. Если вы используете другой тулбар, то ищите в этом же файле описание своего тулбара. Например для DrupalFull описание будет начинаться с:

config.toolbar_DrupalFull = [

5. Собственно, всё :-).

Аватар пользователя OldWarrior OldWarrior 8 мая 2011 в 15:51

В общем, я таки нашёл время и доработал плагин.

Теперь автоматически (с помощью рег. выражений) определяется расширение файла и на основании этого создаётся должная обвязка тегами:

1. для .jpg|.png|.jpeg|.gif - создаётся тег img
2. для всех остальных - обычный a href=""

Также в архив добавлен файл README.TXT, описывающий порядок интеграции в тулбар CKeditor.

Архив с плагином в аттаче к посту обновлён. Пользуйтесь Wink

Аватар пользователя vox vox 16 февраля 2012 в 22:14

Подскажите пож. нажимаю на кнопку "Выбор на сервере", открывается elFinder, а как добавить картинку, не понимаю. Двойной щелчок на картинке открывает ее и не передает в CKeditor. Что делать? Спасибо.

Аватар пользователя OldWarrior OldWarrior 17 февраля 2012 в 2:19

Вы используете этот плагин? Какая версия D?
Плагин вообще-то писался под 6-й Drupal, и как он работает в 7-ке - не знаю.
Попробуйте выяснить - возможно уже есть штатный механизм "быстрой" кнопки в последних версиях elFinder (разработчик вроде заинтересовался).

Аватар пользователя vox vox 17 февраля 2012 в 20:29

Drupal 6.24
elFinder (version 1.2)
elFinder 6.x-1.x-dev
Такие версии компонентов. Сам файловый менеджер работает без проблем, а в CKeditor ничего не передает...

Аватар пользователя vox vox 17 февраля 2012 в 21:02

странный эффект...
добавил модули, которые требуются для elFinder File Field Source.
все включил - добавление картинок заработало. Потом все эти модули отключил - добавление картинок все-рано работает...

Аватар пользователя Godwin Godwin 1 февраля 2015 в 23:59

Как в Chrome, так и Firefox при двойном клике на картинку она открывается в отдельном окне и не вставляется в статью. Проблема уже у многих. В чем может быть причина?