Toggle menu
309.3K
59
18
530.1K
Hrvatska internetska enciklopedija
Toggle preferences menu
Toggle personal menu
Niste prijavljeni
Your IP address will be publicly visible if you make any edits.

MediaWiki:Gadget-jubilarci.js

MediaWiki interface page

Napomena: nakon snimanja, trebate očistiti memoriju svog internetskog preglednika kako biste odmah vidjeli promjene: Firefox, Google Chrome i drugi preglednici temeljeni na Chromiumu, Safari i Internet Explorer: pritisnite i držite tipku ⇧ Shift i kliknite Osvježi u alatnoj traci Vašeg preglednika.

<!--'''MediaWiki:Gadget-jubilarci.js'''-->//jubilarac
mw.loader.using('oojs-ui-core').done(function() {
    if (location.href.includes('Ivi104/Skripte/Jubilarci') || location.href.includes('Wikipedija:Jubilarni_%C4%8Dlanci/Pomo%C4%87nik')) {
        var textboxjubilarac = document.createElement('input');
        textboxjubilarac.type = 'text';
        textboxjubilarac.id = 'ivi-jubilarac-input';
        textboxjubilarac.style.padding = '6px 12px';
        textboxjubilarac.style.width = '200px';
        document.getElementById('ivi-jubilarac-text').after(textboxjubilarac);

        var jubilaracGumbProvjeri = document.createElement('span');
        jubilaracGumbProvjeri.type = 'button';
        jubilaracGumbProvjeri.classList.add('mw-ui-button', 'mw-ui-progressive');
        jubilaracGumbProvjeri.innerText = 'Provjeri';
        jubilaracGumbProvjeri.addEventListener("click", jubilaracValidacija);

        document.getElementById('ivi-jubilarac-gumb').after(jubilaracGumbProvjeri);
        //Linkback: [[User:Ivi104/Skripte/jubilarci.js]]
        //Linkback: [[MediaWiki:Gadget-jubilarci.js]]

    }

    function jubilaracValidacija() {
        var jubilaracDatum = document.getElementById('ivi-jubilarac-input').value;
        checkJubilaracDatumRegex = new RegExp(/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/);
        if (checkJubilaracDatumRegex.test(jubilaracDatum)) {


            jubilaracMain(jubilaracDatum);
        } else {
            var kriviDatum = document.createElement('span');
            kriviDatum.style.color = 'red';
            kriviDatum.innerHTML = 'Datum <b>' + jubilaracDatum + '</b> nije ispravan!';
            document.getElementById('ivi-jubilarac-status').append(kriviDatum);
        }
    }

    function jubilaracMain(jubilaracDatum) {
        //reset
        document.getElementById("ivi-jubilarac-veliki").innerHTML = "";
        document.getElementById("ivi-jubilarac-mali").innerHTML = "";
        document.getElementById("ivi-jubilarac-sumnjivi-prvi").innerHTML = "";
        document.getElementById("ivi-jubilarac-sumnjivi-drugi").innerHTML = "";
        document.getElementById("ivi-jubilarac-wikitekst").innerHTML = "";

        //pretvorba u lokalni datum
        var dateS = parseDate(jubilaracDatum + ' 00:00');
        var dateE = parseDate(jubilaracDatum + ' 23:59');

        var dateStart = formatDate(localDateToUTC(dateS)).replace(" ", "T").replace(/$/, '.000Z');
        var dateEnd = formatDate(localDateToUTC(dateE)).replace(" ", "T").replace(/$/, '.000Z');
        console.log(dateStart, ' ', dateEnd);

        function parseDate(dateString) {
            var tokens = dateString.split(/[-: ]/g).slice(0, 6).map(function(token) { return parseInt(token, 10); });
            tokens[1] -= 1; // Subtract 1 from month.
            return newInstance(Date, tokens);
        }

        function formatDate(date) {
            function pad(val, pattern) { return (pattern + val).substr(-pattern.length); }
            return date.getFullYear() + '-' + pad(date.getMonth() + 1, '00') + '-' + pad(date.getDate(), '00') + ' ' +
                pad(date.getHours(), '00') + ':' + pad(date.getMinutes(), '00') + ':' + pad(date.getSeconds(), '00');
        }

        function localDateToUTC(localDate) {
            return new Date(localDate.getUTCFullYear(), localDate.getUTCMonth(), localDate.getUTCDate(),
                localDate.getUTCHours(), localDate.getUTCMinutes(), localDate.getUTCSeconds());
        }

        function newInstance(clazz, arguments, scope) {
            return new(Function.prototype.bind.apply(clazz, [scope].concat(arguments)))();
        }


        document.getElementById('ivi-jubilarac-status').innerText = 'provjeravam članke...';

        var jubilaracVelikiArray = [];
        var jubilaracMaliArray = [];
        var jubilaracSumnjiviArrayPrvi = [];
        var jubilaracSumnjiviArrayDrugi = [];

        //1. novi članci - GIP i Dodatak na uneseni datum
        var dohvatiNoveClankeParams = {
                "action": "query",
                "format": "json",
                "prop": "info",
                "generator": "recentchanges",
                "utf8": 1,
                "grcstart": dateStart,
                "grcend": dateEnd,
                "grcdir": "newer",
                "grcnamespace": "0|102",
                "grcprop": "title|timestamp|ids|sizes",
                "grclimit": "max",
                "grctype": "new"
            },
            api = new mw.Api();
        api.get(dohvatiNoveClankeParams).done(function(data) {

            var jubilarniClanciID = Object.keys(data.query.pages);
            for (var i = 0; i < jubilarniClanciID.length; i++) {

                if (parseInt(data.query.pages[jubilarniClanciID[i]].length) >= 3000) {
                    jubilaracVelikiArray.push(data.query.pages[jubilarniClanciID[i]].title);
                } else if (parseInt(data.query.pages[jubilarniClanciID[i]].length) < 3000) {
                    jubilaracMaliArray.push(data.query.pages[jubilarniClanciID[i]].title);
                } else {
                    jubilaracSumnjiviArrayPrvi.push(data.query.pages[jubilarniClanciID[i]].title);
                }

            }


            //wikitext
            var jubilaracTextarea = document.createElement('textarea');
            jubilaracTextarea.id = "ivi-jubilarac-textarea";
            jubilaracTextarea.setAttribute("rows", "20");
            jubilaracTextarea.setAttribute("cols", "60");


            //velikiArray
            jubilaracTextarea.append("== Novi članci započeti !DATUM! (abecednim redom) ==\n");

            jubilaracVelikiArray.sort();
            jubilaracVelikiArray.forEach(function(entry) {
                var elementVeliki = document.createElement('li');
                elementVeliki.innerText = entry;
                document.getElementById("ivi-jubilarac-veliki").append(elementVeliki);
                jubilaracTextarea.append("=== [[" + entry + "]] ===\n");

            });

            //maliArray
            jubilaracTextarea.append("\n== Novi članci započeti !DATUM! manji od 3000 bajtova i nesređeni članci ==\n");
            jubilaracMaliArray.sort();
            jubilaracMaliArray.forEach(function(entry) {
                var elementMali = document.createElement('li');
                elementMali.innerText = entry;
                document.getElementById("ivi-jubilarac-mali").append(elementMali);
                jubilaracTextarea.append("=== [[" + entry + "]] ===\n");
            });


            //sumnjivi prvi - nije prva izmjena
            jubilaracSumnjiviArrayPrvi.sort();
            jubilaracSumnjiviArrayPrvi.forEach(function(entry) {
                var elementSumnjiviPrvi = document.createElement('li');
                elementSumnjiviPrvi.innerText = entry;
                document.getElementById("ivi-jubilarac-sumnjivi-prvi").append(elementSumnjiviPrvi);
            });

            //sumnjivi drugi - ostalo
            jubilaracSumnjiviArrayDrugi.sort();
            jubilaracSumnjiviArrayDrugi.forEach(function(entry) {
                var elementSumnjiviDrugi = document.createElement('li');
                elementSumnjiviDrugi.innerText = entry;
                document.getElementById("ivi-jubilarac-sumnjivi-drugi").append(elementSumnjiviDrugi);
            });

            document.getElementById("ivi-jubilarac-wikitekst").append(jubilaracTextarea);

        });
        document.getElementById('ivi-jubilarac-status').innerText = 'Provjera završena!';
        console.log("Pomočnik za jubilarce-v2 done!");
    }
});