Projet:Herpétologie/gadgets/Synonyme.js

Une page de Wikipédia, l'encyclopédie libre.

//

//

/*
 
Permet de créer le synonyme a partir de l'espèce
 
la structure du code et la plupart du code de ce gadget vient du gadget [[MediaWiki:Gadget-OuvrageArticle.js]] (brillamment) developpé par [[Utilisateur:Dr Brains]]
 
*/
 
// ------------------------------------------------------ Modèles par défaut 
var Synonym_Template = "#REDIRECTION [[ESPECE@]]\n"
+"[[Catégorie:CATEGORIE@]]\n"
+"[[Catégorie:FAMILLE@]]"
 
// ------------------------------------------------------ Lancement
if( (mw.config.get('wgNamespaceNumber')>-1)&&( (mw.config.get('wgAction')=="edit")||(mw.config.get('wgAction')=="submit")) ) addOnloadHook(Synonyme_AddButton);
 
// ------------------------------------------------------ Ajout du bouton
function Synonyme_AddButton(){
        if(!document.editform) return;
        var Toolbar = document.getElementById('toolbar');
        if(!Toolbar){
                Toolbar = document.createElement('div');
                Toolbar.id = 'toolbar';
                document.editform.insertBefore(Toolbar, document.editform.firstChild);
        }
        var button = '<img src="http://upload.wikimedia.org/wikipedia/commons/1/1b/Button_renommer.png" heigth="23" width="23" alt="Synonyme" />';
 
        var NewButton = document.createElement('a')
        NewButton.title = "Créer un synonyme";
        NewButton.href="javascript:Synonyme_OpenMenu();";
        NewButton.innerHTML = button;
        Toolbar.appendChild(NewButton);
 
}
 
// ------------------------------------------------------ Création du menu
function Synonyme_OpenMenu(){
        var Toolbar = document.getElementById('toolbar');
        if(!Toolbar) Toolbar = document.getElementById("Oldbar");
        var MenuDiv = document.getElementById('Synonyme');
        if(MenuDiv){
                return;
        }else{
                MenuDiv = document.createElement('div');
                MenuDiv.id = 'Menu_Synonyme';
                $(MenuDiv).insertAfter(Toolbar);
        }
 
        var TextArea = document.createElement('textarea');
        TextArea.id = 'Menu_Synonyme_Input';
        TextArea.rows = 5;
 
        var InputOK = document.createElement('input');
        InputOK.type = "button";
        InputOK.value = "Créer le texte du synonyme";
        InputOK.onclick = Synonyme_CheckArticleParams;
        InputOK.select = Synonyme_CheckArticleParams;
 
        var InputCopysolution = document.createElement('input');
        InputCopysolution.type = "button";
        InputCopysolution.value = "Copier solution";
        InputCopysolution.onclick = Synonyme_Copysolution;
        InputCopysolution.select = Synonyme_Copysolution;
 
        var InputPreview = document.createElement('input');
        InputPreview.type = "button";
        InputPreview.value = "Créer les synonymes";
        InputPreview.onclick = Synonyme_CreateSyn;
        InputPreview.select = Synonyme_CreateSyn;
 
        var InputCancel = document.createElement('input');
        InputCancel.type = "button";
        InputCancel.value = "Fermer";
        InputCancel.onclick = Synonyme_Cancel;
        InputCancel.select = Synonyme_Cancel;
 
        MenuDiv.appendChild(TextArea);
        MenuDiv.appendChild(InputOK);
        MenuDiv.appendChild(InputCopysolution);
        MenuDiv.appendChild(InputPreview);
        MenuDiv.appendChild(InputCancel);
}
 
// ------------------------------------------------------ Annulation du menu
function Synonyme_Cancel(){
        var MenuDiv = document.getElementById('Menu_Synonyme');
        MenuDiv.parentNode.removeChild(MenuDiv);
}
 
// ------------------------------------------------------ Copier solution
function Synonyme_Copysolution(){
        var Textarea = document.getElementById('Menu_Synonyme_Input');
        var Value = Textarea.value;
 
    if (window.clipboardData) { // IE
                // Le contenu actuel du presse-papier sera écrasé par la valeur de sText.
                window.clipboardData.setData('Text', Value);
                // On ne veut pas suivre le lien après le clic.
                return false;
    } else if (typeof(netscape) == 'object' && typeof(Components) == 'object') { // Mozilla
                try
                {
                        // On test si la configuration permet l'accès au presse-papier.
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                }
                catch (e)
                {
                        alert("Impossible d'accéder au presse-papier (mettez la valeur signed.applets.codebase_principal_support a true dans l'URL about:config");
                }
                // Initialisation du composant fournit par Mozilla.
                var gClipboardHelper =
                Components.classes["@mozilla.org/widget/clipboardhelper;1"]
                .getService(Components.interfaces.nsIClipboardHelper);
                // Copie du texte dans le presse papier.
                gClipboardHelper.copyString(Value);
                // On ne veut pas suivre le lien après le clic.
                return false;
    } else
        {
                alert("Cette fonctionnalité n'est pas disponible pour votre navigateur");
        }
}
 
// ------------------------------------------------------ Mettre en forme
function Synonyme_CheckArticleParams(){
        var Textarea = document.getElementById('Menu_Synonyme_Input');
        var Synonym = Synonym_Template;
 
        var EditValue = document.editform.wpTextbox1.value;
        var EditValueLine1 = EditValue.split("\n");
        var Resultat;
        // boucle sur les lignes de l'article
        for(var a=0;a<EditValueLine1.length;a++){
                var EmptyParamRegExp1 = new RegExp("(.*)\\{\\{Taxobox[ ]*\\|[ ]*famille[ ]*\\|[ ]*([^ ]*)[ ]*(.*)", "ig")
                var EmptyParamRegExp2 = new RegExp("(.*)\\{\\{Taxobox[ ]*\\|[ ]*sous\\-famille[ ]*\\|[ ]*([^ ]*)[ ]*(.*)", "ig")
                var EmptyParamRegExp3 = new RegExp("(.*)\\{\\{Taxobox taxon[ ]*\\|[ ]*animal[ ]*\\|[ ]*espèce[ ]*\\|[ ]*([^\\|]*)[ ]*(.*)", "ig")
                var EmptyParamRegExp4 = new RegExp("(.*)\\{\\{Taxobox[ ]*\\|[ ]*ordre[ ]*\\|[ ]*([^ ]*)[ ]*(.*)", "ig")
                var EmptyParamRegExp5 = new RegExp("(.*)\\{\\{Taxobox[ ]*\\|[ ]*sous\\-ordre[ ]*\\|[ ]*([^ ]*)[ ]*(.*)", "ig")
                Resultat = EditValueLine1[a].replace(EmptyParamRegExp1, "$2");
                if (Resultat!=EditValueLine1[a]){
                        var Famille = EditValueLine1[a].replace(EmptyParamRegExp1, "$2").replace(/^\s+|\s+$/g,"");;
                }
                Resultat = EditValueLine1[a].replace(EmptyParamRegExp2, "$2");
                if (Resultat!=EditValueLine1[a]){
                        var Sous_Famille = EditValueLine1[a].replace(EmptyParamRegExp2, "$2").replace(/^\s+|\s+$/g,"");;
                }
                Resultat = EditValueLine1[a].replace(EmptyParamRegExp3, "$2");
                if (Resultat!=EditValueLine1[a]){
                        var Espece = EditValueLine1[a].replace(EmptyParamRegExp3, "$2").replace(/^\s+|\s+$/g,"");;
                }
                Resultat = EditValueLine1[a].replace(EmptyParamRegExp4, "$2");
                if (Resultat!=EditValueLine1[a]){
                        var Ordre = EditValueLine1[a].replace(EmptyParamRegExp4, "$2").replace(/^\s+|\s+$/g,"");
                        Ordre = Ordre.substring(0,1).toUpperCase() + Ordre.substring(1,Ordre.length).toLowerCase(); 
                }
                Resultat = EditValueLine1[a].replace(EmptyParamRegExp5, "$2");
                if (Resultat!=EditValueLine1[a]){
                        var Sous_Ordre = EditValueLine1[a].replace(EmptyParamRegExp5, "$2").replace(/^\s+|\s+$/g,"");
                        Sous_Ordre = Sous_Ordre.substring(0,1).toUpperCase() + Sous_Ordre.substring(1,Sous_Ordre.length).toLowerCase(); 
                }
        }

        Synonym = Synonym.replace(/ESPECE@/, Espece);
        if(Sous_Famille){
                Synonym = Synonym.replace(/FAMILLE@/, Sous_Famille);
        }else{
                Synonym = Synonym.replace(/FAMILLE@/, Famille);
        }
        var Categorie = null;
        switch (Ordre) {
        case 'Testudines': Categorie = "Synonyme de tortues (nom scientifique)"; break;
        case 'Anura': Categorie = "Synonyme d'anoures (nom scientifique)"; break;
        case 'Urodela': Categorie = "Synonyme d'urodèles (nom scientifique)"; break;
        case 'Caudata': Categorie = "Synonyme d'urodèles (nom scientifique)"; break;
        case 'Gymnophiona': Categorie = "Synonyme de gymnophiones (nom scientifique)"; break;
        case 'Crocodilia': Categorie = "Synonyme de crocodiliens (nom scientifique)"; break;
        case 'Rhynchocephalia': Categorie = "Synonyme de rhynchocéphales (nom scientifique)"; break;
        case 'Squamata':{ 
					switch (Sous_Ordre) {
					case 'Serpentes': Categorie = "Synonyme de serpents (nom scientifique)"; break;
					case 'Amphisbaenia': Categorie = "Synonyme d'amphisbènes (nom scientifique)"; break;
					case 'Sauria': Categorie = "Synonyme de sauriens (nom scientifique)"; break;
					default: Categorie = "Synonyme de squamates (nom scientifique)";
					}
				} 
				break;
        default: Categorie = 'unknown';
        } 
        Synonym = Synonym.replace(/CATEGORIE@/, Categorie);
 
        Textarea.value = Synonym;    
}
 
// ------------------------------------------------------ Recherche texte selectionne
function Synonyme_CreateSyn(){
        var EditValue = document.editform.wpTextbox1.value;
        var EditValueLine1 = EditValue.split("\n");
        var Resultat;
        var Resultat1;
        var Syn_mode = 0;
        var EmptyParamRegExp5 = new RegExp("(.*)\\{\\{Taxobox synonymes[ ]*\\|(.*)", "ig")
        var EmptyParamRegExp6 = new RegExp("(.*)\\'\\'([^\\'\\']*)\\'\\'(.*)", "ig")
        var EmptyParamRegExp7 = new RegExp("(.*)\\}\\}(.*)", "ig")
        var EmptyParamRegExp8 = new RegExp("(.*)\\{\\{lang[ ]*\\|([^\\|]*)\\|([^\\}\\}]*)\\}\\}(.*)", "ig")
        var EmptyParamRegExp9 = new RegExp("<small>(.*)</small>", "ig")
        // boucle sur les lignes de l'article
        for(var a=0;a<EditValueLine1.length;a++){
                if (Syn_mode==0){
                        Resultat = EditValueLine1[a].replace(EmptyParamRegExp5, "$2");
                        if (Resultat!=EditValueLine1[a]){
                                Syn_mode = 1;
                        }
                }
                if (Syn_mode==1){
                        var Syn_name = EditValueLine1[a].replace(EmptyParamRegExp9, "").replace(EmptyParamRegExp6, "$2");
                        Syn_name = Syn_name.replace(EmptyParamRegExp8, "$3").replace(/^\s+|\s+$/g,"");
                        EditValueLine1[a] = EditValueLine1[a].replace(EmptyParamRegExp8, "$1 $3 $4");
                        if (Syn_name!=EditValueLine1[a]){
                                var newwin = window.open('http://fr.wikipedia.org/w/index.php?title=' + Syn_name + '&action=edit');
                        }
                        Resultat1 = EditValueLine1[a].replace(EmptyParamRegExp7, "$1");
                        if (EditValueLine1[a]!=Resultat1){
                                Syn_mode = 2;
                        }
                }
        }
}
 
// ------------------------------------------------------ 
//