X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.special%2Fmediawiki.special.preferences.js;h=6ea7501faa5a01a9404f9e88ef60692f4cca968d;hb=8bbe4bd785c75abe640b60b52a47720118c3aac8;hp=043d7693291f4012604e63ea7bb73a43a259dac1;hpb=69bd2e54d698f32120940f80f3493479297ecf74;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.js b/resources/src/mediawiki.special/mediawiki.special.preferences.js index 043d769329..6ea7501faa 100644 --- a/resources/src/mediawiki.special/mediawiki.special.preferences.js +++ b/resources/src/mediawiki.special/mediawiki.special.preferences.js @@ -5,7 +5,7 @@ jQuery( function ( $ ) { var $preftoc, $preferences, $fieldsets, $legends, hash, labelFunc, $tzSelect, $tzTextbox, $localtimeHolder, servertime, - $checkBoxes, savedWindowOnBeforeUnload; + $checkBoxes, allowCloseWindowFn; labelFunc = function () { return this.id.replace( /^mw-prefsection/g, 'preftab' ); @@ -41,7 +41,7 @@ jQuery( function ( $ ) { } else { $( this ).css( 'height', 'auto' ); } - } ).insertBefore( $preftoc ); + } ).insertBefore( $preftoc ); /** * It uses document.getElementById for security reasons (HTML injections in $()). @@ -223,12 +223,8 @@ jQuery( function ( $ ) { localTime = servertime + minuteDiff; // Bring time within the [0,1440) range. - while ( localTime < 0 ) { - localTime += 1440; - } - while ( localTime >= 1440 ) { - localTime -= 1440; - } + localTime = ( ( localTime % 1440 ) + 1440 ) % 1440; + $localtimeHolder.text( mediaWiki.language.convertNumber( minutesToHours( localTime ) ) ); } @@ -267,39 +263,14 @@ jQuery( function ( $ ) { // Set up a message to notify users if they try to leave the page without // saving. $( '#mw-prefs-form' ).data( 'origdata', $( '#mw-prefs-form' ).serialize() ); - $( window ) - .on( 'beforeunload.prefswarning', function () { - var retval; - - // Check if anything changed - if ( $( '#mw-prefs-form' ).serialize() !== $( '#mw-prefs-form' ).data( 'origdata' ) ) { - // Return our message - retval = mediaWiki.msg( 'prefswarning-warning', mediaWiki.msg( 'saveprefs' ) ); - } + allowCloseWindowFn = mediaWiki.confirmCloseWindow( { + test: function () { + return $( '#mw-prefs-form' ).serialize() !== $( '#mw-prefs-form' ).data( 'origdata' ); + }, - // Unset the onbeforeunload handler so we don't break page caching in Firefox - savedWindowOnBeforeUnload = window.onbeforeunload; - window.onbeforeunload = null; - if ( retval !== undefined ) { - // ...but if the user chooses not to leave the page, we need to rebind it - setTimeout( function () { - window.onbeforeunload = savedWindowOnBeforeUnload; - }, 1 ); - return retval; - } - } ) - .on( 'pageshow.prefswarning', function () { - // Re-add onbeforeunload handler - if ( !window.onbeforeunload ) { - window.onbeforeunload = savedWindowOnBeforeUnload; - } - } ); - $( '#mw-prefs-form' ).submit( function () { - // Unbind our beforeunload handler - $( window ).off( '.prefswarning' ); - } ); - $( '#mw-prefs-restoreprefs' ).click( function () { - // Unbind our beforeunload handler - $( window ).off( '.prefswarning' ); + message: mediaWiki.msg( 'prefswarning-warning', mediaWiki.msg( 'saveprefs' ) ), + namespace: 'prefswarning' } ); + $( '#mw-prefs-form' ).submit( allowCloseWindowFn ); + $( '#mw-prefs-restoreprefs' ).click( allowCloseWindowFn ); } );