Модул базирана 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" и на база избраната опция зарежда
избраният модул. Модулът се зарежда, използва и при избиране на друг модул, старият се зарежда наново.
Добавяне на модул включва две неща
- Добавяне на папка в
js/modules
- името ѝ ще стане идентификатор за модула index.js
в нея, който е входната точка за модула- Добавянето на името на папката, създадена в стъпка 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