MediaWiki:Visskjul.js

Fra Wikipedia, den frie encyklopedi

Merk: Etter publisering vil det kanskje være nødvendig å slette mellomlageret i nettleseren din for å se endringene.

  • Firefox / Safari: Hold Shift mens du klikker på Oppdater, eller trykk enten Ctrl+F5 eller Ctrl+R (⌘+R på Mac)
  • Google Chrome: Trykk Ctrl+Shift+R (⌘+Shift+R på Mac)
  • Internet Explorer / Edge: Hold Ctrl mens du trykker på Oppdater eller trykk Ctrl+F5
  • Opera: Ttrykk Ctrl+F5.
// ============================================================
// SKJUL
// ============================================================
 
// Dette er en videreutvikling/tilpassing fra [[:da:MediaWiki:Monobook.js]]
 
// Følgende funksjoner brukes for å skjule navigasjonsbokser m.m.
// Alle <div>-er klassifisert som .skjulRamme får en knapp (.skjulKnapp)
// Når denne trykkes vil alt innholdet av .skjulInnhold <div>-er bli skjult/vist
// Alt vil i utganspunktet være vist, med mindre:
//  - Antallet .skjulRamme overskrider en grense satt med 'NavigationBarShowDefault'
//  - Rammen er også klassifisert .skjult
//
// I navigasjonsbokser vil det i tilleg dukke opp en .skjulBryter
// Denne er usynlig, men gjør det mulig å skjule selv om det er et bilde til høyre i malen
 
 
// Definerer hva som står på knappene
var NavigationBarHide = 'skjul';
var NavigationBarShow = 'vis';
 
// Setter opp maks antall rammer som vises
// overskrides tallet vil alle være skjult
var NavigationBarShowDefault = 2;
 
 
// toggleNavigationBar
// ============================================================
// Skjuler, eller viser, innholdet i rammen
// Parametre:
//   indexNavigationBar: nummeret til rammen som skal endres
 
function toggleNavigationBar(indexNavigationBar)
{
    // Finner knapp og ramme
    var NavToggle = document.getElementById('skjulKnapp' + indexNavigationBar);
    var NavFrame = document.getElementById('skjulRamme' + indexNavigationBar);
 
    if (!NavFrame || !NavToggle) {
        return false;
    }
 
    // Leter gjennom rammen for å finne ting som skal skjules og endrer knapp
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (/skjulInnhold/.test(NavChild.className)) NavChild.style.display = 'none';
        } // end for
        NavToggle.firstChild.data = NavigationBarShow;
 
    // Leter gjennom rammen for å finne ting som skal vises og endrer knapp
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (/skjulInnhold/.test(NavChild.className)) NavChild.style.display = 'block';
        } // end for
        NavToggle.firstChild.data = NavigationBarHide;
    } // end if-else
 
//    return true; <-- synder, men uten denne så klager firefox på at javascriptkoden ikke er gyldig.
 
} // end function
 
// createNavigationBarToggleButton
// ============================================================
// Legger på knapper på alle rammene og skjuler rammer dersom påkrevd
 
function createNavigationBarToggleButton()
{
    var indexNavigationBar = 0;
    var NavFrame;
    // Leter gjennom alle <div>-er
    for(
            var i=0; 
            NavFrame = document.getElementsByTagName("div")[i]; 
            i++
        ) {
        // Dersom en ramme blir funnet
        if (/skjulRamme/.test(NavFrame.className)) {
 
            indexNavigationBar++;
 
            // Gjør klar knappen
            var NavToggle = document.createElement("a");
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
            NavToggle.setAttribute('id', 'skjulKnapp' + indexNavigationBar);
            var NavToggleText = document.createTextNode(NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
 
            // Gjør klar ramme til knappen
            var outerSpan = document.createElement('span');
            outerSpan.className = 'skjulKnapp';
 
            outerSpan.appendChild(document.createTextNode('['));
            outerSpan.appendChild(NavToggle);
            outerSpan.appendChild(document.createTextNode(']'));
 
            // Setter .skjulKnapp som første element i .skjulRamme
            NavFrame.insertBefore(
                outerSpan,
                NavFrame.firstChild
            );
 
            // Dersom det er en navigasjonsboks
            if (/NavFrame/.test(NavFrame.className)) {
                // Gjør klar bryteren
                var NavToggle2 = document.createElement("a");
                NavToggle2.className = 'skjulBryter';
                NavToggle2.setAttribute('id', 'skjulBryter' + indexNavigationBar);
                NavToggle2.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
                var NavToggleText2 = document.createTextNode('\xA0\xA0\xA0');
                NavToggle2.appendChild(NavToggleText2);
 
                // Setter .skjulBryter som første element i .skjulRamme .NavFrame
                NavFrame.insertBefore(
                    NavToggle2,
                    NavFrame.firstChild
                );
            } // end if
 
            // Setter identen til rammen
            NavFrame.setAttribute('id', 'skjulRamme' + indexNavigationBar);
        } // end if
    } // end for
 
    // Dersom det er flere rammer en default skjules de
    if (NavigationBarShowDefault < indexNavigationBar) {
        for(
                var i=1; 
                i<=indexNavigationBar; 
                i++
        ) {
            toggleNavigationBar(i);
        }
    // Hvis ikke, skjules alle merket med .skjult
    } else {
        for(
                var i=1; 
                i<=indexNavigationBar; 
                i++
        ) {
            if (/skjult/.test(document.getElementById('skjulRamme' + i).className)) {
                toggleNavigationBar(i);
            }
        }
    } // end if
} // end function
 
// Legger den sist i rekken over ting som skal gjøres når siden er klar
// aOnloadFunctions[aOnloadFunctions.length] = createNavigationBarToggleButton;
 jQuery( document ).ready( createNavigationBarToggleButton );
 
// END SKJUL
// ============================================================
 
 
// ============================================================
// SAMLE
// ============================================================
 
// Dette er en videreutvikling/tilpassing fra [[:da:MediaWiki:Monobook.js]]
 
// Følgende funksjoner brukes for å slå sammen navigasjonsbokser,
// slik at de får en felles ramme.
// Dette gjøres ved hjelp av klassen NavSamling.
// Mer presist benytter den identene satt med createNavigationBarToggleButton()
// Deretter utelukker den alle vis/skjul-bokser som ikke er NavFrame
 
 
// joinFrames
// ============================================================
// Mottar en gruppe med NavFrames, fra joinNavigationBars(), og slår dem sammen
// Parametre:
//   nodes: Gruppen av rammer som skal spleises
 
function joinFrames(nodes) {
 
    // Lager en div.NavSamling
    var e = document.createElement("div");
    e.className = "NavSamling";
    e.setAttribute("id", "NavSamling");
 
    // Legger til kloner av rammen
    for (i = 0; i < nodes.length; i++) {
        e.appendChild(nodes[i].cloneNode(true));
    }
 
    // Legger alt sammen etter siste ramme i gruppa
    var last_node = nodes[nodes.length-1];
    var parent_node = last_node.parentNode;
    var next_node = last_node.nextSibling;
 
    // Fjerner de gamle rammene
    for (i = 0; i < nodes.length; i++) {
        parent_node.removeChild(nodes[i]);
    }
 
    // Setter inn klonene
    parent_node.insertBefore(e, next_node);
} // end function
 
 
// joinNavigationBars
// ============================================================
// Går gjennom alle skjulRammer på siden og sender grupper til joinFrames()
 
function joinNavigationBars() {
 
    // Lager en matrise som skal fylles med alle .skjulRamme
    var nodes = new Array();
 
    // En funksjon for å gjøre dette enkelt
    var e = function(x) { return document.getElementById('skjulRamme' + x); };
 
    // Alle rammer på siden sjekkes
    for(
        var i=1, NavFrame = e(i), NextNavFrame = e(i+1);
        NavFrame;
        i++, NavFrame = NextNavFrame, NextNavFrame = e(i+1)
    ) {
 
        // Hopp over dersom den er samlet, mangler parentNode eller ikke er NavFrame
        if (!NavFrame.parentNode
                || NavFrame.parentNode.className == "NavSamling"
                || !/NavFrame/.test(NavFrame.className)) {
            continue;
        } // end if
 
        // Dersom neste ramme er inntil, eller en tom linje fra, og er en NavFrame,
        // legges den i node-matrisen
        if ((NavFrame.nextSibling == NextNavFrame ||
                (NavFrame.nextSibling &&
                NavFrame.nextSibling.nodeType == 3 && 
                NavFrame.nextSibling.nextSibling && 
                NavFrame.nextSibling.nextSibling == NextNavFrame
                )
                ) && /NavFrame/.test(NextNavFrame.className)) {
 
            // Er matrisen tom legges denne rammen først
            if (!nodes || nodes.length == 0) nodes = [NavFrame];
 
            // Neste ramme legges bakerst i matrisen
            nodes.push(NextNavFrame);
 
        // Er ikke neste ramme tilfredsstillende sjekkes
        // om man har mange nok for å slå sammen og tømme matrisen
        } else if (nodes.length > 1) {
            joinFrames(nodes);
            nodes = new Array();
        } // end if-else
    } // end for
 
    // Er det flere navigasjonsbokser etter hverandre sendes de til joinFrames()
    if (nodes.length > 1) {
        joinFrames(nodes);
    }
} // end function
 
// Legger den sist i rekken over ting som skal gjøres når siden er klar
// aOnloadFunctions[aOnloadFunctions.length] = joinNavigationBars;
 jQuery( document ).ready( joinNavigationBars );

 
// END SAMLE
// ============================================================

/** Collapsible tables *********************************************************
 *
 * Kopiert fra en-wp: http://en.wikipedia.org/wiki/MediaWiki:Common.js 2010-02-29
 * av bruker:nsaa
 * 
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               [[Wikipedia:NavFrame]].
 *  Maintainers: [[User:R. Koot]]
 */
 
var autoCollapse = 2;
var collapseCaption = "skjul";
var expandCaption = "vis";
 
function collapseTable( tableIndex )
{
    var Button = document.getElementById( "collapseButton" + tableIndex );
    var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
    if ( !Table || !Button ) {
        return false;
    }
 
    var Rows = Table.rows;
 
    if ( Button.firstChild.data == collapseCaption ) {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = "none";
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}
 
function createCollapseButtons()
{
    var tableIndex = 0;
    var NavigationBoxes = new Object();
    var Tables = document.getElementsByTagName( "table" );
 
    for ( var i = 0; i < Tables.length; i++ ) {
        if ($(Tables[i]).hasClass("collapsible")) {
 
            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
            if (!HeaderRow) continue;
            var Header = HeaderRow.getElementsByTagName( "th" )[0];
            if (!Header) continue;
 
            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
            var Button     = document.createElement( "span" );
            var ButtonLink = document.createElement( "a" );
            var ButtonText = document.createTextNode( collapseCaption );
 
            Button.className = "collapseButton";  //Styles are declared in Common.css
 
            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
            ButtonLink.appendChild( ButtonText );
 
            Button.appendChild( document.createTextNode( "[" ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( "]" ) );
 
            Header.insertBefore( Button, Header.childNodes[0] );
            tableIndex++;
        }
    }
 
    for ( var i = 0;  i < tableIndex; i++ ) {
        if ($(NavigationBoxes[i]).hasClass("collapsed") || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass("autocollapse")) ) {
            collapseTable( i );
        } 
        else if ($(NavigationBoxes[i]).hasClass("innercollapse")) {
            var element = NavigationBoxes[i];
            while (element = element.parentNode) {
                if ($(element).hasClass("outercollapse")) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}
 
jQuery( document ).ready( createCollapseButtons );