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

Материал из DOF
Перейти к: навигация, поиск
м (Просмотр списка подписок: добавлено описание полей)
(Подписка студента на учебные курсы)
 
(не показано 12 промежуточных версий 4 участников)
Строка 1: Строка 1:
 +
{{Infobox_Plugin
 +
| name = cpassed
 +
| type = im
 +
}}
 
=Подписка студента на учебные курсы=
 
=Подписка студента на учебные курсы=
 
Модуль обеспечивает подписку студентов на изучение дисциплины путем приписки его к определенному предмето-потоку.
 
Модуль обеспечивает подписку студентов на изучение дисциплины путем приписки его к определенному предмето-потоку.
Строка 10: Строка 14:
 
* просмотр подписок с одинаковым статусом.
 
* просмотр подписок с одинаковым статусом.
 
Возможна произвольная комбинация указанных параметров фильтрации. Все параметры передаются по ссылке.
 
Возможна произвольная комбинация указанных параметров фильтрации. Все параметры передаются по ссылке.
 +
 +
Если одним из параметров фильтрации является id предмето-потока, то в колонке действий, в каждой строчке появляется галочка "отписать". Под таблицей размещается кнопка "удалить подписку", нажатие на которую производит отписку студента от предмето-потока. Обработчик кнопки находится в файле обработчика формы редактирования привязки. По умолчанию галочек нет.
 +
 +
Если переданы одновременно параметры id предмето-потока и id класса (или академической группы), то под таблицей подписок студентов на предмето-поток появляется список студентов группы, которые не имеют привязки к указанному потоку. Напротив каждого из них размещается галочка "подписать". Под таблицей размещается кнопка "создать подписку", нажатие на которую подписывает студента на изучение соответствующей дисциплины. Обработчик нажатия находится на странице обработчика формы.
  
 
Описание полей таблицы дано в следующем разделе.
 
Описание полей таблицы дано в следующем разделе.
Строка 35: Строка 43:
  
 
С этой страницы можно перейти на страницу списка групп или редактирования просматриваемой подписки.
 
С этой страницы можно перейти на страницу списка групп или редактирования просматриваемой подписки.
 +
 +
При просмотре подписки имеется возможность изменить ее статус. Форма для этого показывается только пользователям, имеющим право "setstatus". При изменении статуса выводится сообщение "статус успешно изменен", либо "не удалось изменить статус" - в случае ошибки. Если статус является конечным - форма сообщает об этом, и не дает его изменить. Подробнее о статусах подписки можно посмотреть в разделе: [[Разработка:workflows/cpassed | workflows/cpassed ]].
 +
 +
После того как пользователь нажал на кнопку изменения статуса, формируется приказ, в котором указывается с какого статуса на какой перешли и дату смены статуса. На основании этого приказа и происходит смена статуса.
  
 
==Страница создание/редактирование подписки==
 
==Страница создание/редактирование подписки==
 
Выводится форма для заполнения таблицы [[Разработка:storages/cpassed | cpasseds]]:
 
Выводится форма для заполнения таблицы [[Разработка:storages/cpassed | cpasseds]]:
* Ученик. Меню выбора слушателя из списка. Список формируется на основе данных таблицы [[Разработка:storages/contracts | contracts]]. Отображается ФИО ученика. Если id ученика не передано, то отображается слово "выбрать". В обработчик формы передается studentid - id слушателя по таблице persons.
+
* Ученик. Меню выбора слушателя из списка. Список формируется на основе данных таблицы [[Разработка:storages/contracts | contracts]]. Отображается ФИО ученика, и номер его контракта в скобках. Если id ученика не передано, то отображается слово "выбрать". В обработчик формы передается contractid - id слушателя по таблице contracts.
* Программа обучения. Меню выбора программы из списка. Выводится название программы обучения. Список формируется после выбора ученика. В список попадают все программы обучения ученика, на которые он подписан. В обработчик формы передается programmsbcid - id подписки контракта на программу обучения.
+
* Программа обучения. Меню выбора программы из списка. Выводится название программы обучения. Список формируется после выбора ученика. В список попадают все программы обучения ученика, на которые он подписан по выбранному контракту. В обработчик формы передается programmsbcid - id подписки контракта на программу обучения.
* Учебный поток. Меню выбора из списка предмето-потоков, с одним из которых надо установить связь. В меню попадают все потоки, которые предусмотрены программой обучения и текущим периодом обучения. И то и другое берется из подписки на программу обучения. Список формируется после выбора программы обучения. В меню это поле отображается как связка ФИО преподавателя, название предмета и название учебного периода. В обработчик формы передается cstreamid - id учебного предмето-потока.
+
* Учебный предмет. Список предметов формируется после выбора программы обучения. Показываются все предметы, входящие в программу. Изменяется при изменении предмето-потока как описано выше. В обработчик формы передается programmitemid - id дисциплины.
* Учебный предмет. При создании дисциплины не отображается или отображается пустым, а заполняется названием дисциплины после выбора предмето-потока и отображается как статическое поле. При редактировании отображается название дисциплины как статическое поле. Изменяется при изменении предмето-потока как описано выше. В обработчик формы передается programmitemid - id дисциплины. Значение берется из предмето-потока.
+
* Учебный поток (необязательное поле). Меню выбора из списка предмето-потоков, с одним из которых надо установить связь. В меню попадают все потоки, которые предусмотрены программой обучения и текущим периодом обучения. И то и другое берется из подписки на программу обучения. Список формируется после выбора программы обучения. В меню это поле отображается как связка ФИО преподавателя и название предмета. В обработчик формы передается cstreamid - id учебного предмето-потока.
 +
* Период обучения. Формируется двумя разными способами:
 +
** Если учебный поток выбран, то период определяется единственным образом - как период, в котором обучается поток
 +
** Если учебный поток не выбран - то выводится список всех периодов, в течение которых проходит выбранная ранее учебная программа.
 +
 
  
 
Остальные поля (подробнее см. в [[Разработка:storages/cpassed | storage/cpassed ]]) заполняются автоматически при наступлении определенных событий, и в форме не отображаются.
 
Остальные поля (подробнее см. в [[Разработка:storages/cpassed | storage/cpassed ]]) заполняются автоматически при наступлении определенных событий, и в форме не отображаются.
Под указанными полями отображаются две кнопки - сохранить и отмена. При нажатии на кнопку сохранить происходит сохранение внесенных изменений. Если форма пуста - ни один параметр не был изменен, то выводится соответствующее сообщение. При нажатии на кнопку отмены происходит переадресация на страницу списка групп.
+
Под указанными полями отображаются две кнопки - сохранить и отмена. При нажатии на кнопку сохранить происходит сохранение внесенных изменений. Перед сохранением данные проверяются на существование всех переданных id в базе, и на совместимость переданных id друг с другом (чтобы не было возможности повредить структуру связей в БД). Если форма пуста - ни один параметр не был изменен, то выводится соответствующее сообщение. При нажатии на кнопку отмены происходит переадресация на страницу списка групп.
 +
 
 +
==Страница формирования приказа "Ведомость перезачёта оценок"==
 +
На этой странице можно сформировать приказ для добавления оценки по предмету в качестве перезачёта.
 +
Приказ формируется в два экрана. На первом отображены следующие поля:
 +
* Учащийся. Отображает имя выбранного учащегося по текущей подписке.
 +
* Название учебного заведения. Форма с автодополнением по таблице organizations. Если ввести номер записи, можно выбрать запись по id из таблицы organizations. Если ввести часть названия (больше двух символов), происходит полнотекстовый поиск по полному названию организации.
 +
* Дата. Поле с указанием даты выдачи документа
 +
* Номер (необязательное поле). Поле с указанием номера документа
 +
* Специальность или квалификация (необязательное поле). Текстовое поле.
 +
* Разрешить перезачёт поверх изучаемых или пройденных дисциплин (необязательное поле). При указании этого поля можно создавать перезачёты по тем дисциплинам, которые уже пройдены или ещё изучаются.
 +
 
 +
На втором экране отображаются поля, которые выбраны на предыдущем экране:
 +
* Учащийся.
 +
* Название учебного заведения.
 +
* Дата.
 +
* Номер.
 +
* Специальность или квалификация.
 +
 
 +
Далее в списке отображаются все дисциплины, входящие в учебную программу, на которую подписан студент. Напротив каждой из них выпадающее меню с оценкой. Если флажок не установлен - то у активных или успешно-завершенных cpassed отображается только надпись — ''"Оценка выставлена, либо дисциплина в процессе изучения"''.
  
 
==API==
 
==API==
 +
Здесь описаны функции для работы с подписками на курсы.
 +
 +
===== form() =====
 +
Возвращает форму создания/редактирования подписки на курс
 +
 +
''Параметры:''
 +
* $id - id подписке в таблице [[Разработка:storages/cpassed|cpassed]], для редактирования которой вызывается форма. По умолчанию NULL (создается новая подписка).
 +
 +
''Возвращаемые значения:''
 +
* [[Разработка:moodleQuickForm|moodleQuickForm]] object - объект формы, с загруженными в нее исходными данными.
 +
 +
===== showlist() =====
 +
Возвращает html-код отображения информации о списке подписок на курсы
 +
 +
''Параметры:''
 +
* $list - массив записей из таблицы [[Разработка:storages/cpassed|cpassed]] для отображения.
 +
 +
''Возвращаемые значения:''
 +
* (string) - html-код или false в случае ошибки
 +
 +
===== show_id() =====
 +
Возвращает html-код отображения информации об одной подписке на курс
 +
 +
''Параметры:''
 +
* $id - id записи в таблице [[Разработка:storages/cpassed|cpassed]]
 +
 +
''Возвращаемые значения:''
 +
* (string) - html-код или false в случае ошибки
 +
 +
===== order() =====
 +
Подключает методы для работы с приказом
 +
 +
''Параметры:''
 +
* $code (string) - код типа для исполнения приказа
 +
* $id - id записи в таблице [[Разработка:storages/orders|orders]]
 +
 +
''Возвращаемые значения:''
 +
* (object) [[Разработка:storages/orders#API | order]]  - объект приказа
 +
 +
== Приказы ==
 +
 +
В этом разделе описаны классы, которые используются для формирования подписок.
 +
 +
=== dof_im_cpassed_order_change_status ===
 +
 +
Наследуется от класса [[Разработка:storages/orders#API | dof_storage_orders_baseorder]].
 +
Класс для работы с приказом для смены статуса. Отвечает за смену статуса подписки на дисциплину.
 +
 +
==== execute_actions() ====
 +
 +
Функция отвечающая за выполнение приказа. Обращается к плагину [[Разработка:workflows/cpassed | workflows/cpassed]], для того чтобы изменить статус.
 +
 +
Параметры:
 +
 +
* $order - объект, содержащий информацию по приказу. Структура полей объекта совпадает со структурой полей таблицы [[Разработка:storages/orders|orders]]. Поле data содержит объект следующей структуры:
 +
** cpassid - id записи в таблице [[Разработка:storages/cpassed|cpassed]]
 +
** datechange - дата смены статуса
 +
** oldstatus - старый статус
 +
** newstatus - новый статус
 +
 +
=== dof_im_cpassed_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) - успех исполненной задачи.
 +
 +
=== dof_storage_cpassed_order_register_reoffset ===
 +
 +
Наследуется от класса [[Разработка:storages/orders#API | dof_storage_orders_baseorder]].
 +
Класс для создания приказов "Ведомость перезачета оценок".
 +
 +
==== execute_actions() ====
 +
 +
Исполнить действия, сопутствующие исполнению приказа. Добавляет оценки в режиме "перезачета"; в случае если была активная подписка, она закрывается.
 +
 +
Параметры:
 +
 +
* $order - объект, содержащий информацию по приказу. Структура полей объекта совпадает со структурой полей таблицы [[Разработка:storages/orders|orders]]. Поле data содержит объект следующей структуры:
 +
** grades (array) - ( $pitemid => $grade, ... ) - оценки по перезачитываемым предметам
 +
** personid (int) - id из таблицы persons
 +
** programmsbcid (int) - id из таблицы programmsbcs

Текущая версия на 19:14, 23 июня 2014

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


Подписка студента на учебные курсы

Модуль обеспечивает подписку студентов на изучение дисциплины путем приписки его к определенному предмето-потоку.

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

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

  • просмотр всех подписок на предмето-поток;
  • просмотр всех подписок подразделения;
  • просмотр всех подписок группы/класса;
  • просмотр всех подписок студента;
  • просмотр подписок с одинаковым статусом.

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

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

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

Описание полей таблицы дано в следующем разделе.

Со страницы возможен переход на создание или редактирование подписки.

Страница просмотра одной подписки

Здесь можно просмотреть подписку одного студента на один предмето-поток.

Информация выводится в виде таблицы с полями, которые заполнены значениями, взятыми из соответствующего справочника.

  • Ученик (studentid - id слушателя по таблице persons).
  • Программа обучения (programmsbcid). Вычисляется на основе programmsbcid - id подписки контракта на программу обучения.
  • Учебный поток (cstreamid). Отображается как связка ФИО преподавателя, название предмета и название учебного периода.
  • Учебный предмет (programmitemid - id дисциплины).
  • Итоговая оценка (grade).
  • Уровень оценки (gradelevel).
  • Кредиты (credit).
  • Пояснение (notice).
  • Предыдущая подписка Отображается учебный поток, по которому ранее проходило обучение(repeatid).
  • Тип синхронизации (typesync).
  • Задание в мудл - название задания в мудл или его id в мудл (mdlinstance). Отображать название, если его несложно получить.
  • Преподаватель (teacherid) - id сотрудника по справочнику persons.
  • Учебный период (ageid) - название периода в котором велось обучение.
  • Статус (status).

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

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

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

Страница создание/редактирование подписки

Выводится форма для заполнения таблицы cpasseds:

  • Ученик. Меню выбора слушателя из списка. Список формируется на основе данных таблицы contracts. Отображается ФИО ученика, и номер его контракта в скобках. Если id ученика не передано, то отображается слово "выбрать". В обработчик формы передается contractid - id слушателя по таблице contracts.
  • Программа обучения. Меню выбора программы из списка. Выводится название программы обучения. Список формируется после выбора ученика. В список попадают все программы обучения ученика, на которые он подписан по выбранному контракту. В обработчик формы передается programmsbcid - id подписки контракта на программу обучения.
  • Учебный предмет. Список предметов формируется после выбора программы обучения. Показываются все предметы, входящие в программу. Изменяется при изменении предмето-потока как описано выше. В обработчик формы передается programmitemid - id дисциплины.
  • Учебный поток (необязательное поле). Меню выбора из списка предмето-потоков, с одним из которых надо установить связь. В меню попадают все потоки, которые предусмотрены программой обучения и текущим периодом обучения. И то и другое берется из подписки на программу обучения. Список формируется после выбора программы обучения. В меню это поле отображается как связка ФИО преподавателя и название предмета. В обработчик формы передается cstreamid - id учебного предмето-потока.
  • Период обучения. Формируется двумя разными способами:
    • Если учебный поток выбран, то период определяется единственным образом - как период, в котором обучается поток
    • Если учебный поток не выбран - то выводится список всех периодов, в течение которых проходит выбранная ранее учебная программа.


Остальные поля (подробнее см. в storage/cpassed ) заполняются автоматически при наступлении определенных событий, и в форме не отображаются. Под указанными полями отображаются две кнопки - сохранить и отмена. При нажатии на кнопку сохранить происходит сохранение внесенных изменений. Перед сохранением данные проверяются на существование всех переданных id в базе, и на совместимость переданных id друг с другом (чтобы не было возможности повредить структуру связей в БД). Если форма пуста - ни один параметр не был изменен, то выводится соответствующее сообщение. При нажатии на кнопку отмены происходит переадресация на страницу списка групп.

Страница формирования приказа "Ведомость перезачёта оценок"

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

  • Учащийся. Отображает имя выбранного учащегося по текущей подписке.
  • Название учебного заведения. Форма с автодополнением по таблице organizations. Если ввести номер записи, можно выбрать запись по id из таблицы organizations. Если ввести часть названия (больше двух символов), происходит полнотекстовый поиск по полному названию организации.
  • Дата. Поле с указанием даты выдачи документа
  • Номер (необязательное поле). Поле с указанием номера документа
  • Специальность или квалификация (необязательное поле). Текстовое поле.
  • Разрешить перезачёт поверх изучаемых или пройденных дисциплин (необязательное поле). При указании этого поля можно создавать перезачёты по тем дисциплинам, которые уже пройдены или ещё изучаются.

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

  • Учащийся.
  • Название учебного заведения.
  • Дата.
  • Номер.
  • Специальность или квалификация.

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

API

Здесь описаны функции для работы с подписками на курсы.

form()

Возвращает форму создания/редактирования подписки на курс

Параметры:

  • $id - id подписке в таблице cpassed, для редактирования которой вызывается форма. По умолчанию NULL (создается новая подписка).

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

  • moodleQuickForm object - объект формы, с загруженными в нее исходными данными.
showlist()

Возвращает html-код отображения информации о списке подписок на курсы

Параметры:

  • $list - массив записей из таблицы cpassed для отображения.

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

  • (string) - html-код или false в случае ошибки
show_id()

Возвращает html-код отображения информации об одной подписке на курс

Параметры:

  • $id - id записи в таблице cpassed

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

  • (string) - html-код или false в случае ошибки
order()

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

Параметры:

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

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

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

Приказы

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

dof_im_cpassed_order_change_status

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

execute_actions()

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

Параметры:

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

dof_im_cpassed_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) - успех исполненной задачи.

dof_storage_cpassed_order_register_reoffset

Наследуется от класса dof_storage_orders_baseorder. Класс для создания приказов "Ведомость перезачета оценок".

execute_actions()

Исполнить действия, сопутствующие исполнению приказа. Добавляет оценки в режиме "перезачета"; в случае если была активная подписка, она закрывается.

Параметры:

  • $order - объект, содержащий информацию по приказу. Структура полей объекта совпадает со структурой полей таблицы orders. Поле data содержит объект следующей структуры:
    • grades (array) - ( $pitemid => $grade, ... ) - оценки по перезачитываемым предметам
    • personid (int) - id из таблицы persons
    • programmsbcid (int) - id из таблицы programmsbcs