Open GoogleCodeExporter opened 9 years ago
Создан новый клон -
https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2-enumsupport/.
Original comment by mamontov...@gmail.com
on 1 May 2015 at 1:40
Вытолкнул изменения в клон. Сейчас в
принципе все работает, добавлено новое
поле enumerations на форме, выглядит как скрытое
поле enumerations[номер ответа]. В него строкой
должны быть записаны значения через JS
Вадима. Возникло три проблемы:
1) Не нашел функцию, чтобы были правильно
заполнено поле enumerations в вопросе. Такое
ощущение, что в poasquestion его нет. Решил через
ленивую загрузку в poasquestion, функций
qtype_correctwriting::get_enumerations_by_answer_id, с. 174 в question.php
которая получает перечисления по id ответа.
За Вадимом оставляю десериализацию, как он
реализует формат.
2) Импорт из XML. Не вижу, чтобы там была
поддержка extra_answer_fields в poas_question. Необходимо
уточнее - её надо самим кодить или нет?
3) Экспорт в XML. Аналогично.
Original comment by mamontov...@gmail.com
on 1 May 2015 at 3:54
extra_answer_fields для импорта/экспорта XML надо
смотреть не в poasquestion а в questiontypebase или
questionbase, они протолкнуты в ядро Moodle.
Что именно имеловсь ввиде под "правильно
заполнено поле в вопросе" надо уточнять -
смотрим, как объявлено поле для тестов
регексов в preg. В get_question_options поддержка
extra_answer_fields есть, в initialise_question_instance тоже.
Original comment by oasyc...@gmail.com
on 3 May 2015 at 6:51
Хм, в таком случае, думаю, что у меня
возможно просто не самая свежая версия Moodle.
Думаю в ближайшее время обновлюсь и
проверю.
Original comment by mamontov...@gmail.com
on 4 May 2015 at 5:11
Функцию get_enumerations_by_answer_id, я реализовал.
Вопрос выталкивать в тотже клон или
склонировать новый? Еще вопрос я
реализовал функцию десериализации, а где
искать функцию сериализации?
Original comment by vad23k...@gmail.com
on 4 May 2015 at 6:44
То, что касается интерфейса и поддержки
перечислений в английском языке - в новый
клон; то что касается тестов на анализаторы
и доделок всех проверок чтобы вопрос
правильно сохранялся - СРОЧНО и в старый
клон.
Original comment by oasyc...@gmail.com
on 4 May 2015 at 11:29
Я так понимаю, что функцию сериализации ты
будешь формировать из JS? Потому что как бы у
тебя перечисления задаются из диалога.
Тогда в форме будет поле с именем enumerations,
которому надо и поставить такое значение.
Original comment by mamontov...@gmail.com
on 4 May 2015 at 4:18
Однако, если это надо, то в qtype_correctwriting есть
функция save_question_options. По идее в ней можно из
$question->options->enumerations получить значение поля,
которое пришло из формы и если его
перезаписать, по идее оно должно
записаться правильно в БД.
Original comment by mamontov...@gmail.com
on 4 May 2015 at 5:23
JS должен заполнять скрытое поле,
добавленное в форму.
Дальше сохранение в БД идет традиционным
образом через extra_answer_fields.
При считывании из БД данных get_question_options
добавляет эти данные в question->options->answers.
Далее можно перегрузить функцию make_answer
чтобы использовать свой класс-наследник
вместо question_answer и добавить туда поле для
описания перечислений.
Original comment by oasyc...@gmail.com
on 4 May 2015 at 11:07
Исправил. Вадим, перенесите функцию в
/classes/answer.php, метод
qtype_correctwriting_answer::deserialize_enumerations . Проверил код
question_base, судя по всему, поддержка там вполне
полноценная. Но: я не проверял наш код на
этом, надо проверить отдельно. Из формы
записи должны быть сериализованы через JS,
особой поддержки препроцессинга из PHP пока
не запланировано.
Original comment by mamontov...@gmail.com
on 8 May 2015 at 6:03
Добавлена десериализация.
Original comment by vad23k...@gmail.com
on 23 May 2015 at 9:52
Original issue reported on code.google.com by
mamontov...@gmail.com
on 1 May 2015 at 12:41