לדלג לתוכן

משתמש:מוטי בוט/היסטוריה.js

מתוך המכלול, האנציקלופדיה היהודית

לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
//[[משתמש:בוט גאון הירדן/היסטוריית עריכות.js]] מותאם לעורך ממשק
mw.loader.using(['mediawiki.diff.styles', 'mediawiki.api']).then(function () {

    var span = $('<table class="ambox-content plainlinks noprint" align="center" style="border: 1px solid gray;border-radius:1em;clear: both;margin:auto;">' +
        '<tbody><tr>' +
        '<td style="text-align: center;" class="mbox-text"><div id="mySpan"><b></b></div>' +
        '</td></tr></tbody>' +
        '</table>');

    var wikiRevision = [];
    function getPageEdits() {
        var page = mw.config.get('wgPageName');
        var point = '/w/api.php?';
        var data = {
            "action": "query",
            "format": "json",
            "prop": "revisions",
            "indexpageids": 1,
            "titles": page,
            "utf8": 1,
            "rvlimit": "max"
        };

        var request = $.ajax({
            url: point,
            data: data,
            dataType: "json"
        })
            .done(function (result) {
                if (result && result.query) {
                    var revisions = result.query.pages[result.query.pageids[0]].revisions;
                    calculateRevisions(revisions);

                }
            })
    }
    function calculateRevisions(revisions) {
        for (var r in revisions) {
            var comment = revisions[r].comment
            var mytime = revisions[r].timestamp,
                time = calculateTime(mytime);

            var user = revisions[r].user;

            var impo = /(ייבוא מוו?יקיפדיה העברית|גרסה אחת של הדף)/;
            let idkun = /עי?דכון מוו?יקיפדיה גי?רסה (\d+)/;

            if (idkun.test(comment)) {

                var wikiRevid = comment.match(idkun)[1];
                //console.log(wikiRevid);
                msg = "עודכן  " + time + " ע\"י " + user;
                $('#bodyContent').prepend(span);
                //$('.minerva__tab-container').append(span);
                $("#mySpan").append(msg);
                var rvcontinue = false;
                checkWiki(wikiRevid, rvcontinue)
                return;

            } else if (impo.test(comment)) {
                msg = "הייבוא היה  " + time + " ע\"י " + user + " ולא עודכן.";
                $('#bodyContent').prepend(span);
                //$('.minerva__tab-container').append(span);
                $("#mySpan").append(msg);
                if (document.getElementById('wikiRevid')) {
                    var d = document.getElementById('wikiRevid').innerText;
                    wikiRevid = d;

                    var rvcontinue = false;
                    checkWiki(wikiRevid, rvcontinue)

                }
                return;
            }
        }
    }
    function checkWiki(wikiRevid, rvcontinue) {
        var page = mw.config.get('wgPageName');
        if (document.getElementById('wikiPageName')) {
            var p = document.getElementById('wikiPageName').innerText;
            page = p;

        }

        var data = {
            "action": "query",
            "format": "json",
            "prop": "revisions",
            "indexpageids": 1,
            "continue": "||",
            "titles": page,
            "utf8": 1,
            "rvprop": "ids|timestamp|comment|content|slotsize|size",
            "rvendid": wikiRevid,
            "rvdir": "older"
        }
        if (rvcontinue) data.rvcontinue = rvcontinue;
        var apiEndpoint = '/import/get_wik1i.php';
        var request = $.ajax({
            url: apiEndpoint,
            data: data,
            dataType: "json"
        })
            .done(function (result) {
                if (!result || !result.query) {
                    console.log("שגיאה בקבלת גרסאות מוויקיפדיה: " + result.error.code);
                    return;
                }

                if (result.query.pages['-1']) {
                    $("#mySpan").append(
                        " שגיאה בקבלת גרסאות מוויקיפדיה: הדף " + page + " לא נמצא ");
                    return;
                }

                var rev = result.query.pages[result.query.pageids[0]].revisions;
                for (var r = 0; r < rev.length; r++) {
                    wikiRevision.push(rev[r]);
                }


                if (result["continue"]) {
                    rvcontinue = result["continue"].rvcontinue;
                    checkWiki(wikiRevid, rvcontinue);
                } else {

                    all = wikiRevision.length - 1;

                    var newRev = all > 0 ? "\n" + " נערך בוויקיפדיה מאז  " + all + " פעמים." : " אין גרסאות חדשות.";

                    var difflength = wikiRevision[0]['size'] - wikiRevision[all]['size'];

                    if (wikiRevision.length > 1) newRev += " (" + difflength + ")";
                    var firstrevid = wikiRevision[all]['revid'];
                    if (mw.config.get('wgUserGroups').indexOf('editinterface') !== -1 && mw.config.get('wgUserGroups').indexOf('עורך_אספקלריה') !== -1) diff(firstrevid)
                    $("#mySpan").append(newRev)

                }


            });
    }
    function calculateTime(mytime) {
        var lastEdit = new Date(mytime);
        var now = Date.now();

        var distance = now - lastEdit;

        // Time calculations for days, hours, minutes and seconds
        var years = Math.floor(distance / (1000 * 60 * 60 * 24 * 30 * 12));
        var Months = Math.floor(distance / (1000 * 60 * 60 * 24 * 30));
        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
        var d = " ימים, ", h = " שעות, ", m = " דקות, ", s = " שניות ";
        var diff = days + d + hours + h
            + minutes + m + seconds + s;

        var distance;
        var textmonths = Months > 1 ? Months + " חודשים" : " חודש ";
        var textyears = years > 1 ? years + " שנים" : " שנה ";
        const abc = new Date();
        let hour = abc.getHours();

        if (Months >= 12) {
            distance = " לפני " + textyears;
        }
        else if (Months > 0) {
            distance = " לפני " + textmonths;
        }
        else if (days == 0) {

            if (hour < 12 && hours > 12) {
                distance = "אתמול";
            } else {
                distance = "היום";
            }
        } else if (days == 1) {
            distance = "אתמול";
        }
        else if (days > 1) {
            distance = " לפני " + days + " ימים. ";
        }
        return distance;
    }
    function diff(firstrevid) {
        var data = {
            "action": "compare",
            "format": "json",
            "fromrev": firstrevid,
            "torelative": "cur",
            "utf8": 1,
            "origin": "*"
        }
        var apiEndpoint = 'import.hamichlol.org.il';
        var request = $.ajax({
            url: apiEndpoint,
            data: data,
            dataType: "json"
        })
            .done(function (result) {
                if (!result || !result.compare) return;
                console.log(result.compare);
                var diffString = result.compare['*'];
                var msg = "(אין הבדלים)";
                if (diffString === "") {
                    $("#mySpan").append(msg);
                    return;
                }
                var pageParse = '<table id = "difftable">' + diffString + '</table>';
                var but12 = $('<a>').text('הצג הבדלים').click(function () {
                    var mydiv = document.getElementById("difftable");

                    if (mydiv) {

                        $(mydiv).toggle();

                    } else {

                        $("#mySpan").append(pageParse);

                    }
                });
                $("#mySpan").append(" ", but12)
            });
    }
    if (mw.config.get('wgArticleId') > 0 && mw.config.get('wgPageName') != 'עמוד_ראשי' && mw.config.get('wgAction') === 'view' && location.href.indexOf("&diff") == -1) {

        getPageEdits();

    }
})