#146: Improve sharing page
- Contents
- Proposed by
- Alexander Limi
- Seconded by
- Danny Bloemendaal
- Proposal type
- User interface
- Assigned to release
- State
- completed
Motivation
The sharing page in 2.x is more or less unusable.
Proposal
The user interface will be greatly simplified using new (ajax) technology.
First there will be an overview of all the rolemappings that are in place. It will see both acquired mappings as local mappings. The acquired mappings are not editable while the local mappings are:
[x] Inherit permission
--------------------------------------------------------------
User Editor Reader Role-x Role-y
--------------------------------------------------------------
Group1 V V [ ] [x]
John [x] V [ ] [ ]
Designers [x] [ ] [ ] [ ]
All [ ] [x] [ ] [ ]
--------------------------------------------------------------
[cancel] [apply]
Group1 has acquired roles Editor, Reader and a local role Role-y.
John has local roles Editor and an acquired role Reader.
The group Designers has a local role Editor.
The group All has a local role Reader.
When you uncheck the Inherit permissions (wording needs to be changed), a javascript removes the rows with only acquired mappings. Non-js browser will just have to click to the apply button.
Global roles and acquired roles are treated as the same. Essentially they are.
Users have the user icon, groups have the group icon. (In the future we may use small versions of the user picture).
Adding new users and groups
To accommodate the addition of new users and groups an additional row is added to the overview table:[x] Inherit permission
--------------------------------------------------------------
User Editor Reader Role-x Role-y
--------------------------------------------------------------
Group1 V V [ ] [x]
John [x] V [ ] [ ]
Designers [x] [ ] [ ] [ ]
All [ ] [x] [ ] [ ]
--------------------------------------------------------------
[ ] [ ] [ ] [ ] [ ]
--------------------------------------------------------------
[cancel] [apply]
This new row contains an input field that allows you to type in user names, group names or part of user/group names. Upon getting focus, that input field will open a dropdown list containing all the users and groups (well, not all, only the visible subset). While typing the list of users immediately limits the result set based on what's been typed. It behaves like some kind of LiveSearch. While the drop down is being displayed, the user can also move up/down in the list to select his target or he can use the mouse to click on it. Double clikcing on the name or pressing enter will add the selected user or group to the list, just above the input field. The role mappings for this new user/group is like it is set with the checkboxes behind the input field. That allows for quickly adding new users with a preset rolemapping. Simply set the mapping before adding new users and then go through all of them.
Non-js browsers still can use the input field but pressing enter will reload the page and show the search results after which you can select the found users and groups. A bit like it is done in the old style.
[x] Inherit permission
--------------------------------------------------------------
User Editor Reader Role-x Role-y
--------------------------------------------------------------
Group1 V V [ ] [x]
John [x] V [ ] [ ]
Designers [x] [ ] [ ] [ ]
All [ ] [x] [ ] [ ]
--------------------------------------------------------------
[Jo ] [ ] [x] [ ] [ ]
-|John -----|--------------------------------------------
|Johan |
|JobGroup |
|Hanna Jo |
|Fred Johnson |
-----------------
Some additional notes:
The roles being displayed are configured in a portal property (white list).
Archipelago sprint implementation
https://svn.plone.org/svn/plone/CMFPlone/branches/plip124-ueberselection-widget/
since I believe they used this as a use case for the ÜberSelectionWidget. In any case, it's easy to recreate - and depends mostly on the JS framework chosen (and the workflow bits) - this PLIP is mostly to keep track of the UI implementation to tie it all together.