ItSpiderman has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/338104 )

Change subject: Fix for broken dialog on PermissionManager TemplateEditor
......................................................................

Fix for broken dialog on PermissionManager TemplateEditor

On tree panel selection change (beforeselect), if there are changes in
current record, a dialog asking wether to save changes is displayed. If
user says Yes, saveTemplate is called and state is changed to 'clean' (no
changes). Problem is that this setting to clean happens in .done method of
ajax call which comes late, before it gets the chance to set the state to
clean, beforeselect event is fired again, and it tries to dispay the
dialog again, but this time it failes, causing broken dialog.

Added also _closeDialog var, to distinguish when dialog should be closed
(Save button clicked) and when it should remain open (saving after
changing selection)

ERM: #3812

Needs cherry-picking to REL1_27 and REL1_23

Change-Id: I975be9eb6ced6571078dc04a62664be7d83eb784
---
M PermissionManager/resources/BS.PermissionManager/TemplateEditor.js
1 file changed, 22 insertions(+), 6 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceExtensions 
refs/changes/04/338104/1

diff --git a/PermissionManager/resources/BS.PermissionManager/TemplateEditor.js 
b/PermissionManager/resources/BS.PermissionManager/TemplateEditor.js
index 19b1a92..e45e6bd 100644
--- a/PermissionManager/resources/BS.PermissionManager/TemplateEditor.js
+++ b/PermissionManager/resources/BS.PermissionManager/TemplateEditor.js
@@ -15,6 +15,7 @@
        closeAction: 'hide',
        _cleanState: true,
        _hasChanged: false,
+       _closeDialog: true,
        constructor: function(config) {
                this._treeStore = 
Ext.create('BS.PermissionManager.store.TemplateTree');
                this._permissionStore = 
Ext.create('BS.PermissionManager.store.TemplatePermissions');
@@ -34,6 +35,12 @@
        hasChanged: function() {
                return this._hasChanged;
        },
+       setCloseDialog: function(close) {
+               this._closeDialog = close;
+       },
+       getCloseDialog: function() {
+               return this._closeDialog;
+       },
        saveTemplate: function() {
                var me = this;
                var record = Ext.getCmp('bs-template-editor-treepanel')
@@ -47,7 +54,6 @@
                };
 
                if (typeof record !== 'undefined') {
-
                        for (var i in me._permissionStore.data.items) {
                                var dataSet = 
me._permissionStore.data.items[i].data;
                                if (dataSet.enabled === true) {
@@ -79,17 +85,25 @@
                                                        
.lookup('bs-permissionmanager-permission-store')
                                                        
.loadRawData(dataManager.buildPermissionData().permissions);
 
-                                       
Ext.getCmp('bs-template-editor-treepanel').getSelectionModel().select(
-                                                       
me._treeStore.getNodeById(newRecord.text)
-                                                       );
+                                       if( me.getCloseDialog() ) {
+                                               
Ext.getCmp('bs-template-editor-treepanel').getSelectionModel().select(
+                                                               
me._treeStore.getNodeById(newRecord.text)
+                                                               );
+                                       }
+
                                        mw.notify( mw.msg( 
'bs-permissionmanager-msgtpled-success' ), { title: mw.msg( 
'bs-extjs-title-success' ) } );
                                } else {
                                        bs.util.alert( 'bs-pm-save-tpl-error', {
                                                text: result.msg
                                        });
                                }
-                               me.hide();
+
+                               if ( me.getCloseDialog() ) {
+                                       me.hide();
+                               }
+                               me.setCloseDialog(true);
                        });
+
                }
        },
        discardChanges: function() {
@@ -115,7 +129,9 @@
                                text: 
mw.message('bs-permissionmanager-msgtpled-saveonabort').plain()
                        });
                        dialog.on('ok', function() {
+                               me.setCloseDialog(false);
                                me.saveTemplate();
+                               me.setCleanState(true);
                                if (record !== false) {
                                        
Ext.getCmp('bs-template-editor-treepanel').getSelectionModel().select(record);
                                }
@@ -311,4 +327,4 @@
                me.on( 'hide', me.discardChanges, this ); //prevent empty 
templates to be saved
                this.callParent();
        }
-});
\ No newline at end of file
+});

-- 
To view, visit https://gerrit.wikimedia.org/r/338104
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I975be9eb6ced6571078dc04a62664be7d83eb784
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions
Gerrit-Branch: master
Gerrit-Owner: ItSpiderman <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to