MediaWiki:Gadget-revision.js

Aus UnderMine Wiki
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);