MediaWiki:Gadget-revision.js
Zur Navigation springen
Zur Suche springen
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
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
;(function($, mw) {
'use strict';
var config = mw.config.get([
'wgAction',
'wgPageContentModel',
'wgTitle'
]);
// add checkbox
function init() {
if (
!(['edit', 'submit'].includes(config.wgAction)) ||
config.wgPageContentModel !== 'wikitext'
) return;
var checkbox = new OO.ui.CheckboxInputWidget({
value: 'revision'
});
$('.editOptions > .editCheckboxes > .oo-ui-layout').append(
new OO.ui.FieldLayout( checkbox, { label: 'Mit EN-Wiki synchronisiert?', align: 'inline' } ).$element
);
document.querySelector('input[value="revision"]').addEventListener('click', function() {
sessionStorage.setItem("revision-" + config.wgTitle.replace(' ', '_'), this.checked);
});
}
mw.loader.using( ['oojs-ui-core'] ).then(init);
mw.hook('postEdit').add(function() {
console.log('SAVE');
console.log(window.checked);
var name = "revision-" + mw.config.values.wgTitle.replace(' ', '_');
if (!sessionStorage.getItem(name)) return;
sessionStorage.removeItem(name);
function log(msg) {
console.log('[Revision]', msg);
}
var api = new mw.Api();
log('load saveData');
function saveData(en_rev) {
api.edit('MediaWiki:Gadget-revision.js/data.json', function(revision) {
var result = JSON.parse(revision.content);
result[config.wgTitle] = en_rev;
return {
text: JSON.stringify(result, Object.keys(result).sort(), '\t'),
summary: '[[' + config.wgTitle + ']] synchronisiert.',
notminor: true,
recreate: true,
bot: true,
contentformat: 'application/json',
contentmodel: 'json'
};
});
}
log('load getRevision');
function getRevision(en_name) {
return $.getJSON('https://undermine.wiki.gg/api.php' +
'?action=query' +
'&titles=' + encodeURIComponent(en_name) +
'&prop=info' +
'&formatversion=2' +
'&format=json');
}
log('load getLanglinks');
function getLanglinks() {
return $.getJSON('https://undermine.wiki.gg/de/api.php' +
'?action=query' +
'&titles=' + encodeURIComponent(config.wgTitle) +
'&prop=langlinks' +
'&lllang=en' +
'&formatversion=2' +
'&format=json');
}
log('execute functions');
getLanglinks().then(function(data) {
if (data.query) {
log('Interwikis erfolgreich geladen.');
} else {
log('Fehler beim Abfragen der Interwikis.');
return;
}
var d = data.query.pages[0];
if (d.langlinks) {
getRevision(d.langlinks[0].title).then(function(data) {
if (data.query) {
var page = data.query.pages[0];
if (page.missing) return;
saveData(data.query.pages[0].lastrevid);
} else {
log('Fehler beim Abfragen der Revisionsnummern.');
return;
}
});
}
});
});
console.log('[Revision]', 'Gadget loaded!');
})(window.jQuery, window.mediaWiki);