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

Материал из DOF
Перейти к: навигация, поиск
(Новая: == Отделы == Этот интерфейс позволяет просматривать и редактировать информацию о структурных подразде...)
 
 
(не показано 6 промежуточных версий 4 участников)
Строка 1: Строка 1:
== Отделы ==
+
{{Infobox_Plugin
Этот интерфейс позволяет просматривать и редактировать информацию о структурных подразделениях.
+
| name = departments
=== Список отделов ===
+
| type = im
Программы выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения.
+
}}
  
Пользователь попадает на эту страницу, только если у него есть право просматривать данные своего подразделения (в этом случае необходимо указать дополнительный параметр - id подразделения), либо имеет право видеть все подразделения.
+
== Подразделения ==
 +
Интерфейс позволяет производить действия с подразделениями системы. Подразделения - отдельные элементы Деканата, которые позволяют разграничить работу с контингентом, установить собственные настройки плагинов и права пользователей. Под подразделениями можно понимать такие элементы, как Институты и их Филиалы, Факультеты и Отделы.
  
Если у пользователя есть право редактировать подразделения, то в последней строке таблицы с информацией вместо иконки просмотра появляется иконка редактирования, нажатие на которую отправляет пользователя на страницу редактирования учебной программы.
+
=== Список подразделений ===
 +
Подразделения выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения.
 +
В зависимости от уровня прав, которыми располагает пользователь, становятся доступны функции создания, удаления и редактирования.
 +
Интерфейс позволяет увидеть только подразделения текущего местонахождения пользователя( само подразделение и его прямые потомки ).
  
Также, если указать дополнительный параметр leaddepid - id подразделения, страница выведет список всех дочерних подразделений указанного подразделения.
 
  
=== Создание и редактирование ===
+
 
Это действие доступно только для пользователей с правом редактирования подразделения.  
+
=== Форма сохранения подразделения ===
 +
 
 +
Форма сохранения подразделения приспособлена под включение на любую страницу системы и работает с системой потока сообщений Деканата.  
  
 
'''Назначение полей:'''
 
'''Назначение полей:'''
* ''Название'' - название подразделения. Обязательное поле.
+
* ''Название'' - Название подразделения. Обязательное поле.
* ''Кодовое название'' - код подразделения, обязательное поле. Не может быть создано двух подразделений с одинаковым кодом.
+
* ''Код подразделения'' - Обязательное поле. Уникальное поле. Автоматически генерируется для новых подразделений, если не указано вручную(транслитерация первых 10 символов названия и  добавление случайного номера).
* ''Руководитель'' - научный руководитель структурного подразделения. По умолчанию не указан. Выбирается из списка существующих персон.
+
* ''Руководитель'' - Необязательное поле. Руководитель структурного подразделения. По-умолчанию не указан. Выбирается из списка существующих персон и несет исключительно информационную цель. Пользователь не получает никаких прав, став Руководителем.
* ''Вышестоящий отдел'' - какому подразделению подчиняется данное подразделение. По умолчанию стоит самое первое созданное подразделение. Выбирается из списка существующих подразделений. Может принимать значение - нет (штатная ситуация). Обязательное поле.
+
* ''Вышестоящий отдел'' - Обязательное поле. Какому подразделению подчиняется данное подразделение. По умолчанию стоит подразделение текущего местоположения пользователя. Выбирается из списка существующих подразделений.  
* ''Часовой пояс'' - в какой временной зоне находится подразделение. Необходимо для правильного расчета времени при составлении рассписания и др. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера (GMT+5). Обязательное поле.
+
* ''Часовой пояс'' - Обязательное поле. Временная зона подразделения. Необходимо для правильного расчета времени при составлении расписания и др. действий в системе. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера.  
 +
 
 +
=== Карточка отдела ===
 +
 
 +
Выводит всю информацию о структурном подразделении. Также выводит список всех дочерних подразделения данного подразделения в древовидной структуре.
 +
 
 +
===События===
 +
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
  
 +
====Перехватываемые события====
 +
{| border="1"
 +
|+ Таблица событий, которые перехватывает этот плагин
 +
! Тип плагина
 +
! Код плагина
 +
! Код события
 +
! Доп. данные
 +
! Пояснение
 +
|-
 +
| departments
 +
| storage
 +
| insert
 +
|
 +
| Сбрасывается кеш списка подразделений
 +
|-
 +
| departments
 +
| storage
 +
| update
 +
|
 +
| Сбрасывается кеш списка подразделений
 +
|-
 +
| obj
 +
| im
 +
| get_object_url
 +
|
 +
| Возвращается ссылка на объект
 +
|}
  
 +
====Генерируемые события====
 +
-
  
Также имеет дополнительные поля адреса, которые скрыты. Если данные поля активны, то на подразделение создается/редактируется его адрес.
+
== API ==
  
'''При создании/редактировании подразделения'''
+
Методы интерфейса подразделений
* Поле "код предмета" должно быть уникальным и содержать латинские буквы и числа
 
'''При создании/редактировании адреса подразделения'''
 
* Индекс должен быть числовым.
 
* Если указывается улица, то необходимо указать ее тип.
 
  
=== Карточка отдела ===
+
===== get_listing() =====
 +
 
 +
''Параметры:''
 +
* $limitfrom - с какой записи начинать вывод
 +
* $limitnum - сколько записей выводить на одной странице
 +
* $conds - Обьект, содержащий данные с условиями выборки, в формате ''поле_БД->значение'' по умолчанию пустой массив
 +
 
 +
''Возвращаемые значения:''
 +
* (array) массив записей из базы, или false в случае ошибки
 +
 
 +
=====showlist($list, $addvars, $options = [])=====
 +
Возвращает HTML-код таблицы подразделений
 +
 
 +
''Параметры:''
 +
* (array) $list - Массив подразделений из справочника [[Разработка:storages/departments|departments]].
 +
* (array) $addvars - Массив GET-параметров для передачи по ссылкам.
 +
* (array) $options - Массив дополнительных параметров отображения
 +
 
 +
''Возвращаемые значения:''
 +
* (string) -  HTML-код таблицы подразделений
 +
 
 +
===== show_id() =====
 +
Возвращает HTML-код отображения информации об одном подразделении
 +
 
 +
''Параметры:''
 +
* $id - id записи в таблице [[Разработка:storages/departments|departments]]
 +
 
 +
''Возвращаемые значения:''
 +
* (string) - HTML-код или false в случае ошибки
 +
 
 +
===== get_html_link($id, $withcode = false) =====
 +
Возвращает HTML-код отображения информации об одном подразделении
 +
 
 +
''Параметры:''
 +
* (int)$id - ID записи в таблице [[Разработка:storages/departments|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 список
* Добавить под названием родительского подразделения ссылки "перейти на уровень вверх" и "перейти на верхний уровень".
 
* Выводить в табличку всю древовидную структуру дочрних подразделений, а не только один уровень.
 

Текущая версия на 10:24, 2 марта 2018

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


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

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

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

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


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

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

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

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

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

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

События

В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.

Перехватываемые события

Таблица событий, которые перехватывает этот плагин
Тип плагина Код плагина Код события Доп. данные Пояснение
departments storage insert Сбрасывается кеш списка подразделений
departments storage update Сбрасывается кеш списка подразделений
obj im get_object_url Возвращается ссылка на объект

Генерируемые события

-

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 список