|
|
Интересные статьи
|
|
|
|
|
Создание кнопки для визуального редактора в Joomla 1.5 
Весьма серьезным преимуществом Joomla перед другими системами является довольно широкие возможности расширения базового функционала системы посредством различного рода расширений. В этой статье мы расскажем, как создать плагин, добавляющий дополнительную кнопку для редактора материалов, по нажатию на которую в редактируемый вставлялся бы некий текст.
О создании кнопки для редактора в Joomla! 1.0 уже все написано. Рассмотрим теперь, как подобную задачу реализовать в Joomla 1.5.
Кнопка редактора является плагином (в Joomla! 1.0.x мамботом) расширения редактора и состоит из двух файлов: plg_name.php plg_name.xml
где plg_ — это общепринятый префикс для плагинов в Joomla! 1.5, name - имя плагина. Инсталляционный XML-файл плагина
Данный файл предназначен для установки плагина в Joomla и содержит в себе различного рода информацию о данном расширении (тип, название, автор, дата выпуска, лицензия и т.д.). Пример инсталляционного XML-файла для простейшего плагина: <?xml version="1.0" encoding="utf-8"?> <install version="1.5" type="plugin" group="editors-xtd"> <name>Button - Hello</name> <author>Joomla! Project</author> <creationDate>March 2006</creationDate> <copyright>Copyright © 2005 - 2008 Open Source Matters. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>1.5</version> <description>My Description</description> <files> <filename plugin="hello">hello.php</filename> </files> <params /> </install>
В теге name заключено имя плагина отображаемое в списке плагинов административной панели. Тег filename содержит имя файла плагина и название плагина без расширения. Этого вполне достаточно. Основной php-файл плагина
Файл hello.php приведен ниже: <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.plugin.plugin' ); class plgButtonHello extends JPlugin { function plgButtonHello(& $subject, $config) { parent::__construct($subject, $config); } function onDisplay($name) { $getContent = $this->_subject->getContent($name); $js = " function insertHello(editor) { var content = $getContent jInsertEditorText('{hello}', editor); } "; $doc = & JFactory::getDocument(); $doc->addScriptDeclaration($js); $button = new JObject(); $button->set('modal', false); $button->set('onclick', 'insertHello(''.$name.'');return false;'); $button->set('text', 'Hello'); $button->set('name', 'hello'); $button->set('link', '#'); return $button; } }?>
Разберем основные моменты. Любой плагин в Joomla 1.5 должен быть наследником от класса JPlugin, а плагин, реализующий кнопку для визуального редактора, должен реализовывать метод onDisplay. Данный метод, в результате своей работы должен вернуть объект, описывающий кнопку для визуального редактора.
В данном примере, для этих целей создается объект $button, и присваиваются минимально необходимые свойства: modal — флаг, определяющий, является ли открывающееся окно модальным или нет (т.е. можно ли вернуться в редактор, не закрывая открывшееся окно). onclick — обработчик события нажатия на кнопку (вызов JavaScript-функции) name — имя кнопки и по совместительству название класса, присваиваемого кнопке (как правило совпадает с именем плагина). text — текст, который будет написан на кнопке link — ссылка (учитывая, что мы добавляем на кнопку обработчик события OnClick - ссылку делаем пустой, проставляя в качестве значения символ #)
Чуть выше определения объекта кнопки, можно заметить объявление JavaScript-функции, которую мы обозначили обработчиком события нажатия кнопки. Данная функция выполняет одно простое действие - вставляет тег {hello} в текущую позицию курсора редактора.
Объявление данной функции добавляется в код текущей страницы посредством вызова метода addScriptDeclaration у объекта типа JDocument, описывающего текущую страницу.
Вот собственно и все. Если указанные два файла упаковать в архив и установить, при редактировании материалов Joomla под редактором появится еще одна кнопочка, по нажатию на которой в поле редактора будет вставляться тег {test}. Источник: http://joomlaportal.ru
|
|
|
|