From cc74fcb829f3e8f5388bca98263fde5eae6e7db8 Mon Sep 17 00:00:00 2001 From: Pavel Selitskas Date: Sat, 12 Jan 2013 04:20:04 +0300 Subject: [PATCH] (Bug 27559) Preserve tab selection after submit in [[Special:Preferences]] Firstly it was planned to be implemented via cookies, but they behave terribly. So, for now it's a HTML5-only solution (via sessionStorage). Change-Id: I7b7f14a6dca580a4498bda1ada48d1a3ba7c69c3 --- .../mediawiki.special.preferences.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/mediawiki.special/mediawiki.special.preferences.js b/resources/mediawiki.special/mediawiki.special.preferences.js index 46384a8009..6eaec6a126 100644 --- a/resources/mediawiki.special/mediawiki.special.preferences.js +++ b/resources/mediawiki.special/mediawiki.special.preferences.js @@ -180,4 +180,20 @@ jQuery( document ).ready( function ( $ ) { $tzTextbox.blur( updateTimezoneSelection ); updateTimezoneSelection(); } + + // Preserve the tab after saving the preferences + // Not using cookies, because their deletion results are inconsistent. + // Not using jStorage due to its enormous size (for this feature) + if ( window.sessionStorage ) { + if ( sessionStorage.getItem( 'mediawikiPreferencesTab' ) !== null ) { + switchPrefTab( sessionStorage.getItem( 'mediawikiPreferencesTab' ), 'noHash' ); + } + // Deleting the key, the tab states should be reset until we press Save + sessionStorage.removeItem( 'mediawikiPreferencesTab' ); + + $( '#mw-prefs-form' ).submit( function () { + var storageData = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' ); + sessionStorage.setItem( 'mediawikiPreferencesTab', storageData ); + } ); + } } ); -- 2.20.1