AdvTableViewer
Расширение AdvTableViewer позволяет визуализировать таблицы AdvOntology с помощью шаблонов SMARTY.
Внутрь SMARTY-шаблона может быть встроен конфигурируемый редактор для редактирования записи таблицы «на месте».
Внутрь SMARTY-шаблона может быть встроен конфигурируемый редактор для редактирования записи таблицы «на месте».
AdvTableViewer похож на WikiPaterns, но отличается тем, что здесь не создаются отдельные вики-страницы для элементов таблицы AdvOntology.
Инсталляция
Шаг 1
В образовавшейся после инсталляции расширения директории sites/[mysite.ru]/data/AdvTableViewer/templates создайте smarty-шаблон MyType.txt для визуализации списка элементов. При необходимости, создайте шаблон MyType.one.txt для визуализации изолированного элемента.Шаг 2
В директории sites/[mysite.ru]/actions/ создайте файл экшна tvMyType.php. В нем будет безопасно подключен визуализатор advtableview.php.Шаг 3
Разместите экшен {{tvMyType}} на странице сайта, указав в параметрах критерии отбора и сортировки элементов.MyType.txt
Простейший smarty-шаблон MyType.txt с возможностью просмотра подробной информации об элементе и панелью редактирования (по умолчанию в формате HTML):
{foreach from=$list item=elem}
{$elem.id}: {$elem.data} <small>{$elem.id|tableviewone}</small> {$elem.id|tableviewedit}<br/>
{/foreach}
{$elem.id|tableviewadd}
В нем доступны smarty-переменные:
- {$list} – массив отфильтрованных и отсортированных элементов MyType;
- модификаторы:
- {$elem.id|tableviewone:'подробнее'} – ссылка для перехода к подробной информации о текущем элементе;
- {$elem.id|tableviewedit} – кнопки удаления и редактирования текущего элемента;
- {$elem.id|tableviewadd} – кнопка добавления нового элемента.
В MyType.one.txt передается {$elem} – массив значений полей текущего элемента MyType:
ID: {$elem.id}<br />
ИМЯ: {$elem.data}<br />
Во всех файлах шаблонов доступны все стандартные и следующие системные SMARTY-переменные:
- {$themeurl} – адрес темы
- {$rooturl} – адрес корня инсталляции QS
- {$today} – сегодняшний день, в формате Y-m-d
- {$yesterday} – вчерашний день, в формате Y-m-d
- {$isadmin} – является ли пользователь администратором
- {$curUserId} – (если установлен сервис AdvOntology) ID пользователя в базе AdvOntology, для незарегистрированного пользователя curUserId = 0
tvmytype.php
Экшн tvmytype.php необходимо разместить в директории sites/[mysite.ru]/actions. Его функции:- безопасно подключить {{advtableview}} для типа MyType;
- передать в переменной $fieldar список полей для редактора элемента таблицы MyType. Возможные типы полей см. на странице расширения WikiPatterns.
<?php
/* @var $this Wacko */
$srvUniViewer = $this->srvFactory ( "AdvTableViewer" ); /* @var $srvUniViewer Service_AdvTableViewer */
$srvUniViewer->secViewerEnabled = true;
if($this->IsAdmin()) {
$srvUniViewer->secEditorEnabled = true;
$notparse = '1';
$fieldar = array ( array ('ФИО','data','text', ''),
array ('Адрес','address','text', ''),
array ('Город','city','tselect table="advontotypes_DemoCity" field="data" key="id"', ''),
array ('Статус','status','selectint from="1" to="5"', ''),
);
}
$type = "DemoPerson";
$sortby = "dateindex";
$sortorder = "ASC";
include("extensions/AdvTableViewer/actions/advtableview.php");
$srvUniViewer->secViewerEnabled = false;
$srvUniViewer->secEditorEnabled = false;
?>
{{tvMyType}} – визуализация таблицы MyType
Экшн tvMyType позволяет определять в параметрах условия фильтрации, сортировки, паджинации и другие.
{{tvMyType type="DemoPerson" [sortby="data"] [sortorder="ASC"] [max="10"] [modifier="small"]}}
Name | default | Description |
---|---|---|
type | Имя таблицы | |
sortby | _updateTime | По какому полю сортировать |
sortorder | DESC | Порядок сортировки ASC/DESC |
max | Максимальное количество элементов на странице | |
modifier | Использовать другой файл smarty-шаблона для визуализации вида MyType.[modifier].txt, например MyType.small.txt | |
hidepagenumbers | 0 | Скрывать ли ссылки на следующие N элементов 0/1 |
filter | вида IsHot1:1: :Approved:2 | |
pagenumstyle | prevnext | Стиль отображения номеров страниц: prevnext|list |
showpager | bottom | Где показывать номера страниц: bottom|top|topbottom |
saverequest | пример: "view:tag" | Сохранять параметры из строки запроса |
templatestyle | wacko | Используемый анализатор шаблона: html|wacko |
Модификаторы AdvTableViewer
modifier.tableviewedit.php
<?php
function smarty_modifier_tvedit($id) {
global $wacko;
if ($wacko->isAdmin())
return ' <a href="'.$wacko->href("", "", "editid=$id" ).'"><img src="'.$wacko->GetConfigValue("root_url").'/images/additional/edit.png" alt="Править" style="border: 0;"></a> '.
' <a href="'.$wacko->href("", "", "deleteid=$id").'"><img src="'.$wacko->GetConfigValue("root_url").'/images/additional/drop.png" alt="Удалить" style="border: 0;" onclick="return delTableItem();"></a>';
}
?>
modifier.tablevieweadd.php
<?php
function smarty_modifier_tvadd($id) {
global $wacko;
if ($wacko->isAdmin())
return '<a href="'.$wacko->href("", "", "addelem=1").'" class="btn btn-mini">Добавить элемент</a>
<script language="JavaScript" type="text/javascript">
function delTableItem() {
if(confirm("Вы действительно хотите удалить элемент?")) {
return true;
}
return false;
}
</script>';
}
?>