Создание компонента Backend интерфейса с закладками

Автор перевода: Лебедев Сергей

Оригинал статьи вы можете посмотреть по ссылке Joomla Component Tabbed Interface For Backend

У многих известных компонентов в Backend есть закладки, предоставляющие логическое разделение информации по закладкам вместо использования громоздких форм. Код для таких интерфейсов содержится в ядре Joomla и ждет применения в Вашем следующем проекте.

(Примечание: информация из этого учебника была написана для ранних копий Mambo и на данный момент устарела. В скором времени эта информация будет обновлена. )

 

Вернемся к учебнику по компоненту Daily Message…

У Daily Message есть экран конфигурирования, который вызывается установкой переменной ‘act’ в значение ‘configure’. Эта переменная отслеживается в файле admin.dailymessage.php, который передает классу HTML_joeDailyMessage указание на выполнение функции listConfiguration(), которая, в свою очередь, выводит все опции конфигурирования.

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

{moscode} function listConfiguration($option, &$rows) { ?>

Bold bold ); ?>
Italic italic ); ?>
Underline underline ); ?>
Show Date showdate ); ?>

configid ?> /> Если у Вас возникли вопросы по этой вставке, вернитесь к описанию файла admin.dailymessage.html.php в учебнике Daily Message Component. Теперь мы можем добавить закладки.

 

{moscode} function listConfiguration($option, &$rows) { ?> {/moscode}

Сначала нужно добавить JavaScript, запускающий действия закладок. Скрипты уже встроены в Joomla и сделают для нас основную работу.

{moscode}

  Bold Italic Underline Show Date  

{/moscode}

После получения результатов запроса для конфигурационной таблицы (снова рекомендуется обратиться к учебнику Daily Message), мы создаем закладки в верхней части формы, используя таблицу. Атрибут “id” в каждой ячейке устанавливается в ‘tabx’, где x отвечает за позицию закладки в таблице, начиная с позиции 1. Первая пустая ячейка гарантирует, что закладки не будут сбрасываться в левую часть экрана. Последняя ячейка предотвращает разрастание других вправо. Несмотря на указанную толщину (90%) она редко занимает столько места.

{moscode}

Bold: bold ); ?>

{/moscode}

Начнем форму с добавления содержимого для первой закладки. Назовем содержимое каждой закладки соответственно имени (‘page1’,’page2’, и т.д.). Таким образом, JavaScript сделает всю работу, позволив нам сконцентрироваться на интерфейсе.

{moscode}

Italic: italic ); ?>
Underline: underline ); ?>
Show Date: showdate ); ?>

{/moscode}

Остальные четыре примера во многом повторяют первый. Совершенство – хорошая вещь, даже если оно кажется избыточным. Я делаю это, потому что знаю, если сделать иначе, начнется поток e-mail-ов, в которых будет: «Джо, помогите! Я ввел Ваш код так, как сказано на Вашем сайте и теперь получаю только первую страницу и кучу JavaScript ошибок при попытке перейти куда-нибудь еще!» Таким образом, Вы получаете полноценный код вместо нескольких строк с кучей замещающих знаков (как это обычно бывает в других руководствах).

{moscode} configid ?> /> {/moscode}

Теперь мы работаем со скрытыми переменными. Они взяты из учебника Daily Message, т.е. при желании Вы можете заглянуть туда и освежить в памяти принципы их работы. Должно быть, Вы уже заметили, что мы также закрыли тэг

. Следовательно, все четыре этих элемента находятся в одной форме ‘adminForm’. В зависимости от того, что Вы хотите получить, это может быть благословение или проклятие. Если Вы хотите получить список на каждой странице, используя удобные панели управления Joomla, Вам не повезло. Проблема в том, что все скрипты встраиваются в ‘adminForm’ и никуда более. Если Вы попробуете создать несколько форм с именем ‘adminForm’, скрипты откажутся работать. Однако, если у Вас экран конфигурации велик и содержит переменные из одной таблицы в базе данных, использование встроенных закладок помогает организовать настройки изящнее.

 

{moscode} dhtml.cycleTab('tab1'); Далее необходимо сообщить Joomla какую закладку мы хотим загрузить. На первый раз это может показаться ненужным, однако позволит добавить гибкости в Ваш дизайн. Предположим, что Вам нужно направить пользователя к некоторым настройкам из любой части Backend-а. Вы можете переслать через HTTP переменную и заменить приведенный выше код на оператор switch() или if(), которые выведут нужную закладку.

 

Подведем итоги. Элегантный, простой интерфейс делается с помощью DHTML кода закладок, содержащегося в Joomla. Он может очень помочь Вам, если у Вас интерфейс с 2-3 экранами элементов для одной формы, но может и усложнить Вам работу. Используйте разумно!

А здесь Вы можете скачать дополнение к компоненту Ежедневных Сообщений с закладками (не потребует удаления Daily Message):