вторник, 10 января 2012 г.

Создание модуля в Moodle 2.x типа activity (часть 7)

Следующий шаг - сделать так, чтобы при нажатии на кнопку "Сохранить" пользователю записывалась в gradebook та оценка, которую он выбрал. Попробую для начала получить данные, введенные пользователем в форму. Посмотрела на файл <...>/moodle/mod/glossary/import.php и написала следующие строки в файл <...>/itask/view.php:
Функцию get_data() нашла в файле formslib.php. Тут написано, что get_data() - "Получить данные формы после всех проверок на стороне клиента и сервера. Данные получаются в виде объекта, именами полей которого являются имена заданных в функции definition() объектов, а значениями - значения полей в форме (по умолчанию или введенные)." Так что дописала еще такие строки:
Кстати, вывод footer'а тут нужен для того, чтобы сбоку на новой странице после нажатия кнопки "Сохранить" в окне activity типа itask оставалось стандартное меню Moodle.

Теперь при открытии конкретного activity типа itask Moodle стал выдавать следующую ошибку: "You must specify a course_module ID or an instance ID". Далее я заметила, что в файле <...>/moodle/lib/formslib.php конструктору класса moodleform на самом деле подается несколько параметров со значениями по умолчанию, в их числе параметр $customdata, про который в комментариях написано, что "param array $customdata if your form defintion method needs access to data such as $course $cm, etc. to construct the form definition then pass it in this array. You can use globals for somethings".

Если в файле view.php закомментировать все, что связано с submit_form, и написать
То при открытии одного activity типа itask каждый раз будет выводиться "n=0, id=8", а для другого - "n=0, id=9". Если попробовать вывести course->id, то будет выводиться "2", непонятно почему, ведь в настройках курса в поле "идентификатор курса" я ставила значение 1. Правда, в справке Moodle к полю "идентификатор курса" написано, что "Идентификационный номер курса необходим только при использовании его во внешних системах." Так как это поле можно оставить пустым, видимо, этот идентификатор и "системный" - две разные вещи. Тогда создала экземпляр класса mod_itask_submit_form так:
И заработало, теперь при нажатии кнопки "Сохранить" на новой странице браузера вместо элементов управления submit_form выводится выбранная оценка.

Комментариев нет:

Отправить комментарий