Use mw.hook for notifying cancel of settings window to modules

This avoids mandate of having 'cancel' method defined in settings module.
Also avoids looping of all modules while cancel is happening.

Change-Id: I87d0975f2ef1bdee61f71d66eabe3040b81876b8
This commit is contained in:
Santhosh Thottingal
2013-08-22 11:51:26 +05:30
parent 00e248e1f9
commit 4704cf5182
3 changed files with 7 additions and 9 deletions

View File

@@ -549,6 +549,8 @@
$button.addClass( 'down' );
} );
mw.hook( 'mw.uls.settings.cancel' ).add( $.proxy( this.cancel, this ) );
},
/**

View File

@@ -474,6 +474,8 @@
inputSettings.enableInputTools();
}
} );
mw.hook( 'mw.uls.settings.cancel' ).add( $.proxy( this.cancel, this ) );
},
/**

View File

@@ -17,7 +17,7 @@
* @licence MIT License
*/
( function ( $ ) {
( function ( $, mw ) {
'use strict';
var closeRow, settingsMenu, settingsPanel, windowTemplate, panelsRow;
@@ -217,13 +217,7 @@
this.options.onClose();
}
// We are closing language settings. That also means we are cancelling
// any changes the user did, but not saved, in all registered modules.
$.each( this.modules, function( id, module ) {
// Modules should make sure to return early if no changes were made
// They can use some kind of 'dirty bits' to implement this.
module.cancel();
} );
mw.hook( 'mw.uls.settings.cancel' ).fire();
},
click: function ( e ) {
@@ -265,4 +259,4 @@
};
$.fn.languagesettings.Constructor = LanguageSettings;
}( jQuery ) );
}( jQuery, mediaWiki ) );