Utilisateur:Phe/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
*/
var fill_index = {
ws_msg : function (name) {
var m = self.ws_messages[name];
return m ? m : name;
},
create_script_obj : function (url) {
var scriptObj = document.createElement("script");
scriptObj.setAttribute("type", "text/javascript");
scriptObj.setAttribute("src", url);
document.body.appendChild(scriptObj);
},
extract_dict : {
'Editor' : 'editor',
'Publisher' : 'publisher',
'Author' : 'author',
// FIXME: these fields must use ws_msg to auto-translate the field name
// but actually these translation are not translated.
'Title' : 'Titre',
'Date' : 'Année',
'City' : 'Lieu',
'Source' : 'Bibliothèque'
},
setup_extract_dict : function () {
for (var idx in fill_index.extract_dict) {
fill_index.extract_dict[idx] = fill_index.ws_msg(fill_index.extract_dict[idx])
}
},
extract_field : function (name, contents) {
var regex = new RegExp('\\|[ ]*' + name + '[ ]*=[ ]*([^\n]*)');
var match = regex.exec(contents);
if (match) {
return { 'field name' : this.extract_dict[name],
'value' : match[1] };
}
return null;
},
common_content : function (data) {
if (!data.query.pages["-1"]) {
for (var ids in data.query.pages) {
var content = data.query.pages[ids].revisions[0]['*'];
for (var idx in this.extract_dict) {
var dict = this.extract_field(idx, content);
f = document.getElementsByName(dict['field name'])[0];
if (f && dict)
f.value = dict['value'];
}
break;
}
}
},
setup : function () {
fill_index.setup_extract_dict();
var wpTextbox1 = document.getElementById("wpTextbox1");
if (!wpTextbox1.value) {
var url = 'http://commons.wikimedia.org/w/api.php'
+ "?format=json&callback=fill_index.common_content"
+ "&action=query&prop=revisions&rvprop=content&titles="
+ encodeURIComponent('File:' + mw.config.get('wgTitle'));
fill_index.create_script_obj(url);
}
},
};
/* FIXME: don't use an hard-coded namespace number */
if (mw.config.get("wgNamespaceNumber") == 112 && mw.config.get("wgAction") == "edit")
$(document).ready(fill_index.setup);