From: Pavel Selitskas
Date: Sat, 12 Jan 2013 01:20:04 +0000 (+0300)
Subject: (Bug 27559) Preserve tab selection after submit in [[Special:Preferences]]
X-Git-Tag: 1.31.0-rc.0~20725^2
X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=cc74fcb829f3e8f5388bca98263fde5eae6e7db8;p=lhc%2Fweb%2Fwiklou.git
(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
---
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 );
+ } );
+ }
} );