• last updated 17 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
fix collateral damage on cleanup (never trust to much on watching files)

Support for pool questions in the test-item family

Features:

- select random questions from some folder

(Currently siblings, i.e., folders of the same package instance)

- one exam can have multiple pool questions, potentially from other pools

- pools can be links to other folders (which are no siblings)

- The current folder can be used as well as a pool folder. In this

case, other not-used items can be selected as replacement items

given these match the specified filter characteristics

- Question filtering

* filter by item type:

allow one to select from all/some/some item types

(mc, sc, short text, reordering, composite, ...):

use as replacement items only examples of these types

* filter by minutes and/or points:

use as replacement items only items with matching points/minutes

* filter by language:

use as replacement items only items in a certain language

* Filter per item name pattern:

use as replacement items only items matching a name.

When (short-) names are used systematically, one can e.g.

use the date in the name and specify only items from e.g.

one year ago, via "*2020*", or from some chapter "*ch01", ...

Certainly, it is also possible to use different item

folders for this

Potential further steps:

- Currently, exams containing pool questions are treated as

auto-correctable (which implies automated exam-review (Einsicht), when

from the question pools only question from strictly closed questions

are selected (MC, SC, Ordering). Depending on the detailed settings,

also other item types could be possible (via correct-when), but this

requires a deeper analysis of every question, which is so far not

performed.

- Categorized items: technically, the infrastructure is mostly here to

allow also filtering by categories. This would allow one to select

e.g. from technical questions, case examples, knowledge transfer

questions, research-oriented questions... which are orthogonal to

the filtering currently available. Every lecturer can define

own categories depending on their needs, we could provide

university-wide category-trees, etc. Of course, one could also

define separate pools for these purposes, but categorizing is

probably more convenient and more flexible.

- Performance: when question pools become large (500+ questions) and

the cohorts as well (500+), the current version might require more

tuning. The only critical time is the exam-start, where the random

question placeholders have to be resolved for every student. The

approach from this weekend uses basic caching, but maybe this has to

be extended.

- Protecting selected questions: Question pools are more detached from

an exam than single exercises, a lecturer might have in mind. One

should not allow one to delete questions/question pools when these are

in use. Probably deletion should be a move to a trash-can, which is

actually, an issue for all exams, but getting more important with

pool questions.

- Handling of potential duplicates: When items are pulled from a

question pool, a replacement item is selected by making sure that

this item does not occur already in the query selection. Therefore,

one can safely draw two questions from the same question pool

without fearing that a student gets the same question twice.

This duplicate checking might require some fine-tuning:

* the system checks for duplicates in an exam via POOL/NAME.

* if a lecturer uses two pool-questions in an exam pointing to the same pool,

the systems makes sure, the same question is not used twice.

* however, if a teacher adds a question q1 to pool1 and the same question to pool2,

these two instances have different item ids and are regarded as two different

questions. One could make a test for only checking NAME (without POOL),

but then it might be the case that certain questions are not accepted

although these are different, because they have the same name.

- Statistics: so far, i have not provided any special answer

statistics for treating pool questions.

  1. … 9 more files in changeset.
keep track of position of a question in the form for correct scrambling also for filtering by form object

background: randomization depends on the per-user random values and by the position

of a test-item in an exam. If one is filtering just for the test-item,

the position of this item in the exam was lost. Now, we keep track

in the filtering cases

make sure, the end_clock is always an integer (as required by "clock format")

prefer xowf message catalog

provide means for omit the audio alarm control in the countdown timer

  1. … 4 more files in changeset.
Show form-field statistics in exam-summary for autograded exams:

- Provide statitics for autograded exams and show this (currently for

MC/SC) in the exam summary. The statistics are generated when the

exam-protocol is rendered and persisted statistics in the workflow

instance.

- Added switch "-generic" to answer_form_field_objs to obtain the

question with all alternatives (not constraint to "show_max") and

without shuffling. This is needed in cases, where e.g. statistics

should be provided for all alternatives shown to all students.

- Question_manager->question_info: separate computation from HTML rendering

- Added statistics handler for the WorkflowPage class to collect

details from the form-fields.

- new private function "tdom_render" (might be useful, but is the

committed version not used)

- split out "spec_to_dict" from "fc_to_dict", since it us also useful on its own

to work on single form-constraint specs.

- make methods add_to_fc and replace_in_fc available to the full AssessmentInterface

  1. … 1 more file in changeset.
Made passing of "-object" to atjob optional.

When there is no object specified, use the global en:atjob-form

object as parent.

  1. … 2 more files in changeset.
better control of browser built-in spellcheck

- xowiki: added property "spellcheck" to formfield classes "textarea" and "text_fields"

- xowf: allow per-exam to activate/deactivate spellcheck in these widget classes

  1. … 6 more files in changeset.
avoid multiple substitution for question names starting with the same string (e.g. question, question-1)

disallow nested composite questions

  1. … 1 more file in changeset.
Make inclass-exam more foolproof

In case, the randomization is NOT suited for a real exam, do not allow

the user to publish this exam. In cases, where creating exams with

randomization=always are ok, pass "p.realexam=0" to the create

link (and call the entry maybe "training exam")

  1. … 1 more file in changeset.
provide better configuration of custom item types

when e.g. the question_type "case" is specified, it is implemeted

as an interaction "section" but with "twocol" predefined as "t"

  1. … 1 more file in changeset.
Improved punctuations between title components (text, minutes, points)

Made titles of subquestions configurable

bumped version number to 5.10.1d1

  1. … 2 more files in changeset.
factor out common code to reduce redundancies

added message key for sub-question, fixed cut&paste error.

  1. … 3 more files in changeset.
- fix collateral damage from earlier submissions download change (error: can't read "__form_fields")

- improve styling (many thanks to Monika Andergassen and Stephan Adelsberger)

for composite questions in 2-col layout

  1. … 1 more file in changeset.
minor cleanup for returnurls

  1. … 1 more file in changeset.
bugfix: don't call get_non_empty_file_formfields in render_answers when in export mode

added composite question per default to the "New" pull-down menu, added message keys for German

  1. … 3 more files in changeset.
reinstantiate accidentially deleted code

add comments with class names to ease navigation in the source file

Initial support for composite questions

A composite question is a test-item containing other regular test

items. This makes it possible to define a larger test item case for

which arbitrary other questions can be associated (e.g. short text

question plus an MC and ordering question etc.). The randomization

features (shuffling, x out of N, etc.) of the included test-items are

preserved such that it is possible to present the student e.g. a sub

question where only 2 out of 5 possible alternatives are displayed.

The provided implementation builds for a composite question consisting

of a constant exam intro text and the selected sub items including

points, minutes etc. The points and minutes of the composite question

are computed as the sum of the points and minutes of the

sub-items. The actual sub-items are constructed at runtime such that

per-user randomization can be applied.

Current shortcoming: question with percent-substitutions are not

supported (since the exam intro text is placed at composite form

creation time already into the form, therefore, it is the same for all

students). Furthermore, the substitution semantics are not clear

concerning the included content.

  1. … 1 more file in changeset.
Added optional layout for question types, where question text and

answer interactions are displayed in two columns

The implementation supports responsive design and switches for small

width display again to single column display.

Supported question types:

- Text Interaction

- ShortText Interaction

- MC Interaction

- SC Interaction

- Reorder Interaction

- Upload Interaction

  1. … 3 more files in changeset.
xowf.info catalog/xowf.en_US.ISO-8859-1.xml tcl/test-item-procs.tcl www/resources/test-item.css

  1. … 3 more files in changeset.
Extended regression test for test item procs

- compose exam by three exericises instead of one

- added test for short-text exercise with a file submission

- exam contain now a text exercise, a short-text exercise

with a file submission, and a MC question

- test case fills out first two questions in the test case

- bumped version number due to dependency on xowiki

(option "-next_page_must_contain" for "xowiki::test::edit_form_page")

  1. … 1 more file in changeset.
allow sorting of submissions via query parameter

  1. … 1 more file in changeset.
Fix typo. Fixes 'files__tcl_file_common_errors' test case

factor out render_full_submission_form