Aller au contenu

Utilisateur:Stephane8888/CreerConjugFr.js

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.

// --------------------------------------------------------------------------------------------
// Création d'une conjugaison en français
// à partir de quelques clics dans une boite de dialogue
//
// --------------------------------------------------------------------------------------------
// Code en partie inspiré de w:MediaWiki:Gadget-RenommageCategorie.js
// Le reste est fait par ArséniureDeGallium, sous CC-BY-SA.
// --------------------------------------------------------------------------------------------
//<nowiki>
 
// Libellé de l'onglet
var CrConjFr_TextOnglet = "Créer conjugaisons";
 
// Catégorie où chercher
var CrConjFr_Categ = 'Catégorie:Wiktionnaire:Conjugaisons manquantes en français';
 
// Préfixe des noms de modèles
var CrConjFr_PfxMdl = 'fr-conj-';
var CrConjFr_PfxAnx = 'Conjugaison en français/';
 
// Variables globales
var CrConjFr_ListeVerbes = new Array();
var CrConjFr_ListePtr = 0;
var CrConjFr_VerbeEnCours = '';
 
// --------------------------------------------------------------------------------------------
// Ajout du lien dans les onglets après "renommer" & cie
 
$(CrConjFr_AddLink);
 
function CrConjFr_AddLink(){
     var OngletsCactions = document.getElementById('p-cactions');
     if(OngletsCactions){
          var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
          CactionsUl.innerHTML += '<li><a href="javascript:CrConjFr_ListCat1();">'+CrConjFr_TextOnglet+'</a></li>';
          if(OngletsCactions.className){
               OngletsCactions.className = OngletsCactions.className.replace(/[ ]*emptyPortlet[ ]*/, " ");
          }
     }
}
 
/***********************************************************************************************/
/*                                                      */
/***********************************************************************************************/
 
// --------------------------------------------------------------------------------------------
//   requête api du contenu de la cat
// --------------------------------------------------------------------------------------------
function CrConjFr_ListCat1(CatArray, category, categorycontinue){
    if(document.getElementById('CrConjFr_Boite')) return; // boiboite déjà ouverte
 
    if(!CatArray) CatArray = new Array();
    if(!category) category = CrConjFr_Categ;    
    if(!categorycontinue) categorycontinue = '';
    var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers'
        + '&cmtitle=' + encodeURIComponent(category) 
        + '&cmlimit=499'
        + '&cmnamespace='
        + categorycontinue;
 
    CrConjFr_ajax.http({ 
        url: URL,
        cat: category,
        catlist: CatArray,
        onSuccess:CrConjFr_ListCat2
    });
}
 
// --------------------------------------------------------------------------------------------
//  récupération des résultats de la requête api
// --------------------------------------------------------------------------------------------
function CrConjFr_ListCat2(Req, data){    
    var CatArray = data.catlist;
    var category = data.cat;
    var ElementTraitement = Req.responseXML; 
    var Pages = ElementTraitement.getElementsByTagName('cm');
    for(a=0;a<Pages.length;a++){
        var TitrePage = Pages[a].getAttribute('title');
        CrConjFr_ListeVerbes.push(TitrePage);
    }
    setTimeout("CrConjFr_OpenMenu()",10);
}
 
// --------------------------------------------------------------------------------------------
// Création de la boite de dialogue
// --------------------------------------------------------------------------------------------
function CrConjFr_OpenMenu(){
    var agt=navigator.userAgent.toLowerCase();
    var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    if(is_ie){
        var LargeurEcran = parseInt(screen.width);
        var HauteurEcran = parseInt(screen.height);
    }else{
        var LargeurEcran = parseInt(window.innerWidth);
        var HauteurEcran = parseInt(window.innerHeight);
    }
 
    // création boiboite en html
    var Menu = document.createElement('div');
    Menu.id='CrConjFr_Boite';
    Menu.className ='CrConjFr_Boite';
    Menu.style.position='fixed';
    Menu.style.zIndex= 500;
    Menu.style.padding='5px';
    Menu.style.backgroundColor='white';
    Menu.style.border='3px double black';
    Menu.style.width= '400px';
    Menu.style.height= '300px';
    document.body.appendChild(Menu);
    PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ;
    PositionHaut = parseInt(0) ;
    Menu.style.left=PositionGauche + 'px';
    Menu.style.top=PositionHaut + 'px'; 
    Menu.innerHTML = '<center><b>Création semi-auto de conjugaisons en français.</b></center><br />'
     + 'Verbe : <input type="text" id="IdVerbNom" disabled="disabled" size="25"/>&nbsp;'
      + '&nbsp;(<input type="text" id="IdVerbNum" disabled="disabled" align="right" size="3"/>/'
      + '&nbsp;<input type="text" id="IdVerbNbr" disabled="disabled" size="3"/>)<br />'
     + 'Prononcé : <input type="text" id="IdPron" value="' + 'ma.ʃi.n' + '" size="40"/><br />'
     + '<select id="IdModl" onchange="CrConjFr_WikiCode();">'
      + '<option value="0">aucun</option>'
      + '<option value="1">fr-conj-1</option>'
      + '<option value="1-cer">fr-conj-1-cer</option>'
      + '<option value="1-ger">fr-conj-1-ger</option>'
      + '<option value="1-ier">fr-conj-1-ier</option>'
      + '<option value="1-uer">fr-conj-1-uer</option>'
      + '<option value="1-é*er">fr-conj-1-é*er</option>'
      + '<option value="2">fr-conj-2</option>'
     + '</select>&nbsp;<br />'
     + '<input type="checkbox" id="IdActiv" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdActiv">Conjugaison active</label><br />'
     + '<input type="checkbox" id="IdRéfl" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdRéfl">Conjugaison pronominale</label><br />'
     + '<input type="checkbox" id="IdRécip" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdRécip">Réciproque</label><br />'
     + '<br /><center>'
     + '<input type="button" style="cursor:pointer;" value="Créer" title="Créer" onclick="CrConjFr_Creer1();"/>&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" value="Passer" title="Passer" onclick="CrConjFr_Suivant1();"/>&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" value="Terminer" title="Fermer" onclick="CrConjFr_Fin();"/>'
     + '</center>'
     + '<textarea id="IdBlabla" rows="3">texte</textarea><br />';
 
    // Ouverture sur le premier verbe de la liste
    CrConjFr_ListePtr = -1;
    setTimeout("CrConjFr_Suivant1()",10);
}
 
// --------------------------------------------------------------------------------------------
// Traitement du bouton "fermer"
// --------------------------------------------------------------------------------------------
function CrConjFr_Fin(){
    var Menu = document.getElementById('CrConjFr_Boite');
    if(Menu){
        var agt=navigator.userAgent.toLowerCase();
        var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
        if(is_ie){
            Menu.removeNode(true);
        }else{
            if(Menu.parentNode){ document=Menu.parentNode.removeChild(Menu); }
        }
    }
}
 
// --------------------------------------------------------------------------------------------
// Passage au le verbe suivant
// --------------------------------------------------------------------------------------------
function CrConjFr_Suivant1(){
    if (CrConjFr_ListePtr >= CrConjFr_ListeVerbes.length-1 ){
        alert("C'est fini : t'as fait toute la liste !");
    }else{
        // verbe suivant
        CrConjFr_ListePtr ++;
        CrConjFr_VerbeEnCours = CrConjFr_ListeVerbes[CrConjFr_ListePtr];
        document.getElementById('IdVerbNom').value = CrConjFr_VerbeEnCours;
        document.getElementById('IdVerbNum').value = CrConjFr_ListePtr+1;
        document.getElementById('IdVerbNbr').value = CrConjFr_ListeVerbes.length;
        document.getElementById('IdPron').value = '';
 
        // requête pour obtenir le contenu de l'article sur le verbe
        var urlVerbe = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(CrConjFr_VerbeEnCours);
        CrConjFr_ajax.http({ 
            url: urlVerbe + '&action=raw',
            onSuccess:CrConjFr_Suivant2
        });
    }
}
 
// --------------------------------------------------------------------------------------------
// Proposition pour le verbe suivant
// --------------------------------------------------------------------------------------------
function CrConjFr_Suivant2(Req, data){
 
    // récupération de la prononciation
    var txt = Req.responseText;
    var pos1 = txt.search( /{{pron/m ) + 7;
    if (pos1>7) {
        var pos2 = txt.substr(pos1).search( /[\|}]/m );
        var pron = txt.substr(pos1, pos2);
    }else{
        var pron = "";
    }
 
    // présélection modèle
    var lv = CrConjFr_VerbeEnCours.length;
    var term2 = CrConjFr_VerbeEnCours.substr(lv-2);
    var term3 = CrConjFr_VerbeEnCours.substr(lv-3);
    var term4 = CrConjFr_VerbeEnCours.substr(lv-4);
    var mdl = "0";
 
         if (term3=="cer"){ mdl = "1-cer"; }
    else if (term3=="ger"){ mdl = "1-ger"; }
    else if (term3=="ier"){ mdl = "1-ier"; }
    else if (term3=="uer"){ mdl = "1-uer"; }
    else if (term2=="er") { mdl = "1";     }
    else if (term2=="ir") { mdl = "2";     }
 
    // verbe pronominal ou réciproque ?
    var prnl = ( CrConjFr_VerbeEnCours.substr(0,3) == "se " );
    var recipr = ( CrConjFr_VerbeEnCours.substr(0,5) == "auto-" );
    prnl = prnl || recipr;
 
    // màj de la boite avec les propositions
    document.getElementById('IdActiv').checked = !prnl;
    document.getElementById('IdRéfl').checked = prnl;
    document.getElementById('IdRécip').checked = recipr;
    document.getElementById('IdModl').value = mdl;
    document.getElementById('IdPron').value = pron;
    CrConjFr_WikiCode();
}
 
// --------------------------------------------------------------------------------------------
// Calcul du code wiki selon le contenu de la boite de dialogue
// --------------------------------------------------------------------------------------------
function CrConjFr_WikiCode(){
    // récupération des données de la boite de dialogue
    var verbe = document.getElementById('IdVerbNom').value;
    var lv = verbe.length;
    var pron = document.getElementById('IdPron').value;
    var lp = pron.length;
    var mdl = document.getElementById('IdModl').value;
    var activ = document.getElementById('IdActiv').checked;
    var refl = document.getElementById('IdRéfl').checked;
    var recipr = document.getElementById('IdRécip').checked;
 
    // calcul du "préfixe" orthographique
    if ((mdl=="1-cer")||(mdl=="1-ger")||(mdl=="1-ier")||(mdl=="1-uer")){
        verbe=verbe.substr(0,lv-3);
    }else if ((mdl=="1")||(mdl=="2")){
        verbe=verbe.substr(0,lv-2);
    }else{
        verbe = "?";
    }
 
   // "splitage" de la prononciation
    var lp = pron.length;
    var pos = pron.lastIndexOf(".");
    if ((mdl=="1-cer")||(mdl=="1-ger")||(mdl=="1-ier")||(mdl=="1-uer")){
        var pronstr = pron.substr(0,pos);
    }else if (mdl=="1"){
        var pronstr = pron.substr(0,pos) + "|" + pron.substr(pos+1,lp-pos-2);
    }else if (mdl=="2"){
        var pronstr = pron.substr(0,pos) + "|" + pron.substr(pos+1,lp-pos-3);
    }else{
        var pronstr = "?";
    }
 
    // génération code
    var codewiki0 = "{{" + CrConjFr_PfxMdl + mdl + "|" + verbe + "|" + pronstr;
    var codewiki1 = codewiki0 + "}}";
    if (!recipr) { var codewiki2 = codewiki0 + "|réfl=1}}"; }
        else     { var codewiki2 = codewiki0 + "|réfl=1|1s.gris=1|2s.gris=1}}"; }
 
    var codewiki = "";
    if (activ && refl){
        codewiki = "{{Onglets conjugaison\n"
                 + "|onglet1  = Conjugaison active\n"
                 + "|contenu1 = " + codewiki1 + "\n"
                 + "| onglet2  = Conjugaison pronominale"
                 + "|contenu2 = " + codewiki2 + "\n"
                 + "|sél = {{{sél|1}}}\n"
                 + "}}" ;
    }else if (activ){
        codewiki = codewiki1;
    }else if (refl){
        codewiki = codewiki2;
    }
 
    document.getElementById('IdBlabla').value = codewiki;
}
 
// --------------------------------------------------------------------------------------------
// Traitement du bouton "créer"
// --------------------------------------------------------------------------------------------
function CrConjFr_Creer1(){
    var codewiki = document.getElementById('IdBlabla').value;
    var urlAnx = wgServer+wgScript + "?title="
               + wgFormattedNamespaces[100] + ":"
               + encodeURIComponent(CrConjFr_PfxAnx)
               + encodeURIComponent(CrConjFr_VerbeEnCours)
               + "&action=edit";
 
     CrConjFr_ajax.http({ 
          url: urlAnx,
          onSuccess:CrConjFr_Creer2
      });
}
 
// --------------------------------------------------------------------------------------------
// Création de la page
//----------------------------------------------------------------
function CrConjFr_Creer2(Req,data){
    alert("salut GaAs 2");
 
    setTimeout("CrConjFr_Creer3()",10);
}
 
// --------------------------------------------------------------------------------------------
// Création de la page
//----------------------------------------------------------------
function CrConjFr_Creer3(){
    alert("salut GaAs 3");
 
    setTimeout("CrConjFr_Suivant1()",10);
}
 
/***********************************************************************************************/
/*       diverses fonctions système                                                             */
/***********************************************************************************************/
 
// --------------------------------------------------------------------------------------------
// Fonction de requête ajax
// --------------------------------------------------------------------------------------------
var CrConjFr_ajax = {
  http:function(bundle){ var xmlhttp; try{ xmlhttp = new XMLHttpRequest(); }catch(e){ try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ xmlhttp = false; }}}; if(xmlhttp){ xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState == 4){ CherCats_ajax.httpComplete(xmlhttp,bundle);}}; xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true); if (bundle.headers) { for (var field in bundle.headers){ try{ xmlhttp.setRequestHeader(field,bundle.headers[field]); }catch(err){}}}; xmlhttp.send(bundle.data ? bundle.data : null); }; return xmlhttp;}, 
  httpComplete: function(xmlhttp,bundle){ if(xmlhttp.status == 200 || xmlhttp.status == 302){ if(bundle.onSuccess) bundle.onSuccess(xmlhttp,bundle); }else if(bundle.onFailure){ bundle.onFailure(xmlhttp,bundle); }else{ }}
};
//</nowiki>