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

Материал из DOF
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий 3 участников)
Строка 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 ==
  
=== Планы ===
+
Методы интерфейса подразделений
* Добавить колонку "дочерние отделы". И в ней ссылка на список дочерних подразделений.
 
* Добавить под названием родительского подразделения ссылки "перейти на уровень вверх" и "перейти на верхний уровень".
 
* Выводить в табличку всю древовидную структуру дочрних подразделений, а не только один уровень.
 
  
== API ==
 
Здесь описаны функции для работы со списком подразделений.
 
 
===== get_listing() =====
 
===== get_listing() =====
  
Строка 51: Строка 77:
 
* (array) массив записей из базы, или false в случае ошибки
 
* (array) массив записей из базы, или false в случае ошибки
  
===== form() =====
+
=====showlist($list, $addvars, $options = [])=====
Возвращает форму создания/редактирования подразделений с начальными данными
+
Возвращает HTML-код таблицы подразделений
  
 
''Параметры:''
 
''Параметры:''
* $id - id подразделения в таблице [[Разработка:storages/departments|departments]], для редактирования которой вызывается форма. По умолчанию NULL (создается новое подразделение).
+
* (array) $list - Массив подразделений из справочника [[Разработка:storages/departments|departments]].
 +
* (array) $addvars - Массив GET-параметров для передачи по ссылкам.
 +
* (array) $options - Массив дополнительных параметров отображения
  
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
* [[Разработка:moodleQuickForm|moodleQuickForm]] object - объект формы, с загруженными в нее исходными данными.
+
* (string) - HTML-код таблицы подразделений
  
===== showlist() =====
+
===== show_id() =====
Возвращает html-код списка подразделений.
+
Возвращает HTML-код отображения информации об одном подразделении
  
 
''Параметры:''
 
''Параметры:''
* $list - массив записей из таблицы [[Разработка:storages/departments|departments]] для отображения.
+
* $id - id записи в таблице [[Разработка:storages/departments|departments]]
  
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
* (string) - html-код или false в случае ошибки
+
* (string) - HTML-код или false в случае ошибки
  
===== show_id() =====
+
===== get_html_link($id, $withcode = false) =====
Возвращает html-код отображения информации об одном подразделении
+
Возвращает HTML-код отображения информации об одном подразделении
 +
 
 +
''Параметры:''
 +
* (int)$id - ID записи в таблице [[Разработка:storages/departments|departments]]
 +
* (bool)$withcode - Требуется код подразделения в названии ссылки
 +
 
 +
''Возвращаемые значения:''
 +
* (string) - HTML-строка со ссылкой на подразделение или пустая строка в случае ошибки
 +
 
 +
===== get_departments_select_options($parentdep = 0, $options = []) =====
 +
Возвращает список доступных подразделений для отображения в селекте.
 +
Метод является рекурсивным и кеширует список подразделений.
 +
Кеш сбрасывается при любом CrUD действии для актуализации данных.
  
 
''Параметры:''
 
''Параметры:''
* $id - id записи в таблице [[Разработка:storages/departments|departments]]
+
* (int)$parentdep - Подразделение, от которого начинается сбор массива
 +
* (array)$options - Массив опций сбора данных
 +
            ['delimiter'] - Разделитель для уровней иерархии. По - умолчанию '-'
 +
            ['statuses'] -  Массив статусов в виде ['status1', 'status2']. По-умолчанию - actual метастатус
 +
            ['access_callback'] - Функция дополнительной проверки прав доступа к подразделению
  
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
* (string) - html-код или false в случае ошибки
+
* (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 список