Benutzer:Schnark/js/specialinterwiki.js
aus Wikipedia, der freien Enzyklopädie
< Benutzer:Schnark | js
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
//Dokumentation auf [[Benutzer:Schnark/js/specialinterwiki]] <nowiki>
/*global mediaWiki*/
(function ($, mw) {
"use strict";
function initL10N (l10n, keep) {
var i, chain = mw.language.getFallbackLanguageChain();
keep = $.grep(mw.messages.get(keep), function (val) {
return val !== null;
});
for (i = chain.length - 1; i >= 0; i--) {
if (chain[i] in l10n) {
mw.messages.set(l10n[chain[i]]);
}
}
mw.messages.set(keep);
}
function go (e) {
var iw = $('#interwiki-input').val(),
href = mw.config.get('wgNamespaceNumber') === -1 ? getHrefSpecial(iw) : getHrefMW(iw);
e.preventDefault();
if (mw.config.get('wgServer') === 'http://localhost') {
window.alert(href);
} else {
window.location.href = href;
}
}
function getHrefSpecial (iw) {
var sp, href, search,
title, searchParam, index;
sp = mw.config.get('wgCanonicalSpecialPageName');
if (!sp) {
sp = mw.config.get('wgTitle');
}
href = mw.config.get('wgScript') + '?title=' + iw + ':Special:' + encodeURIComponent(sp);
search = window.location.search.replace(/^\?/, '&');
title = decodeURIComponent(
(/.*&title=([^&]*)/.exec(search) || [])[1] ||
window.location.pathname
);
searchParam = (/.*&search=([^&]*)/.exec(search) || [])[1];
search = search.replace(/&title=[^&]*/g, '').replace(/&search=[^&]*/g, ''); //title und search entfernen
index = title.indexOf(mw.config.get('wgPageName').replace(/\/.*$/, '') + '/');
if (index > -1) {
title = encodeURIComponent(title.slice(index + 1 + mw.config.get('wgPageName').replace(/\/.*$/, '').length));
href += '/' + title;
} else if (searchParam) {
href += '/' + searchParam;
}
return href + search + window.location.hash;
}
function getHrefMW (iw) {
return mw.config.get('wgScript') + '?title=' + iw + ':MediaWiki:' +
encodeURIComponent(mw.config.get('wgTitle'));
}
function makePortlet () {
var $iw = $('#p-lang'), $tb;
if ($iw.length) {
return $iw;
}
$tb = $('#p-tb');
if ($tb.length === 0) {
return $tb;
}
$iw = $tb.clone().attr({
id: 'p-lang',
'aria-labelledby': 'p-lang-label'
});
$iw.find('h3').attr('id', 'p-lang-label').text(mw.msg('otherlanguages'));
$iw.find('ul').empty();
$tb.parent().append($iw);
return $iw;
}
function init () {
initL10N({
en: {
'otherlanguages': 'In other languages',
'schnark-specialinterwiki-button': '>'
},
de: {
'otherlanguages': 'In anderen Sprachen'
}}, ['otherlanguages']);
var $iw = makePortlet();
if ($iw.length === 0) {
return;
}
$iw.find('ul').append('<li><form id="schnark-specialinterwiki" style="display: flex;">' +
mw.html.element('input', {
id: 'interwiki-input', size: 5, 'class': 'noime',
value: mw.user.options.get('userjs-schnark-specialinterwiki-iw', 'en')
}) +
mw.html.element('input', {
type: 'submit',
value: mw.msg('schnark-specialinterwiki-button')
}) +
'</form></li>');
$('#schnark-specialinterwiki').on('submit', go);
}
if (mw.config.get('wgNamespaceNumber') === -1 || mw.config.get('wgNamespaceNumber') === 8) {
$.when(mw.loader.using(['user.options', 'mediawiki.language']), $.ready).then(init);
}
})(jQuery, mediaWiki);
//</nowiki>