Разработка поведения qbehavior_studentchoosenhints

Issue #407 new
Elena Sarkisova created an issue

Поведение должно имитировать qbehavior_interactive но с поддержкой новых возможностей подсказок.

Comments (20)

  1. Oleg Sychev repo owner

    Если вы хотите чтобы я мог проверить диаграмму побыстрее, лучше загрузить ее в формате, в котором я смогу открыть ее с любой машины; а не ждать когда доберусь до машины с Астахом...

  2. Oleg Sychev repo owner

    Чего-то я плохо понимаю эту диаграмму - отчасти из-за странных названий состояний, отчасти из-за странного их количества... Надо обсуждать при встрече.

  3. Oleg Sychev repo owner

    Щербакову: можете посмотреть старые диаграммы, но рисуйте свои. Плюс к диаграмме надо описание правил расчета штрафов за подсказки если сам вопрос не может предоставить необходимую информацию.

  4. Oleg Sychev repo owner

    Ильин, заполните свою фамилию в реалнейме пользователя. Иначе просто не удобно помнить, кто у нас Артем.

    Можете посмотреть тут предыдущие идеи, но учтите что наследоваться от adaptive - очень неправильно, надо делать с нуля.

  5. Artem Ilin

    Проблема исчезновения подсказок на вопрос типа correct writing была не из-за того, что не запоминался текущий ответ. Этот момент был учтен и правильно работает с preg: до нажатия.PNG после нажатия кнопки "попробовать еще раз" подсказка пишется с учетом введенной буквы "К" после нажатия.PNG

    Чтобы найти, почему хинты не сохраняются в вопросах correct writing, я поменял код так, чтобы уже использованные хинты показывались студенту на всех этапах ответа. У вопроса correct writing они показывались только после нажатия кнопки "проверить ответ", после нажатия кнопки "попробовать еще раз" хинты исчезали (а точнее, вместо каждого хинта рендерился тег <br>).

    После изучения классов correct writing я нашел причину. При генерации хинта используется переменная mistake, которая вычисляется в результате проверки текущей попытки ответа студента. Так как проверка ответа после нажатия кнопки "попробовать еще раз" не происходит, переменная не инициализируется, и хинт генерируется неправильно (в случае текстовой подсказки генерируется просто тег <br>, а в случае картинки вообще выбрасывается исключение). переменная не инициализируется.PNG

    На скриншоте ниже $this->mistake это та самая переменная, которая проинициализировалась значением null. Далее на строке 288 выбрасывается исключение Call to a member function mistake_key() on null здесь выбрасывается исключение.PNG

    Пока что я не представляю, как решить эту проблему. Подменить попытку ответа на предыдущую (уже проверенную) не получится, так как метод, который пытается отрисовать хинт вызывается не из поведения, а из стандартного класса moodle. стек вызовов до метода отрисовки хинта.PNG

  6. Oleg Sychev repo owner

    Вы сами вызываете метод hint_object? Если да, то имея доступ к объекту поведения (и информации о шагах) вы можете найти последний шаг, содержащий ответ, и передать его как response в hint_object.

  7. Artem Ilin

    В этом и проблема, hint_object вызывается самим вопросом correctwriting, а не мной.

  8. Oleg Sychev repo owner

    У меня есть подозрение что correctwriting вызывает функцию поведения чтобы узнать response. Вы можете попробовать перегрузить эту функцию чтобы она возвращала нужные вещи в вашем поведении. Если это будет иметь посторонние эффекты на другие части вопросов, вы можете добавить дополнительную функцию и изменить correctwriting чтобы он вызывал ее если она есть в поведении, а если нет - то старую (в стандартных поведениях новой функции не будет).

  9. Artem Ilin

    В общем, проблема была в том, что вопрос генерировал hint_object не посылая в его конструктор response, так как после нажатия "попробовать еще раз" новой попытки ответа еще нет. По умолчанию в конструкторе response = null, соответственно, когда отрисовывался хинт, зависящий от ответа, получалась ошибка. В строке с созданием хинта я добавил response, получаемый из последней попытки ответа и хинты стали отображаться корректно.cw.PNG cw2.PNG

  10. Oleg Sychev repo owner

    Только смотрите, чтобы изменения в CorrectWriting были в отдельном репозитории-клоне от CorrectWriting и сделаны отдельным пулл-реквестом к нему. В репозитории Preg где поведения устаревшая версия CorrectWriting.

  11. Oleg Sychev repo owner

    Пусть Ильин сделает пулл-реквест к данному клону - это часть его работы по курсовику, а вы смержите.

  12. Oleg Sychev repo owner

    Артем, все сроки прошли. Я писал старостам и Патутиной чтобы сегодня пришли - никто не пришел. Завтра в 10 часов быть с пояснительной запиской всем, кто сделал курсовые! Времени не будет, ставить будем по минимуму - но иначе вообще никак. Свяжитесь с 466й тоже, там Тажибова была близка и Фролова.

  13. Artem Ilin

    Никто из них не оповестил нас о том, что можно было сегодня прийти. Передал всем, что можно прийти завтра.

  14. Log in to comment