Aller au contenu

Utilisateur:Phe/Oeuvre par.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.
// Essaye de trouver de nouveaux travaux par un auteur donnée
function fill_work_by_cb_2(data)
{
    var wpTextbox1 = document.getElementById("wpTextbox1");
    if (wpTextbox1 && data.query.pages) {
        // Collecter les résultats en filtrant ceux déjà présent dans la page auteur
        // sous une forme identique ou de page principale.
        var results = [];
        for (var ids in data.query.pages) {
            if (!document.phe.links[data.query.pages[ids].title]
                   /*&& !document.phe.links[data.query.pages[ids].title.split('/')[0]]*/
                   && data.query.pages[ids].ns == "0") {
                results.push(data.query.pages[ids].title);
            }
        }
        // Émettre le wikicode en filtrant les sous-pages si la page principale est elle
        // aussi dans les résultats.
        var titles_text = '';
        for (var idx in results) {
            var str = results[idx];
            var pos = str.indexOf('/');
            if (false || pos == -1 || !$.inArray(str.slice(0, pos), results)) {
                titles_text += '*[[' + str + ']]\n';
            }
        }
        if (titles_text.length) {
            wpTextbox1.value = titles_text + '\n' + wpTextbox1.value;
        }
    }
}

function work_by_2(title)
{
    var base_url = mw.config.get('wgServer') + mw.config.get('wgScriptPath')
        + "/api.php?format=json&redirects";

    var url = base_url
        + "&callback=fill_work_by_cb_2&action=query&generator=backlinks&gblredirect=&gbllimit=500&gbltitle="
        + encodeURIComponent(title);

    create_script_obj(url);
}

function create_script_obj(url)
{
    var scriptObj = document.createElement("script");
    scriptObj.setAttribute("type", "text/javascript");
    scriptObj.setAttribute("src", url);
    document.body.appendChild(scriptObj);
}

function fill_work_by_cb_1(data)
{
     if (!document.phe)
         document.phe = Object();
     document.phe.links = new Object();
     if (data.query && data.query.pages) {
        for (var ids in data.query.pages) {
            if (data.query.pages[ids].missing == undefined) {
                document.phe.links[data.query.pages[ids].title] = true;
            }
         }
     }
     work_by_2(mw.config.get('wgPageName'));
}

function work_by_1()
{
    if (mw.config.get('wgNamespaceNumber') != 102)
         return;

    var base_url = mw.config.get('wgServer') + mw.config.get('wgScriptPath')
        + "/api.php?format=json&redirects";

    var url = base_url
        + "&callback=fill_work_by_cb_1&action=query&generator=links&gplnamespace=0&gpllimit=500&titles="
        + encodeURIComponent(mw.config.get('wgPageName'));

    create_script_obj(url);
}


function add_works_by_button3(){
 
    var toolbar = document.getElementById("toolbar");
	if(toolbar){
		var image = document.createElement("img");
		image.width = 23;
		image.height = 22;
		image.border = 0;
		image.className = "mw-toolbar-editbutton";
		image.style.cursor = "pointer";
		image.alt = "works_by";
		image.title = "Find works by an author";
		image.src = "//upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png";
		image.onclick = work_by_1;
		toolbar.appendChild(image);
        }
}

if (mw.config.get("wgNamespaceNumber") == 102 && $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
    $(document).ready(add_works_by_button3);
}