Utilisateur:Cynddl/Gadget-évaluation.js

Une page de Wikiversité, la communauté pédagogique libre.

Note : après avoir publié 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 appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  • Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
  • Opera : appuyez sur Ctrl + F5.
var api; var dpage;
var result = [];

$(function() //This code runs when body is loaded.
{
    if (wgAction = 'view') {
        $.getScript('Utilisateur:Cynddl/editor.js', function(){
            api = JsMwApi();
            dpage = api.page('Discussion:'+wgPageName);
            mw.util.addPortletLink('p-tb', 'javascript:addEvaluationBox()', 'Évaluation');
        })
    }
});
 
function evaluation(idfaculté, avancement)
{
    return "{{" + "Évaluation|idfaculté="+idfaculté+"|avancement="+avancement+"}}\n\n";
}

function addEvaluationBox()
{
    $('#bodyContent').prepend('<div id="ev_cadre" style="border: 5px solid #aaa; width:30%; padding: 1em; margin-left:auto; margin-right:auto;" />');
    $('#ev_cadre').prepend('<center><img src="http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" /></center>');
    dpage({action: "query", prop: "revisions", rvprop:"content"}, function (res) {
        for (var pageid in res.query.pages) break;
    	var page = res.query.pages[pageid];
     	var text = page.revisions ? page.revisions[0]['*'] :'';
     	var indice = text.search("\n");
        var firstline = indice==-1 ? text : text.substr(0, indice);
 
        var exp = /^{{Évaluation\|idfaculté=(.*)\|avancement=(.*)}}$/gi;
        result = exp.exec(firstline.replace(/ /g,''));
        result = (result==null) ? [] : result;
 
        if (result.length > 2)
        {
            var id = result[1];
            var avancement = result[2];
        }
        else
        {
            var id = $('center>a')[0].title.split(':')[1].toLowerCase();
            var avancement = 0;
        }
        $('#ev_cadre').empty();
        $('#ev_cadre').prepend('<a href="javascript:$(\'#ev_cadre\').remove()" style="float:right">X</a><form id="evaluation" action="javascript:ev_send_form();"><label>Faculté : <input id="idfaculté" autofocus value="'+id+'"></label><br /><label>Avancement : <input id="avancement" type="range" min="0" max="4" value="'+avancement+'"></label><br /><input type="submit" value="Envoyer" onclick="ev_send_form();"></form>');
    })
}
 
function ev_send_form()
{
    var bandeau = evaluation($('#idfaculté').val(), $('#avancement').val());
    dpage.edit( function (text, save_function, edit_res)
    {
        // S'il existe déjà un bandeau…
 
        if (result.length > 2)
            text = bandeau + text.replace(/[\w\W]+?\n+?/,"")
        else
            text = bandeau + text;

        save_function(text, {summary: "Gadget d'évaluation", minor: true}, function (save_res) 
        {
            alert(save_res ? "Saved!" : "Not Saved")
        })
    });    
}