MediaWiki:Common.js
Jump to navigation
Jump to search
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.
/**
* Diverses fonctions manipulant les classes
* Utilise des expressions régulières et un cache pour de meilleures perfs
* isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211
* hasClass, addClass, removeClass et eregReplace depuis http://drupal.org.in/doc/misc/drupal.js.source.html
* surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
*/
var wgPageName = mw.config.get( 'wgPageName');
function isClass(element, classe) {
return hasClass(element, classe);
}
function whichClass(element, classes) {
var s=" "+element.className+" ";
for(var i=0;i<classes.length;i++)
if (s.indexOf(" "+classes[i]+" ")>=0) return i;
return -1;
}
function hasClass(node, className) {
var haystack = node.className;
if(!haystack) return false;
if (className === haystack) {
return true;
}
return (" " + haystack + " ").indexOf(" " + className + " ") > -1;
}
function addClass(node, className) {
if (hasClass(node, className)) {
return false;
}
var cache = node.className;
if (cache) {
node.className = cache + ' ' + className;
} else {
node.className = className;
}
return true;
}
function removeClass(node, className) {
if (!hasClass(node, className)) {
return false;
}
node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
return true;
}
function eregReplace(search, replace, subject) {
return subject.replace(new RegExp(search,'g'), replace);
}
/* Turning the regular pages into talk pages */
function TransformeEnDiscussion() {
if( (wgPageName.search('Wikimedia_Canada:Discussions_in_English') != -1)
|| (wgPageName.search('Wikimedia_Canada:Discussions_en_français') != -1)
|| document.getElementById('transformeEnPageDeDiscussion')) {
removeClass(document.body, 'ns-subject');
addClass(document.body, 'ns-talk');
}
}
$(TransformeEnDiscussion);
// Update from https://tools.wmflabs.org/intuition/wpAvailableLanguages.js.php - Last update: Fri, 06 Mar 2015 22:58:41 +0000
window.wpAvailableLanguages={"en":"English","fr":"Français"};
/**
* AnonymousI18N
*
* Internationalisation for anonymous users.
*
* @author [[User:Krinkle]]
* @stats [[File:Krinkle_AnonymousI18N.js]]
*/
mw.loader.using( 'mediawiki.user', function () {
if ( mw.user.isAnon() ) {
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:AnonymousI18N.js&action=raw&ctype=text/javascript' );
}
});
/**
* Réécriture des titres
*
* Fonction utilisée par [[Modèle:Titre incorrect]]
*
* La fonction cherche un bandeau de la forme
* <div id="RealTitleBanner">
* <span id="RealTitle">titre</span>
* </div>
*
* Un élément comportant id="DisableRealTitle" désactive la fonction
*/
function rewritePageTitle( $ ) {
var $realTitle, titleText, $h1,
$realTitleBanner = $( '#RealTitleBanner' );
if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
$realTitle = $( '#RealTitle' );
$h1 = $( 'h1:first' );
if ( $realTitle.length && $h1.length ) {
titleText = $realTitle.html();
if ( titleText === '' ) {
$h1.hide();
} else {
$h1.html( titleText );
}
$realTitleBanner.hide();
$( '<p>' ).css( 'font-size', '80%' )
.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
.insertAfter( $h1 );
}
}
}
$( rewritePageTitle );
/**
* OngletPurge
*
* Onglet permettant de réaliser une purge du cache
*
* @source https://www.mediawiki.org/wiki/Snippets/Purge_action
* @see https://www.mediawiki.org/wiki/API:Purge
*
* {{Projet:JavaScript/Script|OngletPurge}}
*/
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
mw.loader.using( ['mediawiki.util', 'mediawiki.api'], function () {
$( function ( $ ) {
if ( $( '#ca-purge' ).length ) return;
var node = mw.util.addPortletLink(
'p-cactions',
mw.util.getUrl( null, { action: 'purge' } ),
['monobook', 'modern'].indexOf( mw.config.get( 'skin' ) ) > -1 ? 'purge' : 'Purge',
'ca-purge',
'Purge',
'*'
);
$( node ).click( function ( e ) {
new mw.Api()
.post( {
action: 'purge',
titles: mw.config.get( 'wgPageName' ),
forcelinkupdate: 1
} )
.done( function () {
location.reload();
} )
.fail( function () {
mw.notify( 'Échec de la purge', { type: 'error' } );
} );
e.preventDefault();
} );
} );
} );
}