Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* [[d:User:Yair rand/WikidataInfo.js]] */
mw.loader.load("//www.wikidata.org/w/index.php?title=User:Yair rand/WikidataInfo.js&action=raw&ctype=text/javascript");

$(function() {
	$('#wpSummaryLabel .oo-ui-labelElement-label').text('Grund');
	var queryDict = {};
	location.search.substr(1).split("&").forEach(function(item) {
		queryDict[item.split("=")[0]] = item.split("=")[1];
	});
	if (window.location.href.indexOf('warnifexists') !== -1) {
		if (mw.config.get( 'wgArticleId' ) !== 0) alert('Artikel existeert!');
	}
	if (window.location.href.indexOf('resizeTextbox') !== -1) {
		$('#wpTextbox1').css('height', queryDict.resizeTextbox);
	}
	
	var action = mw.config.get('wgAction');
	var lang = mw.config.get('wgContentLanguage');
	var ns = mw.config.get('wgCanonicalNamespace');
	var title = mw.config.get('wgTitle');
	var baseitem = mw.config.get('wgWikibaseItemId');
	
	/* add shortcuts (ctrl + # for "transfer article to nds.wp" and some others for easy insertion of special typographic signs) */
	$('body').on('keydown', function(event) {
		var e = event.originalEvent;
		if (!e) return;
		if ((e.key == '#') && (e.ctrlKey)) {
			$('#add-to-nds').trigger('click');
		}
		else if ((e.key == 'ä') && (e.ctrlKey)) {
			 if ($('#wpTextbox1').length) $('#wpTextbox1').textSelection('encapsulateSelection', { pre: "’", peri: "", post: "" });
			 else if ($('#ooui-php-4').length) $('#ooui-php-4').textSelection('encapsulateSelection', { pre: "’", peri: "", post: "" });
			 else if ($('#searchInput').length) $('#searchInput').textSelection('encapsulateSelection', { pre: "’", peri: "", post: "" });
		}
		else if ((e.key == 'ö') && (e.ctrlKey)) {
			 $('#wpTextbox1').textSelection('encapsulateSelection', { pre: "–", peri: "", post: "" });
		}
		else if ((e.key == 'ü') && (e.ctrlKey)) {
			 $('#wpTextbox1').textSelection('encapsulateSelection', { pre: "†", peri: "", post: "" });
		}
		else if ((e.key == ' ') && (e.ctrlKey)) {
			 $('#wpTextbox1').textSelection('encapsulateSelection', { pre: " ", peri: "", post: "" });
		}
	});

	/* add links to navigation bar above article that allows one-click transfer of article content to nds.wp */
	if ((lang !== 'nds') && ($('.interwiki-nds').length === 0)) {
		if ((ns === '') || (ns == 'Template') || (ns == 'Category') || (ns == 'Module')) {
			$('#p-associated-pages ul')
				.append($('<li>')
					.attr('class', 'mw-list-item')
				.append($('<span/>')
				.append($('<a/>')
					.attr('id', 'add-to-nds')
					.attr('title', 'Artikel op nds.wp överdregen')
					.html('> nds')
					.on('click', transferToNdsWp))));
			$('#p-associated-pages ul')
				.append($('<li>')
					.attr('class', 'mw-list-item')
				.append($('<span/>')
				.append($('<a/>')
					.attr('id', 'add-to-list')
					.attr('title', 'Artikel för dat Överdregen op nds.wp marken')
					.html('+')
					.on('click', listForNdsWp)
					.on('dblclick', showListForNdsWp))));
		}
	}
	
	/*
		add shortcut to pagename without disambiguation markers
		for persons use only the last word
		that's usually the disambiguation page
	*/
	if ((action === 'edit') || (action === 'submit') || (action === 'view')) {
		var showLastOnly = false;
		var hasDisambigMarkers = false;
		var isDisambig = false;
		if ($.inArray($('#catlinks li a').text(), ['Mehrdüdig Begreep', 'Human name disambiguation pages', 'Disambiguation pages', 'Begriffsklärung']) !== -1) isDisambig = true;
		var newtitle = title;
		var linklang = ((lang == 'nds')?'de':lang);
		if ((title.indexOf(' (') !== -1) && (title.indexOf(')') !== -1) && (title.indexOf(' (') < title.indexOf(')'))) {
			hasDisambigMarkers = true;
			newtitle = newtitle.replace(/ \(.*\)/, '');
		}
		else if (title.indexOf(', ') !== -1) {
			hasDisambigMarkers = true;
			newtitle = newtitle.replace(/, .*$/, '');
		}
		newtitle = newtitle.replace(/^(Mount|Kap|Cape|River|Rio|Río|Lake|Lago|Monte?) (.+)$/, '$2').replace(/^(.+)( (Mountains?|Hills?|Peaks?|Valley|Islands?|Inlet|Heights|River|Creek|Rocks?|Glacier|Valley|Nunatak)|\-(Gletscher|Nunatak|Nunatakker|Fjord|Halbinsel|Inseln?|Bucht))$/, '$1');
		if ((!hasDisambigMarkers) && (title !== newtitle)) {
			afterResultFromWikidata(newtitle, linklang, showLastOnly, true);
		}
		else if (hasDisambigMarkers) {
			afterResultFromWikidata(newtitle, linklang, showLastOnly, hasDisambigMarkers);
		}
		else if ((isDisambig) && (newtitle.indexOf(' ') !== -1)) {
			afterResultFromWikidata(newtitle, linklang, true, false);
		}
		else {
			if (baseitem) {
				$.ajax( {
					url: '//www.wikidata.org/w/api.php',
					data: {
						'format': 'json',
						'action': 'wbgetclaims',
						'entity': baseitem,
						'property': 'P31',
						'props': ''
					},
					dataType: 'jsonp',
					cache: true
				} )
				.done( function (data) {
					if (typeof data.claims.P31 !== 'undefined') {
						var p31 = data.claims.P31[0].mainsnak.datavalue.value.id;
						if ((p31 == 'Q3863') || (p31 == 'Q5')) {
							showLastOnly = true;
						}
						afterResultFromWikidata(newtitle, linklang, showLastOnly, hasDisambigMarkers);
					}
					else {
						afterResultFromWikidata(newtitle, linklang, showLastOnly, hasDisambigMarkers);
					}
				});
			}
			else {
				afterResultFromWikidata(newtitle, linklang, showLastOnly, hasDisambigMarkers);
			}
		}
	}
	
	/* add tools to linkItem to improve the speed of linking */
	
	if ((ns === '') || (ns === 'Template') || (ns === 'Category') || (ns === 'Module')) {
		var prefix = ((ns)?(ns + ':'):'');
		if (($('#p-lang > div.body > ul > li.interlanguage-link').length === 0) && (action === 'view') && (mw.config.get( 'wgArticleId' ) !== 0)) {
			$('body').on('click', '#addLemmaTolinkItem', function() {
				$('#wbclient-linkItem-page').focus();
				$('#wbclient-linkItem-page').val(prefix + title);
				$('#wbclient-linkItem-goButton').prop('disabled', false).removeClass('ui-button-disabled ui-state-disabled');
			});
			$('body').on('click', '#addMBTolinkItem', function() {
				$('#wbclient-linkItem-page').focus();
				var langToLinkTo = $('#wbclient-linkItem-site').val();
				$('#wbclient-linkItem-page').val(prefix + title.replace(getDisambigAffix(lang), '') + getDisambigAffix(langToLinkTo));
				$('#wbclient-linkItem-goButton').prop('disabled', false).removeClass('ui-button-disabled ui-state-disabled');
			});
			$('body').on('click', '.addSiteTolinkItem', function() {
				var inputsite = $('#wbclient-linkItem-site');
				inputsite.val($(this).data('lang')+'wiki');
				inputsite.trigger('keydown');
				inputsite.trigger('blur');
				window.setTimeout(function() {
					inputsite.trigger('blur');
				}, 200);
			});
			new MutationObserver(function(mutations) {
			    mutations.forEach(function( mutation ) {
					var newNodes = mutation.addedNodes;
					if( newNodes !== null ) {
						var nodes = $(newNodes);
						nodes.each(function() {
							var dialog = $(this).find('#wbclient-linkItem-dialog');
							if (dialog.length) {
								var langs = '';
								['da', 'de', 'en', 'nds', 'nl', 'ceb'].forEach(function(elem) {
									if (lang != elem) langs += '<span class="addSiteTolinkItem" data-lang="' + elem + '">' + elem + '</span>';
								});
								dialog.append($('<div class="linkItem-sitebuttons">'
									+langs
									+'</div>'));
					            dialog.append($('<div class="linkItem-buttons"><span id="addLemmaTolinkItem">+</span><span id="addMBTolinkItem">MB</span></div>'));
							}
				        });
					}
			    });
			}).observe($('body')[0], { attributes: false, childList: true, subtree: true });
		}
	}
	
	var panel = localStorage.getItem('panel');
	if (!panel) panel = '';
	else if (panel === 'closed') {
		$('#mw-panel').addClass('closed');
		$('#content').addClass('closed');
	}
	$('body').append('<div id="toggle-leftpanel" class="' + panel + '"></div>').on('click', '#toggle-leftpanel', function() {
		if ($(this).hasClass('closed')) {
			$(this).removeClass('closed');
			localStorage.setItem('panel', '');
			$('#mw-panel').removeClass('closed');
			$('#content').removeClass('closed');
		}
		else {
			$(this).addClass('closed');
			localStorage.setItem('panel', 'closed');
			$('#mw-panel').addClass('closed');
			$('#content').addClass('closed');
		}
	});
	
	$('#mw-panel').prepend('<div id="ndswp-toolkit-settings" style="float: right; cursor: pointer;">⚙</div>');
	$('body').on('click', '#ndswp-toolkit-settings', function() {
		var replacements = localStorage.getItem('replacements');
		var replacementsJson;
		if (replacements) replacementsJson = JSON.parse(replacements);
		else replacementsJson = [];
		var r = {
			regex: '',
			replacement: '',
			summary: ''
		};
		if (typeof replacementsJson[0] !== "undefined") {
			r = replacementsJson[0];
		}
		if ($('#define-replacements').length) {
			$('#define-replacements').toggle();
		}
		else {
			$('body').append('<div id="define-replacements" style="position: fixed; bottom: 0;left: 0;right: 0; background: #fff; border-top: 1px solid #999; padding: .3em;"></div>')
			replacementsJson.forEach(function(elem) {
				$('#define-replacements').append(
					'<div>'+
					'<label>Regex: <input type="text" id="define-replacements-regex" value="' + elem.regex + '"></label>'+
					'<label>Replacement: <input type="text" id="define-replacements-replacement" value="' + elem.replacement + '"></label>'+
					'<label>Grund: <input type="text" id="define-replacements-summary" value="' + elem.summary + '"></label>'+
					'<button>Trech</button>'+
					'</div>'
				);
			});
			$('body').on('click', '#define-replacements button', function() {
				$('#define-replacements').hide();
				r.regex = $('#define-replacements-regex').val();
				r.replacement = $('#define-replacements-replacement').val();
				r.summary = $('#define-replacements-summary').val();
				replacementsJson[0] = r;
				replacements = JSON.stringify(replacementsJson);
				localStorage.setItem('replacements', replacements);
			});
		}
	});
	
	if ((mw.config.get('wgAction') === 'edit') || (mw.config.get('wgAction') === 'submit')) {
		$('#catlinks').insertAfter($('#wikiPreview'));
	}
	
	if (isDisambiguation()) {
		var url = 'https://wp/Skript/preload.php?source=' + mw.config.get('wgContentLanguage') + '&title=' + mw.config.get('wgTitle');
		$.get(url);
	}
});

function isDisambiguation() {
	var lang = mw.config.get('wgContentLanguage');
	if ((lang === 'nds') && ($('#Vorlaag_MB').length !== 0)) return true;
	else if ((lang === 'de') && ($('#Vorlage_Begriffsklaerung').length !== 0)) return true;
	else if ((lang === 'en') && ($('#disambigbox, #setindexbox').length !== 0)) return true;
	else if ((lang === 'fr') && ($('#homonymie').length !== 0)) return true;
	else if ((lang === 'nl') && ($('#disambig').length !== 0)) return true;
	else if ((lang === 'da') && ($('table.flertydig').length !== 0)) return true;
	else if ((lang === 'sv') && ($('#disambigbox').length !== 0)) return true;
	else return false;
}

function afterResultFromWikidata(title, lang, showLastOnly, hasDisambigMarkers) {
	if ((showLastOnly === true) || (hasDisambigMarkers === true)) {
		var parts;
		if (showLastOnly === true) {
			parts = title.split(' ');
		}
		else {
			parts = [title];
		}
		var lastpart = parts[parts.length - 1];
		addDisambigLinks(lastpart, lang);
	}
}

function getDisambigAffix(lang) {
	lang = lang.replace('wiki', '');
	var affix = ' (disambiguation)';
	if (lang == 'en') affix = ' (disambiguation)';
	else if (lang == 'de') affix = ' (Begriffsklärung)';
	else if (lang == 'da') affix = ' (flertydig)';
	else if (lang == 'fr') affix = ' (homonymie)';
	else if (lang == 'nl') affix = ' (doorverwijspagina)';
	else if (lang == 'nds') affix = ' (Mehrdüdig Begreep)';
	else if (lang == 'es') affix = ' (desambiguación)';

	return affix;
}

function addDisambigLinks(disambig, lang) {
	var a = $('<a/>')
		.attr('id', 'last-part')
		.attr('title', 'Sied to’n Grundbegreep op ' + lang + '.wp')
		.attr('href', '//' + lang + '.wikipedia.org/wiki/' + disambig)
		.html('b');
	$('#p-associated-pages ul')
		.append($('<li/>')
			.attr('class', 'mw-list-item')
		.append($('<span/>')
		.append(a)));
	if (lang != 'de') {
		var aDe = $('<a/>')
			.attr('id', 'last-part')
			.attr('title', 'Sied to’n Grundbegreep op de.wp')
			.attr('href', '//de.wikipedia.org/wiki/' + disambig)
			.html('b<sup>de</sup>');
		$('#p-associated-pages ul')
			.append($('<li/>')
				.attr('class', 'mw-list-item')
			.append($('<span/>')
			.append(aDe)));
	}
}

function transferToNdsWp() {
	var lang = mw.config.get('wgContentLanguage');
	var pagename = mw.config.get('wgPageName');
	var newPagename = pagename;
	if (lang == 'de') {
		newPagename = newPagename
			.replace(/_\(Begriffsklärung\)/, '_(Mehrdüdig Begreep)')
			.replace(/Navigationsleiste/, 'Navigatschoonsliest')
			.replace(/Städte_und_Gemeinden_im/, 'Gemenen_un_Städer_in’n')
			.replace(/Gemeinden_in_der_(.+)_Kommune/, 'Kaspels_in_de_Kommun_$1')
			.replace(/Gemeinden_im_Arrondissement/, 'Gemenen_in_dat_Arrondissement')
			.replace(/Titularbistum/, 'Titulärbisdom')
			.replace(/Titularerzbistum/, 'Titulärarzbisdom')
			.replace(/US-Gouverneure/, 'US-Guvernöre')
			.replace(/US-Senatoren_aus_(.+)/, 'US-Senaters_($1)')
			.replace(/US-Kongressabgeordnete/, 'US-Kungresslüüd');
	}
	else if (lang == 'da') {
		newPagename = newPagename
			.replace(/\(([^\]\)\|]+)_Kommune\)/, '(Kommun_$1)')
			.replace(/Københavns/, 'Kopenhagen')
			.replace(/Bornholms/, 'Bornholm')
			.replace(/Vesthimmerlands/, 'Westhimmerland')
			.replace(/Jammerbugt/, 'Jammerbucht')
			.replace(/Nordfyns/, 'Noordfünen')
			.replace(/Faaborg\-Midtfyn/, 'Faaborg-Middfünen');
	}
	var url;
	if ((mw.config.get('wgAction') === 'edit') || (mw.config.get('wgAction') === 'submit')) {
		var insert = $('#wpTextbox1').val();
		sendForm(insert, lang, pagename, newPagename);
	}
	else {
		if (isDisambiguation()) {
			var action = 'https://wp/Skript/translate.php?target=nds&source=' + lang + '&gotowiki=1&pages=' + ((pagename !== newPagename)?newPagename + '|' + pagename:pagename).replace(/_/g, ' ');
			location.href = action;
		}
		else {
			var url = "https://" + lang + ".wikipedia.org/w/index.php?title=" + pagename + "&action=raw";
			$.get(url).done(function(data){
				sendForm(data, lang, pagename, newPagename);
			});
		}
	}
}

function sendForm(data, lang, pagename, newPagename) {
	data = data.replace(/&/g, '&amp;');
	var nav = ((newPagename.indexOf('Navigatschoonsliest') !== -1)?'&ndsWPTScript=Nav':'');
	var action = "https://nds.wikipedia.org/w/index.php?title=" + newPagename + "&linkto=" + lang + ':' + pagename.replace(/_/g, ' ') + nav + "&action=edit";
	$('body').append($('<form/>')
	  .attr({'action': action, 'method': 'post', 'id': 'replacer'})
	  .append($('<textarea/>').attr({'name': 'wpTextbox1'}).html(data))
	  .append($('<input/>').attr({'name': 'wpSummary'}).attr({'value': mw.config.get('wgWikibaseItemId') + ' ut ' + lang + '.wp' }))
	).find('#replacer').submit();
}

function listForNdsWp() {
	var lang = mw.config.get('wgContentLanguage');
	var pagename = mw.config.get('wgPageName');
	var mbList = JSON.parse(localStorage.getItem('mb-list'));
	if (mbList === null) mbList = [];
	$.ajax( {
		url: '//' + lang + '.wikipedia.org/w/api.php',
		data: {
			'format': 'json',
			'action': 'query',
			'prop': 'templates',
			'tllimit': '500',
			'titles': pagename,
			'format': 'json',
			'formatversion': '2'
		},
		dataType: 'jsonp',
		cache: true
	} )
	.done( function (data) {
		if (typeof data.query.pages[0].templates !== 'undefined') {
			data.query.pages[0].templates.forEach(function(elem) {
				if ((!mbList.includes(elem.title)) && (elem.title.indexOf(':') === -1)) mbList.push(elem.title);
			});
		}
		if (!mbList.includes(pagename)) mbList.push(pagename);
		localStorage.setItem('mb-list', JSON.stringify(mbList));
	});
}

function unlistForNdsWp() {
	var pagename = mw.config.get('wgPageName');
	mbList = [];
	localStorage.setItem('mb-list', JSON.stringify(mbList));
	$('#remove-list').remove();
}

function showListForNdsWp() {
	var pagename = mw.config.get('wgPageName');
	var mbList = JSON.parse(localStorage.getItem('mb-list'));
	var text = '';
	if (mbList === null) mbList = [];
	mbList.forEach(function(elem) {
		text += elem + "\n";
	});
	alert(text + "\n\n" + mbList.length + ' Indrääg');
	if (!$('#remove-list').length) {
		$('#left-navigation ul')
			.append($('<li>')
			.append($('<span/>')
			.append($('<a/>')
				.attr('id', 'remove-list')
				.attr('title', 'Artikellist för dat Överdregen op nds.wp leddig maken')
				.html('del')
				.on('click', unlistForNdsWp))));
	}
}

function replaceInTextbox(regex, replaceWith, summary) {
	var val = $('#wpTextbox1').val();
	val = val.replace(regex, replaceWith);
	$('#wpTextbox1').val(val);
	var valSummary = $('#wpSummary').val();
	valSummary += summary;
	$('#wpSummary').val(valSummary);
}