Это старая версия Справка/Разработчик/Расширения/AdvTableViewer за 2014-04-14 11:07:54..
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 с возможностью просмотра подробной информации об элементе и панелью редактирования:
{foreach from=$list item=elem}
{$elem.id}: {$elem.data} <a href="{wackohref param="viewid=`$elem.id`"}">(подробнее)</a> {$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";
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" | Сохранять параметры из строки запроса |
Модификаторы 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>';
}
?>