MediaWiki:Common.js: Unterschied zwischen den Versionen
Aus WIKI LAUER-FISCHER GmbH
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | var cookieName = "sectionVisible" | |
− | + | ||
jQuery(document).ready(function () { | jQuery(document).ready(function () { | ||
− | + | "use strict" | |
− | + | // Register slideToggle() on each category. | |
− | + | var makeOnClick = generateMakeOnClick(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
jQuery("div.generated-sidebar.portlet").each(makeOnClick); | jQuery("div.generated-sidebar.portlet").each(makeOnClick); | ||
makeOnClick.defaultExpanded = false; | makeOnClick.defaultExpanded = false; | ||
Zeile 27: | Zeile 12: | ||
// Registers the slideToggle() function on this and sets up the cookie | // Registers the slideToggle() function on this and sets up the cookie | ||
− | function | + | function generateMakeOnClick() { |
"use strict"; | "use strict"; | ||
− | jQuery(this). | + | var n = 0; |
+ | var makeOnClick = function m() { | ||
+ | if (jQuery(this).children("h3").is(":hidden")) { | ||
+ | return; | ||
+ | } | ||
− | + | var k = n | |
− | + | n++ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | jQuery(this).attr({ "role": "button", "type": "button" }); | |
− | |||
− | + | var expanded = m.defaultExpanded | |
− | |||
− | |||
− | + | var cookie = getCookie(cookieName + k.toString()); | |
− | var | ||
− | |||
− | if ( | + | if (cookie === null) { |
− | + | setStateCookie(k, expanded); | |
− | |||
} | } | ||
else { | else { | ||
− | + | expanded = cookie === "1"; | |
− | |||
} | } | ||
− | jQuery(this).attr("aria-pressed", | + | jQuery(this).children("h3").attr("aria-pressed", expanded ? "true" : "false"); |
+ | jQuery(this).children("h3").addClass(expanded ? "nav-expanded" : "nav-collapsed"); | ||
− | + | if (expanded == false) { | |
− | + | jQuery(this).children("div").hide(); | |
+ | } | ||
− | + | jQuery(this).children("h3").click(function () { | |
− | + | var newExpanded = jQuery(this).attr("aria-pressed") !== "true"; | |
− | + | setStateCookie(k, newExpanded); | |
− | + | if (newExpanded) { | |
+ | jQuery(this).removeClass("nav-collapsed"); | ||
+ | jQuery(this).addClass("nav-expanded"); | ||
+ | } | ||
+ | else { | ||
+ | jQuery(this).removeClass("nav-expanded"); | ||
+ | jQuery(this).addClass("nav-collapsed"); | ||
+ | } | ||
+ | |||
+ | jQuery(this).attr("aria-pressed", newExpanded ? "true" : "false"); | ||
+ | |||
+ | jQuery(this).parent().children("div.pBody:first-of-type").slideToggle('fast'); | ||
+ | }) | ||
} | } | ||
− | + | makeOnClick.defaultExpanded = true | |
− | function | + | |
− | + | return makeOnClick | |
− | + | } | |
− | + | function getCookie(key) { | |
+ | "use strict"; | ||
+ | var cookieQuery = document.cookie.match('(?:^|;)\\s*' + key + '\\s*=\\s*([^;]+)'); | ||
− | + | return cookieQuery === null ? null : cookieQuery.pop(); | |
+ | } | ||
− | + | // Writes the state of the k-th section into a cookie. | |
+ | function setStateCookie(k, expanded) { | ||
+ | "use strict"; | ||
+ | var now = new Date(); | ||
+ | now.setFullYear(now.getFullYear() + 3); | ||
− | + | var expirationDate = now.toUTCString(); | |
− | + | ||
+ | var cookie = cookieName + k.toString() + "=" + (expanded ? "1" : "0") + "; Expires=" + expirationDate + "; path=/"; | ||
+ | |||
+ | document.cookie = cookie; | ||
} | } |
Aktuelle Version vom 13. April 2018, 14:59 Uhr
var cookieName = "sectionVisible" jQuery(document).ready(function () { "use strict" // Register slideToggle() on each category. var makeOnClick = generateMakeOnClick(); jQuery("div.generated-sidebar.portlet").each(makeOnClick); makeOnClick.defaultExpanded = false; jQuery("#p-tb").each(makeOnClick); }); // Registers the slideToggle() function on this and sets up the cookie function generateMakeOnClick() { "use strict"; var n = 0; var makeOnClick = function m() { if (jQuery(this).children("h3").is(":hidden")) { return; } var k = n n++ jQuery(this).attr({ "role": "button", "type": "button" }); var expanded = m.defaultExpanded var cookie = getCookie(cookieName + k.toString()); if (cookie === null) { setStateCookie(k, expanded); } else { expanded = cookie === "1"; } jQuery(this).children("h3").attr("aria-pressed", expanded ? "true" : "false"); jQuery(this).children("h3").addClass(expanded ? "nav-expanded" : "nav-collapsed"); if (expanded == false) { jQuery(this).children("div").hide(); } jQuery(this).children("h3").click(function () { var newExpanded = jQuery(this).attr("aria-pressed") !== "true"; setStateCookie(k, newExpanded); if (newExpanded) { jQuery(this).removeClass("nav-collapsed"); jQuery(this).addClass("nav-expanded"); } else { jQuery(this).removeClass("nav-expanded"); jQuery(this).addClass("nav-collapsed"); } jQuery(this).attr("aria-pressed", newExpanded ? "true" : "false"); jQuery(this).parent().children("div.pBody:first-of-type").slideToggle('fast'); }) } makeOnClick.defaultExpanded = true return makeOnClick } function getCookie(key) { "use strict"; var cookieQuery = document.cookie.match('(?:^|;)\\s*' + key + '\\s*=\\s*([^;]+)'); return cookieQuery === null ? null : cookieQuery.pop(); } // Writes the state of the k-th section into a cookie. function setStateCookie(k, expanded) { "use strict"; var now = new Date(); now.setFullYear(now.getFullYear() + 3); var expirationDate = now.toUTCString(); var cookie = cookieName + k.toString() + "=" + (expanded ? "1" : "0") + "; Expires=" + expirationDate + "; path=/"; document.cookie = cookie; }