مدیاویکی:Gadget-sidebarToggle.js: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۲۶: | خط ۲۶: | ||
*/ | */ | ||
var msg = { | var msg = { | ||
toggleTabText: "Toggle sidebar", | |||
toggleTabTitle: "Hide or show the sidebar" | |||
}; | |||
/** | |||
* Translations for messages displayed by this script. | |||
* To have your translations added, please contact this script's maintainer. | |||
*/ | |||
var translations = { | |||
fa: { | |||
toggleTabText: "تغییر وضعیت نوار سمت راست", | toggleTabText: "تغییر وضعیت نوار سمت راست", | ||
toggleTabTitle: "مخفی یا نمایش نوار سمت راست", | toggleTabTitle: "مخفی یا نمایش نوار سمت راست", | ||
} | |||
}; | }; | ||
خط ۳۸: | خط ۴۹: | ||
* The text direction of the page. | * The text direction of the page. | ||
*/ | */ | ||
var dir = " | var dir = "ltr"; | ||
/** | /** | ||
خط ۴۹: | خط ۶۰: | ||
*/ | */ | ||
var nodes = {}; | var nodes = {}; | ||
/** | |||
* Equivalent CSS property names for RTL pages. | |||
*/ | |||
var cssRTLProps = { | |||
"left": "right", | |||
"margin-left": "margin-right" | |||
}; | |||
/** | |||
* Changes the CSS property name as appropriate for the page's text direction. | |||
* @param prop {string} The CSS property name to be changed. | |||
*/ | |||
function flipCSSProp(prop) { | |||
if ( dir === "rtl" && cssRTLProps[prop] ) { | |||
return cssRTLProps[prop]; | |||
} | |||
return prop; | |||
} | |||
/** | /** | ||
* Loads the current state from sessionStorage (preferred) or localStorage. | * Loads the current state from sessionStorage (preferred) or localStorage. | ||
خط ۱۰۰: | خط ۱۳۰: | ||
mwPanelNonIE: {opacity: 0}, | mwPanelNonIE: {opacity: 0}, | ||
notSidebar: {}, | notSidebar: {}, | ||
leftNavigation: {} | leftNavigation: {} | ||
}; | }; | ||
animations.mwPanelIE[ " | animations.mwPanelIE[ flipCSSProp("left") ] = "-10em"; | ||
animations.mwPanelNonIE[ " | animations.mwPanelNonIE[ flipCSSProp("left") ] = "-10em"; | ||
animations.notSidebar[ "margin- | animations.notSidebar[ flipCSSProp("margin-left") ] = 0; | ||
animations.leftNavigation[ " | animations.leftNavigation[ flipCSSProp("left") ] = "1em"; | ||
if ( isOldIE ) { | if ( isOldIE ) { | ||
nodes.$mwPanel.animate( animations.mwPanelIE, duration, function() { | nodes.$mwPanel.animate( animations.mwPanelIE, duration, function() { | ||
خط ۱۲۶: | خط ۱۵۳: | ||
nodes.$leftNavigation.animate( animations.leftNavigation, duration); | nodes.$leftNavigation.animate( animations.leftNavigation, duration); | ||
$("collsidebar").css("background-image", "url('/images/thumb/c/cf/Left.png/20px-Left.png')"); | |||
state = "collapsed"; | state = "collapsed"; | ||
خط ۱۴۶: | خط ۱۷۵: | ||
}; | }; | ||
animations.mwPanelIE[ " | animations.mwPanelIE[ flipCSSProp("left") ] = "-0.01em"; | ||
animations.mwPanelNonIE[ " | animations.mwPanelNonIE[ flipCSSProp("left") ] = 0; | ||
animations.notSidebar[ "margin- | animations.notSidebar[ flipCSSProp("margin-left") ] = "10em"; | ||
animations.leftNavigation[ " | animations.leftNavigation[ flipCSSProp("left") ] = "10em"; | ||
if ( isOldIE ) { | if ( isOldIE ) { | ||
nodes.$mwPanel.animate( animations.mwPanelIE, duration, function () { | nodes.$mwPanel.animate( animations.mwPanelIE, duration, function () { | ||
nodes.$mwPanel.css( " | nodes.$mwPanel.css( flipCSSProp("left"), "0em" ); | ||
}); | }); | ||
} else { | } else { | ||
خط ۱۵۹: | خط ۱۸۸: | ||
} | } | ||
nodes.$content.css( "background-image", "" ); | |||
nodes.$notSidebar.animate( animations.notSidebar, duration ); | nodes.$notSidebar.animate( animations.notSidebar, duration ); | ||
nodes.$leftNavigation.animate( animations.leftNavigation, duration ); | nodes.$leftNavigation.animate( animations.leftNavigation, duration ); | ||
خط ۱۸۸: | خط ۲۱۸: | ||
collapse( 0 ); | collapse( 0 ); | ||
} | } | ||
} | } | ||
نسخهٔ ۲ آوریل ۲۰۱۹، ساعت ۱۲:۳۴
/*!
* 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: "Toggle sidebar",
toggleTabTitle: "Hide or show the sidebar"
};
/**
* Translations for messages displayed by this script.
* To have your translations added, please contact this script's maintainer.
*/
var translations = {
fa: {
toggleTabText: "تغییر وضعیت نوار سمت راست",
toggleTabTitle: "مخفی یا نمایش نوار سمت راست",
}
};
/**
* Whether the web browser is Internet Explorer before version 9.
*/
var isOldIE = false;
/**
* The text direction of the page.
*/
var dir = "ltr";
/**
* The current (or default) state of the sidebar.
*/
var state = "collapsed";
/**
* A cache of jQuery objects.
*/
var nodes = {};
/**
* Equivalent CSS property names for RTL pages.
*/
var cssRTLProps = {
"left": "right",
"margin-left": "margin-right"
};
/**
* Changes the CSS property name as appropriate for the page's text direction.
* @param prop {string} The CSS property name to be changed.
*/
function flipCSSProp(prop) {
if ( dir === "rtl" && cssRTLProps[prop] ) {
return cssRTLProps[prop];
}
return prop;
}
/**
* 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: {}
};
animations.mwPanelIE[ flipCSSProp("left") ] = "-10em";
animations.mwPanelNonIE[ flipCSSProp("left") ] = "-10em";
animations.notSidebar[ flipCSSProp("margin-left") ] = 0;
animations.leftNavigation[ flipCSSProp("left") ] = "1em";
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);
$("collsidebar").css("background-image", "url('/images/thumb/c/cf/Left.png/20px-Left.png')");
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[ flipCSSProp("left") ] = "-0.01em";
animations.mwPanelNonIE[ flipCSSProp("left") ] = 0;
animations.notSidebar[ flipCSSProp("margin-left") ] = "10em";
animations.leftNavigation[ flipCSSProp("left") ] = "10em";
if ( isOldIE ) {
nodes.$mwPanel.animate( animations.mwPanelIE, duration, function () {
nodes.$mwPanel.css( flipCSSProp("left"), "0em" );
});
} else {
nodes.$mwPanel.animate( animations.mwPanelNonIE, duration );
}
nodes.$content.css( "background-image", "" );
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 );