Блок для вызова инструмента авторинга отдельно от вопроса

Issue #204 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 204

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

Я думаю, нужно сделать две вещи:
* блок, который просто открывает инструменты и позволяет поиграться с регексом для
их сохранения
* модуль, в котором преподаватель задает тесты, оригинальный регекс (и всякие штрафы),
а студенты пытаются составить аналогичный регекс и получают оценку.

Сделать легко - я введу в курс того, кто этим займется, Валерий поможет с бэкап/рестор.

Reported by oasychev on 2013-06-21 15:19:36

Comments (18)

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

    Reported by oasychev on 2013-06-26 14:47:32

  2. Former user Account Deleted
    Скажите, чем модуль принципиально отличается от вопроса? Если студенты на что-то будут
    отвечать, то наверняка это вопрос. Просто я не знаю для чего нужны модули.
    
    По поводу настроек окошка: что за связь с полем в главном окне? На мой взгляд, ЕСЛИ
    делать вопрос, то всплывающее окошко будет лишним. Удобнее было бы "expanders" использовать.
    Например, студенту нужна подсказка в виде графа - он нажимает кнопку (или совершает
    какое-то иное действие) и раскрывается новая область с картинкой. При этом взимается
    штраф (если нужно).
    
    В таком ключе можно выделить следующие настройки для преподавателя:
    1) количество попыток;
    2) штраф за попытку;
    3) штраф за использование графа;
    4) штраф за использование словесного описания.
    

    Reported by ZluMYO on 2013-06-30 18:26:10

  3. Oleg Sychev reporter
    Я думаю будет вопрос типа ConstructRegex
    Только там через раскрытие не пойдет, там надо отдельно делать - у вопросов своя система
    запросов на сервер, но как подсказки делать я подскажу...
    
    Посмотрите пока на то, какие настройки в preg - в т.ч. по подсказкам.
    И прикиньте свои. Каждый тест это вид ответа я думаю, но так чтобы оценки за все тесты
    складывались к 100%.
    

    Reported by oasychev on 2013-07-01 16:00:12

  4. Former user Account Deleted
    ContructRegex это существующий тип вопроса? Я в меню выбора типа вопроса из списка установленных
    не нашёл такого...
    

    Reported by ZluMYO on 2013-07-01 18:57:55

  5. Oleg Sychev reporter
    ContructRegex это вопрос, который нам предстоит написать вместо модуля.
    Но начать надо с блока. А еще лучше с тестов и отладки существующего кода...
    

    Reported by oasychev on 2013-07-02 11:06:25

  6. Oleg Sychev reporter
    Тут основные вопросы будут связаны со скриптом, в котором  - если я правильно понимаю
    - больше всех разбирается Пахомов.
    
    Дмитрий, отвечайте только оперативно.
    
    Во-первых, скрипт в poasquestion_text_and_button.js насколько легко будет присобачить
    к ссылке? Или ему сейчас надо непременно кнопку? Нам (как только вы доделаете стили
    от Moodle и перенос выделения на сервер) - было бы нужно выделить из него в отдельный
    файл универсальную часть, чтобы запускать диалог со ссылки или кнопки; а уж из poasquestion_text_and_button
    эту универсальную часть вызывать.
    
    Базисно для блока мне нужен код, вызывающий этот диалог по обычной ссылке...
    

    Reported by oasychev on 2013-10-03 20:54:17

  7. Oleg Sychev reporter
    Вытолкнул основу блока - см. blocks/regex_constuctor.
    
    Дмитрий - теперь вам надо натравить ссылку так, чтобы она вызывала диалог авторинга
    и проверить его работоспособность в отсутствие формы:
    а) вместо кнопок "save" ("save changes" в другом месте) и "cancel" должна быть одна
    кнопка "Close"
    б) никаких попыток сохранить регекс, опции матчинга и тесты предприниматься не должно
    - некуда
    в) сигналом для диалога авторинга что он вызывается из блока должна служить не странный
    параметр isblock (мало ли откуда еще вызывается эта форма), а отсутствие в запросе
    данных из формы - куда сохранять регекс и т.д., они же как-то передаются когда диалог
    вызывает кнопка при одном из ответов...
    
    Это все надо отладить в 2-х недельный период до релиза - блок то мы можем выпустить
    позднее, а вот весь код в preg и poasquestion должен быть выверен до их релиза, иначе
    блок отложится до следующего релиза preg - это очень надолго...
    

    Reported by oasychev on 2013-10-15 21:45:29

  8. Oleg Sychev reporter
    Да - чтобы не искали - основной код генерируется функцией get_content, в ней можно использовать
    $this->page для доступа к объекту $PAGE (глобалку не использовать!) - включая использование
    его для подключения и вызова javascript. 
    
    Общая информация по разработке блоков - http://docs.moodle.org/dev/Blocks
    

    Reported by oasychev on 2013-10-15 21:48:09

  9. Oleg Sychev reporter
    С некоторыми надписями в заголовках из блока - проблема: заголовок диалога; сворачивание/разворачивание
    всего.
    Кнопка внизу диалога осталась Cancel, а не Close
    
    Надписи на кнопках я так понимаю захардкодены, потому непереводимы. В то время как
    их надо брать из lang файлов (только не надо добавлять туда Close или Cancel - они
    в мудловских файлах есть).
    
    Вроде был способ добраться до lang-строк прямо из яваскрипта, но найти сходу не смог
    - но можно же передать их как параметры из серверной части, это уж точно сработает.
    

    Reported by oasychev on 2013-10-22 21:19:51

  10. Valeriy Streltsov
    http://phpdocs.moodle.org/HEAD/core/lib/page_requirements_manager.html#string_for_js
    

    Reported by vostreltsov on 2013-10-23 03:38:38

  11. Oleg Sychev reporter
    Я думаю, что проблема с отображением надписи на ссылке "все свернуть/все развернуть"
    вверху справа - в том, что при вызове из блока эти строки не были сделаны доступными
    для яваскрипт через string_for_js. При вызове из формы вопроса это было не нужно, т.к.
    сама форма вопроса уже делала это - а из блока нужно.
    
    Также есть предложение переименовать на всех заголовках authoring tools в Regex Constructor
    - название более подходит и блоку и диалогу.
    
    Пахомов - нужно бы еще сделать что-то со ссылкой, чтобы мышь на нее реагировала как
    на обычную, и чтобы если нет яваскрипта то она вела бы на страницу с надписью типа
    "Извините, без яваскрипта regex constructor не работает".
    

    Reported by oasychev on 2013-10-23 17:48:53

  12. Valeriy Streltsov
    Сделал все кроме последнего пункта. Вижу только одно решение: вместо "open regex constructor"
    сделать вашу надпись, прямо в самом блоке.
    

    Reported by vostreltsov on 2013-10-25 08:49:12 - Status changed: InProgress

  13. Oleg Sychev reporter
    Можно и так, скорее всего так даже проще.
    
    Можно было сделать отдельную страницу с надписью внутри каталога блока, куда будет
    вести ссылка без перехвата ее javascript - это мое начальное предложение.
    

    Reported by oasychev on 2013-10-25 11:25:35

  14. Oleg Sychev reporter
    Там еще проблема с другими строками есть - посмотрите на Changeset: 152562f2ca74
    В poasquestion_text_and_button.js надписи на кнопках (Cancel и т.д.) - захардкодены.
    
    А не получены через string_for_js.
    
    Поэтому не переводятся....
    

    Reported by oasychev on 2013-10-25 14:18:21 - Status changed: InProgress

  15. Oleg Sychev reporter
    Всем спасибо!
    

    Reported by oasychev on 2013-10-28 19:34:16 - Status changed: Done

  16. Log in to comment