Это старая версия Справка/Разработчик/Расширения/AdvTableViewer за 2014-04-14 11:12:12..

AdvTableViewer

Расширение AdvTableViewer позволяет визуализировать таблицы AdvOntology с помощью шаблонов 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
NB Обработка картинок производится QS автоматически, и перед картинками не надо ставить адрес темы {$themeurl} , но в других случаях это может быть востребовано.

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По какому полю сортировать
sortorderDESCПорядок сортировки ASC/DESC
maxМаксимальное количество элементов на странице
modifierИспользовать другой файл smarty-шаблона для визуализации вида MyType.[modifier].txt, например MyType.small.txt
hidepagenumbers0Скрывать ли ссылки на следующие N элементов 0/1
filterвида IsHot1:1: :Approved:2
pagenumstyleprevnextСтиль отображения номеров страниц: prevnext|list
showpagerbottomГде показывать номера страниц: bottom|top|topbottom
saverequestпример: "view:tag"Сохранять параметры из строки запроса

Модификаторы AdvTableViewer

modifier.tableviewedit.php

<?php
function smarty_modifier_tvedit($id) {
    global 
$wacko;
    if (
$wacko->isAdmin())
    return 
'&nbsp;&nbsp;<a href="'.$wacko->href("""""editid=$id"  ).'"><img src="'.$wacko->GetConfigValue("root_url").'/images/additional/edit.png" alt="Править" style="border: 0;"></a>&nbsp;'.
        
'&nbsp;&nbsp;<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>'
;
}
?>