مدیاویکی:Gadget-sidebarToggle.js

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
/*!
 * Hide Vector sidebar
 * http://en.wikipedia.org/wiki/User:PleaseStand/Hide_Vector_sidebar
 *
 * Originally imported from revision 365211954 as of 2010-06-01 from
 * [[User:Nihiltres/nothingthree.js]]. It has had some modification from that
 * version to isolate it within the script collection and further improve it.
 *
 * Copyright 2010 Wikipedia user Nihiltres
 * Copyright 2010-2012 Wikipedia user PleaseStand
 *
 * Licensed under the Creative Commons Attribution-Share-Alike 3.0 Unported License and
 * the GNU Free Documentation License (unversioned); pick the license(s) of your choice.
 *
 * http://creativecommons.org/licenses/by-sa/3.0/
 * http://www.gnu.org/copyleft/fdl.html
 */
 
(function( $, undefined ) {
 
"use strict";
 
/**
 * Messages displayed by this script (in English).
 * Any translations (see below) replace these at runtime.
 */
var msg = {
		toggleTabText: "تغییر وضعیت نوار سمت راست",
		toggleTabTitle: "مخفی یا نمایش نوار سمت راست",
};
 
/**
 * Whether the web browser is Internet Explorer before version 9.
 */
var isOldIE = false;
 
/**
 * The text direction of the page.
 */
var dir = "rtl";
 
/**
 * The current (or default) state of the sidebar.
 */
var state = "collapsed";
 
/**
 * A cache of jQuery objects.
 */
var nodes = {};

/**
 * Loads the current state from sessionStorage (preferred) or localStorage.
 * If there is no item in storage, this function does nothing.
 */
function loadState() {
	state = ( window.sessionStorage && sessionStorage.getItem("sidebarToggle") ) ||
	        ( window.localStorage && localStorage.getItem("sidebarToggle") ) ||
	        state;
}
 
/**
 * Saves the current state in both sessionStorage and localStorage.
 */
function saveState() {
 
	if ( window.sessionStorage ) {
		sessionStorage.setItem( "sidebarToggle", state );
	}
 
	if ( window.localStorage ) {
		localStorage.setItem( "sidebarToggle", state );
	}
 
}
 
/**
 * Reacts to a click on the "Toggle sidebar" button.
 */
function toggle() {
 
	if ( state === "collapsed" ) {
		expand( 400 );
	} else {
		collapse( 400 );
	}
 
	saveState();
 
}
 
/**
 * Collapses the sidebar.
 * @param duration {mixed} Animation duration passed to jQuery.
 */
function collapse( duration ) {
 
	var animations = {
		mwPanelIE: {},
		mwPanelNonIE: {opacity: 0},
		notSidebar: {},
		leftNavigation: {},
		collsidebar: {},
	};
 
	animations.mwPanelIE[ "right" ] = "-10em";
	animations.mwPanelNonIE[ "right" ] = "-10em";
	animations.notSidebar[ "margin-right" ] = 0;
	animations.leftNavigation[ "right" ] = "1em";

 	$("collsidebar").css("background-image", "url('/images/thumb/c/cf/Left.png/20px-Left.png')");

	if ( isOldIE ) {
		nodes.$mwPanel.animate( animations.mwPanelIE, duration, function() {
			nodes.$mwPanel.css( "visibility", "hidden");
		});
	} else {
		nodes.$mwPanel.animate( animations.mwPanelNonIE, duration, function() {
			nodes.$mwPanel.css( "visibility", "hidden");
		});
	}
 
	nodes.$notSidebar.animate( animations.notSidebar, duration, function() {
		nodes.$content.css( "background-image", "none" );
	});
 
	nodes.$leftNavigation.animate( animations.leftNavigation, duration);
 
	state = "collapsed";
 
}
 
/**
 * Expands the sidebar.
 * @param duration {mixed} Animation duration passed to jQuery.
 */
function expand( duration ) {
 
	nodes.$mwPanel.css( "visibility", "" );
 
	var animations = {
		mwPanelIE: {},
		mwPanelNonIE: {opacity: 1},
		notSidebar: {},
		leftNavigation: {}
	};
 
	animations.mwPanelIE[ "right" ] = "-0.01em";
	animations.mwPanelNonIE[ "right" ] = 0;
	animations.notSidebar[ "margin-right" ] = "10em";
	animations.leftNavigation[ "right" ] = "10em";
 
	if ( isOldIE ) {
		nodes.$mwPanel.animate( animations.mwPanelIE, duration, function () {
			nodes.$mwPanel.css( "right", "0em" );
		});
	} else {
		nodes.$mwPanel.animate( animations.mwPanelNonIE, duration );
	}
 
	nodes.$notSidebar.animate( animations.notSidebar, duration );
	nodes.$leftNavigation.animate( animations.leftNavigation, duration );
 
	state = "expanded";
 
}
 
/**
 * Called when the DOM is ready for manipulation.
 */
function ready() {
 
	// Populate jQuery object cache.
	nodes.$mwPanel = $("#mw-panel");
	nodes.$content = $("#content");
	nodes.$notSidebar = $("#content, #mw-head-base, #footer");
	nodes.$leftNavigation = $("#left-navigation");
 
	// Show the toggle tab.
	$("<button id='collsidebar'></button>")
		.prop( "title", msg.toggleTabTitle )
		//.text( msg.toggleTabText )
		.click( toggle )
		.insertAfter("#mw-panel");
 
	// Respect the saved state.
	if ( state === "collapsed" ) {
		collapse( 0 );
	}

}
 
/**
 * Initialization code
 */
function main() {
 
	if ( mw.config.get("skin") !== "vector" ) {
		return;
	}
 
	// Load translations and saved state.
	dir = document.documentElement.dir;
	$.extend( msg, translations[document.documentElement.lang] );
	loadState();
 
	// Detect Internet Explorer <= 8
	var profile = $.client.profile();
	isOldIE = ( profile.name === "msie" && profile.versionNumber < 9 );
 
	$(ready);
 
}
 
mw.loader.using( "jquery.client", main );
 
})( jQuery );