X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.special%2Fmediawiki.special.preferences.confirmClose.js;h=244154b38a674deb5e987f29abd8e9653fa968f8;hb=7564624d1ca80a4d2f1cc2b4d3d32d5d2e0bca38;hp=45df37ffd2295def1aa8784c3a4f7b9ed995c6c3;hpb=16c80e429be5904fb42a93f260f8de3d18f0c692;p=lhc%2Fweb%2Fwiklou.git
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js b/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js
index 45df37ffd2..244154b38a 100644
--- a/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js
+++ b/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js
@@ -4,9 +4,12 @@
*/
( function ( mw, $ ) {
$( function () {
- var allowCloseWindow;
+ var allowCloseWindow, saveButton, restoreButton,
+ oouiEnabled = $( '#mw-prefs-form' ).hasClass( 'mw-htmlform-ooui' );
- // Check if all of the form values are unchanged
+ // Check if all of the form values are unchanged.
+ // (This function could be changed to infuse and check OOUI widgets, but that would only make it
+ // slower and more complicated. It works fine to treat them as HTML elements.)
function isPrefsChanged() {
var inputs = $( '#mw-prefs-form :input[name]' ),
input, $input, inputType,
@@ -26,7 +29,8 @@
return true;
}
}
- } else if ( $input.is( 'input' ) ) { // has defaultValue or defaultChecked
+ } else if ( $input.is( 'input' ) || $input.is( 'textarea' ) ) {
+ // has defaultValue or defaultChecked
inputType = input.type;
if ( inputType === 'radio' || inputType === 'checkbox' ) {
if ( input.checked !== input.defaultChecked ) {
@@ -41,12 +45,22 @@
return false;
}
- // Disable the button to save preferences unless preferences have changed
- // Check if preferences have been changed before JS has finished loading
- if ( !isPrefsChanged() ) {
- $( '#prefcontrol' ).prop( 'disabled', true );
- $( '#preferences > fieldset' ).one( 'change keydown mousedown', function () {
- $( '#prefcontrol' ).prop( 'disabled', false );
+ if ( oouiEnabled ) {
+ saveButton = OO.ui.infuse( $( '#prefcontrol' ) );
+ restoreButton = OO.ui.infuse( $( '#mw-prefs-restoreprefs' ) );
+
+ // Disable the button to save preferences unless preferences have changed
+ // Check if preferences have been changed before JS has finished loading
+ saveButton.setDisabled( !isPrefsChanged() );
+ $( '#preferences .oo-ui-fieldsetLayout' ).on( 'change keyup mouseup', function () {
+ saveButton.setDisabled( !isPrefsChanged() );
+ } );
+ } else {
+ // Disable the button to save preferences unless preferences have changed
+ // Check if preferences have been changed before JS has finished loading
+ $( '#prefcontrol' ).prop( 'disabled', !isPrefsChanged() );
+ $( '#preferences > fieldset' ).on( 'change keyup mouseup', function () {
+ $( '#prefcontrol' ).prop( 'disabled', !isPrefsChanged() );
} );
}
@@ -57,7 +71,16 @@
message: mw.msg( 'prefswarning-warning', mw.msg( 'saveprefs' ) ),
namespace: 'prefswarning'
} );
- $( '#mw-prefs-form' ).submit( $.proxy( allowCloseWindow, 'release' ) );
- $( '#mw-prefs-restoreprefs' ).click( $.proxy( allowCloseWindow, 'release' ) );
+ $( '#mw-prefs-form' ).on( 'submit', $.proxy( allowCloseWindow, 'release' ) );
+ if ( oouiEnabled ) {
+ restoreButton.on( 'click', function () {
+ allowCloseWindow.release();
+ // The default behavior of events in OOUI is always prevented. Follow the link manually.
+ // Note that middle-click etc. still works, as it doesn't emit a OOUI 'click' event.
+ location.href = restoreButton.getHref();
+ } );
+ } else {
+ $( '#mw-prefs-restoreprefs' ).on( 'click', $.proxy( allowCloseWindow, 'release' ) );
+ }
} );
}( mediaWiki, jQuery ) );