• last updated 20 hours ago
Constraints: committers
Constraints: files
Constraints: dates
prefer standard OpenACS API for accessing parameters

  1. … 4 more files in changeset.
modernize idiom

minor update of call pattern and debug line

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


- 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


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

  1. … 3 more files in changeset.
allow to specify witdget type alternatively via "_type" in the form field dict

This change makes it possible to specify the whole widget spec part in a single dict

  1. … 1 more file in changeset.
State dependecny from package-procs, or ::xowiki::CSS class won't be available to this library at boot

New CSS abstraction: xowiki::CSS

Before this change, the application developer was responsible to

initialize the CSS-speficic settings (such as setting default values

for parameter classes). The new object xowiki::CSS is initialized

automatically, when an xowiki class (or one of its subclasses) is

initialized. Furthermore, it provides a per-thread caching to reduce

double work. Furthermore, the xowiki::CSS provides a mapping between

abstract and concrete CSS class names, such that switching between

different CSS toolkits becomes easier (e.g. upgrade from bootstrap 3

to newer versions).

xowiki::CSS initialize ;# make sure, everything is in line with PreferredCSSToolkit

xowiki::CSS clear ;# reset the mapping

xowiki::CSS toolkit ;# return the toolkit name

xowiki::CSS class /classname/ ;# perform CSS class name mapping

The methods "setCSSDefaults" and "preferredCSSToolkit" as deprecated.

The version number was bumped to 5.10.0d81

  1. … 7 more files in changeset.
streamline returnredirect commands

make sure, the provided URL is always properly encoded

  1. … 2 more files in changeset.
minor refactoring to correct old-style widgetSpecs; prefer variable resolver over method calls for unset

support editor=none in arbitrary form-field specs

prefer usage of "xo::write_tmp_file" over "xo::write_file" for writing tmp files

  1. … 4 more files in changeset.
fix creating/editing of xowiki::Forms

This change essentially reverts the change of July 2, which broke

the feature to specify "editor=none". This is important for the

"form" form-field entry, which requires a FORM tag, that is

usually removed by actual version of the ckeditor.

  1. … 1 more file in changeset.
upgrade default ckeditor from 4.15.1 to 4.16.1 (released in May 2021)

  1. … 2 more files in changeset.
In order to make the "editor=" formfield spec option have any effect, one should catch the value from the spec early, before the formfield is reclassed and initialized

This also exposes that the editor=none value is not valid (detected by xowiki and xowf automated tests). For this to be valid one should define it as a richtext subclass.

  1. … 1 more file in changeset.
make child_components a proc (::xowiki::formfield::child_components) and add filter expression

Added new method "child_components": Return for a list of form-field objs all child components

provide a less confusing name for new methodm improve comments

  1. … 1 more file in changeset.
Fix typo in comment

Implement reset_to_default method to reset formfields in case of validation error

the current behavior of this method is currently a no-op for every formfield, except files, where we want to make sure the value has been reset. We also handle the case now of compound fields, as they might be compounds of file formfields

  1. … 1 more file in changeset.
fix braces for return_url

added support for avoiding quoting of labels (e.g. in buttons)

  1. … 1 more file in changeset.
improve robustness

order entries delivered by form-field "form_page" by title, since the title is used as well as label

change for exam_review: omit subquestion summary in cases, where no subquestion has a correct when condition

fix function of formfield numeric: convert_to_internal_value

Added two types of grading schemes (in addition to "exact") to ordering exercises:

- "position": count elements as correct, when these are on the correct position

- "relative": count elements as correct, if the neighboring element is correctly before the actual element

The results are adjusted by the same guessing correction as in the "ggw" scheme for MC exercises.


- desired order: 1,2,3,4

- provided answer: 3,1,2,4

- scheme "exact": 0%

- scheme "position": 0 0 0 1

- scheme "relative": 0 1 1 (correctly ordered 1<2 and 2<4)

A minor refactoring was also performed to ease code reuse.

  1. … 2 more files in changeset.
provide friendly error message in error.log in case provided answer-values (for e.g. MC) are invalid