• last updated 3 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Added support for user-supplied grading schemes

Grading schemes provide a means to map achieved percentages to a numeric grade.

In the current versions, a fixed number of 5 grades is supported.

A grading scheme consists of a grounding scheme and grading boundaries.

- A grading scheme can be selected at exam definition time

- Lecturers can define their own grading schemes and reuse these between exams

- Available grounding schemes:

* no rounding (recommended for small exams, e.g. 5 minutes or 2 points)

* by percent (the calculated percentages are rounded to the provided number of digits)

* by points (the calculated points are rounded to the provided number of digits)

- The grounding precision can be defined by the user (e.g. to 2 digits)

- The grading boundaries represent percentages boundaries necessary for a certain grade

- When selecting no grading scheme, no grading information is provided in the exam protocol

(just percentages)

More changes:

- allow grading also, when student has not submitted the exam

- added percentage information in the grading-box (esp. useful for composite questions)

- renamed predefined grading schemes to more neutral terms

- provide easy-to-type names for question-manager, answer-manager and form-loader

- new utility for more robust list-comparions

- defined validating form-field type for grading boundaries

    • -1
    • +1
    • -0
    • +370
    • -370
    • +258
file edit-grading-scheme.wf was initially added on branch oacs-5-10.

    • -0
    • +0
file grading-procs.tcl was initially added on branch oacs-5-10.

    • -0
    • +0
file edit-grading-scheme.wf.page was initially added on branch oacs-5-10.

Replace reference to long-missing message key

reduce verbosity

    • -1
    • +1
support grading passed in via property

    • -2
    • +3
still initialize array

    • -1
    • +6
improve comment.

    • -3
    • +4
since "nsv_get $array $member varname" returns 0, when the array does not exist, we do not need the extra value for initialization

    • -2
    • +1
cache parsed form_constraints via nsv instead of via global variable

    • -14
    • +21
- 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

    • -2
    • +2
    • -38
    • +140
minor editing changes

improve location of comment

prefer "Package require" over "Package initialize" when possible

    • -8
    • +8
adjust code with regression test, which performs literal comparison of rendered content

performance improvements for "::xo::db::Class proc get_instance_from_db"

when the object exists already, the text for existance is made earlier

to void useless operations. This change improves the performance by a factor of 3

when the object was already loaded.

OLD {4.544836 microseconds per iteration}

NEW {1.310991 microseconds per iteration}

Smartify idioms

Fix typo

reduce verbosity

    • -3
    • +5
Similar to the folder-create script, complain if the filename turns out empty after sanitizing

Allow the maximum size permitted by the datamodel in the UI, but then validate it before saving

When deleting, make sure supplied id is actually a room id

    • -1
    • +10
    • -1
    • +9
Trap the attempt to retrieve a non-existing forum and return a 404 in this case

this might need to happen in other places and/or be refined

Make error consistent with the already existing check in the content-repository

Handle more gracefully the case, which should not happen on a production system, that the file being downloaded does not exist on the filesystem

simplify idioms

- deactivate unused link-templates

- make quoting of label more consistent (it is passed in already quoted from the rich-text editors)

- whitespace changes

    • -125
    • +146
Deprecate template::util::list_opts: it can be replaced by trivial tcl idioms

Streamline ns_set idioms