Creating a Quiz Template

SAP Enable Now includes the ability to create effective Quizzes, with a variety of different Question types. In true Enable Now style, there is a lot of control you can exert over the format and appearance of these Questions within a Quiz, but this is not always straightforward. In this article we look at how to define our own visual style for Questions.

Every Question uses a Quiz Template to define how (and where) the various elements of the Question (such as the question itself, the possible answers, and so on) should appear. (Confusingly, a Quiz Template defines the format of the Question, and not the Quiz – the format of the Quiz is defined elsewhere, as we shall see later). Creating a Quiz Template is not for the faint-hearted, and if you are in a rush you may be better off using one of the pre-built templates SAP provides via the InfoCenter. But if you’ll be making extensive use of Quizzes, it is definitely worth knowing how the Quiz Templates work – and if you can build your own template from scratch you’ll be able to do anything.

Creating a Quiz Template Object

A Quiz Template is just a special type of Book Page, so the first thing you need to do is create a new Book Page. You need to set the Subtype of this to Quiz Template, but you can do this any time before you use it. Within the Book Page, click on the Insert Quiz Item button, and select Quiz Item Template from the drop-down panel (this is the only option on the drop-down panel you will use here).

The Quiz Item Template is a specialized type of Book Page Object that serves a number of purposes. Firstly, the positioning of the object itself is used to determine the position on the Book Page where the Question ‘answer’ component (the list of options for Multiple Choice, for example) will appear on the Book Page during display. Secondly, the Quiz Item Template object has a number of properties that are used to influence the appearance of the Question’s ‘answer’ component – individually, for each Question Type. Finally, the Quiz Item Template object lists within it (on the actual Book Page) the various objects that you can (and in some cases must) define in the template. Actually, it lists the names that you need to give to the objects that you create. These names are then used internally by SAP Enable Now during playback, to provide the quiz logic and responsiveness. We’ll look at each of these objects as we use them, in this tutorial.

While you’re building your Quiz Template, you may find it useful to have a Quiz open, containing at least one question, which has a Template property set to the Quiz Template you are creating, so you can rapidly test your work. For this tutorial, we’ll use a simple example of a Multiple Choice question, defined as follows:

A Multiple Choice question, using the SAP-provided Standard Quiz Template

As we build our new Quiz Template, I’ll refer back to this example, to clarify which elements I’m referring to.

Adding the Question and Answers

Let’s start with the basics – the question and the answer choices. As noted above the ‘answers’ (the block containing the three options We Perform Better, Workforce Performance Builder, and Well Performing Business) are displayed within the Quiz Item Template object itself. This has a Name of quiz_element by default. You must not change this! To tie this back to the Question definition (which is always separate to the Quiz Template), the information displayed here is taken from the Answers (and potentially More Answers) property category of the question object.

Let’s now add a placeholder for the question – the thing that we will ask the user to answer – to the page. In the example above, this is the text “What does WPB Stand For?“, which is taken from the Task property of the Question object. To add this element to our Quiz Template, we need to add a Text object, and give it a Name of task. You can enter whatever you like into the Text object’s Text property as this text will be replaced with the Question’s Task property during playback. Our simple example now looks as follows (in the Editor):

A minimal Quiz Template, containing only the task and quiz_element placeholder elements.

We could now display this Question and it would appear as expected, but there is no way to confirm/validate our answer – to do that, we need to add a button the user can click to submit their answer. Actually, Enable Now requires two buttons to be defined – one for the inactive state (before the user has answered the question) and one for the active state (after the user has answered the question and is ready to submit it). In our example above, the grayed-out ‘Next’ button in the lower-right corner shows the ‘inactive state’ button. For our template, we need to add two Shape objects, and give them Name properties of next_enabled and next_disabled. We’ll position these on top of each other, in the lower-right corner of the Book Page. We also need to select the Hide property for both of these – their visibility will be controlled by Enable Now.

At this point we now have a working Quiz Template. If we apply this to our sample question, it will look as follows (during playback, with the question answered but not submitted):

A Question during playback, showing the next_enabled element (bottom-right).

Including media

In some cases, a question may include a Media File, such as an image or video. To cater for this, you need to include a placeholder for the media file in your Quiz Template. To do this, you need to provide several additional elements:

  • media: An Image object (with no actual image selected in the Image property) that will be used as a container for the full-sized Media File (from the Question).
  • media_preview: An Image object (with no actual image selected) that will be used as a container for a smaller, thumbnail version of the Media File. This is only needed if you do not specify a media_open element.
  • media_open: An Image object that the user will click on to display the Media File. If a media_preview element is defined, then that is used as the ‘media open’ button, and the media_open element is not displayed.
  • media_close: An Image object that is displayed when the user displays the full-sized Media File, and that the user can click on to hide the Media File again.

Tip:
If you always want the Media File to be displayed full-size, include only the media and media_preview elements, and set them to the same size and at the same position on the page. Just make sure they do not overlap any other elements on the page.

Having added these elements, a Question that includes a Media File will now initially appear as follows during playback:

Sample of a Question with a Media component. The image in the upper-right uses the media_preview element. This Image object includes a Link > Tooltip property of “Click to Expand” (to give the user a hint) and has a 2pt gray border (and a light gray background not visible here).

When the user clicks on the thumbnail image of the media, the full Media File is opened, as shown in the following example:

Sample of a Question with a Media component, after the user has clicked on the thumbnail (or the media_open element if that is used instead). Here, the image is shown in the media element. The Image object for this element has a light gray Background Color (to cater for cases where the image is smaller than the placeholder), and a Shadow to help it stand out. The small yellow icon in the upper-right corner of the media area is the media_close element, with a Link > Tooltip property of “Click to Hide” (but no Link to property selected).

If a Question does not include a Media component, the media_preview element is never displayed, which means that the, media_open and media_close elements also never appear. You therefore don’t need to set the Hide property for these. However, as you (inconsistently) do have to hide the media element you may want to just hide all of the ‘media-related’ elements for consistency – SAP Enable Now will take care of displaying them when it needs to. This means that you do not have to define On Click actions for the media_preview, media_open, and media_close elements as the internal logic already handles it.

Annoyingly, you can’t use the On Show action for the media_preview element, as this event does not seem to be triggered when the element is first displayed. The On Hide one does, though, as does On Show for the media element.

This is the bare minimum of what you need to define to have a fully-functioning Quiz Template, but there is a lot more we can do.

Providing Question-level Feedback

At the moment, the user does not receive any feedback when they submit their answer. It would be nice to tell them whether their answer was correct or incorrect. You don’t have to do this – you can just record their results, or you could just show the results of the Quiz when they have answered all the Questions in it (which we’ll cover later, when we look at the Quiz Evaluation) – but assuming you do want to provide question-level feedback, there are a few ways you can achieve this. We’ll start with the easiest way. Each Question has properties for Quiz Passed and Quiz Failed (which, again, refer to a Question and not an entire Quiz, despite the property name). We’ll start by providing Text object placeholders for these, and use the required names of feedback_correct and feedback_wrong. Again, we will place these at exactly the same position on the Book Page, and select their Hide property so they are hidden until SAP Enable Now’s logic chooses to display them. We can enter any text we like in these Text objects as they will be replaced by the relevant property from the Question. Because this text will be replaced, if you apply any formatting to these Text objects, you should do so via the object’s properties, and not by applying direct formatting to any default text you enter.

We can also define an icon (or other image) that is displayed when the user answers the Question. For our example, we’ll show a green check-mark (tick) if the user answered the Question correctly, and a red cross if the user answered the Question incorrectly. To do this we will insert two Image objects, named feedback_passed_icon and feedback_failed_icon. (Caution: Do not make the mistake of assuming you should use the feedback_correct_icon and feedback_wrong_icon elements for this – in an inexplicable piece of inconsistency, these don’t tie up with the feedback_correct and feedback_wrong text elements, and are used for something completely different, as we’ll see later). We’ll position these where we want them to appear (in our example, to the left of the feedback text), and select the Hide property. Now, our sample, question will look as follows, during playback, and after the user answered the question incorrectly:

Question showing the feedback_wrong_icon (the red ‘x’) and feedback_correct (the text “I’m sorry…”) elements

Note here that the red ‘x’ icon comes from the template (the object with the name feedback_wrong_icon, but the text “I’m sorry, that is incorrect.” comes from the Quiz Failed property of the Question.

One of the problems with this method of providing feedback is that you need to reserve a specific area of the screen for the feedback, which provides less screen real-estate for the ‘answer’ panel. so as an alternative, you can provide the feedback in (some form of) a pop-up. This is done by adding objects with names of feedback_correct_popup and feedback_wrong_popup to your Quiz Template. Despite the name, you should not use a Text Pop-Up object for this, because although the pop-up box will correctly be displayed in response to the appropriate action, the icon (normally used to open the pop-up) will always be displayed. Instead, you can use a Text object, a Shape object, or even a Bubble object – as long as you use the correct object Name. (Again, don’t forget to set the Hide property for the object.) Regardless of the type of object used, the text that appears in it is taken from the Quiz Passed or Quiz Failed property in the Question, the same as for the feedback_correct and feedback_wrong elements.

If you use the pop-up method of providing feedback, you may also want to provide a way for the user to close the pop-up object. (The pop-up will be closed automatically when the user advances to the next question (by clicking on the next_enabled element again), but this may not be immediately obvious – especially if you used a text of “Submit” in the next_enabled element.) If you use a Bubble as the pop-up element then you can just select the Closable property for the Bubble object, but for other object types, you need to provide an additional element to function as a ‘close’ button. Handily, Enable Now takes care of most of this for you, by allowing the definition of an element with a Name property of feedback_close_popup. This can be a Shape object, an Image object, or even a Text object, and as long as the name is feedback_close_pop-up Enable Now will take care of hiding the feedback_correct_popup or feedback_wrong_popup element when it is clicked.

Here’s an example of our sample question using pop-up feedback, where the user has answered the question correctly:

A feedback_correct_popup element.

In this example, we have used a Bubble object as the pop-up. This uses a Style of Big Title Bar Blue, Alignment of Center (so as not to have a bubble pointer), and has the Closable property selected. The text “Correct!” is defined in the Title property of the Bubble object, and the text “That’s right…” is taken from the Quiz Passed property of the Question. Note that the previously-defined feedback_correct / feedback_passed_icon and feedback_wrong / feedback_failed_icon elements no longer appear.

But here’s where things get slightly complicated. Whether feedback is via the text/icon elements or via the pop-up elements is not defined in the Quiz Template. Instead, it is defined in the Workarea via menu option Tools > Settings, under Playback Settings > General > Quiz. In fact, there are quite a few things to do with Quizzes that are controlled here. Settings are defined at the Workarea level by the master Author (or Admin), but you can also specify them for an individual Quiz via the Project Overrides. The image below shows the relevant section of the Settings, with the Project Overrides selected:

The Quiz-level settings.

The setting that determines whether the text/icon or a pop-up is used for question feedback is the Show Feedback as Popup setting. There are many other settings here, but don’t worry about them yet – we’ll get to (many of) them later in this tutorial.

A word of advice at this stage. Because the choice as to whether feedback is provided via pop-up or text box and icon can be made at the Quiz level, you should build your Quiz Template to support both of these options. In doing so, you will ensure that your template will work regardless of which option the Quiz Author chooses.

Providing Answer-level Feedback

There is another level of feedback you can provide for Question types that provide more than one possible answer choice (for example Multiple Choice, Matching, and so on). For these Questions, if the user answers the Question incorrectly (only) you can indicate which of the answer choices were actually correct and which were incorrect (not as the user answered them, but as defined in the Question). To enable this, you need to select Show Correct Answers for the Quiz, and then provide two additional Image objects, named feedback_correct_icon and feedback_wrong_icon. You can insert these objects anywhere on the Book Page – they will automatically be positioned alongside the answer choices within the feedback_wrong element during playback.

To better understand this, look at the following image, which shows our sample question with these icons defined.

The feedback_wrong element showing answer-specific feedback, including feedback_failed_icon / feedback_passed_icon elements (the smaller icons).

Here, you can see that all of the answer choices are repeated within the feedback text box (and this is the case for both correct and wrong answer submissions), and the correct answers are shown alongside these. Again, the icons identify which of the answer choices are correct and incorrect choices, and not whether the user made the correct selections – this is especially important to acknowledge where there are multiple correct answers.

Note, however, that the answer option texts are shown at a smaller size than the Quiz Failed text. This size is fixed, regardless of the text size specified for the feedback_correct / feedback_wrong elements, and apparently cannot be changed. Furthermore, the feedback_correct_icon / feedback_wrong_icon images are always shown their full original size, and any resizing you perform on the Book Page is simply ignored (unlike the feedback_passed_icon / feedback_failed_icon images, which you can resize).

Adding Navigation Elements

Typically, you will not have only one Question in a Quiz – if you only wanted one Question you would be better off using a single Book Page with the Question entered directly onto that. And if you have more than one question, there are a couple of ‘navigation’ (or ‘wayfinding’, as it is sometimes termed) elements that you can add.

The first of these is the question number. The number of the current question is calculated automatically by SAP Enable Now (which is handy, as it automatically caters for Quiz Sections) so all you need to do is add a placeholder element for this. To do this, you can add a Text element or a Shape element with a Name of number. (Unfortunately there is not a corresponding ‘total number of questions’ element.)

The second thing that we can do is add a ‘title’ to the Question. This is distinct from the Quiz Name property (taken from the Step – “The Quiz” in the example below), and the Question text itself, and can be used to provide some context to the question. For example, if a Quiz covers a course that consists of multiple sections, you might want to indicate the section to which a given Question within the Quiz applies. The actual title text is defined in the Title property of the Question itself, but you need to provide an element that will be used to display this in the Quiz Template. This is done by adding a Text element with a Name property of (surprise, surprise…) title.

After adding these two elements, our sample Question appears as follows, during playback:

The addition of the number element (“2” here) and the title element (“SAP ENABLE NOW HISTORY”).

Keeping score

You may have noticed that each Question has an assigned number of ‘points’ that are awarded if the question is answered correctly. This is defined in the Points property of the Question (and can be defaulted via the Points property of the Quiz Item Template object). You can show the user’s score as a running total, by including a Text element with a Name of points on your Quiz Template. This then appears as follows during playback:

Partial screenshot showing the score element (“10/20”). The text “Current Score / Possible Score:” has been added as a separate Text object for clarification.

Providing a running total is helpful if users are required to reach a certain score (or percentage), but if you do show this information, you need to understand (and make sure your users understand) what the displayed information means.

Firstly, the points element results in two values (separated by a slash) being displayed. The first of these is the user’s cumulative score so far; the second is the total possible score to this point. (So the values can effectively be read as “So far, you have scored x points out of a possible y.”) One may have expected the second number to represent the total number of points available for the entire Quiz, but that’s not the case – probably because it can’t always be calculated in advance (for example, if you have a Quiz Section and not all Questions within it – and selected at random – carry the same point value).

The second thing to note is that the score is only (re)calculated once the user submits their answer to a Question. So when the user initially launches the Quiz, this will show as “0/0”, which could be confusing. For this reason it is probably prudent to add a Text box explaining what the numbers mean – as has been done in the sample above.

Adding a Timer

Another element you can (and probably should) add to your Quiz Template is a countdown timer. Actually, there are two possible timers. The first of these is defined at the Question level, and specifies how long the user has left to answer the current Question. The amount of time they start with is specified in the Options > Time Limit (Seconds) property of the Question (within the Quiz). The countdown (from the Time Limit) is handled by SAP Enable Now’s built-in functionality, so all you need to do is add a placeholder element for this. Use a Text object with a Name of countdown.

The second timer is a Quiz-level timer, and specifies how long the user has to complete the entire Quiz. This is not calculated automatically as the sum of all Question-level Time Limits (which would be less flexible), but instead the Quiz-level time limit is specified via Playback Settings > General > {Project Overrides >} Quiz, in the Time Limit for Complete Quiz (Seconds) setting. Again, SAP Enable Now takes care of the countdown – you just need to provide a placeholder element for this. Again, use a Text object, but this time give it a Name of countdown_global.

After adding these elements (and making sure the Question-level Time Limit and Quiz-level Time Limit for Complete Quiz properties have been specified), our sample question now looks as follows:

Sample Question showing the countdown and countdown_global elements. The labels above and to the left of the times have been added to the Quiz Template as standard Text objects.

Note that the timers are independent of each other – you can use one but not the other. You can also have a Time Limit for some Questions but not for others, in the same Quiz. If a Time Limit is not specified (at either level) then the countdown does not appear – but any text labels you have added will be, so watch out for that.

Of course there is no point in having a timer if there is no consequence of allowing this to expire. To display a message to the user when the timer has expired, you need to insert a Text object with a Name of feedback_timeout and/or an object with a Name of feedback_timeout_popup. These are comparable to the feedback_correct/feedback_wrong and feedback_correct_popup/feedback_wrong_popup elements (see above), and both take their content from the Quiz Timeout property in the Question.

Displaying the final Quiz Evaluation

The final thing you need to include in your Quiz Template is the Quiz Evaluation. This is the final page that the user sees, showing their results. Fortunately, this is probably the easiest thing to cater for in the template, because everything is controlled by the Quiz Evaluation object in the Quiz itself (and if this object isn’t present, the Quiz Evaluation is simply not displayed). The actual content displayed in the Quiz Evaluation is controlled by the Format property of the Quiz Evaluation object, so all you need to do in your Quiz template is provide a single Text object with a name of quiz_evaluation, and position this appropriately on your page.

However, this last point – positioning the quiz_evaluation object on the page – is where things can potentially get complicated – because several of the other page elements will still be displayed – the title, next_enabled/next_disabled buttons, number, points, countdown/countdown_global, and any other objects that you have added to the page. The title is OK to leave displayed as the Quiz Evaluation object in the Quiz has a Title property that will be used to populate this, but you may want to ‘remove’ the other objects. Fortunately, there are a few ways you can do this. The easiest is to simply set the Background Color for the quiz_evaluation element to be the same color as your page background (typically, white) and size/position it so that it covers all of the elements you don’t want to be displayed.

The next simplest method is to create a separate Quiz Template just for the Quiz Evaluation, and select this in the Template property of the Quiz Evaluation object in the Quiz. Using this method you have absolute control over exactly what appears on the page along with the quiz_evaluation element, but the downside is that you need to make sure your Authors remember to select this different template just for the Quiz Evaluation object – and someone, some time is going to forget.

The third option is to take advantage of a little inconsistency in SAP Enable Now. Although (as noted above) you cannot use the On Show / On Hide Actions for the media and media_preview elements, you can use them for the quiz_evaluation element. So you can use the On Show Action to hide all of the objects that you don’t want to be displayed, and/or show any additional objects that you do want displayed.

For our sample Quiz, I’ve used a combination of option 1 (using a white background for the quiz_evaluation element) and option 3 (showing additional objects), to produce the following page:

In this example, the text “FINAL SCORE” is taken from the Title property of the Quiz Evaluation object in the Quiz. The “Finish” button is displayed via the On Show Action of the quiz_evaluation element and has a Link To property of action!exit. Everything else is contained in the quiz_evaluation element placeholder (which has a white background, to mask out everything else on the page).

Summary

And that’s all there is to it. Easy when you know how! OK, so it may not be easy, but there’s a lot you can do to create quizzes that look exactly like you want them to look. And even if you don’t create your own template from scratch, once you know what elements are available and what they do, you should be able to take one of SAP’s pre-built templates and change it to meet your own styles and standards.

A couple of tips to end with:

  • Always provide all of the elements listed in the Quiz Item Template object – they may not all be used every time, but if you provide them all in the template, you’ll never have a situation where an Author tries to do something your template doesn’t support.
  • All element names are case-sensitive (always lowercase).
  • Many of the elements can be created as Text objects, Image objects, or Shape objects – as long as the element name is correct, they will be handled correctly. Different object types have different properties and different capabilities, so you may want to try different ones to see which works best for you.
  • Some elements support On Show / On Hide Actions. You may need to play around to see what works.

Finally, this tutorial has really just covered the basic mechanics of a Quiz Item Template, and our finished example is functional, but fairly ugly. There are many more properties for the Quiz Item Template Book Page object and the Question objects, along with settings under Tools > Settings > Playback Settings > General > Quiz, that you can use to control the look and feel of your Quizzes. Take the time to play around with these, and see what works best for you.