MediaWiki:Gadget-Fill Index.js
Apparence
Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
/*
* Author: w:fr:Phe
*
* Remplit les champs lors de la création d'un Livre: à partir des informations
* contenues dans le modèle Book de Commons
*/
( function ( mw, $ ) {
'use strict';
var extract_dict = {};
function setup_extract_dict() {
extract_dict = self.fill_index_data.extract_dict;
}
function extract_field( name, contents ) {
var regex = new RegExp('\\|[ ]*' + name + '[ ]*=[ ]*([^\n]*)', 'i');
var match = regex.exec(contents);
if( match ) {
return {
'field name' : extract_dict[name],
'value' : match[1]
};
}
return null;
}
function extract_content( data ) {
var importationDone = false;
$.each( data.query.pages, function( ids, page ) {
if( ids < 0 ) {
return;
}
var content = page.revisions[0]['*'];
for( var idx in extract_dict ) {
var dict = extract_field( idx, content );
if( dict ) {
var f = document.getElementsByName("wpprpindex-" + dict['field name'])[0];
if( f ) {
var data = dict['value'];
//var regexp = new RegExp("{{[Ll]ang[ ]*\|[ ]*" + mw.config.get("wgPageContentLanguage") + "[ ]*\|[ ]*(.*)[ ]*}}");
//data = data.replace(regexp, "$1");
data = data.replace(/{{[Cc]reator[ ]*:[ ]*(.*)[ ]*}}/, "[[" + self.fill_index_data.ns_author_name + ":$1|$1]]")
f.value = data;
}
}
}
importationDone = true;
} );
return importationDone;
}
function common_content( data ) {
if( !extract_content( data ) ) {
$.ajax( {
url: mw.util.wikiScript( 'api' ),
data: {
'format': 'json',
'action': 'query',
'prop': 'revisions',
'rvprop': 'content',
'titles': 'File:' + mw.config.get( 'wgTitle' )
}
} )
.done( extract_content );
}
}
function setup() {
setup_extract_dict();
if( $( ".mw-newarticletext" ).length === 0 ) {
return;
}
$.ajax( {
url: '//commons.wikimedia.org/w/api.php',
data: {
'format': 'json',
'action': 'query',
'prop': 'revisions',
'rvprop': 'content',
'titles': 'File:' + mw.config.get( 'wgTitle' )
},
dataType: 'jsonp',
cache: true
} )
.done( common_content );
}
/* Localisation section, you can provide your own data before loading this script to
* change the script behavior
*/
if( !self.fill_index_data ) {
self.fill_index_data = {}
}
if( !self.fill_index_data.ns_author_name ) {
self.fill_index_data.ns_author_name = 'Auteur';
}
if( !self.fill_index_data.extract_dict ) {
self.fill_index_data.extract_dict = {
'Editor' : 'Editeur_scientifique',
'Publisher' : 'Editeur',
'Author' : 'Auteur',
'Translator' : 'Traducteur',
'Volume' : 'Volume',
'Illustrator' : 'Illustrateur',
'Image page' : 'Image',
'Title' : 'Titre',
'Subtitle' : 'Sous_titre',
'Date' : 'Annee',
'City' : 'Lieu',
'Source' : 'Bibliotheque'
};
}
/* end of localisation section */
$( function() {
if( mw.config.get( "wgCanonicalNamespace" ) === "Index" && mw.config.get( "wgAction" ) === "edit" ) {
setup();
}
} );
} ( mediaWiki, jQuery ) );