Комментарии

Компоновка экрана диспетчера
( 0 Голосов )

И последняя программа для отображения экрана диспетчера выполняет его компоновку из файла views/submanager/tmpl/default.php. Как и все остальные файлы, этот файл составлен по образцу соответствующего файла компоновки для компонента Weblinks (administrator/components/com_weblinks/views/weblinks/tmpl/default.php). Ниже приведена первая часть кода из этого файла компоновки.

defined('_JEXEC) or die;
JHtml::addlncludePath(JPATH_COMPONENT.'/helpers/html);
JHtml::_('behavior.tooltip');
JHtml::_('script','system/multiselect.js', false, true);
$user = JFactory::getUser();
$userld = $user->get('id');
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
?>

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

<div>
<form action="<?php echo JRoute::_('index.php?option=com_joomprosubs&view=submanager'); ?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar">
<div>
<label for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label>
<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText: :_('COM_JOOMPROSUBS_SEARCH_IN_TITLE') ; ?>" />
<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
</div>
<div>
<select name="filter_published">onchange="this.form.submit()">
<option value=""> <?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option>
<?php echo JHtml::_('select.options', <*> JHtml::_('jgrid.publishedOptions'), 'value', 'text', ^$this->state->get('filter.state'), true);?> </select>
<select name="filter_category_id" onchange="this.form.submit()"> <option value=""> <?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option>
<?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_joomprosubs'), 'value', 'text', ^$this->state->get('filter.category_id'));?>
</select>
<select name="filter_access" onchange="this.form.submit()">
<option value=""> <?php echo ^> JText: :_ (* JOPTION_SELECT_ACCESS ') ; ?></option> <?php echo JHtml::_('select.options', > JHtml::_('access.assetgroups'), 'value*, 'text', $this->state->get('filter.access'));?> </select>
</div> </fieldset> <div> </div>

В этой части исходного кода компонуются средства поиска и другие фильтры. Он написан по образцу исходного кода из файла компоновки для компонента Weblinks. Обратите внимание на то, что весь класс компоновки под именем joomprosubs-manager заключен внутри элемента разметки div. Это дает разработчикам возможность выполнить специальное оформление экрана диспетчера с помощью вложенных таблиц стилей (CSS).

Ниже приведена следующая часть кода из данного файла компоновки.

<table> <thead> <tr>
<th style="width: 1%;">
<input type="checkbox" name="checkall-toggle" value="" ^onclick="checkAll(this)" />
</th>
<th>
<?php echo JHtml::_('grid.sort', 'JGLOBALJTITLE', 'a.title', ^>$listDirn, $listOrder) ; ?> </th> <th style="width: 5%;">
<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', ^$listDirn, $listOrder); ?> </th>
<th style="width: 20%;">
<?php echo JHtml::_('grid.sort', 'JCATEGORY', ^>'category_title', $listDirn, $listOrder); ?> </th>
<th  style="width:   20%;">
<?php echo  JHtml::_('grid.sort', Ь'COM_JOOMPROSUBS_FIELD_USERGROUP_LABEL',    'g.title',   $listDirn, ^>$listOrder) ;   ?>
</th>
<th  style="width:   10%;">
<?php echo JHtml::_('grid.sort', Ь'COM_JOOMPROSUBS_FIELD_DURATION_LABEL', 'a.duration', $listDirn, ^$listOrder); ?>
</th>
<th style="width: 5%;">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', Ь'a.access', $listDirn, $listOrder); ?> </th>
<th style="width: 5%;">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', ^>$listDirn, $listOrder) ; ?> </th> </tr> </thead>

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

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

<tfoot> <tr>
<td colspan="10">
<?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot>

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

<tbody>
<?php foreach ($this->items as $i => $item) :
$ordering = ($listOrder == 'a.ordering');
$item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_joomprosubs ^>&task=edit&type=other&cid[]='. $item->catid);
$canCreate = $user->authorise('core.create', 'com_joomprosubs.category.'.$item->catid);
$canEdit = $user->authorise('core.edit', 'com_joomprosubs.category.'.$item->catid);
$canCheckin = $user->authorise('core.manage', 'com_checkin') || ^$item->checked_out==$user->get('id') || $item->checked_out==0;
$canChange = $user->authorise('core.edit.state', 'com_joomprosubs .category. ' . $item->catid) && $canCheckin;
?>

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

<tr> <td>
<?php echo JHtml::_('grid.id', $i, $itera->id); ?> </td> <td>
<?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, >$item->editor, $item->checked_out_time, 'submanager.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="/<?php echo ^JRoute::_('index.php?option=com_joomprosubs&task=subscription.edit&id='. ^(int) $item->id) ; ?>">
<?php echo $this->escape($item->title); ?></a> <?php else : ?>
<?php echo $this->escape($item->title); ?> <?php endif; ?> <p>
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?></p> </td> <td>
<?php echo JHtml::_('jgrid.published',   $item->published, $i, 'submanager.', $canChange, 'cb', $item->publish_up, >$item->publish_down) ; ?> </td>
<td>
<?php echo $this->escape($item->category_title); ?>
</td>
<td>
<?php echo $this->escape($item->group_title); ?> </td>
<td>
<?php echo $this->escape($item->duration); ?> </td>
<td>
<?php echo $this->escape($item->access); ?> </td>
<td>
<?php echo (int) $item->id; ?> </td> </tr>
<?php endforeach; ?> </tbody> </table>

В этой части исходного кода компоновки каждая строка таблицы извлекается из объекта $item и отображается в ячейке таблицы, формируемой внутри элемента td разметки в коде HTML. И в последней части исходного кода из рассматриваемого здесь файла компоновки на экран выводятся скрытые поля задачи (task), установки флажка (boxchecked), упорядочения фильтров (filter_order) и направления для упорядочения фильтров (filter_order_dir), как показано ниже.

<div>
<input type="hidden" name="task"  value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo <*>$listOrder; ?>"   />
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>"   />
<?php echo JHtml::_('form.token');   ?> </div> </form> </div>

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


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код