Suradnik:Ivi104/Skripte/Neophodjene-promjene-u-doprinosima/Bonc.js

Izvor: Wikipedija

Napomena: Nakon objave možda ćete trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.

  • Firefox / Safari: držite Shift i pritisnite Reload, ili pritisnite bilo Ctrl-F5 ili Ctrl-R (⌘-R na Macu)
  • Google Chrome: pritisnite Ctrl-Shift-R (⌘-Shift-R na Macu)
  • Internet Explorer / Edge: držite Ctrl i kliknite Refresh, ili pritisnite Ctrl-F5
  • Opera: pritisnite Ctrl-F5.
String.prototype.includes = function (str) {
  var returnValue = false;

  if (this.indexOf(str) !== -1) {
    returnValue = true;
  }

  return returnValue;
};

// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md
(function (arr) {
  arr.forEach(function (item) {
    if (item.hasOwnProperty('prepend')) {
      return;
    }
    Object.defineProperty(item, 'prepend', {
      configurable: true,
      enumerable: true,
      writable: true,
      value: function prepend() {
        var argArr = Array.prototype.slice.call(arguments),
          docFrag = document.createDocumentFragment();
        
        argArr.forEach(function (argItem) {
          var isNode = argItem instanceof Node;
          docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
        });
        
        this.insertBefore(docFrag, this.firstChild);
      }
    });
  });
})([Element.prototype, Document.prototype, DocumentFragment.prototype]);

$(document).ready(function() {
    if (location.search.includes('title=Posebno%3ADoprinosi') ||
        location.href.includes('Special:Contributions') || location.href.includes('Posebno:Doprinosi') || location.href.includes('Posebno%3ADoprinosi') || location.search.includes('action=history')) {
        var apirequest = "";
        if (location.search.includes('action=history')) {
            console.log("Na povijesti smo!");
            if (mw.config.get("wgPageName")) {
                console.log("imam ime stranice:" + mw.config.get("wgPageName"));
                apirequest = "/api.php?action=query&format=json&prop=info&list=recentchanges&inprop=&rctitle=" + mw.config.get("wgPageName") + "&rcprop=ids%7Cpatrolled&rclimit=200";
                console.log("povijest - API zahtjev: http://hr.wikipedia.org" +  mw.config.get("wgScriptPath") + apirequest);
            }
        } else {
            console.log("na doprinosima smo!");
            if (mw.config.get("wgRelevantUserName")) { //not null or undefined
                console.log("Imam username: " + mw.config.get("wgRelevantUserName"));
                apirequest = "/api.php?action=query&format=json&prop=info&list=recentchanges&inprop=&rcuser=" + mw.config.get("wgRelevantUserName") + "&rcprop=ids%7Cpatrolled&rclimit=200";
                console.log("doprinosi - API zahtjev: http://hr.wikipedia.org" + mw.config.get("wgScriptPath") + apirequest);
            }
        }

        //console.log("main - req: " + apirequest);
        api = $.getJSON(mw.config.get("wgScriptPath") + apirequest)
            .done(function(query) {
                if (!query.query) { console.log("API fail"); return; } // API fail
                query = query.query;
                query.recentchanges.forEach(function(entry) {
                    if (entry.unpatrolled === "") {
                        var items = document.querySelectorAll('li[data-mw-revid]');
                        for (var i = 0; i < items.length; i++) {
                            if (items[i].getAttribute('data-mw-revid') == entry.revid) {
                                //console.log("unpatrolled revid " + entry.revid);

                                var unpatrolledMarker = document.createElement('abbr');
                                unpatrolledMarker.className = 'unpatrolled';
                                unpatrolledMarker.title = 'Nepregledana izmjena';
                                unpatrolledMarker.innerHTML = '!';
                                unpatrolledMarker.style.display = 'inline';
                                unpatrolledMarker.style.margin = '6px';
                                items[i].prepend(unpatrolledMarker);
                            }
                        }
                    }
                });
            });
    } // if povijest or doprinosi
});