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

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

В этом посте была описана попытка видоизменения формы, которая отображается на экране, когда открываешь некий activity типа itask. Застряла на том, что параметры $id и $n получают только значения по умолчанию. Немного потыкав то-се, выяснила, что правильнее использовать следующий код:
В этом случае начинает создаваться экземпляр класса "mod_itask_submit_form", запускается function moodleform_mod($current, $section, $cm, $course), но затем эта функция выводит следующее сообщение об ошибке: "Use $modname parameter or rename form to mod_xx_mod_form, where xx is name of your module". Поскольку эта функция ожидает, что имя вызвавшего ее класса должно иметь вид "mod_itask_mod_form", а я не могу переименовать этот класс (такой уже есть), надо как-то понять, как можно использовать параметр $modname. Я не поняла, и начала искать другой путь.

Следующей идеей было посмотреть, а как же вызываются в других модулях формы с именами, отличными от "стандартных". Наугад зашла в модуль "glossary" и увидела там файл import_form.php. В этом файле определен класс "mod_glossary_import_form", являющийся расширением класса "moodleform". Поэтому я решила попробовать также сделать класс "mod_itask_submit_form" расширением класса "moodleform". В файле <...>/itask/submit_form.php поменяла соответствующую строку, также закомментировала строку
(Moodle на нее ругался при отладке). Затем в файле view.php оставила следующие строки после строки с add_to_log:
И вот что стало показываться при открытии activity типа itask:
Ура!Заработало:)

А строки эти с $id и $n лучше вернуть к первоначальному виду, а то когда открываешь то одно activity типа itask, то другое, выскакивает ошибка - что-то связанное с базой данных.

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

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