• last updated 15 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Prefer unset to array unset when the whole array should be deleted

See https://wiki.tcl-lang.org/page/Dict+VS+Array+Speed

  1. … 7 more files in changeset.
merge from oacs-5-10

  1. … 8099 more files in changeset.
reduced verbosity

Prefer more robust colon notation to quote database values

Improved simple setups and usability for novices:

- turn off production mode per default, such that users see the pages they create immediately

- added a menu-entry per default to add exam folder. This eases testing for users of the test item family of features

  1. … 2 more files in changeset.
move "-destroy_on_cleanup" towards the end of the parameter list

This change improves protection about ambiguous user input

  1. … 8 more files in changeset.
Make acs_mail_lite::utils::build_body, replace (commented) references in other packages

  1. … 1 more file in changeset.
Use signed value for form_parameter "__object_name"

Bumped version number to 5.10.1d51

  1. … 1 more file in changeset.
switch from png files for dot to inlne svg

This helps to avoid writing the .png files to some directory, which has

to be accessible

  1. … 1 more file in changeset.
provide double click prevention for form actions in workflows

Document public api

Tighten test for is_wf_instance

Previously, the test was based on setting of state and FormPage.

In cases, where plain FormPages are used inside an xowf package

this test was leading to wrong results.

  1. … 1 more file in changeset.
reduce number of anonymous arrays, improve error message and double check for package initialization

  1. … 1 more file in changeset.
Do not attempt to load downstream-only workflows at startup

Downstream, the cod will stay as it is and maintained as a local modification

reduce verbosity

reduce verbosity for legacy workflows

provide stub for wf-specific in none shared workflows

New feature for shared workflow definitions: define workflow specific methods

Workflows support since a long time "object-specific" code, which is code

to be executed, when a workflow instance is initialized. Now, in symmetry

to this, one can define "wf-specific" code (e.g. registering methods to

be called directly on the workflow object.

Similar to the call of ":object-specific {...some code...}", one define

additionally ":wf-specific {...some code...}". This comes handy

when e.g. definiing methods directly executed on workflowss, such as e.g.

".../someworkflow.wf?m=summary".

The methods are defined on the WorkflowContainer class, which is only available

on for shared workflows.

Don't require the whole xowiki, as it is already a dependency

  1. … 2 more files in changeset.
Perform stricter checking of parent_ids

bump version number of xowf to 5.10.1d34

  1. … 2 more files in changeset.
switch from xo::db::sql to acs::dc interface

  1. … 12 more files in changeset.
Store statistics in a separate page instead of the workflow itself

- advantages:

* smaller workflow instance

- no danger that page is too large for caching, even for large exams.

- smaller objects mean also better performance

* modification date in exam is not modified when statistics

are updated

* easier extensible

- New function WorkflowPage->childpage

easy to use interface for creating child pages

- render_submission=exam_protocol: changed name of

parameter "-form_objs" to "-filter_form_ids", since

form_objs are used typically to keep objects, not ids

- Still to do: policy for inclass-exam-statistics.wf

- Bumped version number to 5.10.1d25

  1. … 5 more files in changeset.
this warning is just important for applications using an fc-repository

Put more info in the warning

revert escaped debug output

streamline and extend test cases for resolving in composite items and in preview workflows

  1. … 1 more file in changeset.
Improved configurability of inclass exam

- added modal window for showing all configuration options

- depending on the state of an exam (whether students have stated

working on the exam or not) different options can be

altered. E.g. the grading scheme can be adjusted at any time, since

it is not visible to students prior to exam review.

- improved configurability of form-fields:

. new feature: fc_repository for shared definitions

(can be reused in the same configuration on multiple occasions)

. when form-constraints are defined with an empty short-spec,

the system tries to look this up from the fc_repository.

- extended answer manager:

. new method: student_submissions_exist

. renamed methods

. "student_submissions" -> "submissions"

(since result my include as well test run results)

. "get_answers" -> "get_answer_attributes"

to better distinguish from "submissions"

- base "merge_constraints" on dicts

- prefer forwarder over instance variable for referring

the question manager(QM)

- extended Message keys with "Configuration"

- added missing German translations in message keys

- bump version to 5.10.1d17

  1. … 11 more files in changeset.
reduce verbosity

improve spelling

  1. … 2 more files in changeset.
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.