Поведение switcher в Joomla 2.5 |
Этот вид поведения дает разработчикам возможность создавать похожие на вкладки панели в интерфейсе HTML-страницы. Такая возможность оказывается удобной, когда требуется отобразить дополнительные сведения на экране, вписывающемся в одну страницу. Ниже показан код экрана Global Configuration, на котором применяется поведение switcher. По своим функциям это поведение аналогично подменю. После выбора каждой ссылки отображаются сведения, связанные с соответствующей панелью формы, определяемой элементом div в разметке документа. Отличие заключается в том, что поведение switcher позволяет загрузить все сведения на целом экране в одном цикле запроса. Одновременно отображаются данные, выводимые на одну панель, но в документе присутствуют все панели, и поэтому их смена происходит очень быстро, не требуя загрузки новой панели с веб-сервера. И все это достигается благодаря ненавязчивости JavaScript, которая проявляется в том, что в атрибут style вносятся изменения с целью скрыть все панели, кроме отображаемой. Рассмотрим подробнее действие данного вида поведения на примере экрана Global Configuration. Если заглянуть в папку administrator/components/com_config/views/application/tmpl, то в ней можно обнаружить 17 различных файлов компоновки. Первым из них загружается файл компоновки default. php. Ниже приведена первая часть этого файла. defined('_JEXEC) or die; В приведенный выше код сначала вводится вызов метода поведения behavior, switcher для загрузки требующегося сценария JavaScript. Затем в выделенной полужирным строке кода формируются ссылки на подменю. В этой строке кода выполняется файл компоновки default-navigation.php, а результат выводится на месте расположения модуля, обозначаемом как submenu. В файле default-navigation.php содержится следующий код: <ul id="submenu"> <li><a href="#" onclick="return false;" id="site" class="active"> <?php echo JText::_('JSITE'); ?></a></li> <li><a href="#" onclick="return false;" id="system"><?php echo JText: :_('COM_CONFIG_SYSTEM'); ?></a></li> <li><a href="#" onclick="return false;" id="server"><?php echo JText: :_('COM_CONFIG_SERVER'); ?></a></li> <li><a href="#" onclick="return false;" id="permissions"> ^<?php echo JText: :_('COM__CONFIG_PERMISSIONS'); ?></a></li> </ul> В этом коде создается элемент разметки ul с идентификатором подменю, что очень важно. Ведь это обстоятельство используется в селекторе JavaScript для указания на то, что данный список ссылок будет служить для смены панелей. А в каждом элементе разметки li определяется ссылка на одну из панелей, выводимых на экран с поведением switcher. Имя панели указывается в атрибуте id. В определении первой ссылки атрибуту class присваивается значение active, как выделено полужирным в приведенном выше коде. Этим пользователю дополнительно указывается на то, что данная панель активна. А теперь вернемся к файлу компоновки default.php. В следующей его части находится код для ввода сценария JavaScript, активизирующего рассматривавшееся ранее поведение для проверки достоверности данных в форме. Далее следует приведенный ниже код. <form action="<?php echo JRoute::_('index.php?option=com_config');?>" id="application-form" method="post" name="adminForm" class="form-validate"> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftplogin'); ?> <?php endif; ?> <div id="config-document"> <div id="page-site"> <div> <div> <?php echo $this->loadTemplate ('site'); ?> <?php echo $this->loadTemplate('metadata'); ?> </div> <div> <?php echo $this->loadTemplate('seo'); ?> <?php echo $this->loadTemplate('cookie'); ?> </div> </div> </div> В первой строке этого кода создается обычная форма. Затем загружается страница регистрации на FTP-сервере, если такая возможность имеется. В двух последующих строках кода выполняются действия, очень важные для поведения switcher, поэтому они и выделены полужирным. В первой из них создается элемент разметки div с атрибутом id="conf ig-document". Этот элемент разметки служит контейнером для всех панелей, которые будут действовать под управлением поведения switcher. Во второй строке кода создается первая панель. Для этой цели служит элемент разметки div с атрибутом id, имеющим значение page-ххх, где ххх совпадает с идентификатором элемента привязки а в разметке подменю. Данной панели необходимо также присвоить класс вкладки, что для чего служит атрибут. Далее следуют четыре выделенные полужирным строки кода В каждой из них компоновка загружается на нужное место страницы. Например, первой загружается компоновка из файла default-site. php, а второй — компоновка из файла default-metadata. php. После этого следует приведенная ниже строка кода. <div id="page-system" > В этой строке кода создается вторая панель, соответствующая ссылке на систему в подменю. Еще далее создается панель для страницы сервера (page-server), а затем панель для страницы полномочий (page-permissions). Для каждой из них загружается один или более сценарий компоновки. Когда страница загружается в первый раз, функция JavaScript проверяет, какая именно панель должна отображаться. Для запоминания пользователя, работавшего с панелью в последний раз, используется cookie-файл. В отсутствие cookie-файла по умолчанию отображается первая панель. Функция JavaScript действует следующим образом. В ней создается массив элементов разметки div с атрибутом. Эти элементы разметки служат контейнерами для панели каждой вкладки. Так, для отображаемой панели в данной функции динамически создается атрибут style = "display: block; ", а для всех остальных панелей — атрибут style = "display: none; ". Когда пользователь щелкает кнопкой мыши на ссылке подменю, данный процесс повторяется. Элемент разметки div, соответствующий выбранной пользователем ссылке, динамически обновляется (его атрибуту style присваивается значение "display: block;"), а следовательно, определяемая им панель отображается, тогда как остальные панели скрываются (атрибутам style их элемента разметки div присваивается значение "display: none; "). Это относительно простой и удобный способ реализации подобного рода поведения. Ведь файл компоновки каждой панели очень прост, что позволяет легко изменить расположение вкладок на странице или создать новые вкладки. Подобным способом организуется экран, вызываемый по команде Site ^System Information в базовом коде Joomla. Ниже приведены основные требования к применению поведения switcher.
Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |