Пример административного шаблона для объектов — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «В данной статье мы приведем пример административного шаблона, для модуля, который опериру…») |
Mad grant (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 141: | Строка 141: | ||
'''disable-csv-buttons''' – данный параметр скрывает функции экспорта и импорта данных в формате CSV, которые располагаются под списком объектов. | '''disable-csv-buttons''' – данный параметр скрывает функции экспорта и импорта данных в формате CSV, которые располагаются под списком объектов. | ||
+ | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория: API]] |
Текущая версия на 13:07, 5 июня 2013
В данной статье мы приведем пример административного шаблона, для модуля, который оперирует объектами, не страницами. К объектам относятся пользователи, баннеры, скидки и т.п. Практически для каждого модуля должен быть определен шаблон 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, которые располагаются под списком объектов.