Utilisateur:GaAsBot/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 de conjugaison en français
// à partir de Catégorie:Wiktionnaire:Conjugaisons manquantes en français
// en 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 = "Conjugaisons manquantes en fr";

// Catégorie où chercher
var CrConjFr_Categ = 'Catégorie:Wiktionnaire:Conjugaisons manquantes en français';

// Préfixe des noms de pages
var CrConjFr_PfxMdl = 'fr-conj-';
var CrConjFr_PfxAnx = 'Conjugaison en français/';

// Variables globales
var CrConjFr_ListeVerbes = new Array();
var CrConjFr_ListePtr = -1;
var CrConjFr_VerbeEnCours = "";
var CrConjFr_PronEnCours = "";

// --------------------------------------------------------------------------------------------
// Ajout du lien dans les onglets après "renommer" & cie

$(CrConjFr_AddLink);

function CrConjFr_AddLink(){
  CommonWikt_AddTabMenu("javascript:CrConjFr_Demarre()",CrConjFr_TextOnglet);
}

/***********************************************************************************************/
/*                           Initialisation (juste au démarrage)                               */
/***********************************************************************************************/

// --------------------------------------------------------------------------------------------
//   démarrage du bidule
// --------------------------------------------------------------------------------------------
function CrConjFr_Demarre(){
    if(document.getElementById('CrConjFr_Boite')) return; // boiboite déjà ouverte
    setTimeout("CrConjFr_ListCat1()",1);
}

// --------------------------------------------------------------------------------------------
//   requête api du contenu de la cat
// --------------------------------------------------------------------------------------------
function CrConjFr_ListCat1(CatArray, category, categorycontinue){
    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;
 
    CommonWikt_ajax.http({ 
        url: URL,
        cat: category,
        catlist: CatArray,
        onSuccess:CrConjFr_ListCat2
    });
}
 
// --------------------------------------------------------------------------------------------
//  récupération des résultats de la requête api sur la catég (càd la liste des verbes)
// --------------------------------------------------------------------------------------------
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);
    }
    CrConjFr_ListePtr = -1;
    setTimeout("CrConjFr_VerbeSuivant1()",10);
}

/***********************************************************************************************/
/*                            Boucle sur tous les verbes de la liste                           */
/***********************************************************************************************/

// --------------------------------------------------------------------------------------------
// Passage au verbe suivant, requête du code html de l'article
// --------------------------------------------------------------------------------------------
function CrConjFr_VerbeSuivant1(){
    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];

        // 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);
        CommonWikt_ajax.http({ 
            url: urlVerbe + '&action=view',
            onSuccess:CrConjFr_VerbeSuivant2
        });
    }
}

// --------------------------------------------------------------------------------------------
// Affichage de l'article du verbe suivant, récup de certaines données dedans
// --------------------------------------------------------------------------------------------
function CrConjFr_VerbeSuivant2(Req,data){
    // remplacer contenu page en cours par l'article
    while(document.body.firstChild){ CommonWikt_Delete(document.body.firstChild); }
    document.body.innerHTML = Req.responseText;

    // récupérer prononciation
    var api = document.getElementsByClassName("API");
    if (api.length>0){
        var pron = api[0].innerHTML;
        CrConjFr_PronEnCours = pron.substr(1, pron.length-2);
    }else{
        CrConjFr_PronEnCours = "";
    }

    setTimeout("CrConjFr_OpenMenu()",10);
}

// --------------------------------------------------------------------------------------------
// Création de la boite de dialogue
// --------------------------------------------------------------------------------------------
function CrConjFr_OpenMenu(){
    //récup taille écran
    var scrn=CommonWikt_Screen();
 
    // 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= '280px';
    Menu.style.left= ( (scrn.largeur - Menu.clientWidth) / 2 ) + 'px';
    Menu.style.top= '0px';
    Menu.innerHTML = '<center><b>Création semi-auto de conjugaisons en français.</b></center><br />'
     + 'Verbe : <b>' + CrConjFr_VerbeEnCours + '</b>&nbsp;&nbsp;'
      + '<input type="button" style="cursor:pointer;" value="Éditer" onclick="CrConjFr_EditeVerbe();"/>&nbsp;&nbsp;'
      + '(<input type="text" id="IdNum" value="' + CrConjFr_ListePtr
       + '" size="3" style="text-align:right;" onchange="CrConjFr_AllerA();"/>'
      + ' / <small>' + (CrConjFr_ListeVerbes.length) + '</small>)<br />'
     + 'Prononcé : <input type="text" id="IdPron" value="' + 'ma.ʃi.n' + '" size="40" onchange="CrConjFr_WikiCode();"/><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>&nbsp;&nbsp;'
     + '<input type="checkbox" id="IdÊtre" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdÊtre">Être</label><br />'
     + '<input type="checkbox" id="IdRéfl" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdRéfl">Conjugaison pronominale</label>&nbsp;&nbsp;'
     + '<input type="checkbox" id="IdRécip" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdRécip">Réciproque</label><br />'
     + '<input type="checkbox" id="IdApo" style="cursor:pointer;" onchange="CrConjFr_WikiCode();" />'
      + '<label for="IdApo">Apostrophe</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_VerbeSuivant1();"/>&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" value="Terminer" title="Fermer" onclick="CrConjFr_Fin();"/>'
     + '</center>'
     + '<textarea id="IdBlabla" rows="3">texte</textarea><br />';

    document.body.appendChild(Menu);

    setTimeout("CrConjFr_Proposition()",10);
}

// --------------------------------------------------------------------------------------------
// Proposition pour le verbe suivant
// --------------------------------------------------------------------------------------------
function CrConjFr_Proposition(){

    // 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";
    var patt=/é/g;

         if (patt.test(term4)){ mdl = "1-é*er"; }
    else if ((term4=="quer")||(term4=="guer")){ mdl = "1"; }
    else 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 ")||(CrConjFr_VerbeEnCours.substr(0,4)== "auto") );
    var recipr = ( CrConjFr_VerbeEnCours.substr(0,4) == "entr" );
    prnl = prnl || recipr;

    // voyelle initiale
    var c0 = CrConjFr_VerbeEnCours.substr(0,1);
    var apo = ((c0=="a")||(c0=="e")||(c0=="é")||(c0=="i")||(c0=="o")||(c0=="u")||(c0=="h")||(c0=="œ"));

    // 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 = CrConjFr_PronEnCours;
    document.getElementById('IdApo').checked = apo;
    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 = CrConjFr_VerbeEnCours;
    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;
    var apo = document.getElementById('IdApo').checked;
    var etre = document.getElementById('IdÊtre').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);
        if (mdl=="1-ier"){alert("fr-conj-1-ier pas géré correctement");}
    }else if ((mdl=="1-é*er")){
        verbe=verbe.substr(0,lv-4);
        alert("fr-conj-1-é*er pas géré correctement");
    }else if ((mdl=="1")||(mdl=="2")){
        verbe=verbe.substr(0,lv-2);
    }else{
        verbe = "?";
    }
    var cle = CommonWikt_CleTri(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 if (mdl=="1-é*er"){
        var pronstr = pron.substr(0,pos);
    }else{
        var pronstr = "?";
    }

    // génération code
    var codewiki0 = "{{" + CrConjFr_PfxMdl + mdl + "|" + verbe + "|" + pronstr;
    if (cle != verbe) { var codewiki8 = "|clé=" + cle; }
        else          { var codewiki8 = ""; }
    if (apo) { var codewiki9 = "|'=1" + codewiki8 + "}}"; }
        else { var codewiki9 = codewiki8 + "}}"; }
    if (etre) { var codewiki1 = codewiki0 + "|aux-être=1" + codewiki9; }
        else  { var codewiki1 = codewiki0 + codewiki9; }
    if (!recipr) { var codewiki2 = codewiki0 + "|réfl=1" + codewiki9; }
        else     { var codewiki2 = codewiki0 + "|réfl=1|1s.gris=1|2s.gris=1" + codewiki9; }

    var codewiki = "";
    if (activ && refl){
        codewiki = "{{Onglets conjugaison\n"
                 + "|onglet1  = Conjugaison active\n"
                 + "|contenu1 = " + codewiki1 + "\n"
                 + "| onglet2  = Conjugaison pronominale\n"
                 + "|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";

     CommonWikt_ajax.http({ 
          url: urlAnx,
          text: codewiki,
          onSuccess:CrConjFr_Creer2
      });
}

// --------------------------------------------------------------------------------------------
// Création de la page
//----------------------------------------------------------------
function CrConjFr_Creer2(Req,data){
    var TexteFinal = data.text;
    document.body.innerHTML = Req.responseText; 

    var TextArea = document.getElementById('wpTextbox1');
    var SommaireFinal = "";
    document.getElementById('wpTextbox1').value = TexteFinal;
    document.getElementById('wpSummary').value = SommaireFinal;

     var action = document.getElementById("editform").action;
     var headers = new Array();
     headers['Content-Type'] = 'application/x-www-form-urlencoded';
     CommonWikt_ajax.http({ 
          url: action,
          method: "POST", 
          headers: headers,
          data: CrConjFr_GetPostValues(),
          onSuccess:CrConjFr_Creer3
     });
}

// --------------------------------------------------------------------------------------------
// Fin création de la page
//----------------------------------------------------------------
function CrConjFr_Creer3(Req,data){
     while(document.body.firstChild){ CommonWikt_Delete(document.body.firstChild); }
     document.body.innerHTML = Req.responseText; 
     if(!document.getElementById("editform")){
          setTimeout("CrConjFr_VerbeSuivant1()",2499);
     }else{
          alert("La création a échoué.");
     }
}

// --------------------------------------------------------------------------------------------
// Traitement du bouton "fermer"
// --------------------------------------------------------------------------------------------
function CrConjFr_Fin(){
    // destruction de la boite
    var Menu = document.getElementById('CrConjFr_Boite');
    if(Menu) { CommonWikt_Delete(Menu) }

    // rétablissement de la page initiale
    window.location.reload(false);
}

// --------------------------------------------------------------------------------------------
// Traitement du "aller à"
// --------------------------------------------------------------------------------------------
function CrConjFr_AllerA(){
    var newpos = document.getElementById('IdNum').value;
    CrConjFr_ListePtr = newpos-1;
    setTimeout("CrConjFr_VerbeSuivant1()",10);
}

// --------------------------------------------------------------------------------------------
// Ouverture d'un onglet en édition sur la page du verbe
//----------------------------------------------------------------
function CrConjFr_EditeVerbe(){
    var urlVrb = wgServer+wgScript + "?title="
               + encodeURIComponent(CrConjFr_VerbeEnCours)
               + "&action=edit";
    window.open(urlVrb);
}

/***********************************************************************************************/
/*       diverses fonctions système                                                             */
/***********************************************************************************************/
 
// --------------------------------------------------------------------------------------------
// FONCTION : Récupération des paramètres de publications
 
 
function CrConjFr_GetPostValues(){
      var data="";
      var Params = new Array("wpTextbox1", "wpSection", "wpSummary", "wpWatchthis", "wpMinoredit", "wpStarttime", "wpEdittime", "wpEditToken");
      for(var a=0,l=Params.length;a<l;a++){
            var Element = document.getElementById(Params[a]);
            if(!Element) Element = document.getElementsByName(Params[a])[0];
            if(Element){
                  if(!(Element.tagName && Element.tagName.toLowerCase()=='input' && Element.type == 'checkbox' && !Element.checked)){
                        data += '&'+Params[a]+'=' + encodeURIComponent(Element.value);
                  }
            }
      }
      return (data+'&wpsave=1');
}

//</nowiki>