Поддержка перечислений в БД
Originally reported on Google Code with ID 347
С меня - поддержка перечислений, чтобы они сохранялись в БД.
С Вадима - заполнение перечислений.
Разрабатывать планирую в отдельном клоне-варианте mariabirvg-mamontovdp-correctwriting.
Reported by mamontov.dp
on 2015-05-01 12:41:43
Comments (18)
-
Account Deleted -
Account Deleted Вытолкнул изменения в клон. Сейчас в принципе все работает, добавлено новое поле 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. Аналогично.
Reported by
mamontov.dp
on 2015-05-01 15:54:14 -
repo owner extra_answer_fields для импорта/экспорта XML надо смотреть не в poasquestion а в questiontypebase или questionbase, они протолкнуты в ядро Moodle. Что именно имеловсь ввиде под "правильно заполнено поле в вопросе" надо уточнять - смотрим, как объявлено поле для тестов регексов в preg. В get_question_options поддержка extra_answer_fields есть, в initialise_question_instance тоже.
Reported by
oasychev
on 2015-05-03 18:51:54 -
Account Deleted Хм, в таком случае, думаю, что у меня возможно просто не самая свежая версия Moodle. Думаю в ближайшее время обновлюсь и проверю.
Reported by
mamontov.dp
on 2015-05-04 05:11:08 -
Account Deactivated Функцию get_enumerations_by_answer_id, я реализовал. Вопрос выталкивать в тотже клон или склонировать новый? Еще вопрос я реализовал функцию десериализации, а где искать функцию сериализации?
Reported by
vad23klev
on 2015-05-04 06:44:13 -
repo owner То, что касается интерфейса и поддержки перечислений в английском языке - в новый клон; то что касается тестов на анализаторы и доделок всех проверок чтобы вопрос правильно сохранялся - СРОЧНО и в старый клон.
Reported by
oasychev
on 2015-05-04 11:29:22 -
Account Deleted Я так понимаю, что функцию сериализации ты будешь формировать из JS? Потому что как бы у тебя перечисления задаются из диалога. Тогда в форме будет поле с именем enumerations, которому надо и поставить такое значение.
Reported by
mamontov.dp
on 2015-05-04 16:18:42 -
Account Deleted Однако, если это надо, то в qtype_correctwriting есть функция save_question_options. По идее в ней можно из $question->options->enumerations получить значение поля, которое пришло из формы и если его перезаписать, по идее оно должно записаться правильно в БД.
Reported by
mamontov.dp
on 2015-05-04 17:23:41 -
repo owner JS должен заполнять скрытое поле, добавленное в форму. Дальше сохранение в БД идет традиционным образом через extra_answer_fields. При считывании из БД данных get_question_options добавляет эти данные в question->options->answers. Далее можно перегрузить функцию make_answer чтобы использовать свой класс-наследник вместо question_answer и добавить туда поле для описания перечислений.
Reported by
oasychev
on 2015-05-04 23:07:54 -
Account Deleted Исправил. Вадим, перенесите функцию в /classes/answer.php, метод qtype_correctwriting_answer::deserialize_enumerations . Проверил код question_base, судя по всему, поддержка там вполне полноценная. Но: я не проверял наш код на этом, надо проверить отдельно. Из формы записи должны быть сериализованы через JS, особой поддержки препроцессинга из PHP пока не запланировано.
Reported by
mamontov.dp
on 2015-05-08 18:03:46 -
Account Deactivated Добавлена десериализация.
Reported by
vad23klev
on 2015-05-23 21:52:35 -
repo owner Сделано?
-
repo owner - changed component to CorrectWriting
- edited description
-
Думаю, да. @vad23klev как полагаешь?
-
repo owner Вотчеров нет, так что есть шанс что Клевцов этого коммента не увидит...
-
Отправил ему. Что самое интересное - сейчас письмо пришло.
-
Account Deactivated На чистой установке, все работает.
-
repo owner - changed status to resolved
Раз все устраивает.
- Log in to comment
Reported by
mamontov.dp
on 2015-05-01 13:40:14