Разработка:im/cstreams
Плагин | |
Название | cstreams |
Тип | im |
Содержание
- 1 Разработка:im/cstreams
- 1.1 Просмотр потока
- 1.2 Просмотр списка потоков
- 1.3 Создание/изменение потоков
- 1.4 Создание привязки академической группы к потоку
- 1.5 Учебный план учащихся
- 1.6 Привязка дисциплин к группе/учащемуся
- 1.7 Нагрузка преподавателей
- 1.8 Создание учебных потоков по группе и периоду
- 1.9 Создание учебных потоков по программе и параллели
- 1.10 Добавление пользователей в учебный поток
- 2 Права плагина
- 3 API
Разработка: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 программы и соответственно не позволяет привязывать к уже существующим учебным процессам. При сохранении привязывает ко всем дисциплинам из указанной программы и параллели с типом "Обязательный"
Нагрузка преподавателей
Выводится фильтр поиска по критерию: - Выбор одного преподавателя отображает нагрузку только указанного преподавателя вне зависимости от подразделения. Выбирать персону следует в том подразделении, в котором она находится. - По подразделению табельных номеров, отображает нагрузку преподавателей чьи табельные номера находятся в выбранном подразделении. - По подразделению договоров сотрудников, отображает нагрузку преподавателей чьи договора находятся в выбранном подразделении. - По подразделению учебных процессов, отобразит всю нагрузку находящуюся в выбранном подразделении независимо от договоров и табельных номеров
Нагрузка преподавателей состоит из перечня учебных процессов с указанием программы, дисциплины, количества учебных часом. Помимо этого с каждого процесса можно перейти на страницу просмотра шаблонов.
Создание учебных потоков по группе и периоду
Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:
- Класс
- Период
- Подразделение
- Начало обучения
Параметры "класс" и "период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо сразу два параметра, либо ни одного.
Если класс и период переданы извне, то поле "подразделение" по умолчанию содержит подразделение группы, для которой создаются потоки, но его можно изменить.
После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.
Создание учебных потоков по программе и параллели
Вход на страницу возможен только если пользователь имеет право создавать потоки. На странице располагается форма со следующими полями:
- Учебная программа
- Параллель
- Период
- Подразделение
- Дата начала обучения
Параметры "Учебная программа", "Параллель" и "Период" могут быть как выставлены вручную, так и переданы извне. Если они передаются снаружи по ссылке, то эти поля блокируются (становятся нередактируемыми). Передаются либо одновременно все параметры, либо ни одного.
Если программа передана извне, то то поле "подразделение" по умолчанию содержит подразделение программы, для которой создаются потоки, но его можно изменить.
После нажатия на кнопку "создать потоки" начинается создание потоков с выбранными параметрами. Если все потоки создались успешно - то пользователь переадресовывается на страницу просмотра созданных потоков.
Добавление пользователей в учебный поток
Добавление пользователей на учебный поток происходит на странице "Панель управления подписками на учебный процесс". Имеется возможность синхронизировать поток с академическими группами (всем студентам групп будут созданы подписки на поток).
Также интерфейсом предусмотрено добавление отдельно выбранных пользователей, для которых будет созданы подписки на поток.
Права плагина
- 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) - успех исполненной задачи.