Benutzer:P.Copp/scripts/diffhistory.js
< Benutzer:P.Copp | scripts
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// Zeigt bei Diffs auf nachzusichtenden Seiten eine Übersicht über
// ungesichtete Versionen an.
var diffHistory = {
maxrows : 10,
addHistoryBox : function () {
var d = diffHistory;
//Check if old reviewed page
if (!mw.config.get('wgStableRevisionId') || mw.config.get('wgStableRevisionId') == mw.config.get('wgCurRevisionId')) return;
try {
var oldid = document.getElementById('mw-diff-otitle1').firstChild.firstChild.href.match(/&oldid=([^&]*)/)[1];
var curid = document.getElementById('mw-diff-ntitle1').firstChild.firstChild.href.match(/&oldid=([^&]*)/)[1];
} catch (e) {
mw.log.error('Cannot add history box on this page.')
return;
}
if (mw.config.get('wgStableRevisionId') == oldid && mw.config.get('wgCurRevisionId') == curid) {
//Check if multi diff
var table = document.querySelectorAll('table.diff')[0];
var multi = table.querySelectorAll('td.diff-multi')[0];
if (!multi) return; //all revisions shown
}
//Create history box above the review form
d.box = document.createElement('fieldset');
var legend = d.el('legend','Ungesichtete Versionen');
legend.style.padding = 0;
d.box.appendChild(legend);
d.createToggle();
d.box.appendChild(d.history = document.createElement('ul'));
d.history.appendChild(d.el('li','Lade Versionsgeschichte...'));
d.box.className = 'portlet pBody diffhistorybox';
d.box.style.width = '95%';
var nav = document.getElementById('jump-to-nav');
nav.parentNode.insertBefore(d.box,nav.nextSibling);
//Fetch history
var url = mw.config.get('wgScriptPath') + '/api.php?format=json&callback=diffHistory.show&action=query'
+ '&prop=revisions&rvprop=user|timestamp|size|flags|ids|comment&rvendid='
+ (mw.config.get('wgStableRevisionId') + 1) + '&rvlimit=' + d.maxrows + '&pageids=' + mw.config.get('wgArticleId');
mw.loader.load(url);
},
tsToLocal : function (ts) {
var m = ts.match(/^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z$/);
var d = new Date(Date.UTC(m[1],m[2]-1,m[3],m[4],m[5],m[6]));
var tzdiff = d.getTimezoneOffset() - (new Date()).getTimezoneOffset();
if (tzdiff) d.setTime(d.getTime() + tzdiff * 60 * 1000);
var hour = d.getHours() < 10 ? '0' + d.getHours() : d.getHours();
var min = d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes();
var month = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'][d.getMonth()];
return d.getDate() + '. ' + month + '. ' + d.getFullYear() + ', ' + hour + ':' + min;
},
show : function (res) {
this.history.removeChild(this.history.firstChild);
try {
for (var i in res.query.pages) {
var p = res.query.pages[i];
if (p.revisions) for (j=0;j<p.revisions.length;j++)
this.addEntry(p.revisions[j]);
}
if (res['query-continue']) this.history.appendChild(this.el('li','...'));
}
catch (e) {this.history.appendChild(this.el('li','Fehler beim Laden der Versionen.'));}
},
addLink : function (node,text,target,postfix) {
var link = this.el('a',text);
link.href = target;
node.appendChild(link);
node.appendChild(document.createTextNode(postfix));
},
addEntry : function (rev) {
var li = this.el('li','(');
this.addLink(li,'Aktuell','/w/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName'))
+ '&diff=cur&oldid=' + rev.revid,') (');
this.addLink(li,'Vorherige','/w/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName'))
+ '&diff=prev&oldid=' + rev.revid,') . . ');
this.addLink(li,diffHistory.tsToLocal(rev.timestamp),'/w/index.php?title='
+ encodeURIComponent(mw.config.get('wgPageName')) + '&oldid=' + rev.revid,' . . ');
this.addLink(li,rev.user,mw.config.get('wgArticlePath').replace(/\$1/g,'User:' + rev.user),' (');
this.addLink(li,'Diskussion',mw.config.get('wgArticlePath').replace(/\$1/g,'User talk:' + rev.user),' | ');
this.addLink(li,'Beiträge',mw.config.get('wgArticlePath').replace(/\$1/g,'Special:Contributions/' + rev.user),') ');
if (rev.minor === '') {
var span = this.el('span','K ');
span.className = 'minor';
li.appendChild(span);
}
if (rev.size) li.appendChild(document.createTextNode('(' + rev.size + ' Bytes) '));
var span = this.el('span','(' + (rev.comment || '') + ')');
span.className = 'comment';
li.appendChild(span);
this.history.appendChild(li);
},
toggle : function () {
var t = this.history.style.display == 'none';
this.history.style.display = t ? 'block' : 'none';
this.togglelink.firstChild.nodeValue = t ? 'Einklappen' : 'Ausklappen';
},
createToggle : function () {
var span = this.el('span','[');
this.togglelink = this.el('a','Einklappen');
this.togglelink.href = 'javascript:diffHistory.toggle()';
span.appendChild(this.togglelink);
span.appendChild(document.createTextNode(']'));
span.style.fontSize = 'x-small';
span.style.cssFloat = 'right';
span.style.styleFloat = 'right';
this.box.appendChild(span);
},
el : function (tag,text) {
var el = document.createElement(tag);
el.appendChild(document.createTextNode(text));
return el;
}
};
if (((mw.config.get('wgAction') == 'view') || (mw.config.get('wgAction') == 'historysubmit')) && location.search.indexOf('diff=') > -1) $(document).ready(diffHistory.addHistoryBox);