Мысли вслух
Стандартная панель навигации в административной части компонента. Какие функции для стандартных кнопок используются по умолчанию, а также как создать не стандартные кнопки и функции. Печать
Добавил Administrator   
Понедельник, 13 Сентябрь 2010

В административной части Joomla 1.5 для компонентов предусмотрена специальная информационная и одновременно навигационная панель.
Ее использование облегчает создание типовых компонентов, т.е. те, которые используют стандартные функции: создать, удалить, сохранить, применить, отменить и т.д.
Всего таких стандартных функций около 30 штук, но, как правило, на практике используются не более 10.

В двух прошлых статьях был создан компонент без стандартной панели навигации и это не является нарушением правил создания компонента. Эта панель может быть, а может и не быть, решать Вам.

Я скажу проще, если нужно по быстрому создать типовой компонент, то без такой панели не обойтись, а если в планах создание мощного компонента, типа "Community Builder", то тогда лучше создавать свою навигацию, т.к. стандартная имеет ряд ограничений, но об этом поговорим в следующих статьях, а сейчас речь пойдет про наполнение стандартной панели навигации.

Для тестирования работоспособности создаваемых кнопок и соответствующих им функций, нам потребуется заготовка для создания компонента, качаем тут.

Теперь небольшой совет:
Панель подключайте в файлах view.html.php, каждого из Видов.

Если Вы не знаете что такое Вид, то тогда советую почитать вот эти статьи:
Самые основные понятия в создании компонента для Joomla 1.5. Как осуществляется навигация в компоненте. Описываю весь механизм работы компонента. Часть 1.

Самые основные понятия в создании компонента для Joomla 1.5. Как осуществляется навигация в компоненте. Описываю весь механизм работы компонента. Часть 2.

Итак, устанавливаем в Joomla 1.5 заготовку для создания компонента и находим файл:
administrator\components\com_example\views\example\view.html.php

Открываем его и находим функцию display(). В самом начале функции будем прописывать необходимый код, но сначала немного теории.

В Joomla 1.5 существует класс JToolBarHelper, который содержит статистические методы, вот эти методы мы и будем использовать, т.е. в каждом отдельном случае мы работаем с конкретным методом из этого класса, поэтому синтаксис вызова метода, будет выглядеть так:
JToolBarHelper::название метода(параметры метода); - где название метода – это один из стандартных методов, который поддерживает Joomla 1.5, а параметры метода – это определенные значения для настройки метода, т.е. каждый метод, это функция с определенными параметрами, которые могут быть обязательными или дополняющими.

Давайте обратимся к первому методу и на практике закрепим полученные знания.

Метод title() - выводит текстовое сообщение и иконку к этому тексту, содержит два параметра:
1. Текстовое сообщение, которое Вы задаете для отображения в этом Виде.
2. Иконка, которая отображается рядом с текстовым сообщением (для нестандартной картинки, требуется настройка css стилей компонента.
Синтаксис: JToolBarHelper::title('Текст для отображения', 'картинка для отображения');
Что касается текста, то тут все понятно, а вот с картинкой уже сложнее. Дело в том, что для отображения картинки используются настройки из таблицы стилей, т.е. нужно указывать не сам путь к нужной картинке, а лишь кодовое слово стиля css и расширение применяемой картинки. К примеру, запишем этот метод так:
JToolBarHelper::title('Текст для отображения', 'addedit.png'); - где addedit – это кодовое слово, а .png – это расширение картинки.

Для того, чтобы окончательно все понять откройте следующую таблицу стилей:
administrator\templates\khepri\css\icon.css

Для нашей картинки, в этом файле, найдите запись:
.icon-48-addedit { background-image: url(../images/header/icon-48-article-add.png); }
Как видите это стиль для вывода нашей картинки, в котором именно последнее слово из названия класса addedit было нами указано при записи метода как кодовое слово, а не название самого файла icon-48-article-add.png, из названия файла нам нужен был только его тип .png.
В названии класса есть еще icon-48, но эта информация нужна самой Joomla, для того, чтобы определить назначение картинки. Как Вы можете видеть из файла icon.css, существует три назначения картинок (иконок):
icon-16 – для самых маленьких иконок, к примеру, иконки отображающиеся в пунктах верхнего меню;
icon-32 – средние иконки, которые отображаются для кнопок в панели навигации компонента;
и собственно icon-48 – крупные иконки, которые отображаются с текстовой информацией метода title().
Как не сложно догадаться, эти стили отличаются размерами своих картинок.

Думаю, достаточно подробно объяснил, как указывать картинки в методе title().

Приступим к следующему методу addNewX() – этот метод применяется для создания кнопки с функцией создания новой записи, метод имеет два параметра:
1. Функция для обработки в контроллере (если не указать, то будет функция add()).
2. Текст, для отображения под иконкой (если не указывать, то будет Новый).
Запишем пример и посмотрим что к чему: JToolBarHelper::addNewX();
При такой записи этого метода, будет отображаться кнопка с надписью Новый, а при нажатии будет вызывать в контроллере функцию add().

Для проверки работоспособности создаваемых методов, создадим контроллер testmethods.php по следующему пути:
administrator\components\com_example\controllers\testmethods.php

Вот код созданного контроллера с подробным комментарием:
<?php
// Защита от прямого обращения к файлу
defined( '_JEXEC' ) or die( 'Restricted access' );

// Подключаем нужные библиотеки Joomla 1.5
jimport('joomla.application.component.controller');

// Класс контроллера, где "Testmethods", это название нового контроллера.
class AnameControllerTestmethods extends JController
{
    // Функция для обработки метода addNewX()
     function add()
    {
        // создаем системное сообщение для страницы
        $msg = 'Сработала функция add() для метода addNewX()';
        /* Вызываем загрузку нужной страницы через функцию setRedirect()
        Функция содержит два параметра: путь к странице и системное сообщение для этой страницы */

        $this->setRedirect('index.php?option=com_example', $msg);
    }
}

Но пока клавиша работать не будет, а все по тому, что Joomla 1.5 не хватает данных для вызова созданной в контроллере функции add().

Еще одно небольшое правило:
Для того чтобы работали стандартные кнопки навигации по компоненту, необходимо файлы шаблона компонента, лежащие в папке tmpl Вида, представлять в виде формы:
<?php
// Защита от прямого обращения к файлу
defined('_JEXEC') or die('Restricted access'); ?>

<form action="index.php" method="post" name="adminForm">

<!-- Выводим данные, переданные из файла view.html.php -->
<div><?php echo $this->text; ?></div>

<!-- Выводим строку с переменной $checked, которая позволит отметить данную строку, а также обновит данные в <input type="hidden" name="boxchecked" value="0" /> -->
<div style="margin-top:10px; font-family:Verdana; font-size:14px;"><?php $checked = JHTML::_('grid.id', 1, 1 ); echo $checked; ?>Необходимо отметить для срабатывания клавиш "Изменить" и "Удалить"</div>

<!--Определяем компонент для обработки формы-->
<input type="hidden" name="option" value="com_example" />

<!--Определяем функцию в контроллере для обработки формы-->
<input type="hidden" name="task" value="" />

<!--Определяем контроллер, который нужно подключить для обработки формы-->
<input type="hidden" name="controller" value="testmethods" />

<!--Определяем количество выбранных элементов из списка созданных записей-->
<input type="hidden" name="boxchecked" value="0" />

</form>

Как Вы заметили, это код файла tmpl\default.php Вида example.
Теперь он выводиться с формой под именем adminForm, это имя обязательно должно быть именно таким.
Также обязательно action указывать в index.php, а method очень желательно делать post.

Еще в этой форме должны быть обязательные скрытые значения:

Определяем компонент для обработки формы: <input type="hidden" name="option" value="com_example" /> В моем случае это компонент com_example

Определяем функцию в контроллере для обработки формы: <input type="hidden" name="task" value="" /> В данном случае будет вызвана функция по умолчанию от метода addNewX(), а именно add(), поэтому ничего не указываем.

Определяем контроллер, который нужно подключить для обработки формы: <input type="hidden" name="controller" value="testmethods" /> Я создал контроллер testmethods.php, поэтому указал testmethods

Определяем количество выбранных элементов из списка созданных записей: <input type="hidden" name="boxchecked" value="0" /> Данная строка работает с переменной $checked, которая ранее была определена рядом с текстовой строкой.
Я применил ее для возможности проверять работоспособность клавиш, которые требуют выбор из списка, такие как Изменить и Удалить.
О самих клавишах, ниже будет сказано, а вот, что касается переменной $checked и как она взаимодействует с этой строкой, то это тема для отдельной статьи, сейчас на этом останавливаться не буду.

Вот, теперь все готово к проверке созданной клавиши "Новый".

Идем в компонент и жмем на созданную клавишу "Новый", должно появиться системное сообщение, созданное в контроллере testmethods.php, а именно "Сработала функция add() для метода addNewX()"

Теперь создадим еще клавиши с методами, которые очень часто используются в компонентах:
editListX() – редактирование данных, содержит два параметра:
1. Функция для обработки в контроллере (если не указать, то будет функция edit()).
2. Текст, для отображения под иконкой (если не указывать, то будет Изменить).

deleteList() - удаление данных, содержит три параметра:
1. Текстовая строка, которая отображается в окне javascript при подтверждении к удалению (если не указывать, то окна javascript с подтверждением к удалению не будет вообще).
2. Функция для обработки в контроллере (если не указать, то будет функция remove()).
3. Текст, для отображения под иконкой (если не указывать, то будет Удалить).

save() - сохранение записи, содержит два параметра:
1. Функция для обработки в контроллере (если не указать, то будет функция save()).
2. Текст, для отображения под иконкой (если не указывать, то будет Сохранить).

apply() – сохраняет запись, без перезагрузки страницы, содержит два параметра:
1. Функция для обработки в контроллере (если не указать, то будет функция apply()).
2. Текст, для отображения под иконкой (если не указывать, то будет Применить).

cancel() - отменяет данное действие, содержит два параметра:
1. Функция для обработки в контроллере (если не указать, то будет функция cancel()).
2. Текст, для отображения под иконкой (если не указывать, то будет Отмена).

custom() - кнопка с собственными настройками, содержит шесть параметров:
1. Функция для обработки в контроллере (указывать обязательно).
2. Изображение для кнопки (для нестандартной картинки, требуется настройка css стилей компонента).
3. Изображение для кнопки при наведении мышкой (для работы требуется настройка css стилей компонента).
4. Текст, для отображения под иконкой (если не указывать, то будет пустое место).
5. Может иметь два значения false и true (если true, то для кнопки будет включена проверка).
6. Может иметь два значения false и true (данный параметр связан с hideMainMenu).

Все эти методы создадим по аналогии с первым addNewX(), кроме метода deleteList() и custom().
Эти два метода имеют дополнительные параметры, поэтому объясню их отдельно.

Начнем с метода deleteList().
У этого метода есть дополнительный параметр, который не встречается в других перечисленных методах, а именно: Текстовая строка, которая отображается в окне javascript при подтверждении к удалению (если не указывать, то окна javascript с подтверждением к удалению не будет вообще).
Другими словами, при записи этого метода мы можем указать:
JToolBarHelper::deleteList('Вы уверены, что хотите удалить?');
Теперь если нажать по такой клавише, то будет отображать предупреждение, с указанным текстом и соответственно будет доступно два варианта, согласиться или отменить.
Думаю понятно для чего это сделано.
Если же мы запишем этот метод так: JToolBarHelper::deleteList();
То никакого подтверждения выводится не будет, а просто произойдет запрограммированное действие в функции remove(), т.е. как правило это удаление.

Теперь разберем самый интересный метод custom().
Этот метод имеет больше всех параметров, но это и понятно, данный метод позволяет настроить свою собственную клавишу.

Давайте запишем данный метод, а потом разберем все параметры:
JToolBarHelper::custom('myfunction', 'default.png', 'default.png', 'Моя кнопка', false, false);

Итак, myfunction – это имя функции в контроллере, т.е. для всех предыдущих методов были использованы функции по умолчанию, но у этого метода таковой нет, поэтому нужно обязательно указать имя функции.

default.png – это картинка для кнопки, из стандартных можно выбрать в папке:
administrator\templates\khepri\images\toolbar\
Обратите внимание на форму записи. Она соответствует тому же принципу, что и у метода title().
Для того, чтобы отобразить собственную картинку, как для метода custom(), так и для метода title(), необходимо создавать таблицу стилей (css) для компонента, но это тема для отдельной статьи, поэтому в данном примере я использовал стандартную картинку.

Еще один default.png – это картинка для кнопки, которая отображается при наведении на нее мышкой.
Данная опция не настроена в подключенных таблицах стилей (css), поэтому не работает. При создании собственной таблицы стилей (css) для своего компонента, Вы сможете настроить данную опцию.
Формат записи такой же как и в предыдущем параметре.

Моя кнопка – это текст, который выводиться под иконкой кнопки.

Первый false – это своего рода флаг, который имеет два значения: true – Да (истина) и false – Нет (ложь).
Дело в том, что на странице с этой кнопкой, может быть установлена проверка, т.е. условие, которое не позволит дальнейшее правильное исполнение сценария. К примеру, в просмотре списка статей, есть колонка, в которой можно отметить одну или несколько или вообще сразу все статьи. Так вот, если не отметить ни одну из статей, и нажать, к примеру, кнопку Удалить, то будет отображаться сообщение, о том, что ни одна статья не выбрана и исполнение сценария будет остановлено.
Соответственно, если Вы создаете кнопку методом custom() и она предполагает работу с отмеченными записями, то указав в этом параметре true, Вы тем самым активируете проверку на выбор минимум одной записи. Если же Вы оставите значение false, то тогда проверки не будет и, сценарий будет выполняться дальше.
Могу сказать, что иногда нужно, чтобы сценарий продолжался, т.к. необходимо сделать проверку уже в самом сценарии. Поэтому данный параметр нужно иметь ввиду.

Второй false – это тоже флаг, но он предназначен для меню hideMainMenu, т.е. основного меню администраторской части Joomla 1.5.
Судя из значений флага: true – Да (истина) и false – Нет (ложь), должно происходить событие по блокировки данного меню, так же как это происходит при указании в контроллере класса JRequest::setVar('hidemainmenu', 1);
Но на практике ничего подобного не происходит.
В общем, не использую я этот параметр, просто всегда ставлю значение false.
Если Вы точно знает, какое действие выполняет данный параметр, то обязательно сообщите мне, буду очень признателен!

Вот собственно и все, что хотел сказать.

Скачать компонент, в котором установлены все кнопки, описанные в этой статье, можно здесь.


С уважением, Дмитрий Семенов.

 

Комментарии  

 
#1 albert 11.04.2011 23:47
Дмитрий Семенов
Вам бы видео по созданию компонента сделать цены бы ему не было
Цитировать
 
 
#2 SDemon 12.04.2011 12:07
albert видео уже создано и цена ему есть

Курс "Разработка сайта под заказ" будет состоять из двух частей, первая уже продается и в бонусах к этому курсу есть теоретические занятия по созданию компонентов и модулей, а вот вторая часть будет полностью посвящена разработке серьезных компонентов и модулей. К примеру, в видео курсе создадим компонент интернет магазина!

Поэтому, всем кто хочет обучиться профессионально й разработке сайтов, советую изучить мой курс Разработка сайта под заказ

--
С уважением, Дмитрий Семенов.
Цитировать
 
 
#3 Natashawen 07.02.2012 23:44
Где скачать xrumer 7.0.10 ?
Дайте мне адрес , пожалуйста!
Это лучшая программа для массового размещения на форумах ! XRumer может сломать большинство видов каптч !
Цитировать
 
 
#4 Natashawen 18.02.2012 04:14
Как освободить X-Rumer 7.0.10 ??
Пришлите мне , пожалуйста URL!
Это лучшая программа для массового размещения на форумах ! XRumer может сломать большинство видов каптч !
Цитировать
 
 
#5 postnewthreadflexyx 12.04.2012 09:51
Spammers are *not* allowed! CoX 21551
postnewthread
only administrators can post topics CoX 11423
Цитировать
 
 
#6 JantyGoonee 09.05.2012 07:39
Ламерам хай!!

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

пользуйтесь!
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Хостинг «Джино»
SmartResponder