• last updated 11 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
provide explicit flag to disable menu-entries

disable the menu-entries for "Online Exam" and "Inclass Quiz" for the time being

  1. … 1 more file in changeset.
whitespace changes

  1. … 2 more files in changeset.
MenuBar reform

- MenuBars are now easier programmatically extensible (easier to maintain)

- refactored code, reduced scatted definitions (all configurations

at the same place)

- unified templating:

use body property @body.folderHTML@ instead of @folderhtml@

From the former API calls only "update_items" has changed,

all existing configurations (i.e. via folders or package parameter)

should continue to work.

== Changes:

One can now extend menubars via menu entry definition

{config -use YOURCONFIG -class YOURCLASS}

in two directions:

a) subclassing

define your own menubar class YOURCLASS, which should

be a subclass of ::xowiki::MenuBar

b) provide your own configuration method to provide

a more tailored configuration. This is performed

by defining a method "config=YOURCONFIG" for ::xowiki::MenuBar

The latter method is used for test-items, which can define a

test item folder by using

-- extra_menu_entries ---

{config -use test-items}

instead of

-- extra_menu_entries ---

{entry -name New.Item.TextInteraction -form en:edit-interaction.wf -query p.item_type=Text}

{entry -name New.Item.ShortTextInteraction -form en:edit-interaction.wf -query p.item_type=ShortText}

{entry -name New.Item.SCInteraction -form en:edit-interaction.wf -query p.item_type=SC}

{entry -name New.Item.MCInteraction -form en:edit-interaction.wf -query p.item_type=MC}

{entry -name New.Item.ReorderInteraction -form en:edit-interaction.wf -query p.item_type=Reorder}

{entry -name New.Item.UploadInteraction -form en:edit-interaction.wf -query p.item_type=Upload}

{entry -name New.App.OnlineExam -form en:online-exam.wf}

{entry -name New.App.InclassQuiz -form en:inclass-quiz.wf}

{entry -name New.App.InclassExam -form en:inclass-exam.wf}

See below for the definition of the "test-items" configuration method,

which is based on the default definitions. In general, the definition

in this method can be performed via menu-entries (same syntax as in

other menu entries) or via the MenuBar API (e.g. calling

":add_menu_item ...").

All configurations follow the following definition order

where later entries can refine earlier entries:

- package level: package parameter ExtraMenuEntries

- configuration method: use standard or tailored confguration methods

- per-folder definition: content of the extra_menu_entries

Note that the menu entry definition language supports as well

adding/clearing menus, etc., so almost everything can be refined.

I've noticed that the tlf* code has several scattered menu

definitions, which are as well done in every case differently.

By these definition one can define e.g. a learning-app folder (where

"New" can be used to define new app folders), and the app folders can

provide their own "New" entries, e.g. for clickers and

others. E.g. For "clickers" there is already on non-oo definition to

achieve similar things (which should be altered to the new method),

but on other places, there are some hard-coded definitions for root

folders, etc. The menubars of the learning-apps should be made this

way more consistent with the rest (e.g. using "New", supporting "table

of contents" for clipboard interactions, etc.)

namespace eval ::xowiki {

::xowiki::MenuBar instproc config=test-items {

{-bind_vars {}}

-current_page:required

-package_id:required

-folder_link:required

-return_url

} {

:config=default \

-bind_vars $bind_vars \

-current_page $current_page \

-package_id $package_id \

-folder_link $folder_link \

-return_url $return_url

return {

{clear_menu -menu New}

{entry -name New.Item.TextInteraction -form en:edit-interaction.wf -query p.item_type=Text}

{entry -name New.Item.ShortTextInteraction -form en:edit-interaction.wf -query p.item_type=ShortText}

{entry -name New.Item.SCInteraction -form en:edit-interaction.wf -query p.item_type=SC}

{entry -name New.Item.MCInteraction -form en:edit-interaction.wf -query p.item_type=MC}

{entry -name New.Item.ReorderInteraction -form en:edit-interaction.wf -query p.item_type=Reorder}

{entry -name New.Item.UploadInteraction -form en:edit-interaction.wf -query p.item_type=Upload}

{entry -name New.App.OnlineExam -form en:online-exam.wf}

{entry -name New.App.InclassQuiz -form en:inclass-quiz.wf}

{entry -name New.App.InclassExam -form en:inclass-exam.wf}

}

}

}

  1. … 16 more files in changeset.
reduce usage of anonymous arrays

fix typo

  1. … 1 more file in changeset.
simplify and document behavior of mapping of default menu entry labels

reduce verbosity

  1. … 1 more file in changeset.
- foster standardized message keys for menu entries

- provide message key for interaction types

  1. … 4 more files in changeset.
improve spelling

  1. … 1 more file in changeset.
improve configurability of menu entries: support passing extra query parameters

- modernize code (remove "my")

- prefer fully qualified commands based on IDs

  1. … 33 more files in changeset.
Whitespace changes

  1. … 6 more files in changeset.
Fix typos

  1. … 8 more files in changeset.
Revert massive replacement of empty list creation sentences. The use of '[list]' instead of '{}' adds semantics that could be used for performance improvements in the future, such as using a different internal representation. There is already work in this direction, avoiding the generation of the string representation during comparison of empty strings (huge thanks to Stefan Sobernig for the pointer: https://core.tcl.tk/tcl/info/44527c632ed609c2).

  1. … 475 more files in changeset.
Prefer '{}' to '[list]' when creating empty lists

  1. … 204 more files in changeset.
prefer XOTcl2 idioms also in commented-out statements

  1. … 11 more files in changeset.
modernize tcl

  1. … 7 more files in changeset.
Fix typos

  1. … 28 more files in changeset.
Prefer XOTcl2 idioms

  1. … 3 more files in changeset.
Bug fix: avoid confusion between command argument and option, when argument starts with "-"

  1. … 81 more files in changeset.
XOTcl 2.0 improvements

- reduce usage of "instvar"

- make use of variable resolver instead

  1. … 8 more files in changeset.
merged changes from the oacs-5-9 branch and resolved conflicts

  1. … 7834 more files in changeset.
- Fix more spelling errors

- Use uniform spelling of "Tcl"

  1. … 9 more files in changeset.
Fix spelling errors

  1. … 24 more files in changeset.
- Tcl idioms: simplify access to first character

  1. … 8 more files in changeset.
Make usage of deprecated entry "form_link" a warning, the more general "entry" should used for makeing menu entries

Change default for PreferredCSSToolkit from "yui" to "bootstrap" and for PreferredRichtextEditor from "xinha" to "ckeditor4"

  1. … 6 more files in changeset.
remove javascript urls and onclick handlers from xowiki menubar (yui and bootstrap)

- add nonce attribute to javascript created via tdom

- add HTML IDs to menu items

- add ability to add listener (list with 2 elements: type (such as

"click") and script (body of a function to be executed).

  1. … 3 more files in changeset.
- add csrf protection (bulk-delete, save operations in FormPages)

- add input checking for optional query-parameter "master"

- bump version number to 5.9.1d8

  1. … 5 more files in changeset.
- made dropzone a first-class member of the menubar. Now the dropzone

can be configured like all other menubar entries per-folder via

extra_menu_entries (form field in the folder form) or parameter

ExtraMenuEntries (see example below)

- made dropzone configurable (xowiki-uploader-procs.tcl)

One can now specify per dropzone the actions to be performed

with the uploaded content (sample uploaders are provided

with ::xowiki::UploadFile (produces ::xowiki::File entries) or

::xowiki::UploadPhotoForm (produces FormPages for photo.form).

This can serves as a boilerplate for other drop operations

like creating workflow instances or forums postings via drag&drop.

- added mode-handler (xowiki-mode-procs.tcl): The mode handlers

provide easy handling for querying and switching per-session modes

(like eg admin-mode, developer-mode, student-mode, ...). Depending

on the mode different ui options might be offered. Sample with

::xowiki::mode::admin provided, which is per default on, when the

user has admin rights in the current package.

- added modebutton as first-class member of the menubar.

This is currently only supported by the bootstrap renderer,

which displays this as a ios like slider button in the menubar

(see config example below)

- example extra_menu entries:

{clear_menu -menu New}

{entry -name New.Page -label #xowiki.new# -form en:page.form}

{entry -name New.File -label File -object_type ::xowiki::File}

{dropzone -name DropZone -label DropZone -uploader File}

{modebutton -name Admin -label admin -button admin}

  1. … 7 more files in changeset.