• last updated 11 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Do not omit line breaks when rendering text interactions as textareas, e.g. in exam protocols

Many thanks to Markus Moser

merge with missing files

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

  1. … 8089 more files in changeset.
file index.adp was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sitewide-admin/index.adp
file index.tcl was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sitewide-admin/index.tcl
file inclass-exam.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/inclass-exam.js
file answer-single-question.wf.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/answer-single-question.wf.page
file edit-interaction.wf.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/edit-interaction.wf.page
file proctoring.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/proctoring/proctoring.js
file gif.worker.js.map was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/proctoring/gif.worker.js.map
file gif.worker.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/proctoring/gif.worker.js
file gif.js.map was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/proctoring/gif.js.map
file gif.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/proctoring/gif.js
file TestItemReorder.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemReorder.form.page
file inclass-quiz.wf.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/inclass-quiz.wf.page
file inclass-exam.wf.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/inclass-exam.wf.page
file assessment-index.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/assessment-index.page
file TestItemUpload.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemUpload.form.page
file TestItemText.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemText.form.page
file TestItemShortText.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemShortText.form.page
file TestItemSC.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemSC.form.page
file TestItemMC.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/TestItemMC.form.page
file select_question.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/select_question.form.page
file quiz-select_question.form.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/quiz-select_question.form.page
file online-exam.wf.page was initially added on branch oacs-5-10.

    • -0
    • +0
    ./prototypes/online-exam.wf.page
file form-generator.css was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/form-generator.css
file test-item.css was initially added on branch oacs-5-10.

    • -0
    • +0
    ./resources/test-item.css
move newly defined testing API (in OpenACS 5.10) to namespace acs::test

  1. … 9 more files in changeset.
Shared Workflow Definitions (Part 2)

When shared workflow definition are used, a different management of

object specific code is necessary, since one definition seves for many

objects, and it is not freshly created per object. Therefore, a new

concept is introduced for workflow definitions, named "object-specifc"

Instead of writing in a workflow definition

Action save

state initial -actions {save}

[my object] proc foo {} { ns_log notice "===foo==="}

one has to write now:

Action save

state initial -actions {save}

:object-specific {

:proc foo {} { ns_log notice "===foo==="}

}

where the object-specific is evaluated once per request for every

involved workflow instance in the context of the object (a [self]

in this block refers to the object).

In case a [my object] is encountered and sharedWorkflowDefinition is

activated, a warning is produced and the code falls back to old-style

shared workflow definitions.

  1. … 3 more files in changeset.
Add Feature: Shared Workflow Definitions

Background: so far, xowf stored workflow definitions in the workflow

context, which is generated for every instantiated workflow instance

due to the needs of the State Pattern. While the old approach works

perfectly fine, when pre request only one or a few workflow instances

are created, but is inefficient, when e.g. 100 or more instances of

the workflow definition are created.

Now, the instances can share the definition, which is shared based on

the revision_id of the workflow FormPage.

OLD: obj <-> obj::wf_ctx

NEW: obj <-> obj::wf_ctx <(n)----> wf_definition

OLD scenario:

- the wf_definition was part of the context (no distinction)

- navigation from wf_ctx (and wf_definition) to object was possible

via "info parent"

NEW scenario:

- the wf_definition is separate

- one wf_definition can be used for multiple wf_ctx

- new methods are required instead of "info parent"

to navigate between these cooperating objects

* xowf::WorkflowPage.wf_context

* xowf::WorkflowConstruct.wf_context

* xowf::Context.wf_container

The navigation from a WorkflowConstruct (e.g. State) to the wf_ctx

is slow and fragile if not following usual programming conventions

and should e avoided (the methods of these constructs have the obj

passed in, so this path should not be necessary in most situations)

- as long the contents of the wf_container is constant, it can be

shared in the per-thread cache.

For now, the new feature is turned off by default via variable

::xowf::sharedWorkflowDefinition, but this will change in the future.

  1. … 3 more files in changeset.