CMS.Redactor: подключение редакторов html-текста

Компонент: TinyMCE4

В TAO есть возможность использовать различные редакторы HTML текста. По умолчанию установлен NicEdit. Класс модуля CMS.Redactor предназначен для регистрации и получения экземпляров редакторов, подключения необходимых js/css файлов, проводить необходимую инициализацию, а также проверить наличие необходимых файлов для возможности подключения того или иного редактора.

По умолчанию поддерживаются следующие редакторы:

Для редактирования 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.

Метки: CMS
08.04.2015
Все статьи