• last updated 20 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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. … 10 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. … 2 more files in changeset.
minor cleanup for returnurls

  1. … 1 more file in changeset.
added composite question per default to the "New" pull-down menu, added message keys for German

  1. … 4 more files in changeset.
Maintain revision date for "update_attribute_from_slot"

This is not a full-featured version, since it does not update the

modifying user and the modifying IP (since this data is not

always available). But this version is at least good enough

for experimenting and checking for unwanted side-effects.

xotcl-core: upadated version number to 5.10.0d40

xowf: upadated version number to 5.10.0d39

  1. … 4 more files in changeset.
strengthen parameter checking

  1. … 4 more files in changeset.
prefer var over proc

Improve further: flush the object only when the state changes

Improve fix:

in FormPage www-edit, just after the save_data operation we render the FormPage to refresh the references. We should flush the form object cache here, as otherwise any formfield spec will come from the form in the previous state

Make sure that the form object is flushed whenever state might have changed

If code executed after the state change accesses the form object again, this could be that from a previous state and e.g. hold the wrong form definition. This happens in practice downstream, where the submitting of activities also involves accessing the form definition to e.g. compute the grade based on the questions. Downstream we also cache the formfield specs, so if a spec is dependent on the state, might be wrong in also for future requests.

added support for pagination buttons, visited buttons and flagged buttons

  1. … 6 more files in changeset.
include recent site-wide pages, modernize code

Added text-attachment

Ny using text-attachments, a lecturer can attach files to the exercise

text for the student to download when solving the exercise.

  1. … 1 more file in changeset.
fix typo

pass _nls_language to batch-jobs to avoid invalid value in name normalization

white-space changes

added preview/testrun to edit item workflow

  1. … 3 more files in changeset.
reduce verbosity

perform cleanup of WorkflowContainer after 10 minutes

  1. … 3 more files in changeset.
Fix typos reported by documentation__check_typos automated test

  1. … 1 more file in changeset.
add safety-guard in case, someone tries to call action via hacking form hacking

provide configuration for exam folder

  1. … 3 more files in changeset.
provide a default menu config via proc

The setup of the menu of xowf instances can be now configured

via {config -use xowf}, new instances are created with this setup

search the form also in the site_wide_pages

prefer ad_try, since it is silent, when action is ended by a script_abort

improve debugging messages

  1. … 1 more file in changeset.
Added edit-workflows for test items: edit-interaction.wf

This change eases tailorization of actions of editing workflow

and makes it possible to address all types of testitems via

a single term

-form en:edit-interaction.wf

instead of having to enumerate the relevant types explicitly as

it was before

-form en:TestItemText.form|en:TestItemShortText.form|en:TestItemMC.form|en:TestItemSC.form|...

For backward compatibility, the old enumeration is kept for a while. New test

items should be created over the new workflow, as e.g. in

{entry -name New.Item.TextInteraction -form en:edit-interaction.wf -query p.item_type=Text}

  1. … 8 more files in changeset.
use "ad_file" as a means to avoid unexpected tilde substitution in file names

  1. … 8 more files in changeset.
added a saftey belt and a warning message, when someone tries to create a shared wf container on an object with no valid revision id

improve spelling

  1. … 19 more files in changeset.
added atjob-form to site-wide pages of xowf