Разработка:im/departments — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(API)
(Events)
Строка 92: Строка 92:
  
 
=== Получение ссылки на объект ===
 
=== Получение ссылки на объект ===
'plugintype' => 'im',
+
* 'plugintype' => 'im'
'plugincode' => 'obj'
+
* 'plugincode' => 'obj'
'eventcode'  => 'get_object_url'
+
* 'eventcode'  => 'get_object_url'
  
* Возвращается ссылка на объект
+
Возвращается ссылка на объект
  
 
=== Добавление подразделения ===
 
=== Добавление подразделения ===
'plugintype' => 'storage',
+
* 'plugintype' => 'storage'
'plugincode' => 'departments'
+
* 'plugincode' => 'departments'
'eventcode'  => 'insert'
+
* 'eventcode'  => 'insert'
  
* Сбрасывается кеш списка подразделений
+
Сбрасывается кеш списка подразделений
  
 
=== Добавление подразделения ===
 
=== Добавление подразделения ===
'plugintype' => 'storage',
+
* 'plugintype' => 'storage'
'plugincode' => 'departments'
+
* 'plugincode' => 'departments'
'eventcode'  => 'update'
+
* 'eventcode'  => 'update'
  
* Сбрасывается кеш списка подразделений
+
Сбрасывается кеш списка подразделений

Версия 10:12, 2 марта 2018

Плагин
Название departments
Тип im


Подразделения

Интерфейс позволяет производить действия с подразделениями системы. Подразделения - отдельные элементы Деканата, которые позволяют разграничить работу с контингентом, установить собственные настройки плагинов и права пользователей. Под подразделениями можно понимать такие элементы, как Институты и их Филиалы, Факультеты и Отделы.

Список подразделений

Подразделения выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения. В зависимости от уровня прав, которыми располагает пользователь, становятся доступны функции создания, удаления и редактирования. Интерфейс позволяет увидеть только подразделения текущего местонахождения пользователя( само подразделение и его прямые потомки ).


Форма сохранения подразделения

Форма сохранения подразделения приспособлена под включение на любую страницу системы и работает с системой потока сообщений Деканата.

Назначение полей:

  • Название - Название подразделения. Обязательное поле.
  • Код подразделения - Обязательное поле. Уникальное поле. Автоматически генерируется для новых подразделений, если не указано вручную(транслитерация первых 10 символов названия и добавление случайного номера).
  • Руководитель - Необязательное поле. Руководитель структурного подразделения. По-умолчанию не указан. Выбирается из списка существующих персон и несет исключительно информационную цель. Пользователь не получает никаких прав, став Руководителем.
  • Вышестоящий отдел - Обязательное поле. Какому подразделению подчиняется данное подразделение. По умолчанию стоит подразделение текущего местоположения пользователя. Выбирается из списка существующих подразделений.
  • Часовой пояс - Обязательное поле. Временная зона подразделения. Необходимо для правильного расчета времени при составлении расписания и др. действий в системе. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера.

Карточка отдела

Выводит всю информацию о структурном подразделении. Также выводит список всех дочерних подразделения данного подразделения в древовидной структуре.

API

Методы интерфейса подразделений

get_listing()

Параметры:

  • $limitfrom - с какой записи начинать вывод
  • $limitnum - сколько записей выводить на одной странице
  • $conds - Обьект, содержащий данные с условиями выборки, в формате поле_БД->значение по умолчанию пустой массив

Возвращаемые значения:

  • (array) массив записей из базы, или false в случае ошибки
showlist($list, $addvars, $options = [])

Возвращает HTML-код таблицы подразделений

Параметры:

  • (array) $list - Массив подразделений из справочника departments.
  • (array) $addvars - Массив GET-параметров для передачи по ссылкам.
  • (array) $options - Массив дополнительных параметров отображения

Возвращаемые значения:

  • (string) - HTML-код таблицы подразделений
show_id()

Возвращает HTML-код отображения информации об одном подразделении

Параметры:

Возвращаемые значения:

  • (string) - HTML-код или false в случае ошибки
get_html_link($id, $withcode = false)

Возвращает HTML-код отображения информации об одном подразделении

Параметры:

  • (int)$id - ID записи в таблице departments
  • (bool)$withcode - Требуется код подразделения в названии ссылки

Возвращаемые значения:

  • (string) - HTML-строка со ссылкой на подразделение или пустая строка в случае ошибки
get_departments_select_options($parentdep = 0, $options = [])

Возвращает список доступных подразделений для отображения в селекте. Метод является рекурсивным и кеширует список подразделений. Кеш сбрасывается при любом CrUD действии для актуализации данных.

Параметры:

  • (int)$parentdep - Подразделение, от которого начинается сбор массива
  • (array)$options - Массив опций сбора данных
            ['delimiter'] - Разделитель для уровней иерархии. По - умолчанию '-' 
            ['statuses'] -  Массив статусов в виде ['status1', 'status2']. По-умолчанию - actual метастатус
            ['access_callback'] - Функция дополнительной проверки прав доступа к подразделению

Возвращаемые значения:

  • (array) - Массив для добавления в select список

Events

Список отлавливаемых событий

Получение ссылки на объект

  • 'plugintype' => 'im'
  • 'plugincode' => 'obj'
  • 'eventcode' => 'get_object_url'

Возвращается ссылка на объект

Добавление подразделения

  • 'plugintype' => 'storage'
  • 'plugincode' => 'departments'
  • 'eventcode' => 'insert'

Сбрасывается кеш списка подразделений

Добавление подразделения

  • 'plugintype' => 'storage'
  • 'plugincode' => 'departments'
  • 'eventcode' => 'update'

Сбрасывается кеш списка подразделений