MediaWiki:Common.js

Aus WIKI LAUER-FISCHER GmbH
Version vom 13. April 2018, 14:59 Uhr von LF Redaktion3 (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
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;
}