/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */
/* Import more specific scripts if necessary */
// Scripts specific to editing pages
if (mw.config.get('wgAction') == "edit" || mw.config.get('wgAction') == "submit") {
importScript("MediaWiki:Common.js/edit.js");
}
/**
* WikiMiniAtlas is a popup click and drag world map.
* See ] for more information.
* Maintainers: ]
*/
mw.loader.load('//meta.wikimedia.orghttps://nl.wiktionary.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript');
/* Remove need for CSS hacks regarding MSIE and IPA. */
if (navigator.appName == "Microsoft Internet Explorer" && document.createStyleSheet) {
document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";');
}
/* Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: ], ], ]
*/
var hasClass = (function () {
var reCache = {};
return function (element, className) {
return (reCache ? reCache : (reCache = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
/** Interwiki links to featured articles ***************************************
*
* Description: Highlights interwiki links to featured articles (or
* equivalents) by changing the bullet before the interwiki link
* into a star.
* Maintainers: ]
*/
function LinkFA() {
if ( document.getElementById( "p-lang" ) ) {
var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
for ( var i = 0; i < InterwikiLinks.length; i++ ) {
if ( document.getElementById( InterwikiLinks.className + "-fa" ) ) {
InterwikiLinks.className += " FA"
InterwikiLinks.title = "This is a featured article in another language.";
}
}
}
}
$( LinkFA );
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* ].
* Maintainers: ]
*/
var autoCollapse = 2;
var collapseCaption = "Verberg ▲";
var expandCaption = "Toon ▼";
function collapseTable( tableIndex ) {
var Button = document.getElementById( "collapseButton" + tableIndex );
var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows.style.display = "none";
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows.style.display = Rows.style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( "table" );
for ( var i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables, "collapsible" ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables.getElementsByTagName( "tr" );
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( "th" );
if (!Header) continue;
NavigationBoxes = Tables;
Tables.setAttribute( "id", "collapsibleTable" + tableIndex );
var Button = document.createElement( "span" );
var ButtonLink = document.createElement( "a" );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = "center";
Button.style.cssFloat = "center";
Button.style.fontWeight = "bold";
Button.style.textAlign = "right";
Button.style.width = "10em";
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
//Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
//Button.appendChild( document.createTextNode( "]" ) );
Header.insertBefore( Button, Header.childNodes );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes, "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes, "autocollapse" ) ) ) {
collapseTable( i );
}
else if ( hasClass( NavigationBoxes, "innercollapse" ) ) {
var element = NavigationBoxes;
while (element = element.parentNode) {
if ( hasClass( element, "outercollapse" ) ) {
collapseTable ( i );
break;
}
}
}
}
}
$( createCollapseButtons );
/** Dynamic Navigation Bars (experimental) *************************************
*
* Description: See ].
* Maintainers: UNMAINTAINED
*/
// set up the words in your language
var NavigationBarHide = collapseCaption;//'';
var NavigationBarShow = expandCaption;//'';
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar) {
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if ( hasClass( NavChild, 'NavPic' ) ) {
NavChild.style.display = 'none';
}
if ( hasClass( NavChild, 'NavContent') ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (hasClass(NavChild, 'NavPic')) {
NavChild.style.display = 'block';
}
if (hasClass(NavChild, 'NavContent')) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton() {
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for (var i = 0; NavFrame = divs; i++) {
// if found a navigation bar
if (hasClass(NavFrame, "NavFrame")) {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var isCollapsed = hasClass( NavFrame, "collapsed" );
/*
* Check if any children are already hidden. This loop is here for backwards compatibility:
* the old way of making NavFrames start out collapsed was to manually add style="display:none"
* to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
* the content visible without JavaScript support), the new recommended way is to add the class
* "collapsed" to the NavFrame itself, just like with collapsible tables.
*/
for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
if ( NavChild.style.display == 'none' ) {
isCollapsed = true;
}
}
}
if (isCollapsed) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
NavChild.style.display = 'none';
}
}
}
var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(var j=0; j < NavFrame.childNodes.length; j++) {
if (hasClass(NavFrame.childNodes, "NavHead")) {
NavFrame.childNodes.appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
}
$( createNavigationBarToggleButton );
//Shuffle for election candidates.
function dshuf() {
var shufsets = {};
var rx = new RegExp('dshuf'+'\\s+(dshufset\\d+)', 'i')
var divs = document.getElementsByTagName("div")
for (var i = 0; i < divs.length; i++) {
if (rx.test(divs.className)) {
if (typeof shufsets == "undefined") {
shufsets={}
shufsets.inner=
shufsets.member=
}
shufsets.inner.push({key:Math.random(),html:divs.innerHTML})
shufsets.member.push(divs)
}
}
for (shufset in shufsets) {
shufsets.inner.sort(function(a,b) {return a.key-b.key})
for (var i=0; i<shufsets.member.length; i++) {
shufsets.member.innerHTML=shufsets.inner.html
shufsets.member.style.display="block"
}
}
}
/** "Technical restrictions" title fix *****************************************
*
* Description: For pages that have something like Template:Wrongtitle, replace
* the title, but only if it is cut-and-pasteable as a valid
* wikilink. For instance, "NZR WB class" can be changed to
* "NZR W<sup>B</sup> class", but ] is not an equivalent wikilink,
* so ] doesn't have its main title changed.
*
* The function looks for a banner like this:
* <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div>
* An element with id=DisableRealTitle disables the function.
* Maintainers: Remember_the_dot
*/
//prevents the "Editing " prefix from disappearing during preview
if (mw.config.get('wgIsArticle')) {
$(function () {
var realTitle = document.getElementById("RealTitle")
if (realTitle) {
//normalizes a title or a namespace name (but not both)
//trims leading and trailing underscores and converts (possibly multiple) spaces and underscores to single underscores
function normalizeTitle(title) {
return title.replace(/^_+/, "").replace(/_+$/, "").replace(/+/g, "_")
}
//everyone but IE
if (realTitle.textContent) {
var realTitleText = realTitle.textContent;
//IE
} else {
var realTitleText = realTitle.innerText;
}
var normalizedRealTitle
var normalizedPageTitle
var indexOfColon = realTitleText.indexOf(":")
var normalizedNamespaceName = normalizeTitle(realTitleText.substring(0, indexOfColon)).toLowerCase()
//make namespace prefix lowercase and uppercase the first letter of the title
if (indexOfColon == -1 || mw.config.get('wgCanonicalNamespace').toLowerCase() != normalizedNamespaceName) //no namespace prefix - either no colon or a nonsensical namespace prefix (for example, "Foo" in "Foo: The Story of My Life")
{
normalizedRealTitle = normalizeTitle(realTitleText)
normalizedRealTitle = normalizedRealTitle.toUpperCase() + normalizedRealTitle.substring(1)
normalizedPageTitle = mw.config.get('wgPageName').toUpperCase() + mw.config.get('wgPageName').substring(1)
}
else //using a namespace prefix
{
var normalizedRealPageTitle = normalizeTitle(realTitleText.substring(indexOfColon + 1))
normalizedRealTitle = normalizedNamespaceName
if (normalizedNamespaceName != "") //namespace 0 is a special case where the leading colon should never be shown
{
normalizedRealTitle += ":"
}
normalizedRealTitle += normalizedRealPageTitle.toUpperCase() + normalizedRealPageTitle.substring(1)
normalizedPageTitle = mw.config.get('wgPageName').substring(0, mw.config.get('wgPageName').indexOf(":") + 1).toLowerCase() + mw.config.get('wgPageName').substring(mw.config.get('wgPageName').indexOf(":") + 1)
}
if (normalizedRealTitle == normalizedPageTitle) //normalized titles match, so we can do full replacement
{
var h1 = document.getElementsByTagName("h1")
//remove all child nodes, including text
while (h1.firstChild)
{
h1.removeChild(h1.firstChild)
}
//populate with nodes of real title
while (realTitle.firstChild) //the children are moved to a new parent element
{
h1.appendChild(realTitle.firstChild)
}
//delete the real title banner since the problem is solved
var realTitleBanner = document.getElementById("RealTitleBanner")
realTitleBanner.parentNode.removeChild(realTitleBanner)
}
//no matter what, correct the page title
document.title = realTitleText + " - Wikipedia, the free encyclopedia"
}
})
}
// Bewerken en overleg bij een afbeelding op Commons linken naar Commons (kopie van de Duitse Wikipedia)
if (mw.config.get('wgNamespaceNumber') === 6) $( function() {
if (window.keepLocalFileTabs ) return;
if (document.getElementById( 'ca-history')) return; // Lokale beschrijving aanwezig?
if (!getElementsByClassName(document, 'div', 'sharedUploadNotice')) return; // Alleen doen bij afbeeldingen op Commons
var path = '//commons.wikimedia.orghttps://dictious.com/nl/';
// Andere link voor overlegpagina
// vector uses ca-image_talk
var talk = document.getElementById('ca-talk') || document.getElementById('ca-image_talk');
if (talk && talk.className.match(/(^| )new( |$)/)) {
var link = talk.getElementsByTagName('a');
link.href = path + 'File_talk:' + encodeURIComponent(mw.config.get('wgTitle')) + '?uselang=' + mw.config.get('wgUserLanguage');
link.className += ' commonstab';
}
// Bewerken link
var edit = document.getElementById('ca-edit') || document.getElementById('ca-viewsource');
if (edit) {
var link = edit.getElementsByTagName('a');
link.href = path + 'File:' + encodeURIComponent(mw.config.get('wgTitle')) + '?uselang=' + mw.config.get('wgUserLanguage') + '&action=edit';
link.className += ' commonstab';
link.firstChild.nodeValue = 'bewerken';
}
});
/**
* Direct imagelinks to Commons
*
* Required modules: mediawiki.util
*
* @source https://www.mediawiki.orghttps://dictious.com/nl/Snippets/Direct_imagelinks_to_Commons
* @author Krinkle
* @version 2022-09-06
*/
if ( mw.config.get( 'wgNamespaceNumber', 0 ) >= 0 ) {
mw.loader.using( ).then( function () {
mw.hook( 'wikipage.content' ).add( function ( $content ) {
var uploadBaseRe = /^(https:)?\/\/upload\.wikimedia\.org\/wikipedia\/commons/,
localFileNSString = mw.config.get( 'wgFormattedNamespaces' ) + ':',
localBasePath = new RegExp( '^' + mw.util.escapeRegExp( mw.util.getUrl( localFileNSString ) ) ),
localBaseScript = new RegExp( '^' + mw.util.escapeRegExp(
mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( localFileNSString )
) ),
commonsBasePath = 'https://commons.wikimedia.orgview_image.php?q=MediaWiki:Common.js&sq=MediaWiki:Common.js&lang=nl&file=File:',
commonsBaseScript = 'https://commons.wikimedia.orghttps://nl.wiktionary.org/w/index.php?title=File:';
$content.find( 'a.image, a.mw-file-description' ).attr( 'href', function ( i, currVal ) {
if ( uploadBaseRe.test( $( this ).find( 'img' ).attr( 'src' ) ) ) {
return currVal
.replace( localBasePath, commonsBasePath )
.replace( localBaseScript, commonsBaseScript );
}
} );
} );
} );
}