Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Создание модуля. Добавляем вкладки в интерфейс модуля

Процедура создания модуля неплохо описана в документации. В принципе, следуя ей, можно получить работоспособный каркас. У меня же головная боль началась, когда я решил добавить в свой модуль несколько вкладок.

Оказалось, что обилие xslt и яваскрипта не всегда хорошо и некорые вещи делает слишком неочевидными.

Для упрощения жизни буду копировать прямые пути из своего проекта, мой модуль назвался faq20, замените его название на свое.

1. Задаем вкладки.

В class.php в блокЮ где подключаются административные библиотеки, добавить

$commonTabs = $this->getCommonTabs();
if($commonTabs) {
    $commonTabs->add("projects_list");
    $commonTabs->add("messages");
    $commonTabs->add("authors");
}

где projects_list, messages, authors - названия методов, вызываемых при открытии вкладки.

Обратите внимание, что синтаксис позволяет задавать алиасы для методов, например

$commonTabs->add("projects_list", array("lists", "lists55"));

Чтобы вкладки появились, методы должны присутствовать в классе.

Для страниц иерархии проверяем наличие метода getEditLink, для вывода объектов - метода getObjectEditLink.

public function getObjectEditLink($objectId, $type = false) {
    if ($type == 'author') return $this->pre_lang . "/admin/data/guide_item_edit/" . $objectId . "/";
    return $this->pre_lang . "/admin/faq20/edit/" . $objectId . "/";
}

 

Создаем типы данных по официальной инструкции и затем обязательно проверяем в модуле "Пользователи", чтобы у групп были правильно расставлены права доступа - по умолчанию все галочки будут сняты.

 

Переходим в __admin.php

Смотрим метод getDatasetConfiguration. Метод принимает некий строковый параметр, по которому можно задавать условие на построение таблицы smc. Содержимое файла, опять же, описано в документации по api и http://wiki.umisoft.ru/Назначение_метода_getDatasetConfiguration_в_модуле_системы, я же обращаю внимание, что можно возвращать несколько конфигураций.

Этот параметр задается в xslt-шаблоне. Переходим туда - list.view.xsl

Не забываем в шапке задать имя своего модуля

<!ENTITY sys-module 'faq20'>

Создаем блок шаблона для одной из вкладок ( у  меня список авторов):

<xsl:template match="result[@method = 'authors']/data">
    <xsl:call-template name="ui-smc-table">
        <xsl:with-param name="control-params">authors</xsl:with-param>
        <xsl:with-param name="content-type">objects</xsl:with-param>
        <xsl:with-param name="enable-objects-activity">1</xsl:with-param>
    </xsl:call-template>
</xsl:template>

control-params  - это имя того строкового параметра, который передается в getDatasetConfiguration

content-type  - показывает, что выводим не страницы, а объекты

enable-objects-activity - позволяет менять активность объекта (требуется поле is_activated в типе данных)

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления