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

Материал из DOF
Перейти к: навигация, поиск
м (API: добавлено описание проверки прав доступа)
 
(не показано 26 промежуточных версий 4 участников)
Строка 1: Строка 1:
 +
{{Infobox_Plugin
 +
| name = cstreams
 +
| type = im
 +
}}
 
=Разработка:im/cstreams=
 
=Разработка:im/cstreams=
 
Интерфейс создания и редактирования учебных потоков. Учебный поток это связка преподавателя, предмета, учебного периода и группы мудл.
 
Интерфейс создания и редактирования учебных потоков. Учебный поток это связка преподавателя, предмета, учебного периода и группы мудл.
Строка 6: Строка 10:
  
 
С этой страницы можно перейти на страницу списка потоков или страницу создания привязок групп к созданному потоку.
 
С этой страницы можно перейти на страницу списка потоков или страницу создания привязок групп к созданному потоку.
 +
 +
Также вверху страницы находится ссылка, позволяющая получить экзаменационную ведомость для указанного потока.
 +
 +
При просмотре потока имеется возможность изменить его статус. Форма для этого показывается только пользователям, имеющим право "setstatus". При изменении статуса выводится сообщение "статус успешно изменен", либо "не удалось изменить статус" - в случае ошибки. Если статус является конечным - форма сообщает об этом. Подробнее о статусах учебного потока можно посмотреть в разделе: [[Разработка:workflows/cstreams | workflows/cstreams ]].
 +
 +
После того как пользователь нажал на кнопку изменения статуса, формируется приказ, в котором указывается с какого статуса на какой перешли и дату смены статуса. На основании этого приказа и происходит смена статуса.
 +
 
==Просмотр списка потоков==
 
==Просмотр списка потоков==
На этой странице можно просмотреть список всех потоков, список всех потоков одного подразделения, список всех потоков одного преподавателя, список всех потоков одной академической группы, одного статуса. Фильтрация происходит с помощью формы поиска по перечисленным параметрам.
+
На этой странице отображается список потоков в виде таблицы со следующими столбцами:
Необязательный входной параметр - id подразделения, id преподавателя, id академической группы.
+
* Действия - ''Список действий, которые можно совершить над потоком''
С этой страницы можно перейти на страницу создания нового потока, редактирования существующего потока, создания привязки академических групп к потоку (добавить значок привязки в колонку действий).
+
* Период - ''Учебный период''
 +
* Название - ''Название потока''
 +
* Состав потока - ''Список групп и/или студентов, обущающихся по этому потоку''
 +
* Программа - ''Учебная программа''
 +
* Дисциплина - ''Дисциплина потока''
 +
* Преподаватель - ''ФИО преподавателя''
 +
* Подразделение - ''Название подразделения''
 +
* Поправочный и Замещающий зарплатные коэффициенты - ''Зарплатные коэффициенты''
 +
 
 +
Таблицу можно фильтровать по следующим параметрам:
 +
* Список всех потоков одного подразделения  
 +
* Список всех потоков одного учебного периода
 +
* Список всех потоков одной академической группы
 +
* Список всех потоков одной учебной программы
 +
* Список всех потоков одной дисциплины
 +
* Список всех потоков по замещающему зарплатному коэффициенту
 +
Фильтрация происходит с помощью формы поиска по перечисленным параметрам.
 +
С этой страницы можно перейти на страницу создания нового потока, редактирования существующего потока, создания привязки академических групп к потоку, просмотра фактического планирования, просмотра УТП, просмотра списка шаблонов на неделю для потока, создания шаблона расписания для выбранного потока.
 +
[[Изображение:Selection 008.png|thumb|600px|center|Шаблон страницы "Учебные процессы"]]
  
 
==Создание/изменение потоков==
 
==Создание/изменение потоков==
Строка 15: Строка 44:
 
Форма содержит поля
 
Форма содержит поля
 
* Учебный период - меню выбора учебных периодов из списка (ageid);
 
* Учебный период - меню выбора учебных периодов из списка (ageid);
* Учебная дисциплина  - меню выбора дисциплины из списка (programmitemid);
+
* Программа - меню выбора учебных программ из списка;
* Преподаватель - меню выбора преподавателя (из таблицы persons) (teacherid);
+
* Учебная дисциплина  - меню выбора дисциплины из списка в соответствии с программой(programmitemid);
* Подразделение - меню выбора подразделения из списка (departmentid);
+
* Преподаватель - меню выбора преподавателя (из таблицы persons) (teacherid); В этом поле появляются только пользователи из таблицы teachers, которые могут преподавать указанный предмет. Если пользователь назначен преподавателем потока, но его нет в таблице teachers или же он уже не преподает данный предмет, то он также будет отображаться в этом меню, но записать его учителем других потоков будет нельзя или не будет возможности записать его преподавателем к потоку по этому предмету.
 +
* Подразделение - меню выбора подразделения из списка (departmentid). Можно взять подразделение из дисциплины;  
 
* группа moodle - статическое поле (mdlgroupid);
 
* группа moodle - статическое поле (mdlgroupid);
 
* Количество учебных недель - текстовое поле. По умолчанию информация берется из соответствующего поля programmitems. Если там нет - из соответствующего поля ages. Если там нет - пустое.
 
* Количество учебных недель - текстовое поле. По умолчанию информация берется из соответствующего поля programmitems. Если там нет - из соответствующего поля ages. Если там нет - пустое.
* Дата начала - статическое поле. Дата и время, когда учебный процесс был впервые переведен в состояние "идет обучение" по UTC (begindate).
+
* Часов всего - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
* Дата окончания - статическое поле. Дата и время, когда учебный процесс был в последний раз выведен из состояния "идет обучения" по UTC (enddate)
+
* Часов в неделю - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
* Статус - статическое поле. Текущий статус потока (status).
+
* Часов в неделю очно - текстовое поле.
 +
* Часов в неделю дистанционно - текстовое поле.
 +
* Дата начала (begindate). Дата и время, когда начинается обучение по данному учебному процессу. Наследуется из периода если стоит галочка наследования.
 +
* Дата окончания (enddate). Дата и время, когда заканчивается обучение по данному учебному процессу. Наследуется из периода, если стоит галочка наследования или рассчитывается как дата начала + продолжительность дисциплины, если стоит галочка расчета из дисциплины.  
 
* Кнопки сохранить и отменить.
 
* Кнопки сохранить и отменить.
 
При нажатии кнопки отменить загружается страница списка классов. При нажатии на кнопку создать — введенные данные сохраняются в таблице.
 
При нажатии кнопки отменить загружается страница списка классов. При нажатии на кнопку создать — введенные данные сохраняются в таблице.
 
Со страницы можно перейти на страницу списка классов.
 
Со страницы можно перейти на страницу списка классов.
На страницу передается внешний параметр - sctreamid. Если он не передан, неправильного типа или равен нулю - загружается форма создания нового потока. Если он передан, правильного типа и соответствует записи в бд, то загружается форма в которой по умолчанию выставлены значения выбранной записи. Если же передан id не существующего потока, то выдается сообщение об ошибке.
+
На страницу передается внешний параметр - cstreamid. Если он не передан, неправильного типа или равен нулю - загружается форма создания нового потока. Если он передан, правильного типа и соответствует записи в бд, то загружается форма в которой по умолчанию выставлены значения выбранной записи. Если же передан id не существующего потока, то выдается сообщение об ошибке.
  
==Создание привязки академической группы к потоку.==
+
==Создание привязки академической группы к потоку==
 
В верхней части страницы выводится информация о потоке. Ниже представлена форма привязки группы к потоку.
 
В верхней части страницы выводится информация о потоке. Ниже представлена форма привязки группы к потоку.
  
Строка 35: Строка 68:
 
С этой страницы можно перейти на страницу списка потоков или страницу редактирования потока, к которому осуществляется привязка.
 
С этой страницы можно перейти на страницу списка потоков или страницу редактирования потока, к которому осуществляется привязка.
  
==API==
+
== Учебный план учащихся ==
 +
Выводится форма критериев для выбора учебных планов
 +
* Программа
 +
* Параллель
 +
* Период
 +
* Статус подписок
 +
Критерий "Период" необязателен, если он не указан отобразятся учебные планы всех периодов по выбранное программе и параллели. После выбора критериев на странице сначала отображается перечень предметов, доступных по данной программе и параллели. Далее выводятся учебные планы групп и следом учебные планы индивидуальных учащихся. Учебный план состоит из перечня учебных процессов с указанием учителя, дисциплины, количества учебных часов и статуса процесса. Также в каждом процессе можно перейти на страницу списка учащихся, в журнал процесса, на страницу фактического планирования и УТП, на страницу просмотра шаблонов и создания шаблона.
 +
 
 +
Под каждым учебным планом отображается форма привязки группы/учащегося к дисциплине. Помимо этого для группы можно привязать все обязательные дисциплины.
 +
 
 +
== Привязка дисциплин к группе/учащемуся ==
 +
=== Привязка одной дисциплины ===
 +
Страница принимает обязательные параметры id дисциплины, номер параллели и id группы/подписки на программу. Привязать можно к уже существующему созданному процессу по указанным критериям, либо создать новый указав недостающие данные:
 +
* Учебный период - меню выбора учебных периодов из списка (ageid). Подставляется автоматически из указанного в учебном плане;
 +
* Преподаватель - меню выбора преподавателя (из таблицы persons) (teacherid); В этом поле появляются только пользователи из таблицы teachers, которые могут преподавать указанный предмет. Если пользователь назначен преподавателем потока, но его нет в таблице teachers или же он уже не преподает данный предмет, то он также будет отображаться в этом меню, но записать его учителем других потоков будет нельзя или не будет возможности записать его преподавателем к потоку по этому предмету.
 +
* Подразделение - меню выбора подразделения из списка (departmentid). Можно взять подразделение из дисциплины;
 +
* Количество учебных недель - текстовое поле. По умолчанию информация берется из соответствующего поля programmitems. Если там нет - из соответствующего поля ages. Если там нет - пустое.
 +
* Часов всего - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
 +
* Часов в неделю - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
 +
* Часов в неделю очно - текстовое поле.
 +
* Часов в неделю дистанционно - текстовое поле.
 +
* Дата начала. Дата и время, когда начинается обучение по данному учебному процессу. Наследуется из периода если стоит галочка наследования.
 +
* Дата окончания. Дата и время, когда заканчивается обучение по данному учебному процессу. Наследуется из периода, если стоит галочка наследования или рассчитывается как дата начала + продолжительность дисциплины, если стоит галочка расчета из дисциплины.
 +
 
 +
=== Привязка обязательных дисциплин ===
 +
Отличается от привязки одной дисциплины тем, что не принимает обязательного параметра id дисциплины, вместо него принимается обязательный параметр id программы и соответственно не позволяет привязывать к уже существующим учебным процессам. При сохранении привязывает ко всем дисциплинам из указанной программы и параллели с типом "Обязательный"
 +
 
 +
== Нагрузка преподавателей ==
 +
Выводится фильтр поиска по критерию:
 +
- Выбор одного преподавателя отображает нагрузку только указанного преподавателя вне зависимости от подразделения. Выбирать персону следует в том подразделении, в котором она находится.
 +
- По подразделению табельных номеров, отображает нагрузку преподавателей чьи табельные номера находятся в выбранном подразделении.
 +
- По подразделению договоров сотрудников, отображает нагрузку преподавателей чьи договора находятся в выбранном подразделении.
 +
- По подразделению учебных процессов, отобразит всю нагрузку находящуюся в выбранном подразделении независимо от договоров и табельных номеров
 +
 
 +
Нагрузка преподавателей состоит из перечня учебных процессов с указанием программы, дисциплины, количества учебных часом. Помимо этого с каждого процесса можно перейти на страницу просмотра шаблонов.
 +
 
 +
== Создание учебных потоков по группе и периоду ==
 +
Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:
 +
* Класс
 +
* Период
 +
* Подразделение
 +
* Начало обучения
 +
Параметры "класс" и "период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо сразу два параметра, либо ни одного.
 +
 
 +
Если класс и период переданы извне, то поле "подразделение" по умолчанию содержит подразделение группы, для которой создаются потоки, но его можно изменить.
 +
 
 +
После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.
 +
 
 +
== Создание учебных потоков по программе и параллели ==
 +
Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:
 +
* Учебная программа
 +
* Параллель
 +
* Период
 +
* Подразделение
 +
* Дата начала обучения
 +
Параметры "Учебная программа", "Параллель" и "Период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо одновременно все параметры, либо ни одного.
 +
 
 +
Если программа передана извне, то то поле "подразделение" по умолчанию содержит подразделение программы, для которой создаются потоки, но его можно изменить.
 +
 
 +
После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.
 +
 
 +
== Добавление пользователей в учебный поток ==
 +
Добавление пользователей на учебный поток происходит на странице "Панель управления подписками на учебный процесс". Имеется возможность синхронизировать поток с академическими группами (всем студентам групп будут созданы подписки на поток).
 +
[[Изображение:Selection 132.png|thumb|500px|center|Страница синхронизации потока с академическими группами]]
 +
Также интерфейсом предусмотрено добавление отдельно выбранных пользователей, для которых будет созданы подписки на поток.
 +
[[Изображение:Selection 133.png|thumb|500px|center|Страница синхронизации отдельных пользователей с выбранным потоком]]
 +
 
 +
== Рейтинг по учебному процессу ==
 +
Рейтинг отображает среднее арифметическое по всем оцениваемым занятиям в учебном процессе на текущую дату.
 +
Рейтинг кэшируется и обновляется по крону по 3 лоану (необходимо включить в конфиге подразделения настройку im/cstreams/update_cache).
 +
 
 +
Пример рейтинга:
 +
 
 +
[[Изображение:Selection 016 im cstreams.png|thumb|500px|center|Рейтинг по учебному процессу на текущую дату]]
 +
 
 +
 
 +
== Учет выполнения учебной нагрузки по учебному процессу ==
 +
Учет выполнения учебной нагрузки по учебному процессу.
 +
Отображает отсортированные по дате занятия (КТ + событие) с указанием темы и количества академических часов.
 +
В конфиге im/cstreams/cstream_workload_lesson_types можно указать типы занятий, которые необходимо отображать в отчете.
 +
 
 +
Пример отчета:
 +
 
 +
[[Изображение:Selection 017 im cstream.png|thumb|500px|center|Рейтинг по учебному процессу на текущую дату]]
 +
 
 +
 
 +
= Права плагина =
 +
 
 +
* export - право на скачивание ведомостей
 +
* import - право на импорт учебных процессов
 +
* viewcurriculum - право на просмотр учебных планов учащихся
 +
* editcurriculum - право на создание и редактирование учебных планов учащихся
 +
 
 +
=API=
 
Надо переделать функцию get_listing().
 
Надо переделать функцию get_listing().
 
* перенести ее (и get_select_listing) в справочник.
 
* перенести ее (и get_select_listing) в справочник.
Строка 43: Строка 169:
 
** Если $countonly=true, функция возвращает число - количество объектов, которые были выбраны по заданным параметрам (при этом $limitnum, $limitfrom в запрос не включаются);
 
** Если $countonly=true, функция возвращает число - количество объектов, которые были выбраны по заданным параметрам (при этом $limitnum, $limitfrom в запрос не включаются);
 
** Запрос на выборку формируется как и ранее в get_select_listing(), на основе анализа названий полей переданных параеметров
 
** Запрос на выборку формируется как и ранее в get_select_listing(), на основе анализа названий полей переданных параеметров
===Проверка прав доступа===
+
 
{|border=1
+
===== order() =====
|Код проверки доступа
+
Подключает методы для работы с приказом
|расшифровка
+
 
  |-
+
''Параметры:''
|viewone
+
* $code (string) - код типа для исполнения приказа
|может видеть один поток
+
* $id - id записи в таблице [[Разработка:storages/orders|orders]]
|-
+
 
|editcstream
+
''Возвращаемые значения:''
|может редактировать поток
+
* (object) [[Разработка:storages/orders#API | order]] - объект приказа
|-
+
 
|addcstream
+
== Приказы ==
|может создавать поток
+
 
|-
+
В этом разделе описаны классы, которые используются для формирования приказов.
|viewlist
+
 
|может видеть список потоков
+
=== dof_im_ages_order_change_status ===
|-
+
 
|viewdepartmentlist
+
Наследуется от класса [[Разработка:storages/orders#API | dof_storage_orders_baseorder]].
|может видеть список потоков подразделения
+
Класс для работы с приказом для смены статуса. Отвечает за смену статуса учебного периода.
|-
+
 
|viewprogrammitemlist
+
==== execute_actions() ====
|может видеть список потоков программы
+
 
|-
+
Функция отвечающая за выполнение приказа. Обращается к плагину [[Разработка:workflows/cstreams | workflows/cstreams]], для того чтобы изменить статус.
|setstatus
+
 
|может устанавливать статус
+
Параметры:
|}
+
 
 +
* $order - объект, содержащий информацию по приказу. Структура полей объекта совпадает со структурой полей таблицы [[Разработка:storages/orders|orders]]. Поле sdata содержит объект следующей структуры:
 +
** cstreamid - id записи потока в таблице [[Разработка:storages/cstreams|cstreams]]
 +
** datechange - дата смены статуса
 +
** oldstatus - старый статус
 +
** newstatus - новый статус
 +
 
 +
=== dof_im_ages_order_status ===
 +
Класс для работы с приказами и сбора данных для приказов.
 +
 
 +
==== generate_order_status() ====
 +
Формирует сохраняет, подписывает и исполняет приказ смены статуса потока
 +
 
 +
''Возвращаемые значения:''
 +
* (bool) успех исполненной задачи.
 +
 
 +
==== order_change_status() ====
 +
Формирует приказ для смены статуса потока
 +
 
 +
''Возвращаемые значения:''
 +
* (object) - объект данных для сохранения приказа в БД.
 +
 
 +
==== save_order_change_status() ====
 +
Сохраняет приказ
 +
 
 +
''Параметры:''
 +
* $orderobj (object) - объект данных для сохранения приказа в БД.
 +
 
 +
''Возвращаемые значения:''
 +
* (int|bool) - id сохраненной записи в БД или false в случае ошибки.
 +
 
 +
==== sign_and_execute_order() ====
 +
Подписывает и исполняет приказ
 +
 
 +
''Параметры:''
 +
* $orderid (int) - id записи в таблице [[Разработка:storages/orders|orders]].
 +
 
 +
''Возвращаемые значения:''
 +
* (bool) - успех исполненной задачи.
 +
 
 +
==== is_signed() ====
 +
Проверяет подписан ли приказ. Аналогичен частному методу класса [[Разработка:storages/orders#API | dof_storage_orders_baseorder]]
 +
 
 +
''Параметры:''
 +
* $orderid (int) - id записи в таблице [[Разработка:storages/orders|orders]].
 +
 
 +
''Возвращаемые значения:''
 +
* (bool) - успех исполненной задачи.

Текущая версия на 17:02, 12 декабря 2017

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


Разработка:im/cstreams

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

Просмотр потока

На этой странице можно просмотреть данные одного потока. Сюда происходит перенаправление после создания или изменения потока. Обязательный входной параметр - id потока - cstreamid.

С этой страницы можно перейти на страницу списка потоков или страницу создания привязок групп к созданному потоку.

Также вверху страницы находится ссылка, позволяющая получить экзаменационную ведомость для указанного потока.

При просмотре потока имеется возможность изменить его статус. Форма для этого показывается только пользователям, имеющим право "setstatus". При изменении статуса выводится сообщение "статус успешно изменен", либо "не удалось изменить статус" - в случае ошибки. Если статус является конечным - форма сообщает об этом. Подробнее о статусах учебного потока можно посмотреть в разделе: workflows/cstreams .

После того как пользователь нажал на кнопку изменения статуса, формируется приказ, в котором указывается с какого статуса на какой перешли и дату смены статуса. На основании этого приказа и происходит смена статуса.

Просмотр списка потоков

На этой странице отображается список потоков в виде таблицы со следующими столбцами:

  • Действия - Список действий, которые можно совершить над потоком
  • Период - Учебный период
  • Название - Название потока
  • Состав потока - Список групп и/или студентов, обущающихся по этому потоку
  • Программа - Учебная программа
  • Дисциплина - Дисциплина потока
  • Преподаватель - ФИО преподавателя
  • Подразделение - Название подразделения
  • Поправочный и Замещающий зарплатные коэффициенты - Зарплатные коэффициенты

Таблицу можно фильтровать по следующим параметрам:

  • Список всех потоков одного подразделения
  • Список всех потоков одного учебного периода
  • Список всех потоков одной академической группы
  • Список всех потоков одной учебной программы
  • Список всех потоков одной дисциплины
  • Список всех потоков по замещающему зарплатному коэффициенту

Фильтрация происходит с помощью формы поиска по перечисленным параметрам. С этой страницы можно перейти на страницу создания нового потока, редактирования существующего потока, создания привязки академических групп к потоку, просмотра фактического планирования, просмотра УТП, просмотра списка шаблонов на неделю для потока, создания шаблона расписания для выбранного потока.

Шаблон страницы "Учебные процессы"

Создание/изменение потоков

Выводится форма редактирования потока. Форма содержит поля

  • Учебный период - меню выбора учебных периодов из списка (ageid);
  • Программа - меню выбора учебных программ из списка;
  • Учебная дисциплина - меню выбора дисциплины из списка в соответствии с программой(programmitemid);
  • Преподаватель - меню выбора преподавателя (из таблицы persons) (teacherid); В этом поле появляются только пользователи из таблицы teachers, которые могут преподавать указанный предмет. Если пользователь назначен преподавателем потока, но его нет в таблице teachers или же он уже не преподает данный предмет, то он также будет отображаться в этом меню, но записать его учителем других потоков будет нельзя или не будет возможности записать его преподавателем к потоку по этому предмету.
  • Подразделение - меню выбора подразделения из списка (departmentid). Можно взять подразделение из дисциплины;
  • группа moodle - статическое поле (mdlgroupid);
  • Количество учебных недель - текстовое поле. По умолчанию информация берется из соответствующего поля programmitems. Если там нет - из соответствующего поля ages. Если там нет - пустое.
  • Часов всего - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
  • Часов в неделю - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
  • Часов в неделю очно - текстовое поле.
  • Часов в неделю дистанционно - текстовое поле.
  • Дата начала (begindate). Дата и время, когда начинается обучение по данному учебному процессу. Наследуется из периода если стоит галочка наследования.
  • Дата окончания (enddate). Дата и время, когда заканчивается обучение по данному учебному процессу. Наследуется из периода, если стоит галочка наследования или рассчитывается как дата начала + продолжительность дисциплины, если стоит галочка расчета из дисциплины.
  • Кнопки сохранить и отменить.

При нажатии кнопки отменить загружается страница списка классов. При нажатии на кнопку создать — введенные данные сохраняются в таблице. Со страницы можно перейти на страницу списка классов. На страницу передается внешний параметр - cstreamid. Если он не передан, неправильного типа или равен нулю - загружается форма создания нового потока. Если он передан, правильного типа и соответствует записи в бд, то загружается форма в которой по умолчанию выставлены значения выбранной записи. Если же передан id не существующего потока, то выдается сообщение об ошибке.

Создание привязки академической группы к потоку

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

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

С этой страницы можно перейти на страницу списка потоков или страницу редактирования потока, к которому осуществляется привязка.

Учебный план учащихся

Выводится форма критериев для выбора учебных планов

  • Программа
  • Параллель
  • Период
  • Статус подписок

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

Под каждым учебным планом отображается форма привязки группы/учащегося к дисциплине. Помимо этого для группы можно привязать все обязательные дисциплины.

Привязка дисциплин к группе/учащемуся

Привязка одной дисциплины

Страница принимает обязательные параметры id дисциплины, номер параллели и id группы/подписки на программу. Привязать можно к уже существующему созданному процессу по указанным критериям, либо создать новый указав недостающие данные:

  • Учебный период - меню выбора учебных периодов из списка (ageid). Подставляется автоматически из указанного в учебном плане;
  • Преподаватель - меню выбора преподавателя (из таблицы persons) (teacherid); В этом поле появляются только пользователи из таблицы teachers, которые могут преподавать указанный предмет. Если пользователь назначен преподавателем потока, но его нет в таблице teachers или же он уже не преподает данный предмет, то он также будет отображаться в этом меню, но записать его учителем других потоков будет нельзя или не будет возможности записать его преподавателем к потоку по этому предмету.
  • Подразделение - меню выбора подразделения из списка (departmentid). Можно взять подразделение из дисциплины;
  • Количество учебных недель - текстовое поле. По умолчанию информация берется из соответствующего поля programmitems. Если там нет - из соответствующего поля ages. Если там нет - пустое.
  • Часов всего - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
  • Часов в неделю - текстовое поле. Наследуется из дисциплины, если стоит галочка наследования.
  • Часов в неделю очно - текстовое поле.
  • Часов в неделю дистанционно - текстовое поле.
  • Дата начала. Дата и время, когда начинается обучение по данному учебному процессу. Наследуется из периода если стоит галочка наследования.
  • Дата окончания. Дата и время, когда заканчивается обучение по данному учебному процессу. Наследуется из периода, если стоит галочка наследования или рассчитывается как дата начала + продолжительность дисциплины, если стоит галочка расчета из дисциплины.

Привязка обязательных дисциплин

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

Нагрузка преподавателей

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

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

Создание учебных потоков по группе и периоду

Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:

  • Класс
  • Период
  • Подразделение
  • Начало обучения

Параметры "класс" и "период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо сразу два параметра, либо ни одного.

Если класс и период переданы извне, то поле "подразделение" по умолчанию содержит подразделение группы, для которой создаются потоки, но его можно изменить.

После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.

Создание учебных потоков по программе и параллели

Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:

  • Учебная программа
  • Параллель
  • Период
  • Подразделение
  • Дата начала обучения

Параметры "Учебная программа", "Параллель" и "Период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо одновременно все параметры, либо ни одного.

Если программа передана извне, то то поле "подразделение" по умолчанию содержит подразделение программы, для которой создаются потоки, но его можно изменить.

После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.

Добавление пользователей в учебный поток

Добавление пользователей на учебный поток происходит на странице "Панель управления подписками на учебный процесс". Имеется возможность синхронизировать поток с академическими группами (всем студентам групп будут созданы подписки на поток).

Страница синхронизации потока с академическими группами

Также интерфейсом предусмотрено добавление отдельно выбранных пользователей, для которых будет созданы подписки на поток.

Страница синхронизации отдельных пользователей с выбранным потоком

Рейтинг по учебному процессу

Рейтинг отображает среднее арифметическое по всем оцениваемым занятиям в учебном процессе на текущую дату. Рейтинг кэшируется и обновляется по крону по 3 лоану (необходимо включить в конфиге подразделения настройку im/cstreams/update_cache).

Пример рейтинга:

Рейтинг по учебному процессу на текущую дату


Учет выполнения учебной нагрузки по учебному процессу

Учет выполнения учебной нагрузки по учебному процессу. Отображает отсортированные по дате занятия (КТ + событие) с указанием темы и количества академических часов. В конфиге im/cstreams/cstream_workload_lesson_types можно указать типы занятий, которые необходимо отображать в отчете.

Пример отчета:

Рейтинг по учебному процессу на текущую дату


Права плагина

  • export - право на скачивание ведомостей
  • import - право на импорт учебных процессов
  • viewcurriculum - право на просмотр учебных планов учащихся
  • editcurriculum - право на создание и редактирование учебных планов учащихся

API

Надо переделать функцию get_listing().

  • перенести ее (и get_select_listing) в справочник.
  • добавить в нее новый входной параметр $countonly = false;
  • переделать ее таким образом, чтобы она возвращала набор объектов или их количество.
    • Если $countonly=false, функция возвращает набор объектов с учетом $limitnum, $limitfrom;
    • Если $countonly=true, функция возвращает число - количество объектов, которые были выбраны по заданным параметрам (при этом $limitnum, $limitfrom в запрос не включаются);
    • Запрос на выборку формируется как и ранее в get_select_listing(), на основе анализа названий полей переданных параеметров
order()

Подключает методы для работы с приказом

Параметры:

  • $code (string) - код типа для исполнения приказа
  • $id - id записи в таблице orders

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

  • (object) order - объект приказа

Приказы

В этом разделе описаны классы, которые используются для формирования приказов.

dof_im_ages_order_change_status

Наследуется от класса dof_storage_orders_baseorder. Класс для работы с приказом для смены статуса. Отвечает за смену статуса учебного периода.

execute_actions()

Функция отвечающая за выполнение приказа. Обращается к плагину workflows/cstreams, для того чтобы изменить статус.

Параметры:

  • $order - объект, содержащий информацию по приказу. Структура полей объекта совпадает со структурой полей таблицы orders. Поле sdata содержит объект следующей структуры:
    • cstreamid - id записи потока в таблице cstreams
    • datechange - дата смены статуса
    • oldstatus - старый статус
    • newstatus - новый статус

dof_im_ages_order_status

Класс для работы с приказами и сбора данных для приказов.

generate_order_status()

Формирует сохраняет, подписывает и исполняет приказ смены статуса потока

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

  • (bool) успех исполненной задачи.

order_change_status()

Формирует приказ для смены статуса потока

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

  • (object) - объект данных для сохранения приказа в БД.

save_order_change_status()

Сохраняет приказ

Параметры:

  • $orderobj (object) - объект данных для сохранения приказа в БД.

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

  • (int|bool) - id сохраненной записи в БД или false в случае ошибки.

sign_and_execute_order()

Подписывает и исполняет приказ

Параметры:

  • $orderid (int) - id записи в таблице orders.

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

  • (bool) - успех исполненной задачи.

is_signed()

Проверяет подписан ли приказ. Аналогичен частному методу класса dof_storage_orders_baseorder

Параметры:

  • $orderid (int) - id записи в таблице orders.

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

  • (bool) - успех исполненной задачи.