Gebruiker:Rots61/Gadget-LinkTeller.js

Uit Wikikids
Naar navigatie springen Naar zoeken springen

Let op! Nadat je de veranderingen hebt opgeslagen, moet je de cache van je browser nog legen om ze daadwerkelijk te zien.

Mozilla (incl. Firefox) ctrl-shift-r
IE ctrl-f5
Opera f5
Safari cmd-r
Konqueror f5
/**
 * LinkTeller.JS
 * Features: [[WikiKids:LinkTeller]]
 * Made by [[User:Rots61]] 
**/

var api;
var portaal = 0;
var portaal2 = "";
var bestaatnietLT = 0;
var bestaatwelLT = 0;
var alltLT = [];
function startAP() {
    api = new mw.Api();
    // Get the number of articles 
    document.getElementById("ooui-php-9").innerHTML += "<p id='lt-count'>Laden van aantallen...</p>";
    getPageCountAP().then(function (ECarticlecount) { // The new page count we got will be passed here.
        document.getElementById("lt-count").innerHTML =
            "<p>Er zijn " + ECarticlecount + " pagina's die aan deze voorwaarden voldoen.</p>";
    });
}

function getPageCountAP(apiContinue) {
    return api.get({
        action: "query",
        list: "allpages",
        apfrom: urlfrom ? urlfrom : undefined,
        aplimit: "5000",
        apto: urlto ? urlto : undefined,
        apnamespace: urlns ? urlns : undefined,
        apfilterredir: urlredirect ? "nonredirects" : "all",
        apcontinue: apiContinue ? apiContinue.apcontinue : undefined
    }).then(function (data) {
        if (data.continue) {
            return getPageCountAP(data.continue)
                .then(function (addedLength) {
                    return addedLength + data.query.allpages.length;
                });
        } else {
            return data.query.allpages.length;
        }
    });
}

function showLT() {
    document.getElementById("mw-panel").innerHTML += `<nav style="background-color: #89242B" class="vector-menu vector-menu-portal portal" aria-labelledby="p-lt-label"
    role="navigation">
    <h3 id="p-lt-label">
        <span>LinkTeller</span>
    </h3>
    <div class="body vector-menu-content" style="border-bottom: 1px solid #89242B">
        <div style="display: flex; flex-direction: row; gap: 5px; margin-bottom: 5px;">
            <ul>
                <li>
                    <button id="linkbuttonLT" onclick="startLT()">Links</button>
                </li>
                <li>
                    <button disabled style="background: #89242B; color: white;" id="Gadget-LinkTeller-Links">-</button>
                </li>
            </ul>
            <ul>
                <li>
                    <button id="portalenbuttonLT" onclick="startPT()">Portalen</button>
                </li>
                <li>
                    <button disabled style="background: #89242B; color: white;"
                        id="Gadget-LinkTeller-Portalen">-</button>
                </li>
            </ul>
        </div>
        <div id="Gadget-LinkTeller-PortalenLijst"
            style='display: flex; flex-direction: column; font-size: 8pt; margin-bottom: 5px;'>
        </div>
    </div>
</nav>`;
}

function startLT() {
    api = new mw.Api();
    // Get the number of links
    var temp;
    getPageCountLT().then(function () { // The page count we got will be passed here.
		for (var x = 0; x < alltLT.length; x++) {
		    for (const y in alltLT[x]) {
		        if (alltLT[x][y].pageid === undefined) {
		            bestaatnietLT +=1;
		        } else {
		            bestaatwelLT +=1;
		        }
		    }
		}
		document.getElementById("Gadget-LinkTeller-Links").innerHTML = (bestaatwelLT + bestaatnietLT) + ' <br>(' + bestaatwelLT + ', ' + bestaatnietLT + ')';
		bestaatnietLT = 0;
		bestaatwelLT = 0;
    });
}

function getPageCountLT(contin) {
    return api.get({
        generator: "links",
        action: "query",
        prop: "revisions",
        titles: mw.config.get('wgPageName'),
        gplcontinue: contin ? contin.gplcontinue : undefined
    }).then(function (data) {
		if (data.continue) {
            return getPageCountLT(data.continue).then(function () {
                	alltLT.push(data.query.pages);
                });
        } else {
            alltLT.push(data.query.pages);
        }
    });
}

function startPT() {
    api = new mw.Api();
    // Get the number of links
    var temp;
    getPageCountPT().then(function (linkcount) { // The page count we got will be passed here.
        document.getElementById("Gadget-LinkTeller-Portalen").innerHTML = linkcount;
        document.getElementById("Gadget-LinkTeller-PortalenLijst").innerHTML = portaal2;
        portaal2 = "";
        portaal = 0;
    });
}

function getPageCountPT() {
    return api.get({
        action: "query",
        prop: "linkshere",
        titles: mw.config.get('wgPageName'),
        lhlimit: "5000",
        lhnamespace: '100',
    }).then(function (data) {
        temp = data.query.pages;
        temp = temp[mw.config.get('wgArticleId')];
        temp = temp.linkshere;
        if (typeof temp === 'undefined') {
            return 0;
        } else {
            var tempgetal = 0;
            while (typeof temp[tempgetal] !== 'undefined') {
                if (temp[tempgetal]["title"].startsWith("Portaal:")) {
                    portaal += 1;
                    portaal2 += '<a href="https://wikikids.nl/' + temp[tempgetal]["title"] + '">' + temp[tempgetal]["title"] + '</a>';
                }
                tempgetal += 1;
            }
            return portaal;
        }
    });
}

if (mw.config.get('wgNamespaceNumber') === -1 && (mw.config.get('wgTitle') === "AllePaginas" || mw.config.get('wgTitle') === "Allepaginas")
) {
    var urlfrom = mw.util.getParamValue('from');
    var urlto = mw.util.getParamValue('to');
    var urlns = mw.util.getParamValue('namespace');
    var urlredirect = mw.util.getParamValue('hideredirects');
    $.when($.ready, mw.loader.using(['mediawiki.util'])).done(startAP());
} else if (mw.config.get('wgArticleId') > 1) {
    $.when(mw.loader.using('mediawiki.util'), $.ready).then(showLT);
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-LinkTeller.js&oldid=799817"