MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary Tags: Manual revert Reverted |
No edit summary Tags: Manual revert Reverted |
||
| Line 69: | Line 69: | ||
jQuery( CustomizeModificationsOfSidebar ); | jQuery( CustomizeModificationsOfSidebar ); | ||
/** Test if an element has a certain class ************************************** | |||
* | |||
* Description: Uses regular expressions and caching for better performance. | |||
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] | |||
*/ | |||
var hasClass = ( function() { | |||
var reCache = {}; | |||
return function( element, className ) { | |||
return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className ); | |||
}; | |||
})(); | |||
(function () { | |||
var loadScripts = document.querySelectorAll('div[data-load-javascript]'); | |||
if (loadScripts.length) { | |||
var scriptNames = {Tabber: true}; | |||
loadScripts.forEach(function(el) { | |||
var script = el.dataset['loadJavascript']; | |||
if (scriptNames[script]) { | |||
mw.loader.load("/index.php?title=MediaWiki:Script/" + script + ".js&action=raw&ctype=text/javascript"); | |||
delete scriptNames[script]; | |||
} | |||
}); | |||
} | |||
var req = new XMLHttpRequest(); | |||
req.addEventListener('load', function (ev) { | |||
if (this.status >= 200 && this.status < 300) { | |||
var data = JSON.parse(this.responseText); | |||
if (data.hasOwnProperty('version')) { | |||
var gdpr = document.createElement("script"); | |||
gdpr.src = "https://s3-static.geo.gfsrv.net/cookiebanner/" + data.version + "/cookie.min.js"; | |||
document.head.appendChild(gdpr); | |||
} | |||
} | |||
}); | |||
req.open('GET', "https://s3-static.geo.gfsrv.net/cookiebanner/version.json"); | |||
req.send(); | |||
})(); | |||
Revision as of 07:35, 20 August 2023
/* Any JavaScript here will be loaded for all users on every page load. */
function ModifySidebar( action, section, name, link ) {
try {
switch ( section ) {
case 'languages':
var target = 'p-lang';
break;
case 'toolbox':
var target = 'p-tb';
break;
case 'navigation':
var target = 'p-navigation';
break;
default:
var target = 'p-' + section;
break;
}
if ( action == 'add' ) {
var node = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( name ) );
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}
if ( action == 'remove' ) {
var list = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var listelements = list.getElementsByTagName( 'li' );
for ( var i = 0; i < listelements.length; i++ ) {
if (
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
)
{
list.removeChild( listelements[i] );
}
}
}
} catch( e ) {
// let's just ignore what's happened
return;
}
}
function CustomizeModificationsOfSidebar() {
// adds [[Special:CategoryTree|Special:CategoryTree]] to toolbox
// removes [[Special:Upload|Special:Upload]] from toolbox
ModifySidebar( 'remove', 'toolbox', 'Page information', 'https://en.wikipedia.org/wiki/Special:Page_Information' );
ModifySidebar( 'remove', 'toolbox', 'What links here', 'https://en.wikipedia.org/wiki/Special:What_links_here' );
ModifySidebar( 'remove', 'toolbox', 'Related changes', 'https://en.wikipedia.org/wiki/Special:Related_changes' );
ModifySidebar( 'remove', 'toolbox', 'Special pages', 'https://en.wikipedia.org/wiki/Special:Special_pages' );
ModifySidebar( 'remove', 'toolbox', 'Printable version', 'https://en.wikipedia.org/wiki/Special:Printable_version' );
ModifySidebar( 'remove', 'toolbox', 'Permanent link', 'https://en.wikipedia.org/wiki/Special:Permanent_link' );
}
jQuery( CustomizeModificationsOfSidebar );
/** Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
var hasClass = ( function() {
var reCache = {};
return function( element, className ) {
return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
};
})();
(function () {
var loadScripts = document.querySelectorAll('div[data-load-javascript]');
if (loadScripts.length) {
var scriptNames = {Tabber: true};
loadScripts.forEach(function(el) {
var script = el.dataset['loadJavascript'];
if (scriptNames[script]) {
mw.loader.load("/index.php?title=MediaWiki:Script/" + script + ".js&action=raw&ctype=text/javascript");
delete scriptNames[script];
}
});
}
var req = new XMLHttpRequest();
req.addEventListener('load', function (ev) {
if (this.status >= 200 && this.status < 300) {
var data = JSON.parse(this.responseText);
if (data.hasOwnProperty('version')) {
var gdpr = document.createElement("script");
gdpr.src = "https://s3-static.geo.gfsrv.net/cookiebanner/" + data.version + "/cookie.min.js";
document.head.appendChild(gdpr);
}
}
});
req.open('GET', "https://s3-static.geo.gfsrv.net/cookiebanner/version.json");
req.send();
})();