MediaWiki:Gadget-C helper.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.window.C = {};
C.modules = {
'si': {
id: 'c-si',
title: 'Demander une SI',
label: 'SI',
},
'tag': {
id: 'c-tag',
title: 'Apposer des bandeaux de maintenance',
label: 'Bandeaux',
},
'dph': {
id: 'c-dph',
title: 'Demander le masquage de certaines versions d\'historiques',
label: 'Masquage',
},
'purge': {
id: 'c-purge',
title: 'Forcer le rafraichissement de cette page',
label: 'Purge',
},
'message': {
id: 'c-message',
title: 'Laisser un message sur la pdd de l\'utilisateur',
label: 'Message',
},
};
C.tab = {
'page': [ 'tag', 'si', 'dph', 'purge' ],
'user': [ 'message', 'si', 'dph', 'purge' ],
'diff': [ 'message', 'tag', 'si', 'dph', 'purge' ],
};
$( function ( $ ) {
if ( mw.config.get( 'wgNamespaceNumber' ) < 0 ) {
return;
}
var $cactions = $( '#p-cactions' );
if ( !$cactions.length ) {
// namely, the Minerva skin is not supported
return;
}
var skin = mw.config.get( 'skin' );
var $clone;
var $ul;
if ( skin === 'monobook' || skin === 'modern' ) {
// items will be added to the existing #p-cactions
$ul = $cactions.find( 'ul' );
} else {
// make a copy of #p-cactions and adapt it,
// items will be added to it, then it will be inserted into the document
$clone = $cactions.clone();
$ul = $clone.find( 'ul' );
removeAttributesExcept( $clone, [ 'class' ] );
$clone.attr( 'title', 'C-helper' );
if ( skin === 'vector' || skin === 'vector-2022' ) {
var $checkbox = $clone.find( '.vector-menu-checkbox' );
removeAttributesExcept( $checkbox, [ 'type', 'class' ] );
$clone.find( '.vector-menu-heading' ).removeAttr( 'id' );
if (skin === 'vector-2022' ) {
$clone.find( '.vector-menu-heading' ).text( 'Č' );
} else {
$clone.find( '.vector-menu-heading-label' ).text( 'Č' );
}
} else {
$clone.find( 'h3' ).removeAttr( 'id' ).text( 'Č' );
}
$ul.find( '.mw-list-item' ).remove();
}
var tab = 'page';
if ( mw.config.get( 'wgDiffNewId' ) )
tab = 'diff';
else if ( mw.config.get( 'wgNamespaceNumber' ) === 2 || mw.config.get( 'wgNamespaceNumber' ) === 3 )
tab = 'user';
var items = [];
$.each( C.tab[ tab ], function ( key, item ) {
var $li = $( '<li>' )
.attr( { 'class': 'mw-list-item', id: C.modules[ item ].id } );
var $a = $( '<a>' )
.attr( { href: '#', title: C.modules[ item ].title } )
.text( C.modules[ item ].label )
.click( clickHandler );
$li.append( $a );
items.push( $li );
} );
$ul.append( items );
if ( $clone ) {
$clone.insertAfter( $cactions );
}
function clickHandler( e ) {
e.preventDefault();
var id = $( e.currentTarget ).closest( '.mw-list-item' ).attr( 'id' );
$.each( C.modules, function ( key, item ) {
if ( item.id === id ) {
item.callback.launch();
}
} );
}
function removeAttributesExcept( $node, keeplist ) {
$node.each( function ( _, node ) {
// attention : nodes.attributes est une collection ''live''
var i = node.attributes.length;
while ( i-- ) {
var attr = node.attributes[ i ];
if ( !keeplist.includes( attr.name ) ) {
node.removeAttribute( attr.name );
}
}
} );
}
} );