В заметке Редактирование аннотаций мы разбирались, как сделать визуальный редактор аннотаций. Ну, надо нам так, потому что на наших сайтах многие материалы требуют в аннотации приличного оформления, а, главное - размещения там картинок.
Но новый редактор не очень-то вписывается в админку. Нам захотелось перекомпоновать фрейм Создать/редактировать документ. Сделать это можно с помощью плагина ManagerManager.
Чтобы сделать возможным визуальное редактирование, мы создали TV-параметр типа richtext с именем annotation. В результате, при редактировании страниц имеющих такие шаблоны, для которых разрешен этот TV, появляется дополнительное поле, в котором используется наш редактор - TinyMCE. Всё, что мы там наредактируем, записывается в базе данных в отдельной таблице и связывается с конкретным документом. Впрочем, от TV-параметрах мы напишем отдельную статью.
Новый визуальный редактор занимает всю верхнюю часть на вкладке Общие, "утапливая" вниз редактор контента. Это не очень-то удобно - запросто можно перепутать редактор TV и редактор контента и потом удивляться, почему же не виден измененный текст документа.
Попытаемся самостоятельно разобраться с плагином ManagerManager (далее просто MM). Итак, MM позволяет:
1. Переименовывать поля (вернее, отображаемые заголовки полей). Например, вместо Аннотация (введение) можно задать заголовок Summary.
2. Скрывать от менеджера сайта (редактора) какие-то поля - "Величество должны мы уберечь от всяческих ему не нужных встреч".
3. Делать недоступной часть списка шаблонов.
4. Изменять подсказки к полям.
5. Наследовать значения заданных полей от родительского документа.
6. Присваивать значения по умолчанию полям.
7. Синхронизировать значения заданных полей во время редактирования.
8. Переименовывать, скрывать и создавать новые вкладки редактора документа.
9. Перемещать поля редактора документа на другие вкладки.
10. Выполнять еще некоторые интересные операции.
Все эти действия могут быть применены для групп менеджеров сайта (их ролей) и шаблонов документов.
Несоменнно, некоторые из этих возможностей могут пригодиться, если сайт поддерживают менеджеры (редакторы) разной квалификации. Для нашего же сайта большинство этих возможностей не нужны, а могут даже быть вредны. Например, при подключении плагина, если не выполнить его тонкие настройки, можно (причем не сразу) заметить потерю русификации заголовков полей. О том, что это результат деятельности MM сразу и не сообразишь. А вот опции 5, 6 и 7 могут пригодиться.
Вот как выглядят свойства этой страницы до (слева) и после (справа) подключения плагина MM в конфигурации по умолчанию (фактически безобидном примере):
При включенном плагине заголовок поля Аннотация (введение) изменился на Summary и появилась вкладка Categories. Может быть и ещё что-то изменилось, но мы пока не видим.
Реализуются возможности MM путем настроек специальных правил (rules). Правила могут быть описаны в специальных файлах или в чанке. Возможные правила подробно описаны в документации.
Установка производится как обычно:
1. Создаем новый плагин ManagerManager и вставляем код из файла plugin.txt.
2. На вкладке Системные события отмечаем чекбоксы:
3. Копируем все файлы из архива в /assets/plugins/managermanager.
А вот здесь возможны варианты.
Надо создать чанк mm_rules, в который включить собственные правила. Здесь непонятно - вставлять ли куда-то этот чанк, или достаточно его существования. Вроде бы имя чанка надо записать в
$config_chunk = '' в теле кода плагина. Допустим, запишем $config_chunk = 'my_rules' и попробуем создать какие-то полезные правила.
Например, нам кажется неудобным, что редактор содержимого находится на одной вкладке Настройки страницы с прочими полями. Они занимают много места и постоянно приходится прокручивать фрейм. Попробуем отделить контент от прочих свойств. Создадим чанк my_rules и запишем в него:
// Создадим вкладку
mm_createTab('Содержимое документа','mm_content', '', '', 'Редактируйте здесь контент', '600');
// перенесем на новую вкладку редактор контента
mm_moveFieldsToTab('content', 'mm_content', '', '');
Смотрим что получилось:
Да, действительно, получилась новая вкладка, и редактор вверху. Но на вкладке Настройки страницы также остался редактор, то есть поле content скопировалось, а не перенеслось. То ли это фича, то ли ошибка. Скрыть поле на конкретной вкладке нельзя. Может быть content обладает особыми сойствами? В общем-то, да. Оно отображается внизу всех вкладок и без всяких дополнительных плагинов. Видимо, это сделали для удобства. Значит
mm_moveFieldsToTab('content', 'mm_content', '', '');
можно и не записывать.
Ну, попробуем перенести настроечные поля - как-то их более компактно расположить. Создадим правила:
mm_renameTab('settings','Только контент', '', '');
mm_hideFields('introtext');
mm_createTab('Аннотация','mm_tv', '', '', '', '600');
mm_moveFieldsToTab('tvannotation, ', 'mm_tv', '', '');
mm_createTab('Меню','mm_menu', '', '', '', '600');
mm_moveFieldsToTab('menuindex,menutitle,show_in_menu, ', 'mm_menu', '', '');
mm_createTab('Публикация','mm_public', '', '', '', '600');
mm_moveFieldsToTab('template,published', 'mm_public', '', '');
mm_createTab('Даты','mm_date', '', '', '', '600');
mm_moveFieldsToTab('pub_date,unpub_date', 'mm_date', '', '');
mm_createTab('Кэш,лог','mm_cache', '', '', '', '600');
mm_moveFieldsToTab('cacheable,clear_cache,searchable,log', 'mm_cache', '', '');
mm_createTab('Прочее','mm_checkbox', '', '', '', '600');
mm_moveFieldsToTab('is_folder', 'mm_checkbox', '', '');
mm_moveFieldsToTab('is_richtext', 'mm_checkbox', '', '');
mm_moveFieldsToTab('link_attributes', 'mm_checkbox', '', '');
mm_moveFieldsToTab('content_type', 'mm_checkbox', '', '');
mm_moveFieldsToTab('content_dispo', 'mm_checkbox', '', '');
В результате мы размазали поля по вкладкам.
Теперь на каждой вкладке минимум настроек, редактор контента ближе. Но вкладок больше. Кроме того, мы вообще скрыли поле introtext, подставив вместо него визуальный редактор аннотаций.
Удобно это или нет - проверим на практике. Нам ничто не мешает изменить правила или вообще отключить плагин MM.
Редактировать правила в файле /plugins/managermanager/mm_rules.inc.php. Это можно, но явно не стоит. Чанк мы редактируем в админке, а до файла надо будет долго добираться. Кроме того, чанк имеет приоритет перед mm_rules.inc.php.