• last updated 18 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
improve german message keys (spelling, comma, spaces, orthogonality)

  1. … 3 more files in changeset.
Fully qualify the parameter command to not conflict with the class having the same name in the ::xo namespace

prefer standard OpenACS API for accessing parameters

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.
minor cleanup and improved documentation

ease usage of "folder" includelet functions in other code by provide defaults

added optional link to "new" pulldown menu

    • -1
    • +2
    ./resources/prototypes/Parameter.form.page
extend/debug simplified where/unless query language

modernize idiom

use fully qualified cmd name in directdispatch

Added support for tailored messages when autosave is rejected

Optionally, the AJAX call from autosave can be answered with

a JSON structure containing a "feedback". If this is provided, this

is presented to the user. The mechanism can be extended in the

future to include some reason code, etc. for further automatic

processing in JavaScript.

With this change, the inclass-exam-answer workflow will use this

to comminicate the reasone for rejected autosave operations in

situations, where the examtime is up.

  1. … 4 more files in changeset.
minor update of call pattern and debug line

improve input checking

Refactor form-field statistics (part 1)

- Start move of statistics from being collected in form-fields to

collecting these in the workflow objects. The original code was

developed with less randomization (e.g. no x out of y alternatives)

which requires that the formfields have to be reset multiple times

(e.g. for multiple students in the exam protocol). The exam-protocol

handler cleans regularly the form-fields, which caused also the

deletion of statistics. Collecting these in the (exam) workflow is

safe.

- Collect correct and incorrect statistics per alternative. Since

different students might see different alternatives calculating the

successrate can only be performed by the students having seens this

alternative.

add publish status to default list of columns in child-resources

improve spelling

deactivate grammarly as well, when spellcheck is turned off for textarea

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. … 5 more files in changeset.
avoid that invalid tags are inserted to the db

The inserted tags have to be compatible with

Package->validate_tag

  1. … 1 more file in changeset.
Return result as a plain list, rather than forcing a string representation, so that "evil" tags containing e.g. double quotes are properly quoted and list idioms such as lsort executed on this proc's output work properly

The issue was found e.g. in the my-tags includelet

improve safety of SQL queries

  1. … 3 more files in changeset.
improve safety of SQL queries

remove obsolete variable

Extend high-level filtering by providing "-unless" clause in form-field class "form_page"

- added "unless" clause to form-field class "test_section" to be able to filter

certain pages which should not be included

- reduced redundancy be factor out "compute_filter_clauses" method for FormPage

(used in includelet procs (class "form-usages") and form-field procs (class "form_page")

added statement (commented out) flag for debugging of resource path loading

rename newly introduced flag of form-usages from to "-allow_clipboard" to "-with_checkboxes"

Additional flag for includelet "form-usages": -allow_clipboard true|false

This makes it possible to use the includelet also without bulk-actions

for adding/removing content to the clipboard by including the checkmarks

per table and by table row.

use acs::clusterwide instead of xo::clusterwide

  1. … 4 more files in changeset.
revert regression introduced on Aug 07 and factor out common code

reduce deprecated calls

    • -1
    • +1
    ./resources/templates/error-template.tcl
    • -1
    • +1
    ./tcl/test/xowiki-admin-tests-procs.tcl