Suradnik:Ivi104/Skripte/Neophođene-promjene-u-doprinosima.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.
/* jshint esversion: 6 */
$(document).ready(function () {
	if (mw.config.get("wgCanonicalSpecialPageName") == "Contributions" || mw.config.get("wgAction") == "history") {

		var api = new mw.Api();
		var request = {
			"action": "query",
			"format": "json",
			"prop": "info",
			"list": "recentchanges",
			"rcprop": "ids|patrolled",
			"rcshow": "!patrolled",
			"rclimit": "200"
		};
		
		var navbar;
		var spanZaBrojac = document.createElement('span');


		if (mw.config.get("wgAction") == "history") {
			if (mw.config.get("wgPageName")) {
				console.log("imam ime stranice!");

				request.rctitle = mw.config.get("wgPageName");
				navbar = document.querySelector('.mw-checkbox-toggle-controls');
				if (navbar) navbar.append(spanZaBrojac);
			}

		} else if (mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
			if (mw.config.get("wgRelevantUserName")) { //not null or undefined
				console.log("Imam username!");

				request.rcuser = mw.config.get("wgRelevantUserName");
				navbar = document.querySelector('.mw-pager-body');
				if (navbar) navbar.prepend(spanZaBrojac);
			}
		}


		api.get(request).done(function(data) {
			if (!data.query) { console.log("API fail"); return; } // API fail
			data = data.query;
			mw.util.addCSS('.row-unpatrolled { background-color: #fff0c2 !important; }');
			//postavi brojač neophođenih
			spanZaBrojac.innerHTML = ' | <span id="ivi-span-brojacNeophodjenih">' + data.recentchanges.length + '</span> neophođeno';

			data.recentchanges.forEach((entry) => {
				if (entry.unpatrolled === "") {
					document.querySelectorAll('li[data-mw-revid]').forEach((item) => {

						if (item.getAttribute('data-mw-revid') == entry.revid) {
							var unpatrolledMarker = document.createElement('abbr');
							unpatrolledMarker.className = 'unpatrolled';
							unpatrolledMarker.title = 'Nepregledana izmjena';
							unpatrolledMarker.innerHTML = '!';
							unpatrolledMarker.style.display = 'inline';
							unpatrolledMarker.style.padding = '10px';

							unpatrolledMarker.onclick = () => { ophodiIzmjenu(entry.revid); };
							item.classList.add('row-unpatrolled');
							item.prepend(unpatrolledMarker);
						}
					});
				}
			});
		});
	}
});


function ophodiIzmjenu(revid) {
	var patrolSelectedEditParams = {
		"action": "patrol",
		"format": "json",
		"tags": (mw.config.get('wgUserName') == "Ivi104" ? "" : "patrol-api"),
		"revid": revid
	};
	var api = new mw.Api();
	var patrolPromise = api.postWithToken('patrol', patrolSelectedEditParams);

	patrolPromise.done(function (data) {
		mw.notify('Izmjena ' + revid + ' označena je kao ophođena.');
		document.querySelector('li[data-mw-revid="' + revid + '"]').classList.remove('row-unpatrolled');
		document.querySelector('li[data-mw-revid="' + revid + '"]').getElementsByTagName('abbr')[0].remove();
		document.querySelector('#ivi-span-brojacNeophodjenih').innerHTML -= 1;
	});
	patrolPromise.fail(function (data) {
		mw.notify('Izmjenu ' + revid + ' nije moguće ophoditi.');
	});
}