MediaWiki:Common.js
Erscheinungsbild
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
/* BEGIN INFORMATIK.WIKI GLOBAL LANGSWITCH */
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ).then( function () {
$( function () {
var ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 ) {
return;
}
var pageName = mw.config.get( 'wgPageName' ).replace( /_/g, ' ' );
var isEnglish = /\/en$/.test( pageName );
var baseTitle = pageName.replace( /\/en$/, '' );
var englishTitle = baseTitle + '/en';
function renderSwitch( hasEnglishPage ) {
var old = document.getElementById( 'iw-lang-switch' );
if ( old ) {
old.remove();
}
var box = document.createElement( 'div' );
box.id = 'iw-lang-switch';
box.setAttribute( 'aria-label', 'Sprache / Language' );
function addLanguage( code, label, href, active, enabled ) {
var el;
if ( enabled && !active ) {
el = document.createElement( 'a' );
el.href = href;
} else {
el = document.createElement( 'span' );
}
el.textContent = label;
el.lang = code;
if ( active ) {
el.classList.add( 'iw-lang-active' );
el.setAttribute( 'aria-current', 'page' );
}
if ( !enabled ) {
el.classList.add( 'iw-lang-unavailable' );
el.title = code === 'en'
? 'English page not available yet'
: 'Deutsche Seite nicht verfügbar';
}
box.appendChild( el );
}
addLanguage(
'de',
'DE',
mw.util.getUrl( baseTitle ),
!isEnglish,
true
);
var separator = document.createElement( 'span' );
separator.className = 'iw-lang-separator';
separator.textContent = '|';
box.appendChild( separator );
addLanguage(
'en',
'EN',
mw.util.getUrl( englishTitle ),
isEnglish,
hasEnglishPage || isEnglish
);
var heading = document.getElementById( 'firstHeading' );
if ( heading && heading.parentNode ) {
heading.parentNode.insertBefore( box, heading );
}
}
/*
* Auf einer englischen Seite wissen wir bereits,
* dass die englische Version existiert.
*/
if ( isEnglish ) {
renderSwitch( true );
return;
}
/*
* Auf deutschen Seiten automatisch prüfen,
* ob die entsprechende echte /en-Seite existiert.
*/
var api = new mw.Api();
api.get( {
action: 'query',
titles: englishTitle,
formatversion: 2
} ).then( function ( data ) {
var page = data.query.pages[ 0 ];
var exists = !Object.prototype.hasOwnProperty.call( page, 'missing' );
renderSwitch( exists );
} ).catch( function () {
/*
* Bei einem API-Fehler lieber EN deaktivieren,
* statt auf eine nicht geprüfte Seite zu verlinken.
*/
renderSwitch( false );
} );
} );
} );
/* END INFORMATIK.WIKI GLOBAL LANGSWITCH */