Разработка поведения qbehavior_studentchoosenhints
Поведение должно имитировать qbehavior_interactive но с поддержкой новых возможностей подсказок.
Comments (20)
-
repo owner -
reporter - attached Диаграмма состояний.jpg
-
repo owner Чего-то я плохо понимаю эту диаграмму - отчасти из-за странных названий состояний, отчасти из-за странного их количества... Надо обсуждать при встрече.
-
repo owner -
assigned issue to
-
assigned issue to
-
repo owner Щербакову: можете посмотреть старые диаграммы, но рисуйте свои. Плюс к диаграмме надо описание правил расчета штрафов за подсказки если сам вопрос не может предоставить необходимую информацию.
-
repo owner Issue
#153was marked as a duplicate of this issue. -
repo owner - changed component to Hinting
-
repo owner -
assigned issue to
Ильин, заполните свою фамилию в реалнейме пользователя. Иначе просто не удобно помнить, кто у нас Артем.
Можете посмотреть тут предыдущие идеи, но учтите что наследоваться от adaptive - очень неправильно, надо делать с нуля.
-
assigned issue to
-
Проблема исчезновения подсказок на вопрос типа correct writing была не из-за того, что не запоминался текущий ответ. Этот момент был учтен и правильно работает с preg:
после нажатия кнопки "попробовать еще раз" подсказка пишется с учетом введенной буквы "К"
Чтобы найти, почему хинты не сохраняются в вопросах correct writing, я поменял код так, чтобы уже использованные хинты показывались студенту на всех этапах ответа. У вопроса correct writing они показывались только после нажатия кнопки "проверить ответ", после нажатия кнопки "попробовать еще раз" хинты исчезали (а точнее, вместо каждого хинта рендерился тег <br>).
После изучения классов correct writing я нашел причину. При генерации хинта используется переменная mistake, которая вычисляется в результате проверки текущей попытки ответа студента. Так как проверка ответа после нажатия кнопки "попробовать еще раз" не происходит, переменная не инициализируется, и хинт генерируется неправильно (в случае текстовой подсказки генерируется просто тег <br>, а в случае картинки вообще выбрасывается исключение).
На скриншоте ниже $this->mistake это та самая переменная, которая проинициализировалась значением null. Далее на строке 288 выбрасывается исключение Call to a member function mistake_key() on null
Пока что я не представляю, как решить эту проблему. Подменить попытку ответа на предыдущую (уже проверенную) не получится, так как метод, который пытается отрисовать хинт вызывается не из поведения, а из стандартного класса moodle.
-
repo owner Вы сами вызываете метод hint_object? Если да, то имея доступ к объекту поведения (и информации о шагах) вы можете найти последний шаг, содержащий ответ, и передать его как response в hint_object.
-
В этом и проблема, hint_object вызывается самим вопросом correctwriting, а не мной.
-
repo owner У меня есть подозрение что correctwriting вызывает функцию поведения чтобы узнать response. Вы можете попробовать перегрузить эту функцию чтобы она возвращала нужные вещи в вашем поведении. Если это будет иметь посторонние эффекты на другие части вопросов, вы можете добавить дополнительную функцию и изменить correctwriting чтобы он вызывал ее если она есть в поведении, а если нет - то старую (в стандартных поведениях новой функции не будет).
-
В общем, проблема была в том, что вопрос генерировал hint_object не посылая в его конструктор response, так как после нажатия "попробовать еще раз" новой попытки ответа еще нет. По умолчанию в конструкторе response = null, соответственно, когда отрисовывался хинт, зависящий от ответа, получалась ошибка. В строке с созданием хинта я добавил response, получаемый из последней попытки ответа и хинты стали отображаться корректно.
-
repo owner Только смотрите, чтобы изменения в CorrectWriting были в отдельном репозитории-клоне от CorrectWriting и сделаны отдельным пулл-реквестом к нему. В репозитории Preg где поведения устаревшая версия CorrectWriting.
-
@oasychev @artem28147
Да, заметил, что такой логики нет в https://bitbucket.org/dmitry_mamontov/moodle-plugins-correctwriting-release-2016-rc/ . Если никто не против, волью её в данный клон.
-
repo owner Пусть Ильин сделает пулл-реквест к данному клону - это часть его работы по курсовику, а вы смержите.
-
@dmitry_mamontov Сделал пулл-реквест https://bitbucket.org/dmitry_mamontov/moodle-plugins-correctwriting-release-2016-rc/pull-requests/1/
-
Влил всё.
-
repo owner Артем, все сроки прошли. Я писал старостам и Патутиной чтобы сегодня пришли - никто не пришел. Завтра в 10 часов быть с пояснительной запиской всем, кто сделал курсовые! Времени не будет, ставить будем по минимуму - но иначе вообще никак. Свяжитесь с 466й тоже, там Тажибова была близка и Фролова.
-
Никто из них не оповестил нас о том, что можно было сегодня прийти. Передал всем, что можно прийти завтра.
- Log in to comment
Если вы хотите чтобы я мог проверить диаграмму побыстрее, лучше загрузить ее в формате, в котором я смогу открыть ее с любой машины; а не ждать когда доберусь до машины с Астахом...