Пример административного шаблона для объектов
Материал из Umicms
В данной статье мы приведем пример административного шаблона, для модуля, который оперирует объектами, не страницами. К объектам относятся пользователи, баннеры, скидки и т.п. Практически для каждого модуля должен быть определен шаблон list.view.xsl, который отвечает за отображение данных в виде списка в административной части. В случае, если системное название вашего кастомного модуля cache, то в папку \styles\skins\mac\data\modules\cache\ необходимо добавить файл list.view.xsl, примерно следующего содержания:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xsl:stylesheet SYSTEM "ulang://cache" [ <!ENTITY sys-module 'cache'> ]> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="data[@type = 'list' and @action = 'view']"> <div class="imgButtonWrapper"> <xsl:choose> <xsl:when test="$method = 'udata_lists'"> <a id="addAddress" href="{$lang-prefix}/admin/&sys-module;/add_udata/">&label-add-udata;</a> </xsl:when> <xsl:when test="$method = 'upage_lists'"> <a id="addAddress" href="{$lang-prefix}/admin/&sys-module;/add_upage/">&label-add-upage;</a> </xsl:when> <xsl:otherwise /> </xsl:choose> </div> <xsl:call-template name="ui-smc-table"> <xsl:with-param name="control-params" select="$method" /> <xsl:with-param name="content-type">objects</xsl:with-param> <xsl:with-param name="enable-objects-activity">1</xsl:with-param> <xsl:with-param name="domains-show">1</xsl:with-param> <xsl:with-param name="search-show">0</xsl:with-param> <xsl:with-param name="disable-csv-buttons">1</xsl:with-param> </xsl:call-template> </xsl:template> </xsl:stylesheet>
Строки:
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://cache" [ <!ENTITY sys-module 'cache'> ]>
отвечают за подключение дополнительных XSLT сущностей. Данный вызов ulang://cache, в котором использует протокол upage, сформирует список сущностей из файла \classes\modules\cache\i18n.php, если не был найден фал с текущим языковым префиксом: i18n.ru.php, i18n.en.php, i18n.fr.php и т.п..
Просмотреть весь список полученных сущностей модуля cache можно вызовом:
http://ваш_домен/ulang/cache
Данные условия узла data:
<xsl:template match="data[@type = 'list' and @action = 'view']"> ... <xsl:template>
выбраны из-за того, что в php-методе, который осуществляет выборку из базы данных нужных объектов, прописано:
$this->setDataType("list"); $this->setActionType("view");
в данном примере используется метод udata_lists, файла \classes\modules\cache\__admin.php, сам пример метода:
public function udata_lists() { $this->setDataType("list"); $this->setActionType("view"); if($this->ifNotXmlMode()) return $this->doData(); $limit = 20; $curr_page = getRequest('p'); $offset = $limit * $curr_page; $sel = new selector('objects'); $sel->types('object-type')->name('cache', 'udata'); $sel->order('name')->asc(); $sel->limit($offset, $limit); selectorHelper::detectFilters($sel); $domains = getRequest('domain_id'); if(is_array($domains) && sizeof($domains)) { $domainsCollection = domainsCollection::getInstance(); if(sizeof($domainsCollection->getList()) > 1) { $sel->where('domain_id')->equals($domains[0]); } } $this->setDataRange($limit, $offset); $data = $this->prepareData($sel->result, "objects"); $this->setData($data, $sel->length); return $this->doData(); }
Вернемся к шаблону xsl:template. Блок:
<div class="imgButtonWrapper"> ... <div>
отвечает за отображение кнопок, которые активирует переход на страницу добавления объекта. Переменная method определена в основном шаблоне \styles\skins\mac\main.xsl:
<xsl:variable name="method" select="/result/@method"/>
&label-add-udata; и &label-add-upage; - сущности сформированные из файла \classes\modules\cache\i18n.php, они были подключены запросом "ulang://cache"
Именованный вызов шаблона:
<xsl:call-template name="ui-smc-table"> ... </xsl:call-template>
отвечает за формирование списка данных. Сам шаблон обработчик с name="ui-smc-table" находится в файле \styles\skins\mac\interface\ui\controls.xsl
В шаблон ui-smc-table мы передаем различные параметры, рассмотрим каждый из них.
control-params – название текущего метода, которое будет передано в метод getDatasetConfiguration(), файл \classes\modules\cache\admin.php, будет выполнен подобный ajax запрос:
http://ваш_домен/admin/cache/udata_lists.xml?domain_id[]=1&lang_id[]=1
для подгрузки необходимых данных в xml-формате. О методе getDatasetConfiguration более подробно рассказано в данной статье Назначение метода getDatasetConfiguration в модуле системы
В итоге, параметр control-params достаточно важный, поэтому необходимо понимать его назначение при создании дополнительного модуля.
content-type – данный параметр со значением = objects, указывает на то, что данные необходимо визуально отобразить по правилам Объектов. Если данный параметр не передать, система будет считать что вы работает со страницами (pages) и выведет контролы для отображения родительских и дочерних страниц.
enable-objects-activity – данный параметр включает отображение в контролах управления такую функцию как значок смены активности объекта. Сам метод для смены активности также должен присутствовать в модуле, как и поле is_active в объекте у которого меняется активность.
domains-show – этот параметр включает отображение выпадающего списка с доменами, в случае если их больше одного. По умолчанию, этот выпадающий список отображается только для Страниц.
search-show – указав значение для этого параметра =0, мы отключили форму поиска данных в модуле. По умолчанию форма поиска отображается.
disable-csv-buttons – данный параметр скрывает функции экспорта и импорта данных в формате CSV, которые располагаются под списком объектов.
