An easy QTI item authoring tool
PHP Java JavaScript Shell





An easy QTI item authoring tool. It is web based and aims to make simple 
question types easy to author.


-	Web server such as Apache or Lighttpd
-	PHP 5 (tested on PHP 5.2.4)
-	An instance of QTIEngine to call (the demonstration version at is used by default)
-	validate, the Java commandline QTI validator (imported as a subdirectory)
-	A Java VM on which to run validate (tested on Sun Java 1.6.0)
-	An instance of Edshare (optional -- only required if the deposit in Edshare 
	action is to be available)
-	If using the deposit in Edshare action, curl module for PHP (package 
	php5-curl in Debian)


The source is available at <>.


The validate tool must be compiled -- see its own README file.


It should be enough to extract the full tree to a directory visible to the web 


The options are constants found at the bottom of include/constants.php:
		edit this to use a custom instance of QTIEngine
		edit this to use a custom site title (it defaults to Eqiat)
		this is the start of each session variable's name -- change it if you 
		want to run multiple instances of Eqiat on the same domain but don't 
		want them to share their item lists
		change this to true if you wish to use the "deposit in Edshare" action
		if the "deposit in Edshare" action is to be used this must point to the 
		host of the Edshare instance


Eqiat was written to be easily customizable.

To change the look it should only be necessary to add to or replace the (very 
basic) supplied stylesheets styles.css and tinymce.css and perhaps to amend the 
htmlheader.php and htmlfooter.php files. All of these are found in the include 

To add a custom item type add a new class to the classes/itemtypes subdirectory 
-- see the existing item types and the documentation in the parent class 
QTIAssessmentItem (classes/QTIAssessmentItem.class.php) for guidelines.

To add a custom item action add a new class to the classes/itemactions 
subdirectory -- see the existing item actions and the documentation in the 
parent class ItemAction (classes/ItemAction.class.php) for guidelines.

In case further customization is necessary, here is a brief overview of the 
application structure:
-	There is a single entry point, eqiat.php (and index.php is a symlink to 
	this), which sets up the environment and then includes a script based on the 
	query variable "page" (default value is "mainMenu")
-	The scripts which can be included in this way are all in the content 
	subdirectory, identified by filename
-	The list of item actions is generated from suitable classes found in the 
	classes/itemactions subdirectory
-	Each non-abstract class descending from ItemAction describes functionality 
	which can be performed on a particular item. These classes describe whether 
	the action is available for the given assessment item and the logic to take.
-	The list of item types is generated from suitable classes found in the 
	classes/itemtypes subdirectory
-	Each non-abstract class descending from QTIAssessmentItem describes an item 
	type and contains its own logic for the authoring form, generating QTI XML 
	to realize the item and importing the item from XML
-	When output is to be sent to the browser the files htmlheader.php and 
	htmlfooter.php are included to frame the output (found in the include 
-	The Javascript Jquery library is used
-	The Wysiwyg HTML editing areas are instances of TinyMCE (the Jquery version, 
	to be specific) which have been configured to only allow the subset of XHTML 
	included in the QTI specification
-	Various utility functions are to be found in include/functions.php
-	The Java commandline program validate is called by PHP to ensure any 
	generated QTI is valid. Any messages returned are in turn shown to the user.


The main menu gives options to write a new item or upload an existing item and 
also shows a list of all items currently in session memory for the current user.

Items in the list each have various links to actions which can be performed on 
them -- edit, delete, preview and so on.

Upon choosing to write a new assessment item a list of the available item types 
is given along with a short description of each. Choosing an item type takes the 
user to the authoring form which is different for each item type.

Upon submitting this form any problems with the user input are flagged and, on 
resolution of any problems, the QTI for the item is generated and validated. Any 
further problems not picked up client side are shown.

An item preview is made visible and links to various actions are shown such as 
previewing in full screen, editing the item further and downloading the item 
either as XML or a content package. If enabled there is also an action to 
deposit the item in an Edshare repository.

Until the session times out or the item is deleted it will then remain on the 
item list on the main menu page.

An existing item can be uploaded from the upload item page. Supported formats 
are single QTI XML files and content packages containing a single assessment 
item (assessment tests are not supported since this is not a test authoring 

An uploaded item's identifier (and that of its content package, if uploaded as a 
content package) are preserved by default. This means any necessary changes and 
corrections can be made and the item re-exported with the same identifiers as 
before. The resulting output is suitable to replace an existing item.

It's also possible to generate new identifiers at upload time by checking the 
"new identifier" checkbox. This allows an existing item to be used as a template 
for a new item which can then be deployed alongside the original.

Note that only items generated by Eqiat itself are likely to be recognized and 
mapped to the correct item type. This is a shame but the fact is that a 
particular type of item can be expressed in wildly varying QTI. Detecting the 
question type and mapping it to the corresponding item type in Eqiat takes a lot 
of logic since the supported item types and which fields each has are 
(purposefully) restricted. It would be extremely difficult to retain a simple 
user interface while allowing more of the subtleties present in QTI.


As mentioned above, only items generated by Eqiat itself are likely to be 
recognized and mapped to the correct item type.


Bugs should be reported at <>.


(c) 2010 JISC-funded EASiHE project, University of Southampton


Licensed under the Creative Commons 'Attribution non-commercial share alike' 
licence -- see the LICENCE file for more details


Bart Nagel <>

vim: tw=80 fo=wqnta sw=4 ts=4 sts=4 flp=^\s*(\d+\|-)\s+ spl=en_gb
vim: noet nosi nojs ai