The Open Source Learning Management System ILIAS is a an extensive tool to support students at universities learning. One big feature of ILIAS is the testing module. Using this lecturers are enabled to give their students a test they have to solve before accessing important documents. Of course the testing module can be used to create real (online) exams, too.
While the testing module supports a bunch of different question types by default, including Single Choice, Multiple Choice and Ordering questions, more complex question types have to be added by installing a plugin.
In this project - called Question Plugin for ILIAS - SQL (QPI-SQL) - we developed an ILIAS plugin, named assSQLQuestion. The plugin enables lecturers to add interactive SQL questions to their tests. Students can execute their answers and their work is graded automatically by applying different metrics.
There are two different options to install this plugin. One for demonstration and testing purposes and one to install the plugin to an existing ILIAS instance for production use.
-
Copy the content of this repository into the
Customizing/global/plugins/Modules/TestQuestionPool/Questions/assSQLQuestionsubfolder of your ILIAS installation. It might be necessary to create the subfolders if they do not exist. -
Access Adminstration -> Extending ILIAS -> Plugins
-
Press "Install" for the assSQLQuestion plugin
-
Press "Activate" for the assSQLQuestion plugin
-
Install Docker-compose on your device
-
Start the test installation of ILIAS by executing
docker-compose upin the root folder of this repository and write down the login data for ILIAS, which will be displayed in the console at the end of the installation process. -
Access the ILIAS installation at
localhost:8080 -
Access Adminstration -> Extending ILIAS -> Plugins
-
Press "Install" for the assSQLQuestion plugin
-
Press "Activate" for the assSQLQuestion plugin
Some of the artifacts are uploaded to the repository in built form, some need to be built during installation. For the PHP part of the plugin, we adhere to the suggestions of ILIAS, namely to composer install --no-dev all dependencies during installation and not check in dependency artifacts into git (c.f. ILIAS-eLearning/ILIAS#1833 and specifically https://docu.ilias.de/go/wiki/wpage_6371_1357 for plugins).
At the same time, there is the file js/min.js.php, which depends on MatthiasMullie\Minify. min.js.php is called directly from the browser but not via ilias.php. For this reason, we maintain a second, parallel composer in lib/minify/vendor/, which we do check in! It is up to the developer to update these dependencies and in order to do so, they need to operate in this composer instance (e.g. by calling composer update matthiasmullie/path-converter).
From version 6 on, Codemirror "exposes only modules, which will require some kind of build step before you can use them." (https://codemirror.net/docs/migration/) Therefore, we use rollupjs and some glue code (c.f. lib/codemirror/editor.mjs) to make codemirror available from the global environment (i.e. <script src="compiled.bundle.js"></script><script>here</script>). This approach is taken from the official manual here: https://codemirror.net/examples/bundle/ The link gives an explanation about the later rollup invocation, too.
To install codemirror, rollup and its plugins, use npm install in the lib/codemirror directory, which installs the packages as in package-lock.json.
Use the following command to build the bundle:
node_modules/.bin/rollup editor.mjs \
-f iife \
-o codemirror_sqlquestion.bundle.js \
-p @rollup/plugin-node-resolve \
-p @rollup/plugin-terser \
--name codemirror_sqlquestionWe do check in the resulting codemirror_sqlquestion.bundle.js file, as we cannot expect all administrators to set up their own JavaScript build environment to gather the file themselves.
Additionally to the in source documentation there is a documentation educating about the interaction of components and further informations. Due to the origin of this project this part of the documentation is only available in German. It can be viewed by compiling the dokumentation.tex in the docs/ folder with pdflatex or a comparable Latex compiler.
cd docs/
pdflatex dokumentation.tex
QPI-SQL is a project started by Dominik Probst (https://cs6.tf.fau.eu/dp) as part of his master's degree in 2018. The accompanying chair is the Chair of Computer Science 6 at Friedrich-Alexander University Erlangen-Nuremberg.