Skip to content

tmitusis/moodle-question-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moodle тест генератор

Обща идея

Модул базирана web система, която да генерира тестове за платформата за обучение Moodle. Всеки модул генерира един или повече тестове, като трябва максимално да улеснява тези, които го използват и да взима само данните, които няма как да предвиди и/или генерира - текста на въпроса, изображение, за което ще се пита и други.

Изходът от всеки генератор трябва да е .zip файл, който да е съвместим с плъгина "Gift with medias format", който позволява да се използват медиа файлове - картинки, музикални и други във въпроси. Общият формат е стандартният за moodle GIFT формат.

Архитектура

Файлова система

Проектът съдържа 2 папки:

  • css - папка, съдържаща както стилове, уникални за проекта, така и използваните библиотеки
  • js - папка, съдържаща javascript кода на проекта. В подпапка libs са използваните библиотеки, в modules са генераторите за тестовете, а в utilities има функции, които са помощни за генераторите. Освен тези папки в js се съдържа и началният javascript файл(main.js).

Начин на работа

main.js файла следи за смяна на избора на select-а, с ID "question-selection" и на база избраната опция зарежда избраният модул. Модулът се зарежда, използва и при избиране на друг модул, старият се зарежда наново.

Добавяне на модул

Добавяне на модул включва две неща

  1. Добавяне на папка в js/modules - името ѝ ще стане идентификатор за модула
  2. index.js в нея, който е входната точка за модула
  3. Добавянето на името на папката, създадена в стъпка 1, към списъкът с опции на select-а, който е описан в глава Начин на работа за да може main.js да го зареди.

index.js файла, трябва да създава в глобалният "namespace" обект със следните свойства:

  • name - име на типът на въпросите. Използва се за име на файл и други подобни места
  • init(add_to_body) returns void - функция, която да инициира модула. Има следните входящи аргументи
    • add_to_body - фунцкия, на която може да се подаде референция към допълнителни HTML елементи, които да се добавят към въпроса
  • generateQuestion(question_number, answers_count) returns QuestionObject - функция, която получава два аргумента:
    • question_number - кой по ред е поисканият въпрос, в случай че има някакво значение за модула. Да НЕ СЕ ИЗПОЛЗВА за генериране на име на въпроса, това се оправя от общият код.
    • answers_count - брой отговори, търсени от потребителят.

QuestionObject - обект, който се използва от обкръжаващият код за да генерира архив, съдържащ всичко необходимо за всички въпроси. Има следните свойства:

  • question - съдържанието на въпроса в текст. Това е финалният му вариант и няма да се парсва от код извън модула.
  • answers - масив, съдържащ отговорите. Всеки елемент на масива трябва да е уникален.
  • files - масив от допълнителни файлове, които трябват на въпросите. Ако съдържа повтаряеми файлове само едно копие на файла се включва
  • dud - ако се парсва към true въпросът не се включва във финалните.

Бележка: Не се използват EcmaScript модули, тъй като там пътят до модула не може да се взема от променлива.

Пускане в експлоатация

Целият код е в html, javascript и css. Поради това пускането е улеснено тъй като може да се използва всеки наличен http(s) сървър, който трябва да зарежда файловете. Примерна команда е

python3 -m http.server 8000