Suradnik:Ivi104/Skripte/RevisionID.js
< Suradnik:Ivi104 | Skripte
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.
/*** Show Revision ID ***/
// Shows the revison id on history pages
// Documentation at [[User:BrandonXLF/ShowRevisionID]]
// By [[User:BrandonXLF]]
/* jshint esversion: 6, unused: true */
$(document).ready(function () {
var lang = {
"default": {
dateTimeSplit: null,
DTSplit: null,
patrolString: "Patrolled by ",
summaryMale: 'Restored revision [[Special:Diff/$1|$1]] entered by $4',
summaryFemale: 'Restored revision [[Special:Diff/$1|$1]] entered by $4',
copied: 'Copied: ',
contribsPageLocal: 'Special:Contributions',
diffPageLocal: 'Special:Diff'
},
"en": {
dateTimeSplit: 'as of ',
DTSplit: ', ',
patrolString: "Patrolled by ",
summaryMale: 'Restored revision [[Special:Diff/$1|$1]] entered on $2 at $3 by $4',
summaryFemale: 'Restored revision [[Special:Diff/$1|$1]] entered on $2 at $3 by $4',
copied: 'Copied: ',
contribsPageLocal: 'Special:Contributions',
diffPageLocal: 'Special:Diff'
},
"hr": {
dateTimeSplit: 'od ',
DTSplit: ' u ',
patrolString: "Ophodio ",
summaryMale: "Vraćanje na inačicu [[Special:Diff/$1|$1]] koju je $3 u $2 unio $4",
summaryFemale: "Vraćanje na inačicu [[Special:Diff/$1|$1]] koju je $3 u $2 unijela $4",
copied: 'Kopirano: ',
contribsPageLocal: 'Posebno:Dopinosi',
diffPageLocal: 'Posebno:Diff'
},
"bs": {
dateTimeSplit: 'na dan ',
DTSplit: ' u ',
patrolString: "Odobrio ",
summaryMale: "Vraćanje na inačicu [[Special:Diff/$1|$1]] koju je $3 u $2 unio $4",
summaryFemale: "Vraćanje na inačicu [[Special:Diff/$1|$1]] koju je $3 u $2 unijela $4",
copied: 'Kopirano: ',
contribsPageLocal: 'Posebno:Dopinosi',
diffPageLocal: 'Posebno:Diff'
},
"sr": {
dateTimeSplit: 'на датум ',
DTSplit: ' у ',
patrolString: "Испатролирао ",
summaryMale: "Ручно враћање на измену бр. [[Special:Diff/$1|$1]] коју је унео $4 на датум $3 у $2",
summaryFemale: "Ручно враћање на измену бр. [[Special:Diff/$1|$1]] коју је унела $4 на датум $3 у $2",
copied: 'Копирано: ',
contribsPageLocal: 'Посебно:Доприноси',
diffPageLocal: 'Посебно:Разлике'
},
"sr-el": {
dateTimeSplit: 'na dan ',
DTSplit: ' u ',
patrolString: "Ispatrolirao ",
summaryMale: "Ručno vraćanje na izmenu br. [[Special:Diff/$1|$1]] koju je uneo $4 na datum $3 u $2",
summaryFemale: "Ručno vraćanje na izmenu br. [[Special:Diff/$1|$1]] koju je unela $4 na datum $3 u $2",
copied: 'Kopirano: ',
contribsPageLocal: 'Posebno:Doprinosi',
diffPageLocal: 'Posebno:Razlike'
},
"sr-ec": {
dateTimeSplit: 'на датум ',
DTSplit: ' у ',
patrolString: "Испатролирао ",
summaryMale: "Ручно враћање на измену бр. [[Special:Diff/$1|$1]] коју је унео $4 на датум $2 у $3",
summaryFemale: "Ручно враћање на измену бр. [[Special:Diff/$1|$1]] коју је унела $4 на датум $2 у $3",
copied: 'Копирано: ',
contribsPageLocal: 'Посебно:Доприноси',
diffPageLocal: 'Посебно:Разлике'
},
};
var langVar = mw.config.exists('wgUserVariant') ? mw.config.get('wgUserVariant') : mw.config.get('wgUserLanguage');
console.log("RevID LANG:", langVar);
var config = lang["default"];
if (lang[langVar]) {
config = lang[langVar];
}
var items;
if (mw.config.get("wgCanonicalSpecialPageName") == "Contributions" || mw.config.get("wgAction") == "history") {
items = document.querySelectorAll('li[data-mw-revid]');
for (var i = 0; i < items.length; i++) {
items[i].getElementsByClassName('mw-changeslist-date')[0].after(document.createTextNode(' | ' + items[i].getAttribute('data-mw-revid')));
}
} else if (location.href.includes('Special:Diff') || mw.config.get("wgDiffNewId") != null ||
location.href.includes('diff') || location.href.includes('oldid')) {
mw.hook('wikipage.diff').add(function () {
osvjeziRevID(config);
console.log("RevID: wikipage.diff hook fired");
});
}
});
function kopirajSazetak(revid, suradnik, datumiVrijeme, config) {
var config = JSON.parse(config);
var vrijeme = '';
var datum = '';
if (datumiVrijeme) {
vrijeme = datumiVrijeme.split(config.DTSplit)[0];
datum = datumiVrijeme.split(config.DTSplit)[1];
}
var spolAPI = $.getJSON(mw.config.get("wgScriptPath") + "/api.php?action=query&format=json&prop=&list=users&meta=&usprop=gender&ususers=" + suradnik)
.done(function (query) {
if (!query.query) { return; } // API fail
query = query.query;
var gender = (typeof query.users[0].gender == "string") ? query.users[0].gender : null;
var string, dummy;
if (gender == "female") {
string = config.summaryFemale.replaceAll('$1', revid).replace('$2', datum).replace('$3', vrijeme).replace('$4', suradnik);
}
else {
string = config.summaryMale.replaceAll('$1', revid).replace('$2', datum).replace('$3', vrijeme).replace('$4', suradnik);
}
//kopiraj u clipboard
dummy = $('<input>').val(string).appendTo('body').select();
document.execCommand('copy');
document.body.lastElementChild.remove();
console.log(config.copied + string);
});
}
function osvjeziRevID(config) {
var stringHrefPrev = $('#mw-diff-otitle1').children('strong').find('a', 'span>a').attr('href');
var stringHrefCurr = $('#mw-diff-ntitle1').children('strong').find('a', 'span>a').attr('href');
const urlParamsPrev = new URLSearchParams(stringHrefPrev);
const urlParamsCurr = new URLSearchParams(stringHrefCurr);
var revidPrev = stringHrefPrev && urlParamsPrev.get('oldid');
var revidCurr = stringHrefCurr && urlParamsCurr.get('oldid');
var userNamePrev = document.getElementsByClassName('mw-userlink')[0].children[0].innerHTML;
var userNameCurr = document.getElementsByClassName('mw-userlink')[1].children[0].innerHTML;
if (config.dateTimeSplit) {
try {
var datumiVrijemePrev = $('#mw-diff-otitle1').children('strong').find('a', 'span>a')[0].innerHTML.split(config.dateTimeSplit)[1];
var datumiVrijemeCurr = $('#mw-diff-ntitle1').children('strong').find('a', 'span>a')[0].innerHTML.split(config.dateTimeSplit)[1];
} catch (e) {
return; // Uncaught TypeError: Cannot read property 'innerHTML' of undefined
}
}
var idValuePrev = document.createElement('abbr');
idValuePrev.className = 'revID-ivi';
idValuePrev.innerHTML = ' | ' + revidPrev + ' | ';
var idValueCurr = document.createElement('abbr');
idValueCurr.className = 'revID-ivi';
idValueCurr.innerHTML = ' | ' + revidCurr + ' | ';
var patrolString = 'Patrolled by ';
if (config.dateTimeSplit) {
idValuePrev.addEventListener('click', function () {
kopirajSazetak(revidPrev, userNamePrev, datumiVrijemePrev, JSON.stringify(config));
});
idValueCurr.addEventListener('click', function () {
kopirajSazetak(revidCurr, userNameCurr, datumiVrijemeCurr, JSON.stringify(config));
});
patrolString = config.patrolString;
} else { // no config found
idValuePrev.style.color = 'darkred';
idValueCurr.style.color = 'darkred';
idValuePrev.addEventListener('click', function () {
kopirajSazetak(revidPrev, userNamePrev, null, JSON.stringify(config));
});
idValueCurr.addEventListener('click', function () {
kopirajSazetak(revidCurr, userNameCurr, null, JSON.stringify(config));
});
}
var wgPageName = mw.config.get('wgCanonicalNamespace') == 'Special' ? mw.config.get('wgRelevantPageName') : mw.config.get('wgPageName');
// check if wiki uses FlaggedRevs
var FlaggedRevsCheck = {
"action": "query",
"format": "json",
"meta": "siteinfo",
"siprop": "extensions"
};
var wikiHasFlaggedRevs = 0;
var api = new mw.Api();
api.get(FlaggedRevsCheck).done(function (data) {
if (data.query.extensions.some(e => e.name == 'FlaggedRevs')) {
wikiHasFlaggedRevs = 1;
}
}).then(function () {
var checkPatroller = {};
if (wikiHasFlaggedRevs) {
checkPatroller = {
"action": "query",
"format": "json",
"list": "logevents",
"leprop": "details|user|type",
"letype": "review",
"letitle": wgPageName
};
api.get(checkPatroller).done(function (query) {
if (!query.query) { return; } // API fail
query = query.query;
query.logevents.forEach(function (entry) {
if (revidPrev > entry.params[1] && revidPrev <= entry.params[0] && entry.action.includes("approve")) {
idValuePrev.setAttribute('title', patrolString + entry.user + (entry.action == "approve-a" ? ' (auto)' : ''));
}
if (revidCurr > entry.params[1] && revidCurr <= entry.params[0] && entry.action.includes("approve")) {
idValueCurr.setAttribute('title', patrolString + entry.user + (entry.action == "approve-a" ? ' (auto)' : ''));
}
});
});
} else {
checkPatroller = {
"action": "query",
"format": "json",
"list": "logevents",
"leprop": "details|user",
"letype": "patrol",
"letitle": wgPageName
};
api.get(checkPatroller).done(function (query) {
if (!query.query) { return; } // API fail
query = query.query;
query.logevents.forEach(function (entry) {
if (entry.params.curid == revidPrev) {
idValuePrev.setAttribute('title', patrolString + entry.user);
} else if (entry.params.curid == revidCurr) {
idValueCurr.setAttribute('title', patrolString + entry.user);
}
});
});
}
$('#mw-diff-otitle1').children('strong').find('a', 'span>a')[0].after(idValuePrev);
$('#mw-diff-ntitle1').children('strong').find('a', 'span>a')[0].after(idValueCurr);
});
}