Mediawiki Extension Quiz

From Micylou WIKI
This is the latest revision of this page; it has no approved revision.
Jump to navigation Jump to search
Source: DataSource
Language: English
Topic: Mediawiki
SubTopic: Mediawiki Extension
Last Edit By: DochyJP
LastEdit: 2021-04-14
Document type: Documentation
Status: Active
Access: free

Description

Installation

Download

Download and place the file(s) in a directory called Quiz in your extensions/ folder.

Activation

Add the following code at the bottom of your LocalSettings.php:

wfLoadExtension( 'Quiz' );

Create your Quiz

Adding a new question type

Quiz was conceived to facilitate the addition of new question types. If the basic types (multiple choice with single/multiple responses) are not enough for you, you have the possibility of easily creating and integrating the type of questions which you need. For that you must have some knowledge of PHP.

  • The first thing that you must do is choose a syntax (the simplest possible) for your question type. The restrictions are:
  1. The syntax of the question's header is fixed. The question has to be placed between curly brackets - i.e. { and }
  2. For consistency, it is recommended to use || to mark the beginning of the feedback section ("correction").
  • Choose a new code name for your question type (example: "questionTypeName") as well as a symbol (currently the symbol "()" is used for single response multiple choice because it looks like a radio button, and the symbol "[]" is used for multiple response multiple choice because it looks like a checkbox).
  • Add a "case" at the beginning of the parseParameters's "switch", as follows :
    case 'symbol':

<pre> $this->mType = "questionTypeName"; break;

  • Add a parser function to Quiz.php.
    This function must convert a question object from quiz syntax to HTML and set a state to the question (right, wrong, error, NA or unmarked), according to syntax errors and eventually posted answers. Name the function "questionTypeNameParseObject" and implement as follows :
 /**
 * Convert a basic type object from quiz syntax to HTML.
 * 
 * @param  $input				A question object in quiz syntax
 * 
 * @return $output				A question object in HTML.
 */
 function questionTypeNameParseObject($input) 
	{
	// your code here.
	$this->setState(""); // Set the state if needed.
	return $output;
	}
  1. Write down your syntax specifications which will be added to the help. Please read first the existing help.
  2. Once this is all done, contact me to include officially your question type inside the extension.



Back to top of page - Back to Welcome Page

Quiz documentation

This is the help page for the quiz extension.

The quiz extension consists of very simple markup. This page is long because of the many possibilities which the quiz extension opens up. For a simpler and colourful guide to quizzes suitable for beginners, try the simple quiz help page.


Overview

Version

  • Version 1.0 of the quiz extension is now (20 May 2007) active on Wikiversity.
  • This documentation covers all the major features and most of the minor ones.
  • A few exotic features are not yet covered, such as shuffle control using {X} {!X} {/X} tags.

Pedagogical considerations

  • Where are the strengths and weaknesses of Wikiversity quizzing?
  • How can you best use the quiz extension as a teaching tool?
  • Wikiversity compared to Moodle - offers a detailed consideration of the quiz feature differences between Moodle and Wikiversity, including suggestions as to how each is best used.


How to create a quiz

The quiz tag

wikitext
(what you write)
rendering
(what you see)
comments
<quiz>
insert questions here
</quiz>

  

1 Sample Question 1

The correct answer.
Distractor.
Distractor.
Distractor.

2 Sample Question 2

The correct answer.
Distractor.
Distractor.
Distractor.

The quiz tags do the following:
  • They insert some standard quiz options at the top and a colour-key for marking. The colour-key only appears when the question is marked.
  • They add a "submit" button at the bottom for when the learner has finished the quiz and wants it marked.
  • Everything between the quiz tags is parsed by the quiz extension and turned into questions if possible.

Theoretically it is possible to put quiz tags around each individual question, allowing a learner to mark each one in turn.

Shuffling questions: if the shuffle questions button is shown, the questions can be shuffled by clicking the button. This only works so long as the quiz-taker has not started to answer the questions. Once the quiz-taker starts answering, the order is locked.Shuffle button is not shown if there is one or less questions in a quiz.

<quiz display=simple>
insert questions here
</quiz>

This is where questions would appear.

  • Importantly, the addition of "display=simple" as an attribute of the quiz tag removes the points table at the top.
  • This is useful for short quizzes, and especially for situations where you insert single questions between text blocks.
<quiz shuffle=none>
insert questions here
</quiz>

  

This is where questions would appear.

  • If you'd like to keep the points table but get rid of the button for shuffling questions, use shuffle=none as shown.
<quiz shuffleanswers=true>
questions with proposal shuffled on reload here
</quiz>

  

1 Sample Question 1

Distractor.
Distractor.
Distractor.
The correct answer.

2 Sample Question 2

Distractor.
The correct answer.
Distractor.
Distractor.

Shuffling answers: The quiz also provides the option of automatic shuffling of answers on load.This can be achieved by using shuffleanswers parameter.When shuffleanswers parameter is set to true the answers are shuffled for each reload of the page. This only works so long as the quiz-taker has not started to answer the questions. Once the quiz-taker starts answering, the order is locked to the way it was before submission.


Inserting questions

The types of questions available are shown below.

An important point is that each question must be separated by a blank line, otherwise they are merged together into one question.

How to use the examples

In the examples on this page, there is both wikitext and rendering. The wikitext shows you the code, which you can copy and paste into your pages, or just learn and understand. The rendering shows you what the result will look like.

Copying and pasting

The markup has been slightly simplified in order to help understanding. If you copy and paste, you must insert <quiz> tags before and after the markup. You may wish to use the quiz tags with the "display=simple" option as shown above.

Note that the actual example below also use tables for clarity. If a quiz is inserted into a table, this modifies the appearance of a quiz - for example, boxes appear around some elements in the quiz. If you don't use a table, these boxes disappear and your quiz will look plainer.

When pasting, ensure that all the symbols are aligned with the beginning of the lines of the page - i.e. if any line begins with a space, formatting errors may occur.

Live demos

All the examples below should work. Don't be afraid to try them out. Hitting the correction button is OK - it won't change or damage this page.

Basic question types

  • Note: For multiple choice questions(MCQs) with negative(-) sign and positive(+) sign, the positive sign(+) signifies the correct answer while the negative(-) sign(s) signifies the wrong answer and this is how Quiz know which answer is correct and which one is wrong.

Multiple choice / single response

wikitext rendering comments
{Question
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.
- Distractor.

Question

The correct answer.
Distractor.
Distractor.
Distractor.

  • This type of question allows a single correct response and any number of distractors (3 distractors are shown, but it could be one, or nine, or any other number).
  • The correct answer may be in any position, and is marked by a plus sign. Distractors are marked by minus signs.
  • The wikitext shown should be inserted between <quiz> tags as shown above.
  • Answers appear in the same order as in the markup, so it is advisable to shuffle them before exporting into markup.
  • Every symbol, i.e. |, +, - and any other symbols listed further down, must be on a new line.
  • The symbols must begin the newline - no spaces before them.
  • The borders are a result of the border around the wiki table. They are optional.
  • A distractor is the standard term for a multiple choice option which is wrong.
  • The () symbol in the type attribute is supposed to look like a radio button.
  • To see the full colour code (with four colours), try doing the quiz and clicking the correction button.
  • A second click on a radio button (i.e. a click on an already clicked radio button) will deselect it.

True/false questions

wikitext rendering comments
{Bulgaria and Romania joined the 
European Union in 2007.
|type="()"}
+ TRUE.
- FALSE.
{Switzerland is a member of the 
European Union.
|type="()"}
- TRUE.
+ FALSE.
{Anyone can be a Citizen Journalist.
|type="()"}
+ TRUE.
- FALSE.

1 Bulgaria and Rumania joined the European Union in 2007.

TRUE.
FALSE.

2 Switzerland is a member of the European Union.

TRUE.
FALSE.

3 Anyone can be a Citizen Journalist.

TRUE.
FALSE.


  • In many quiz systems, true/false questions are listed as a separate kind of question, although they are really nothing more than a variety of multiple choice with a single response. The Wikiversity quiz extension correctly treats true/false questions as multiple choice with a single response. They are implemented in exactly the same way as above.
  • The first of the two examples shows a true/false question where the correct answer is "true".
  • The second of the two examples shows a true/false question where the correct answer is "false".
  • The examples are live and can be tried out now.
  • If you have a large number of true/false questions, a more efficient way to lay them out would be to use the tabular response type with radio buttons documented below.


Multiple choice / multiple response

wikitext rendering comments
{Question
|type="[]"}
+ Correct answer.
- Incorrect answer.
+ Correct answer.
- Incorrect answer.

Question

Correct answer.
Incorrect answer.
Correct answer.
Incorrect answer.

  • This type of question is a multiple choice where more than one answer could be correct.
  • Correct answers are indicated by plus signs, incorrect ones by minus signs.
  • The wikitext shown should be inserted between <quiz> tags as shown above.
  • Answers appear in the same order as in the markup, so it is advisable to shuffle them before exporting into markup.
  • Every symbol, i.e. |, +, - and any other symbols listed further down, must be on a new line.
  • The symbols must begin the newline - no spaces before them.
  • The borders are a result of the border around the wiki table. They are optional.
  • The [] symbol in the type attribute is supposed to look like a checkbox.

Typed response (short answer)

wikitext rendering comments
{ &nbsp;
|type="{}"}
Where was Aristotle born? 
{ Stageira }

{ &nbsp;
|type="{}"}
Name Aristotle's famous mentor. 
{ Plato }

{ &nbsp;
|type="{}"}
{ Alexander } was Aristotle's most 
famous pupil. 

1  

Where was Aristotle born?

2  

Name Aristotle's famous mentor.

3  

was Aristotle's most famous pupil.

  • In a typed response the quiz-taker types an answer into a textfield using the keyboard.
  • The question type is signalled using "{}" as the argument of the type.
  • A textfield is inserted using curly brackets at the desired position of the textfield.
    • Note that curly brackets alone don't create a textfield. The curly brackets must have spaces between them and the enclosed text. { Answer } works, but {Answer} doesn't work.
    • The correct answer must be inserted between the curly brackets.
    • The textfield can be positioned anywhere in the text. Text before and after the text field will display as normal text.
  • The borders are a result of the border around the wiki table. They are optional.
  • A non-breaking space was inserted between { and |type= because some text is required at that position (slightly buggy thing).
{  
|type="{}"}
Name a famous Greek philosopher. 
{ Aristotle|Plato }

 

Name a famous Greek philosopher.

  • Typed responses often have more than one possible answer. You can list all the possible answers inside the curly brackets using a pipe to separate them.
  • In the example, there are two possible answers. Try it - the demo is live.


{  
|type="{}"}
Name Aristotle's famous mentor. 
{ Plato _6 }

 

Name Aristotle's famous mentor.

  • To modify the size of the textfield, add an underscore and an integer following the answer within the curly brackets to represent the number of glyph spaces you need.
  • This number depends, however it should be around n+2 (where n is the number of glyphs in the answer)
{ Complete each box with a synonym
of the following words
|type="{}"}
#free: { gratis _6 }
#well: { good _4 }

Complete each box with a synonym of the following words

  1. free:

  2. well:

  • You can group the items into one only question.
{  
|type="{}"}
Where did Aristotle die? 
{ Chalcis (i) }

 

Where did Aristotle die?

  • Case-sensitivity: typed responses are case-sensitive unless you add (i) at the position shown. The (i) stands for case-insensitive.
  • If some question have more than one possible answer, you should include one (i) for each of them.


Gapfill / cloze

wikitext
{Complete the text from the Wikipedia article on [[w:Aristotle|Aristotle]].
|type="{}"}
Aristotle was born in { Stageira _8 } in Chalcidice. His parents were { Phaestis _8 } 
and { Nicomachus _10 }, who became physician to King Amyntas of Macedon. Aristotle 
was educated as a member of the aristocracy. At about the age of { eighteen|18 _8}, 
he went to { Athens _6 } to continue his education at { Plato _5 }'s Academy. 
Aristotle remained at the Academy for nearly twenty years, not leaving until after 
Plato's death in { 347 _3 } BC. 
rendering

Complete the text from the Wikipedia article on Aristotle.

Aristotle was born in

in Chalcidice. His parents were

and

, who became physician to King Amyntas of Macedon. Aristotle was educated as a member of the aristocracy. At about the age of

, he went to

to continue his education at

's Academy. Aristotle remained at the Academy for nearly twenty years, not leaving until after Plato's death in

BC.

comments
  • Gapfills (or cloze exercises) are created in almost exactly the same way as typed responses. The difference is that you just write a bit more text and add a few more textfields.
  • The gapfill above was additionally placed in a box and centered using a wiki table.


Numerical response

wikitext rendering comments
{In which year was Plato born?
|type="{}"}
He was born in { 427-428 _5 } BC.

In which year was Plato born?

He was born in

BC.

  • At Wikiversity, numerical responses are a subtle modification of typed responses. The syntax is identical, except for some additions which allow numerical ranges and numerical tolerances if the answer is a number.
  • In the example to the right, the uncertainty over Plato's date of birth is reflected in the answer by using a range. A simple hyphen between the numbers permits all numbers inbetween.
{How far is the earth from the sun?
|type="{}"}
{ 91-95 _3 } million miles.

How far is the earth from the sun?

million miles.

  • This is another example of a range.
  • The _3 ensures that the textfield doesn't get too wide.
{What is 10*10?
|type="{}"}
{ 100 5% _3 }

What is 10*10?

  • This is an example of specifying a tolerance. The critical part is "5%", which specifies the expected tolerance of 5%. In this example, values between 95 and 105 should work, but try it.
  • At the time of writing, the underscore method of limiting the size of the textfield does not yet work in combination with a tolerance specification, so a range may be a better method of specifying numerical accuracy.


Complete the following text, inserting words and numbers as appropriate.

The Earth formed around

billion years ago and its only known natural satellite, the

, began orbiting it around

billion years ago. At present, the Earth orbits the

once for every roughly

times it rotates about its axis.

  • Because numerical responses are, programmatically, a sub-variety of typed response, numerical and text responses can be freely mixed in a gapfill as shown to the left.



Tabular response type with radio buttons

wikitext rendering comments
{Question
|type="()"}
| A | B | C 
+-- A is correct.
-+- B is correct.
--+ C is correct.

Question

A B C
A is correct.
B is correct.
C is correct.

  • Add extra radio buttons by reduplicating the +/- signs at the beginning of each row.
  • There should only be one plus sign in each row.
  • Specify columns headers by using pipes at the top.

Tabular response type with checkboxes

wikitext rendering comments
{Question
|type="[]"}
| Option A | Option B | Option C 
++- Question 1 
(Clue: A and B are correct).
-++ Question 2 (
Clue: B and C are correct).
--+ Question 3 
(Clue: C is correct).

Question

Option A Option B Option C
Question 1 (Clue: A and B are correct).
Question 2 (Clue: B and C are correct).
Question 3 (Clue: C is correct).

  • This type of question has multiple everything.
  • Correct answers are indicated by plus signs, incorrect ones by minus signs. By reduplicating the +/- signs at the beginning of each row, extra checkboxes can be added.
  • The column headers are defined using pipes at the top as shown.

Advanced stuff

Inserting feedback

wikitext rendering comments
 {Question
 |type="()"}
 + The correct answer.
 || Feedback for correct answer.
 - Distractor.
 || Feedback for distractor.
 - Distractor.
 || Feedback for distractor.
 - Distractor.
 || Feedback for distractor.

Question

The correct answer.
Distractor.
Distractor.
Distractor.

  • Feedback is text which is initially hidden, and then shown to the user when they submit the quiz for correction. Feedback typically serves the purposes of encouragement, explanation, congratulation and commiseration.
  • Feedback is set with all types by using a double vertical line || immediately after a response.
  • The pipes beginning the feedback section must be on a new line.
  • Unlike some other quiz systems, all feedback items are displayed on correction. With other quiz systems, the norm is to display the feedback only for those items which were selected by the user.
  • To try out the feedback effect, choose a response and click the correction button. The feedback will then appear.

Inserting blocks of text between questions

wikitext rendering comments
{This is the first question.
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.

{This is a block of text.}

{This is the second question.
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.

1 This is the first question.

The correct answer.
Distractor.
Distractor.
The Arctic Tern is a seabird of the tern family Sternidae. This bird has a circumpolar distribution, breeding colonially in Arctic and sub-Arctic regions of Europe, Asia, and North America (as far south as Brittany and Massachussets).

2 This is the second question.

The correct answer.
Distractor.
Distractor.

  • Text blocks can be inserted between questions by placing it between curly brackets {....}.
  • The text blocks can contain wiki markup, such images, hyperlinks and formatting tags, as shown in this example.


Using images as answers

wikitext rendered comments
<quiz display=simple>
{ Which of these are not nuts? }
- [[Image:Walnut03.jpg|100px]]
+ [[Image:Peanuts.jpg|100px]]
+ [[Image:Malus-Idared on tree.jpg|100px]]
- [[Image:Pistachios in a bag.jpg|100px]]
- [[Image:Chestnut.jpg|100px]]
+ [[Image:P10802511.JPG|100px]]
</quiz>

Which of these are not nuts?

100px
100px
100px
100px
100px
100px

  • Unfortunately there does not yet seem to be a way of putting these into a row or tabularising the layout.
  • Although this has not been done here for reasons of space, it is generally good practice to specify some kind of tooltip text for the images, but try to avoid text which gives away the answer.

Using images in the question

wikitext rendered comments
<quiz display=simple>
{ What is this? [[Image:Butterfly tongue.jpg|100px| ]]
| type="()" }
- Tiger
+ Butterfly
- Bee
- Fly
</quiz>

Tiger
Butterfly
Bee
Fly

In this example, the image is part of the question. You just use normal wiki-markup to insert the image(s).

Using animations

The section adds no new technical tricks, but it looks pretty.

File:Heringsschwarm.gif
What kind of fish are these?

Herring
Salmon
Tunafish
Goldfish


a boxer engine
a wankel engine
a radial engine

File:Pyramid of 35 spheres animation.gif
How many balls are there here?


Hyperlinks and other markup

Markup that works inside quizzes

  • Hyperlinks: [[....]].
  • Images: [[Image:....]].
  • Other media: [[....]].
  • Bold and italic.
  • <big> and <br>

Markup that partly works inside quizzes

  • Templates: {{....}}.
    • subst doesn't work.
  • Tables: {|....|}.
  • Headings: e.g. ===....===.
    • Warning: At the moment there is a problem with the toc.
  • Lists and indents: using #, * and :

Adding music and sound effects

This is similar to insertion of images. Standard wiki markup is used.

Configuring points

wikitext
(what you write)
rendering
(what you see)
comments
<quiz points="3/1!">
{Try this question now.} 
+ Plus 3 points for this one.
- Minus 1 point for this one.
</quiz>

  

Try this question now.

Plus 3 points for this one.
Minus 1 point for this one.

  • By default, there is 1 point for a correct answer and 0 for a wrong answer.
  • You can change this for the whole quiz by using a points attribute for the quiz tag.
  • The format is "X/Y!", where X gives the points for a correct answer and Y the points for a wrong answer. The Y points are expressed as a positive integer but are subtracted from the score.
  • Values like 1.25 or 2.5 are allowed
<quiz display=simple>
{Try this question now.
|type="()" } 
+ 1 points for this one.
- 0 points for this one.

{Try this question now. 
|type="()" coef="2"} 
+ 2 points for this one.
- 0 points for this one.

{Try this question now. 
|type="()" coef="4"} 
+ 4 points for this one.
- 0 points for this one.

{Try this question now. 
|type="()" coef="0.5"} 
+ 1/2 point for this one.
- 0 points for this one.
</quiz>

1 Try this question now.

1 point for this one.
0 points for this one.

2 Try this question now.

2 points for this one.
0 points for this one.

3 Try this question now.

4 points for this one.
0 points for this one.

4 Try this question now.

1/2 point for this one.
0 points for this one.

  • A coefficient is a way of giving a weighting to a specific question. Normally all the questions have the same number of points. By default, they all have one point. By specifying a coefficient for each or any question, you can multiply the number of points for that question by the coefficient.
  • Coefficients can be both numbers above one and numbers between 0 and 1. If the coefficient is above 1, the question will receive greater weighting. If the coefficient is less than 1, the question will receive less weighting.
  • You must put inverted commas around the argument of the coef attribute.

Shuffle Control Tags

wikitext rendered comments
<quiz>

{X}

{ Sample Question 1
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.
- Distractor.

{ Sample Question 2
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.
- Distractor.

{\X}

{!X}

{ Sample Question 3
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.
- Distractor.

{ Sample Question 4
|type="()"}
+ The correct answer.
- Distractor.
- Distractor.
- Distractor.

{\X}

</quiz>

  

1 Sample Question 1

The correct answer.
Distractor.
Distractor.
Distractor.

2 Sample Question 2

The correct answer.
Distractor.
Distractor.
Distractor.

3 Sample Question 3

The correct answer.
Distractor.
Distractor.
Distractor.

4 Sample Question 4

The correct answer.
Distractor.
Distractor.
Distractor.

Conditional shuffling using tags:It can be achieved by using {X},{!X} and {/X} tags inside quiz.Any questions that are within {X} and {/X} are treated as a block and will be shuffled.The questions that are within {!X} and {/X} are not shuffled internally, i.e the order of questions inside {!X} and {/X} remain the same.

In the example Sample Question 1 and 2 can be shuffled but Sample Question 3 and 4 are always in the same order.

Troubleshooting

  • You cannot test out the quiz while editing a page, because the submit button is grayed out. If you wish to test your new quiz, then create a sandbox page somewhere else first (e.g. as a subpage of your user page), then test the quiz there, and finally transfer the quiz to its final location (and test it again anyway).
  • The quiz was developed for IE6, IE7, Firefox (and Opera?), but display quality on Opera may not be optimal, and there may be display differences between browsers.
  • A reminder: each question must be separated by a blank line, otherwise the questions are merged together into one question.

Future stuff

Information about future developments is mainly available at the project space on MediaWiki. Lots of things are in planning.




Back to top of page - Back to Welcome Page