среда, 15 февраля 2012 г.

Создание компонента для CMS Joomla. Часть 10. Добавление украшений в админку для нашего компонента.

Доброго времени суток, читатели блога zloykolobk.blogspot.com, посвященного изучению CMS Joomla. И мы с Вами продолжаем создавать компонент для CMS Joomla. Так в прошлой статье мы остановились на добавлении панели инструментов  в наш компонент. А сегодня мы немного украсим наш компонент в админке. Итак задачу поставили давайте приступим...

Для тех, кто к нам присоединился с данного поста рекомендую Вам скачать исходник компонента, который мы сделали в предыдущих постах. На базе данного компонента мы и будем продолжать расширять функционал нашего компонента для CMS Joomla.
Небольшое замечания пока данный исходник не устанавливайте, просто распакуйте архив в папку.
 
Добавление иконок.
Создаем необходимые нам иконки размером 16x16 и 48x48 и помещаем их в media/images/ и не забываем добавить данное изменение в файл описания. Исходник которого я приведу чуть ниже.
Изменение представления.

Для того, чтобы изменить view нашего компонента мы изменим код в файле admin/views/helloworlds/view.html.php на:

<?php
// права доступа
defined('_JEXEC') or die('Restricted access');

// импортируем библиотеку view
jimport('joomla.application.component.view');

/**
* создаем класс HelloWorlds
*/
class HelloWorldViewHelloWorlds extends JView
{
    function display($tpl = null)
    {
       // берем данные
       $items = $this->get('Items');
       $pagination = $this->get('Pagination');

       // проверяем на наличие ошибок
       if (count($errors = $this->get('Errors')))
       {
           JError::raiseError(500, implode('<br />', $errors));
           return false;
       }
       // Помещаем данные во view
       $this->items = $items;
       $this->pagination = $pagination;

       //Устанавливаем панель инструментов
       $this->addToolBar();

       // передаем данные в шаблон
       parent::display($tpl);

       // Передаем установки title
       $this->setDocument();
    }

   /**
    * Настройка панели инструментов
    */
    protected function addToolBar()
    {
       JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'helloworld');
       JToolBarHelper::deleteListX('', 'helloworlds.delete');
       JToolBarHelper::editListX('helloworld.edit');
       JToolBarHelper::addNewX('helloworld.add');
    }

    protected function setDocument()
    {
       $document = JFactory::getDocument();
       $document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION'));
    }
}

Это представление использует параметр для JToolBarHelper::title, который будет использоваться для построения CSS классов загаловка. Метод _setDocument устанавливает в браузер title.
Теперь отредактируем код в admin/views/helloworld/view.html.php следующим образом:

<?php
// права доступа
defined('_JEXEC') or die('Restricted access');

// импортируем библиотеку view
jimport('joomla.application.component.view');

/**
* создаем класс HelloWorld
*/
class HelloWorldViewHelloWorld extends JView
{
    protected $form = null;

    public function display($tpl = null)
    {
       // вытаскиваем данные
       $form = $this->get('Form');
       $item = $this->get('Item');

       // проверяем на наличие ошибок
       if (count($errors = $this->get('Errors')))
       {
           JError::raiseError(500, implode('<br />', $errors));
           return false;
       }
       // Вывод данных для просмотра
       $this->form = $form;
       $this->item = $item;

       // Устанавливаем панель инструментов
       $this->addToolBar();

       // показываем шаблон
       parent::display($tpl);

       // передаем title
       $this->setDocument();
    }

   /**
    * Настройка панели инструментов
    */
    protected function addToolBar()
    {
       JRequest::setVar('hidemainmenu', true);
       $isNew = ($this->item->id == 0);
       JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW')
                                    : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld');
       JToolBarHelper::save('helloworld.save');
       JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE');
    }

    protected function setDocument()
    {
       $isNew = ($this->item->id < 1);
       $document = JFactory::getDocument();
       $document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING')
                                  : JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING'));
    }
}

Это представление также использует параметр JToolBarHelper::title, который устанавливает title в браузере.

Изменение основного файла.
В файле admin/helloworld.php изменим код для того, чтобы использовать изображение размером 48x48:

<?php
// проверка доступа
defined('_JEXEC') or die('Restricted access');

// Устанавливаем глобальные свойства
$document = JFactory::getDocument();
$document->addStyleDeclaration('.icon-48-helloworld {background-image: url(../media/com_helloworld/images/tux-48x48.png);}');

// импорт библиотеки Joomla controller
jimport('joomla.application.component.controller');

// Получаем экземпляр контроллераHelloWorld
$controller = JController::getInstance('HelloWorld');
// Выполняем запрос задачи
$controller->execute(JRequest::getCmd('task'));
// перенаправляем на установленный контролер
$controller->redirect();

Изменение языкового файла.
Изменим файл admin/language/en-GB/en-GB.com_helloworld.ini следующим образом:

COM_HELLOWORLD_ADMINISTRATION="HelloWorld - Администрирование"
COM_HELLOWORLD_HELLOWORLD_CREATING="HelloWorld - Создание"
COM_HELLOWORLD_HELLOWORLD_DETAILS="Детали"
COM_HELLOWORLD_HELLOWORLD_EDITING="HelloWorld - Редактирование"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="Это сообщение будет показано"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Приветствие"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT="HelloWorld управление: Редактирование сообщения"
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="HelloWorld управление: Новое сообщение"
COM_HELLOWORLD_MANAGER_HELLOWORLDS="HelloWorld управление"
COM_HELLOWORLD_N_ITEMS_DELETED_1="Одно сообщение удалено"
COM_HELLOWORLD_N_ITEMS_DELETED_MORE="%d сообщение удалено"
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_N_ITEMS_DELETED="Сообщения удалены"

На этом наш пост, посвященный добавлению украшений в админку для компонента CMS Joomla можно считать завершенным. Единственной осталось изменить файл описания helloworld.xml:

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">

    <name>Hello World!</name>
    <!-- Данные о разработчике -->
    <creationDate>2012</creationDate>
    <author>zloykolobok</author>
    <authorEmail></authorEmail>
    <authorUrl>http://zloykolobok.blogspot.com</authorUrl>
    <copyright>Copyright Info</copyright>
    <license>License Info</license>
    <!--  Версия продукта-->
    <version>0.0.10</version>
    <!-- Описание компонента-->
    <description>Продолжение статей по созданию расширений для CMS Joomla</description>

    <install> <!--Выполняется при установке -->
       <sql>
           <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
       </sql>
    </install>
    <uninstall> <!-- Выполняется при удалении-->
       <sql>
           <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
       </sql>
    </uninstall>
    <update> <!-- Выполняется при обновлении. Данная функция появиласть с версии 1.6 -->
       <schemas>
           <schemapath type="mysql">sql/updates/mysql</schemapath>
       </schemas>
    </update>

    <!-- Копирование файлов в секцию site-->
    <files folder="site">
       <filename>index.html</filename>
       <filename>helloworld.php</filename>
       <filename>controller.php</filename>
       <folder>views</folder>
       <folder>models</folder>
       <folder>language</folder>
    </files>
    <!-- в папке media создается папка com_helloworld и туда производиться копирование media-файлов-->
    <media destination="com_helloworld" folder="media">
       <filename>index.html</filename>
       <folder>images</folder>
    </media>

    <administration>
       <!-- меню в административном разделе-->
       <menu img="../media/com_helloworld/images/tux-16x16.png">COM_HELLOWORLD_MENU</menu>
       <!-- Копирование сайтов в секцию Administration  -->
       <files folder="admin">
           <filename>index.html</filename>
           <filename>helloworld.php</filename>
           <filename>controller.php</filename>
           <!-- папка для SQL файлов -->
           <folder>sql</folder>
           <!-- папка для table-файлов -->
           <folder>tables</folder>
           <!-- папка для model-файлов-->
           <folder>models</folder>
           <!-- папка для views-файлов -->
           <folder>views</folder>
           <!--папка для controller-файлов-->
           <folder>controllers</folder>
       </files>

       <languages folder="admin">
           <language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
           <language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
       </languages>
    </administration>

</extension>

Сделать архив и проверить работоспособность компонента.
Скачать исходник компонента данного поста Вы можете по ссылке.
А на этом я с Вами прощаюсь. Если у Вас возникли проблемы или вопросы по данному посту пишите в комментариях и я обязательно постараюсь Вам помочь.
Если Вам понравились материалы данного блога, то Вы можете подписаться на RSS-рассылку данного блога для того, чтобы не пропустить выхода новых статей.

Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



2 комментария: