CMS.Redactor: подключение редакторов html-текста
В TAO есть возможность использовать различные редакторы HTML текста. По умолчанию установлен NicEdit. Класс модуля CMS.Redactor предназначен для регистрации и получения экземпляров редакторов, подключения необходимых js/css файлов, проводить необходимую инициализацию, а также проверить наличие необходимых файлов для возможности подключения того или иного редактора.
По умолчанию поддерживаются следующие редакторы:
- tiny TinyMCE
- nicedit NicEdit
- redactor Redactorjs
- ckeditor CKEditor
- epic EpicEditor
Для редактирования wiki-разметки по умолчанию используется epic.
Установка поддерживаемого редактора
Для установки одного из поддерживаемых редакторов необходимо скопировать файлы в docroot/editors/. Например для TinyMCE должно быть: docroot/editors/tiny_mce/. Затем для смены редактора по умолчанию, а также изменения/добавления настроек необходимо произвести соответствующие изменения конфигурации. Для этого можно воспользоваться методом Core::configure или описать настройки в /app/config/modules.php.
Core::configure(array( 'CMS.Redactor' => array( 'default_editor' => 'tiny', 'settings' => array('tiny' => array('theme' => 'modern')), ) ));
или
// app/config/modules.php return array( ... 'CMS.Redactor' => array( 'default_editor' => 'tiny', 'settings' => array('tiny' => array('theme' => 'modern')), ), ... );
Добавление своего редактора
Для добавления своего редактора необходимо реализовать класс CMS.Redactor.AbstractEditor и зарегистрировать его с помощью метода CMS_Redactor::add_editor($name, $class), а также создать js-обертку (см. scripts/tao/editor.js).
Core::load('CMS.Redactor'); class CMS_Redactor_Epic extends CMS_Redactor_AbstractEditor implements Core_ModuleInterface { protected function libraries_files() { return array( array('name' => '/editors/epiceditor/js/epiceditor.js', 'type' => 'lib', 'weight' => -1), array('name' => '/editors/reMarked.js') ); } public function default_settings() { return array( 'basePath' => '/scripts/editors/epiceditor', ); } }
Чтобы воспользоваться редактором, например, в своем контроллере/шаблоне, достаточно
// шаблон $editor = CMS_Redactor::get_default(); $this->redactor->add($editor, '.class-of-textarea');
// контроллер CMS_Redactor::get_default()->process_template($template, '.class-of-textarea');
где $template - объект шаблона, '.class-of-textarea' - jquery селектор.
TinyMCE
Для простой установки TinyMCE в качестве редактора по умолчанию созданы соответствующие компоненты TineMCE3 и TinyMCE4. Цифрой обозначена версия. Для автоматического подключения редактора достаточно установить компонент и включить его (Core::load('Component.TinyMCE4');).
Для настройки редактора TinyMCE можно воспользоваться методом Core::configure(), аналогично указанному выше или добавить в app/config/modules.php. Настройки редакторов осуществляются через конфигурирование модуля.
// app/config/modules.php 'CMS.Redactor' => array( 'settings' => array( 'tiny4' => array( 'valid_elements' => 'a', 'content_css' => '/mycontent.css' ), ), ),
С полным списком настроек можно ознакомиться на сайте: для TinyMCE4, для TinyMCE3.