• last updated 13 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
improve styling of nested repeated fields (less frames)

Use usual delete symbol for deleting repeat elements

  1. … 1 more file in changeset.
remove spans for file-links and external links

  1. … 1 more file in changeset.
improve stylability: add glyphicons for external and file links

Many thanks to Monika Andergasse for the help!

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.
handle cases, where autosave was rejected

  1. … 3 more files in changeset.
- textarea: added attribute "autosave"

- set autosave attributes in text_fields, when "multiple_lines" was specified.

- remove for the time being "hkey" from "non_cached_instance_var_patterns",

since this was recently fixed (TODO: check regression test and reactivate it later)

- new Externally callable method: autosave-attribute:

this is a simplified version of "save-attributes", but which does

NOT perform input validation, which might be a problem in case of partial input

- add "autosave-attribute" to all policies, where "save-attributes" was set

  1. … 6 more files in changeset.
file autosave-text.js was initially added on branch oacs-5-10.

Status is actually a number

Do not try to reconnect upon client side errors (e.g. 403 forbidden responses when the chat room has been closed)

fix CSS formatting with bootstrap for validation errors

update jquery versions (part 2)

  1. … 1 more file in changeset.
file jquery-3.5.1.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./jquery/jquery-3.5.1.js
file jquery-3.5.1.min.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./jquery/jquery-3.5.1.min.js
update jquery versions

When streaming chat implementation is in use, try reconnecting to the chat 10s after connection is closed

Add new chat skin 'minimal'.

Specially designed to be embedded in other pages, it provides a clean look without user list, full screen button, or anything else aside from the avatar, timestamp, user name and message.

  1. … 1 more file in changeset.
file chat-minimal.css was initially added on branch oacs-5-10.

    • -0
    • +0
    ./chat-skins/chat-minimal.css
file chat-minimal.js was initially added on branch oacs-5-10.

    • -0
    • +0
    ./chat-skins/chat-minimal.js
Remove debug console logging

Improve comment

Remove unnecesary check

Show the "Enable notifications" button in the chat only if the user has not accepted, or explicitly denied, notifications yet

  1. … 1 more file in changeset.
Remove code leftovers

Add "Web notifications" for new messages in the chat. See: https://www.w3.org/TR/notifications/

"You should only request consent to display notifications in response to a user gesture

(e.g. clicking a button). This is not only best practice — you should not be spamming

users with notifications they didn't agree to — but going forward browsers will explicitly

disallow notification permission requests not triggered in response to a user gesture.

Firefox is already doing this from version 72, for example, and Safari has done it for some time."

https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API

  1. … 4 more files in changeset.
Add simple chat notifications. Modify the title of the browser tab, when it is inactive, showing the number of new messages. This is cleared up when the tab is active again.

Show number of active users in chat. Many thanks to Monika Andergassen

  1. … 3 more files in changeset.
deal with overagressive downstream styles

  1. … 1 more file in changeset.
- new form_field class: reorder_box, which can be used e.g. in ordering exercises in e-assessments

- better handling of disabled_as_div (when feedback is provided via input highlighting)

  1. … 2 more files in changeset.
provide CSS classes for alignment in table widgets

CVS: ----------------------------------------------------------------------