Версии редактора весьма часто обновляются. Вроде бы только что мы скачали и ставили версию 2.6.3, а уже через несколько дней появилась версия 2.6.4b. Скачаем её и попробуем подключить в MODx.
Установку FCKeditor в Etomite мы подробно описали в заметке FCKeditor в Etomite. Встраивать этот редактор в MODx нужно принципиально иначе.
Подобные расширения устанавливаются в MODx в виде plugin. Для установки любого плагина необходимо:
1. Иметь набор файлов, копируемый в соответствующий подкаталог assets/plugins/, например в assets/plugins/fckeditor.
2. Иметь код плагина, который необходимо вставить при создании плагина в окно кода.
3. Знать, к каким событиям следует привязать плагин.
4. Знать, какие свойства и как нужно установить.
Обычно плагины берут в респозитории MODx. Имеется там и FCKeditor, причем в двух вариантах:
FCKEditor_2.5_AFM_Beta_1.zip
FCKEditor_2.6.2.zip
Однако эти варианты включают уже устаревшую версию самого FCKeditor и разные варианты файлового менеджера. А хотелось бы иметь, конечно, самую свежую версию и редактора, и самого лучшего файлового менеджера.
Про файловые менеджеры у нас имеется отдельная заметка. В результате описанных там приключений мы приняли решение об установке не самой последней версии редактора TinyMCE и не самой последней версии AjaxFileManager. Логично было бы установить и FCKeditor сэтим же файловым менеджером, а потом попытаться обновить сам редактор до самой свежей версии.
Установка штатным способом
Установка плагином штатным способом предполагает:
1. Распаковку из архива в подкаталоги assets и install (дистрибутив должен быть правильно подготовлен).
2. Вход по ссылке на адрес http://site_name/install.
3. Выполнение инсталляции, после котрой плагин, по идее должен установиться правильно.
4. Доводка по месту - когда кувалдой, а когда напильником.
Попробуем это проделать. Для установки возьмем комплект FCKEditor_2.5_AFM_Beta_1.zip. При этом мы не будем распаковывать папку ajaxfilemanager, так как такой плагин у нас уже есть и он подключен кTinyMCE.
При выполнении пункта 3 мы получили сообщения:
Creating connection to the database: OK!
Selecting database `cadx2009`: OK!
Plugin:
FCKEditor: Installed
Fatal error: Call to a member function getFullTableName() on a non-object in Z:\home\cadx2009\www\manager\processors\cache_sync.class.processor.php on line 100
Чего-то такого и следовало ожидать. Готовимся к доводке, надеясь, что обойдемся напильником.
Заглянув в Ресурсы-Плагины мы обнаруживаем FCKeditor и даже правильно (во всяком случае на первый взгляд) выполненные настройки. Системная конфигурация также видит FCKeditor и виден он в списке Редактор: при редактировании страницы. Осталось его испытать в работе.
Испытания FCKeditor
Включаем FCKeditor прямо во время редактирования этой статьи. Первое, что бросается в глаза - лишние кнопки и отсутствие русского интерфейса. Ну, это поправить легче всего. Главное для нас - как работает файловый менеджер.
Вот тут и начинаются обломы. Ранее настроенный для редактора TinyMCE AjaxFileManager работает, но в нем, после выбора файла, не срабатывает кнопка Выбрать. И Отменить не срабатывает. Наверное это последствия ошибки инсталляции, о которой нам было сообщено ранее:
Придется разбираться. Но разбираться нам надо или в рамках кода плагина
assets/plugins/fckeditor25afm/plugin.fckeditor.tpl
или в файле
assets/plugins/fckeditor25afm/fckeditor.functions.php
Или еще где. Наша квалификация позволяет только предполагать, хотя кое-что мы соображаем. Да и комплект FCKEditor_2.5_AFM_Beta_1.zip был заточен на более ранние версии MODx.
Попробуем установить FCKEditor_2.6.3.zip - в другой каталог. Здесь мы уже будем действовать "неправильно" - просто распакуем в
assets/plugins/fckeditor263. скопируем код плагина из
assets/plugins/fckeditor263/plugin.fckeditor.tpl и вставим его в код в диалоге настройки плагина. И всё! Работает (в первом приближении) и редактор, и файловый менеджер. Вроде бы и всё хорошо, но не всё хорошо.
Файловый менеджер в этом комплекте совсем другой - MCPUK. Это вроде бы и неплохой менеджер:
Вроде бы он тоже неплох - можно и папку создать, и картинку сразу загрузить. Но вот незадача - иногда не видит он картинки в формате PNG, а таких у нас как раз большинство! JPEG видит, а PNG - нет. Добиться устранения этого глюка нам не удалось, по крайней мере с налета. Если бы всегда не видел - можно было бы списать на ошибки, но когда при абсолютно оидинаковой конфигурации на одном сайте видит, а на другом нет - это гораздо хуже. Поэтому попробовали другой файловый менеджер - Ajaxfilemanager.
И вот еще одна беда - после подключения этого менеджера (MCPUK) уже в TinyMCE посыпались предупреждающие сообщения при вызове AjaxFileManager:
При этом еще и становится недоступным предварительный просмотр выделенного изображения (миниатюра).
На этом можно и остановиться. Не будем описывать все наши прочие попытки скрестить FCKeditor с MODx, да чтобы одновременно можно было использовать TinyMCE с прикрученным AjaxFileManadger. Много чего мы перепробовали, но нужного результата не получилось. Подождем, может быть появится и нужная нам конфигурация.
В результате принято решение - оставить только TinyMCE, тем более, что удалось сконфигурировать этот редактор так, как нам нужно. Но это уже другая история.
И, напоследок, хоть мы и отказались (пока) от FCKeditor, несколько замечаний по дополнительным настройкам - может кому-то пригодится.
Дополнительные настройки FCKEditor
Очень удобно, если:
а) В самом окне редактора используется именно наша таблица стилей, и содержимое контента отображается так же, как и на сайте.
б) В комбобоксе Стиль отображаются именно наши стили.
Как этого добиться?
Подключение нашей таблицы стилей
Для этого надо открыть Инструменты - Конфигурация, вкладка Интерфейс и представление и для FCKEditor в поле Путь к CSS-файлу внести относительный путь от корня сайта, например:
/assets/templates/site/css/screen.css
Теперь в окне редактора будут отображаться стили именно из этого файла.
Настройка кобобокса Стиль
На той же вкладке, в поле XML Style указываем относительный путь к XML-файлу с нашими стилями:
/assets/plugins/fckeditor25afm/my_styles.xml
Как описать наши стили для комбобокса
Тут надо с умом.
Во первых, не надо пытаться описать много стилей. Нужен самый минимум, причем те стили, которые используются для оформления контента. А это - заголовки, какие-то виды абзацев, комментарии, списки особого вида, картинки. Заголовки (сесли они не специального вида) даже можно и не вставлять - они есть в комбобоксе Форматирование.
На наших страницах, например, часто применяются пометки с помощью буллетов и маленьких картиночек. Вот их и можно вставить.
Примеры стилей можно найти в файле fckstyles.xml.
Но пришлось столкнуться с такой проблемой - в комбобокс Стили не попадают стили для элементов li!
В результате пришлось отказаться от использования "li с картинками" и сделать более общие классы, например:
.user { background: url(images/user.gif) no-repeat top left; padding: 0px; padding-left: 30px; }
Выглядеть это будет так:
Сам файл стилей выглядит примерно так:
<?xml version="1.0" encoding="windows-1251" ?>
<Styles>
<Style name="light_box" element="div">
<Attribute name="class" value="light_box"/>
</Style>
<Style name="Acad" element="div">
<Attribute name="class" value="acad"/>
</Style>
<Style name="User" element="div">
<Attribute name="class" value="user"/>
</Style>
<Style name="Alert" element="div">
<Attribute name="class" value="alert"/>
</Style>
<Style name="Вопрос" element="div">
<Attribute name="class" value="quest"/>
</Style>
<Style name="Ответ" element="div">
<Attribute name="class" value="answ"/>
</Style>
<Style name="Warning" element="div">
<Attribute name="class" value="warning"/>
</Style>
<Style name="Автор" element="div">
<Attribute name="class" value="author"/>
</Style>
<Style name="date" element="div">
<Attribute name="class" value="date"/>
</Style>
<Style name="Code" element="div">
<Attribute name="class" value="code"/>
</Style>
<Style name="Menu Item" element="span">
<Attribute name="class" value="cad_menu"/>
</Style>
</Styles>
В результате список стилей в FCKeditor будет выглядеть так:
Написать комментарий