Изменения документа AdminUsersSheet
Редактировал(а) Alexey Semenihin 23.10.2026, 15:12
От версии 1.1
отредактировано Admin xWiKi
на 15.10.2019, 13:19
на 15.10.2019, 13:19
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/11.8.1]
К версии 2.1
отредактировано Dmitriy Rybakov
на 04.10.2024, 00:09
на 04.10.2024, 00:09
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-administration-ui/15.10.12]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
-
Объекты (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.ad min1 +XWiki.rybakovds - Содержимое
-
... ... @@ -46,7 +46,9 @@ 46 46 #livetable('userstable' $columns $columnOptions $liveTableOptions) 47 47 </div> 48 48 <p> 49 - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="${escapetool.h}createUserModal"> 49 + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="${escapetool.h}createUserModal" 50 + ## Disable the button until the JavaScript code that handles the user creation is ready. 51 + disabled="disabled"> 50 50 $escapetool.xml($services.localization.render('rightsmanager.addnewuser')) 51 51 </button> 52 52 </p>
- XWiki.JavaScriptExtension[0]
-
- Код
-
... ... @@ -20,7 +20,7 @@ 20 20 var createUserModal = $('#createUserModal'); 21 21 22 22 var validateCreateUserForm = function(form) { 23 - return form. size()> 0&& (!window.LiveValidation ||23 + return form.length && (!window.LiveValidation || 24 24 LiveValidation.massValidate(LiveValidationForm.getInstance(form[0]).fields)); 25 25 }; 26 26 ... ... @@ -35,7 +35,7 @@ 35 35 createUserModalBody.removeClass('loading').append(createUserForm); 36 36 $(document).trigger('xwiki:dom:updated', {'elements': createUserModalBody.toArray()}); 37 37 createUserForm.find(':input').filter(':visible').first().focus(); 38 - createUserButton.prop('disabled', createUserForm. size()=== 0);38 + createUserButton.prop('disabled', !createUserForm.length); 39 39 }); 40 40 }).on('click', '.btn-primary', function(event) { 41 41 var createUserForm = createUserModal.find('form#register'); ... ... @@ -47,9 +47,9 @@ 47 47 $jsontool.serialize($services.localization.render('xe.admin.users.create.inProgress')), 48 48 'inprogress' 49 49 ); 50 - $.post(createUserForm.attr('action'), createUserForm.serialize()). done(function(html){50 + $.post(createUserForm.attr('action'), createUserForm.serialize()).then(html => { 51 51 var errorMessage = $('<div/>').html(html).find('.errormessage, .LV_validation_message.LV_invalid'); 52 - if (errorMessage. size()> 0){52 + if (errorMessage.length) { 53 53 createUserButton.prop('disabled', false); 54 54 notification.replace(new XWiki.widgets.Notification(errorMessage.text(), 'error')); 55 55 } else { ... ... @@ -61,7 +61,7 @@ 61 61 'done' 62 62 )); 63 63 } 64 - }). fail(function(response) {64 + }).catch(() => { 65 65 createUserButton.prop('disabled', false); 66 66 notification.replace(new XWiki.widgets.Notification( 67 67 $jsontool.serialize($services.localization.render('xe.admin.users.create.failed')), ... ... @@ -86,12 +86,13 @@ 86 86 parameters.force = 1; 87 87 } 88 88 editUserModal.find('.modal-body').first().empty().addClass('loading').load(editUserURL, parameters, function() { 89 - this.removeClass('loading'); 90 - this.find('.column.half').removeClass('half').addClass('full'); 91 - $(document).trigger('xwiki:dom:updated', {'elements': this.toArray()}); 89 + var self = $(this); 90 + self.removeClass('loading'); 91 + self.find('.column.half').removeClass('half').addClass('full'); 92 + $(document).trigger('xwiki:dom:updated', {'elements': self.toArray()}); 92 92 var editUserForm = editUserModal.find('form#edituser'); 93 93 editUserForm.find(':input').filter(':visible').first().focus(); 94 - saveButton.prop('disabled', editUserForm. size()=== 0);95 + saveButton.prop('disabled', !editUserForm.length); 95 95 }); 96 96 }; 97 97 ... ... @@ -109,7 +109,7 @@ 109 109 'inprogress' 110 110 ); 111 111 $(document).trigger('xwiki:actions:beforeSave'); 112 - $.post(editForm.attr('action'), editForm.serialize()). done(function() {113 + $.post(editForm.attr('action'), editForm.serialize()).then(() => { 113 113 $(document).trigger('xwiki:document:saved'); 114 114 editUserModal.modal('hide').data('liveTable').refresh(); 115 115 notification.replace(new XWiki.widgets.Notification( ... ... @@ -116,7 +116,7 @@ 116 116 $jsontool.serialize($services.localization.render('core.editors.saveandcontinue.notification.done')), 117 117 'done' 118 118 )); 119 - }). fail(function(response){120 + }).catch(response => { 120 120 saveButton.prop('disabled', false); 121 121 var message = $jsontool.serialize($services.localization.render('core.editors.saveandcontinue.notification.error', 122 122 ['__reason__'])); ... ... @@ -145,7 +145,7 @@ 145 145 failed: $jsontool.serialize($services.localization.render('administration.section.users.disableUser.failed')) 146 146 } 147 147 } 148 - var onToggleUser = function( action,event) {149 + var onToggleUser = function(event) { 149 149 event.preventDefault(); 150 150 var actionTrigger = $(this); 151 151 if (actionTrigger.hasClass('pending')) { ... ... @@ -153,21 +153,22 @@ 153 153 return; 154 154 } 155 155 actionTrigger.addClass('pending'); 157 + var action = event.data.action; 156 156 var notification = new XWiki.widgets.Notification(notificationMessage[action].inProgress, 'inprogress'); 157 157 // The enable and disable actions redirect to the user profile by default which may take a lot of time to render so 158 158 // we redirect to a URL that doesn't render anything. 159 159 var emptyResponseURL = new XWiki.Document('AdminUsersSheet', 'XWiki').getURL('get', 'outputSyntax=plain'); 160 - $.post(actionTrigger.attr('href'), {'xredirect': emptyResponseURL}). done(function() {162 + Promise.resolve($.post(actionTrigger.attr('href'), {'xredirect': emptyResponseURL})).then(function() { 161 161 window['livetable_userstable'].refresh(); 162 162 notification.replace(new XWiki.widgets.Notification(notificationMessage[action].done, 'done')); 163 - }). fail(function() {165 + }).catch(function() { 164 164 notification.replace(new XWiki.widgets.Notification(notificationMessage[action].failed, 'error')); 165 - }).al ways(function() {167 + }).finally(function() { 166 166 actionTrigger.removeClass('pending'); 167 167 }); 168 168 }; 169 - $('#userstable').on('click', 'a.actionenable', $.proxy(onToggleUser, null, 'enable'));170 - $('#userstable').on('click', 'a.actiondisable', $.proxy(onToggleUser, null, 'disable'));171 + $('#userstable').on('click', 'a.actionenable', {action: 'enable'}, onToggleUser); 172 + $('#userstable').on('click', 'a.actiondisable', {action: 'disable'}, onToggleUser); 171 171 })(); 172 172 173 173 // ... ... @@ -224,9 +224,9 @@ 224 224 newAuthor: newAuthor, 225 225 requiredRight: requiredRight 226 226 }); 227 - return newAuthorValidationRequest; 229 + return Promise.resolve(newAuthorValidationRequest); 228 228 } else { 229 - return $.Deferred().resolve({valid: true}).promise();231 + return Promise.resolve({valid: true}); 230 230 } 231 231 }; 232 232 deleteUserModal.on('change', '#newAuthor', function(event) { ... ... @@ -235,17 +235,17 @@ 235 235 var newAuthorField = $(event.target); 236 236 // Hide the previous error message. 237 237 newAuthorField.nextAll('.xErrorMsg').addClass('hidden'); 238 - validateNewAuthor(newAuthorField.val(), newAuthorField.data('requiredRight')). done(function(result) {240 + validateNewAuthor(newAuthorField.val(), newAuthorField.data('requiredRight')).then(function(result) { 239 239 if (result.valid === false) { 240 240 newAuthorField.nextAll('.xErrorMsg').removeClass('hidden'); 241 241 } 242 - }).al ways(function() {244 + }).finally(function() { 243 243 // Re-enable the modal submit button. 244 244 deleteUserButton.prop('disabled', false); 245 245 }); 246 246 }); 247 247 248 - deleteUserButton.click (function() {250 + deleteUserButton.on('click', function() { 249 249 var notification = new XWiki.widgets.Notification( 250 250 $jsontool.serialize($services.localization.render('xe.admin.users.delete.inProgress')), 251 251 'inprogress' ... ... @@ -256,7 +256,7 @@ 256 256 docname: userReference, 257 257 newAuthor: deleteUserModal.find('#newAuthor').val(), 258 258 form_token: xm.form_token 259 - }). done(function() {261 + }).then(() => { 260 260 deleteUserModal.data('liveTable').deleteRow(deleteUserModal.data('rowIndex')); 261 261 deleteUserModal.data('liveTableElement').trigger('xwiki:user:deleted', {reference: userReference}); 262 262 notification.replace(new XWiki.widgets.Notification( ... ... @@ -263,7 +263,7 @@ 263 263 $jsontool.serialize($services.localization.render('xe.admin.users.delete.done')), 264 264 'done' 265 265 )); 266 - }). fail(function() {268 + }).catch(() => { 267 267 notification.replace(new XWiki.widgets.Notification( 268 268 $jsontool.serialize($services.localization.render('xe.admin.users.delete.failed')), 269 269 'error' ... ... @@ -270,4 +270,7 @@ 270 270 )); 271 271 }); 272 272 }); 275 + 276 + // Finally, enable the user creation. 277 + $('button[data-target="#createUserModal"]').prop('disabled', false); 273 273 });