Utilisateur:Phe/Fill Index.js

La bibliothèque libre.

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);