• last updated 21 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Drop "ON DELETE CASCADE" on page_template, since this might lead to crippled entries in the database.

When someone delets via operations in the database a form, protentially existing

form pages refering to this item might be left in a crippled state.

The cascade operation deletes the revision (xowiki_page_instance), but leaves

the half-crippled item. The problem does not exist over the web interface,

since it does not allow such items to be deleted while form pages exist.

  1. … 2 more files in changeset.
improve message key

  1. … 1 more file in changeset.
added download icon for CSV

  1. … 1 more file in changeset.
provide CSS classes for sort handles and improve message key.

  1. … 3 more files in changeset.
We differentiate now between the classical name validation error and

the name-too-long error. Message keys had to be extended.

Version number bumped to 5.10.1d27

  1. … 7 more files in changeset.
Improved Bootrap5 support

- transformed PageInstance->adp_parse_tags into an adp_proc

xowiki::PageInstance->adp_parse_tags to ease usage outside methods.

- made personal-notification proc agonsitic of Boostrap 3

- renamed attribute "-glyphicon" to "-adpicon" in

personal-notification-messages->modal_message_dialog

and use adp:icon instead

- added regression test

- bumped version number to 5.10.1d26

  1. … 5 more files in changeset.
Make use of uniform styling based on adp:icon

  1. … 20 more files in changeset.
provide basic support to make bootstrap3 and 5 switchable

bumped version to 5.10.1d25

  1. … 3 more files in changeset.
Alignments for Bootstrap 5

Also, use form.form for creating forms from the menubar instead of

old-strle ::xowiki::Forms. Aligned as well regression test to use

form.form.

Bump version number to 5.10.1d24

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

bump version number of xowiki to 5.10.1d22

  1. … 3 more files in changeset.
Make use of extended functionality of OrderedComposite->orderby

- Removed manual adding of mixin ::xo::OrderedComposite::IndexCompare

in "toc" includelet and in xowiki::TableWidget->create_from_form_fields

- xowiki::TableWidget->create_from_form_fields:

added type map to allow caller to specify, on which attributes e.g.

a numeric comparison should be used.

- bumped version number to 5.10.1d22

  1. … 2 more files in changeset.
Added API call "CrClass ad_proc id_belongs_to_package"

The new API call is useful for checking input validity, i.e.

whether to provided revision_id or item_id belongs to the specified package.

bump version number of xowiki to 5.10.1d21

bump version number of xotcl-core to 5.10.1d5

  1. … 3 more files in changeset.
add canvas evaluation scheme of MC questions

  1. … 3 more files in changeset.
Support specification of allowed tags/attributes/protocols via global package parameters.

This change makes it possible to define for a package values for

AllowedTags, AllowedAttributes, or AllowedProtocols. If (some of)

these exist, use these for configuring "ad_html_security_check". If +

not, fall back to the default (site wide) definition.

This change is fully backward compatible and effects on sites defining

such global parameters. This change was induced by the need of large

sites, where it is not feasible to set these parameters on the package

instance level, since this site has 830000 packages instances.

Bump version number to 5.10.1d19

  1. … 2 more files in changeset.
Added the option to parameterize www-delete and www-toggle-publish-status with return_url

In cases, these www* methods are called programmatically, these can be

now parameterized with an "-return_url" parameter to achieve

e.g. workflow-specific behavior.

Many thanks to Thomas Renner for the analysis on

www-toggle-publish-status.

Version number bumped to 5.10.1d18

  1. … 2 more files in changeset.
added file content checker for zip, gzip and dump imports

  1. … 2 more files in changeset.
Update italian localization

  1. … 3 more files in changeset.
Updated inferface for Page->create_form_page_instance

Since "create_form_page_instance" creates always a form

page, we can also pass the state at creation to it

(like other essential parameters). The default value

is "initial" (the default state in workflows).

Bumped version number to 5.10.1d15

  1. … 1 more file in changeset.
improve spelling

  1. … 5 more files in changeset.
Added validation on values provided for options

  1. … 2 more files in changeset.
added a test for checking the results of the preview of test-items

Since the preview workflow requires a multiple redirects, xowiki::test::edit_form_page

requires a new flag refetch to actually turn off automatic refetching of the result

page, since this does not give us access to the redirect location returned by

the edit command.

  1. … 3 more files in changeset.
get rid of legacy message key "menu-Clipboard-Copy"; "menu-Clipboard-Use-Copy" is used since several years instead

  1. … 6 more files in changeset.
handle empty list elements in spec_list of "create_components"

  1. … 1 more file in changeset.
- Define converters as procs

- Register these procs as aliases where convenient

- this effects:

dict_to_fc, dict_to_spec, spec_to_dict, fc_to_dict, dict_value

- extended regression test

- bumped version number to 5.10.1d9

  1. … 2 more files in changeset.
Added archiving of items, reduced usage of images for icons

When an item is archived, it is not shown to plain users. Internally,

when an item is archived, the publish status is changed to "expired"

and removed from search/syndication. When an item is archived, it can

be brought via "toggle-publish-status" to state "production" again.

Future versions might rename the item in such conditions, but

currently, it is NOT renamed, so one cannot create one more item in

the same folder with the same name.

For realizing this functionality, the includelet "form-usages" accepts

now an additional optional value for "-buttons" named "archive". The

publish status toggle can be used now for switching from

"production"->"ready", "ready"->"production" and

"expired"->"production".

Additionally, the usage of .png images as icons was reduced by CSS

elements for easier styling (e.g., for different themes) and for

reducing less server requests and better responsiveness. In particular

the images for active.png and inactive.png are not necessary any more

and were removed.

Bumped version number to 5.10.1d8 to enforce loading of the message

keys.

  1. … 13 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.
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.

  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.
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.
added statement (commented out) flag for debugging of resource path loading

  1. … 1 more file in changeset.