При отсутствии описания на кнопке лексической ошибки выдается {$a} вместо текста лексемы в кавычках
При отсутствии описания на кнопке лексической ошибки выдается {$a} вместо текста лексемы в кавычках
Причина этого связана со строкой 458 в cw_hints $this->token = $this->mistake->token_descriptions_as_mistake();
token_descriptions_as_mistake в свою очередь вызывает qtype_correctwriting_response_mistake::token_descriptions которая пропускает токены без описаний т.к. предназначена для других целей (например для what is подсказки).
Нам нужно содержание токенов из строки студента (reponse), поэтому просто вызвать qtype_correctwriting_response_mistake::token_description не годится т.к. он без описания дефолтит к значению из правильной строки (хорошо ли это? надо проверять).
Подклассы sequence_mistake обходят это используя response_description() но для lexical_mistake такой функции нет, возможно надо "повысить" response_description() до response_mistake (если ее код универсализируем). Или написать аналог для lexical_mistake.
Comments (3)
-
reporter -
reporter Принимаем за правильное генерацию сообщений об ошибке. Этим ведает tokens_pair::mesage()
Предлагаю слегка отрефакторить tokens_pair::mesage() так, чтобы помимо самого сообщения она сохраняла в добавочное поле его часть, связанную с перечнем участвующих токенов. Тогда все подсказки и прочее смогут пользоваться этой частью.
-
reporter - changed status to resolved
Спасибо, теперь работает!
- Log in to comment
Сейчас попробую написать сюда правила для сообщений и надписей на кнопках.