Выдавать осмысленные сообщения об ошибках в регексах в инструментах авторинга

Issue #214 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 214

Как-то мы об этом не подумали - а простые пользователи оказались в полной уверенности,
что дерево и граф просто не работают...

Возможно что строка для самого сообщения уже есть в Moodle - надо грепнуть где еще
используется настройка пути к DOT, которая у нас есть, и посмотреть что там делается,
если настройки нет - возможно можно будет найти подходящий get_string. Если нет - надо
написать самим со ссылками, где скачать и описанием того, как настроить...

Валерий, вы с этой настройкой DOT работали - сделаете?

Reported by oasychev on 2013-08-12 18:28:13

Comments (8)

  1. Valeriy Streltsov
    Похоже, что единственный клиент этой настройки - наш preg. Кроме какого-то админского
    скрипта никакого кода больше нет и строка в lang файле единственная. Тут вопрос больше
    в обработке этой настройки инструментами авторинга - сама функция execute_dot вернет
    пустоту в случае плохой настройки.
    

    Reported by vostreltsov on 2013-08-13 17:52:24

  2. Oleg Sychev reporter
    Так вполне возможно, что этот админский скрипт какую-то статистику через DOT рисует...
    И что там нет сообщения?
    
    Тогда надо сделать самим. Тем более вы когда-то начинали делать архитектуру инструментов
    авторинга и предусматривали там возможность ошибки - вот оно и понадобилось, вам будет
    удобно.
    
    Что нужно: два отдельных сообщения об ошибке
    а) настройка DOT пустая - сообщение что инструмент (его имя подставить) не работает
    по причине отсутствия Graphviz. Необходимо установить Graphviz и указать путь к нему
    в Moodle в параметре таком-то. Сообщение должно содержать две ссылки - на скачивание
    Graphviz и на страницу сервера, на которой находится настройка - последнюю надо генерировать
    динамически через $CFG->wwwroot и передавать как одной из свойств $a - см. аналогичную
    ситуацию в сообщении о слишком большом автомате как пример кода, там дается ссылка
    на нашу страницу настроек.
    б) настройка DOT не пустая, но запустить dot не удается - сообщение о том, что путь
    к утилите Dot (из пакета Graphviz) неверный.
    
    Из самой функции отрисовки в DOT я бы в такой ситуации выбрасывал исключения, чтобы
    показать, в чем именно проблема. А - я давно говорил о полезности абстрактного класса
    для инструмента, работающего через DOT - инструмент может это исключение перехватить
    и выдать сообщение.
    

    Reported by oasychev on 2013-08-14 19:42:21

  3. Valeriy Streltsov
    Со стороны php: теперь если есть ошибки (любые - кривой pathtodot, плохой регекс) -
    json содержит строку с сообщением об ошибке.
    
    Дело за javascript'ом. Отличить сообщение от картинки можно соответственно тем, что
    оно начинается не с 'data:'. Надо div'ки что ли для текста сделать и скрывать картинки...
    И посмотреть, что кэшируется всё нормально.
    
    И еще - инструментам авторинга нужно добавить нормальные строки в lang файл.
    

    Reported by vostreltsov on 2013-08-16 20:40:36

  4. Oleg Sychev reporter
    Валерий - в последнем предложении имеются ввиду строки с их названиями?
    

    Reported by oasychev on 2013-08-17 12:35:00

  5. Valeriy Streltsov
    Ну да. Там сейчас захардкодены сообщения об ошибках, нужен get_string.
    
    Кстати, мне кажется можно было бы разбить lang файл на части - сообщения об ошибках,
    другие интерфейсные строки, описания узлов и т.д. А то там уже кошмар какой-то.
    

    Reported by vostreltsov on 2013-08-17 12:41:27

  6. Oleg Sychev reporter
    Сообщения об ошибках надо привести в приличный вид, хотя там должно быть только непринятие
    (которое и так генерируется) и проблемы dot - что еще может быть в инструментах авторинга?
    
    Про разбиение надо спрашивать на GDF - Валерий спросите или мне это сделать? И я бы
    разбивал уже после релиза.
    А вот унификация к релизу нужна, чтобы работало все нормально.
    

    Reported by oasychev on 2013-08-17 14:01:34

  7. Oleg Sychev reporter
    Сделал получение информации о наличии ошибки в регексе в инструменте тестирования -
    был не самый тривиальный момент. Теперь надо переправить эту информацию в скрипт как-то
    так, чтобы не перепутать с нормальным вариантом развития событий  - и отобразить в
    скрипте...
    

    Reported by oasychev on 2013-08-23 20:12:17

  8. Oleg Sychev reporter
    Спасибо Валерию :)
    А вот кто-то так и не напрягся...
    

    Reported by oasychev on 2013-09-03 21:01:21 - Status changed: Done

  9. Log in to comment