Modifications pour le document AdminGroupsSheet
Modifié par Florent Charton le 2025/07/04 23:28
Depuis la version 2.1
modifié par Florent Charton
sur 2024/08/08 18:43
sur 2024/08/08 18:43
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/15.10.11]
À la version 3.1
modifié par Florent Charton
sur 2025/07/04 23:28
sur 2025/07/04 23:28
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/16.10.9]
Résumé
-
Propriétés de la Page (1 modifications, 0 ajouts, 0 suppressions)
-
Objets (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Contenu
-
... ... @@ -48,7 +48,7 @@ 48 48 49 49 #macro (editGroupModal) 50 50 <div class="modal" id="editGroupModal" tabindex="-1" role="dialog" aria-labelledby="editGroupModal-label" 51 - data-backdrop="static" data-keyboard="false" data-live Table="#groupstable" data-liveTableAction="edit">51 + data-backdrop="static" data-keyboard="false" data-live-data="#groupstable" data-live-data-action="edit"> 52 52 <div class="modal-dialog" role="document"> 53 53 <div class="modal-content"> 54 54 <div class="modal-header"> ... ... @@ -67,7 +67,7 @@ 67 67 68 68 #macro (deleteGroupModal) 69 69 <div class="modal" id="deleteGroupModal" tabindex="-1" role="dialog" aria-labelledby="deleteGroupModal-label" 70 - data-live Table="#groupstable" data-liveTableAction="delete">70 + data-live-data="#groupstable" data-live-data-action="delete"> 71 71 <div class="modal-dialog" role="document"> 72 72 <div class="modal-content"> 73 73 <div class="modal-header"> ... ... @@ -94,20 +94,6 @@ 94 94 </div> 95 95 </div> 96 96 #end 97 - 98 -#macro (groupScopeFilter) 99 - <select name="wiki"> 100 - <option selected="selected" value="local"> 101 - $escapetool.xml($services.localization.render('xe.admin.groups.local')) 102 - </option> 103 - <option value="global"> 104 - $escapetool.xml($services.localization.render('xe.admin.groups.global')) 105 - </option> 106 - <option value="both"> 107 - $escapetool.xml($services.localization.render('xe.admin.groups.both')) 108 - </option> 109 - </select> 110 -#end 111 111 {{/velocity}} 112 112 113 113 {{velocity}} ... ... @@ -114,37 +114,79 @@ 114 114 {{html clean="false"}} 115 115 #set ($discard = $xwiki.ssx.use('XWiki.AdminGroupsSheet')) 116 116 #set ($discard = $xwiki.jsx.use('XWiki.AdminGroupsSheet')) 117 -## The following are needed when editing a group (e.g. for adding new members). 103 +## The following are needed when editing a group (e.g., for adding new members). 118 118 #userPicker_import() 119 119 #set ($discard = $xwiki.ssx.use('XWiki.XWikiGroupSheet')) 120 120 #set ($discard = $xwiki.jsx.use('XWiki.XWikiGroupSheet')) 121 -#set ($columnOptions = { 122 - 'name': {'type': 'text', 'html': true, 'sortable': false}, 123 - 'members': {'filterable': false, 'sortable': false}, 124 - 'scope': {'type': 'list', 'sortable': false}, 125 - '_actions': { 126 - 'actions': ['edit', 'delete'], 127 - 'labels': { 128 - 'delete': $services.localization.render('platform.livetable._actions.delete') 129 - }, 130 - 'filterable': false 131 - } 132 -}) 133 -#set ($columns = ['name', 'members', '_actions']) 134 -#set ($liveTableOptions = { 135 - 'url': $doc.getURL('view', 'xpage=getgroups'), 136 - 'translationPrefix': 'xe.admin.groups.', 137 - 'outputOnlyHtml': true 138 -}) 107 +#set ($properties = ['name', 'members', '_actions']) 139 139 #if (!$xcontext.isMainWiki()) 140 - #set ($discard = $columns.add(2, 'scope')) 141 - ## We use the top filters option to show only the local groups by default because the JavaScript code from the sheet 142 - ## is executed after the livetable is loaded. The JavaScript code removes the top filters and updates the scope filter 143 - ## afterwards. 144 - #set ($liveTableOptions.topFilters = "#groupScopeFilter") 109 + #set ($discard = $properties.add(2, 'scope')) 145 145 #end 146 146 <div class="medium-avatars"> 147 - #livetable('groupstable' $columns $columnOptions $liveTableOptions) 112 + #set ($sourceParameters = { 113 + 'template': 'getgroups.vm', 114 + 'translationPrefix': 'xe.admin.groups.' 115 + }) 116 + $services.liveData.render({ 117 + 'id': 'groupstable', 118 + 'source': 'liveTable', 119 + 'properties': $stringtool.join($properties, ','), 120 + 'sourceParameters': $escapetool.url($sourceParameters) 121 + }, { 122 + 'query': { 123 + 'filters': [ 124 + { 125 + 'property': 'scope', 126 + 'constraints': [{ 127 + 'operator': 'contains', 128 + 'value': 'local' 129 + }] 130 + } 131 + ] 132 + }, 133 + 'meta': { 134 + 'propertyDescriptors': [ 135 + { 136 + 'id': 'name', 137 + 'displayer': 'html', 138 + 'sortable': false, 139 + 'editable': false 140 + }, 141 + { 142 + 'id': 'members', 143 + 'sortable': false, 144 + 'filterable': false, 145 + 'editable': false 146 + }, 147 + { 148 + 'id': 'scope', 149 + 'sortable': false, 150 + 'editable': false, 151 + 'filter': { 152 + 'id': 'list', 153 + 'options': [ 154 + {'value': 'local', 'label': $services.localization.render('xe.admin.groups.local')}, 155 + {'value': 'global', 'label': $services.localization.render('xe.admin.groups.global')}, 156 + {'value': 'both', 'label': $services.localization.render('xe.admin.groups.both')} 157 + ] 158 + } 159 + }, 160 + { 161 + 'id': '_actions', 162 + 'displayer': { 163 + 'id': 'actions', 164 + 'actions': ['edit', 'delete'] 165 + } 166 + } 167 + ], 168 + 'actions': [ 169 + { 170 + 'id': 'delete', 171 + 'name': $services.localization.render('platform.livetable._actions.delete') 172 + } 173 + ] 174 + } 175 + }) 148 148 </div> 149 149 <p> 150 150 <button type="button" class="btn btn-primary" data-toggle="modal" data-target="${escapetool.h}createGroupModal"> ... ... @@ -151,8 +151,8 @@ 151 151 $escapetool.xml($services.localization.render('rightsmanager.creategroup')) 152 152 </button> 153 153 </p> 154 -#createGroupModal 155 -#editGroupModal 156 -#deleteGroupModal 182 +#createGroupModal() 183 +#editGroupModal() 184 +#deleteGroupModal() 157 157 {{/html}} 158 158 {{/velocity}}
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -87,7 +87,7 @@ 87 87 Promise.resolve($.post(createGroupURL, data)).then(function() { 88 88 // Close the modal and refresh the groups live table. 89 89 createGroupModal.modal('hide'); 90 - window.livetable_groupstable.refresh();90 + $('#groupstable').data('liveData').updateEntries(); 91 91 notification.replace(new XWiki.widgets.Notification( 92 92 $jsontool.serialize($services.localization.render('xe.admin.groups.create.done')), 93 93 'done' ... ... @@ -105,19 +105,10 @@ 105 105 }); 106 106 107 107 // 108 -// ScopeFiltering108 +// Live Data Modals 109 109 // 110 -require(['jquery'], function($) { 111 - var options = $('#groupstable').prev('.tipfilters').remove().find('select[name="wiki"]').html(); 112 - var scopeFilter = $('#groupstable .xwiki-livetable-display-filters select[name="scope"]') 113 - scopeFilter.attr('name', 'wiki').html(options); 114 -}); 115 115 116 -// 117 -// Live Table Modals 118 -// 119 - 120 -define('xwiki-livetable-modal', ['jquery', 'bootstrap'], function($) { 111 +define('xwiki-livedata-modal', ['jquery', 'bootstrap'], function($) { 121 121 $.fn.bindActionToModal = function(action, modal) { 122 122 var actionToModal = action; 123 123 if (typeof action === 'string') { ... ... @@ -125,32 +125,32 @@ 125 125 actionToModal[action] = modal; 126 126 } 127 127 return this.each(function() { 128 - varliveTableElement = $(this);129 - varliveTable = window['livetable_'+liveTableElement.attr('id')];119 + const liveDataElement = $(this); 120 + const liveData = liveDataElement.attr('id') 130 130 $.each(actionToModal, function(action, modal) { 131 - liveTableElement.on('click', 'a.action' + action, function(event) { 122 + const clickFilter = '#' + liveData + ' a.action.action_' + action; 123 + $(document).on('click', clickFilter, function (event) { 132 132 event.preventDefault(); 133 - varactionTrigger = $(this);134 - varrow = actionTrigger.closest('tr');135 - varrowIndex = parseInt(row.attr('data-index'));125 + const actionTrigger = $(this); 126 + const row = actionTrigger.closest('tr'); 127 + const rowIndex = parseInt(row.attr('data-livedata-entry-index')); 136 136 $(modal).data({ 137 - rowData: live Table.fetchedRows[rowIndex],129 + rowData: liveDataElement.data('liveData').data.data.entries[rowIndex], 138 138 rowIndex: rowIndex, 139 - live Table: liveTable,140 - live TableElement: liveTableElement131 + liveData: liveData, 132 + liveDataElement: liveDataElement 141 141 }).modal('show'); 142 142 }); 143 143 }); 144 144 }); 145 145 }; 146 - 147 - $('.modal[data-liveTable]').each(function() { 138 + $('.modal[data-live-data]').each(function () { 148 148 var modal = $(this); 149 - $(modal.attr('data-live Table')).bindActionToModal(modal.attr('data-liveTableAction'), modal);140 + $(modal.attr('data-live-data')).bindActionToModal(modal.attr('data-live-data-action'), modal); 150 150 }); 151 151 }); 152 152 153 -require(['jquery', 'xwiki-meta', 'xwiki-liveta ble-modal'], function($, xm) {144 +require(['jquery', 'xwiki-meta', 'xwiki-livedata-modal'], function ($, xm) { 154 154 // 155 155 // Group Editing 156 156 // ... ... @@ -157,15 +157,15 @@ 157 157 var editGroupModal = $('#editGroupModal'); 158 158 editGroupModal.on('show.bs.modal', function() { 159 159 var rowData = editGroupModal.data('rowData'); 160 - var groupReference = XWiki.Model.resolve(rowData .doc_fullName, XWiki.EntityType.DOCUMENT, [rowData.doc_wiki]);151 + var groupReference = XWiki.Model.resolve(rowData['doc.fullName'], XWiki.EntityType.DOCUMENT, [rowData['doc.wiki']]); 161 161 var groupDocument = new XWiki.Document(groupReference); 162 162 var editGroupURL = groupDocument.getURL('edit', 'xpage=plain'); 163 - editGroupModal.find('.modal-body').empty().addClass('loading').load(editGroupURL, function() { 154 + editGroupModal.find('.modal-body').empty().addClass('loading').load(editGroupURL, function () { 164 164 $(this).removeClass('loading'); 165 165 $(document).trigger('xwiki:dom:updated', {'elements': $(this).toArray()}); 166 166 }); 167 167 }).on('hide.bs.modal', function() { 168 - editGroupModal.data('live Table').refresh();159 + editGroupModal.data('liveDataElement').data('liveData').updateEntries(); 169 169 }); 170 170 171 171 // ... ... @@ -174,9 +174,9 @@ 174 174 var deleteGroupModal = $('#deleteGroupModal'); 175 175 deleteGroupModal.on('show.bs.modal', function() { 176 176 var rowData = deleteGroupModal.data('rowData'); 177 - var groupReference = rowData .doc_fullName;178 - if (XWiki.currentWiki !== rowData .doc_wiki) {179 - groupReference = XWiki.Model.resolve(groupReference, XWiki.EntityType.DOCUMENT, [rowData .doc_wiki]);168 + var groupReference = rowData['doc.fullName']; 169 + if (XWiki.currentWiki !== rowData['doc.wiki']) { 170 + groupReference = XWiki.Model.resolve(groupReference, XWiki.EntityType.DOCUMENT, [rowData['doc.wiki']]); 180 180 groupReference = XWiki.Model.serialize(groupReference); 181 181 } 182 182 deleteGroupModal.find('.groupName').text(groupReference); ... ... @@ -190,7 +190,7 @@ 190 190 docname: deleteGroupModal.find('.groupName').text(), 191 191 form_token: xm.form_token 192 192 }).then(() => { 193 - deleteGroupModal.data('live Table').deleteRow(deleteGroupModal.data('rowIndex'));184 + deleteGroupModal.data('liveDataElement').data('liveData').updateEntries(); 194 194 notification.replace(new XWiki.widgets.Notification( 195 195 $jsontool.serialize($services.localization.render('xe.admin.groups.delete.done')), 196 196 'done'
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -1,9 +7,3 @@ 1 -/** 2 - * Groups Live Table 3 - */ 4 -#groupstable td[data-title] { 5 - vertical-align: middle; 6 -} 7 7 8 8 /** 9 9 * Create Group Modal