Utilisateur:Dr Brains/MultiUpload.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//<source lang=javascript>//<pre><nowiki>


if(mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgTitle') == "MultiUpload"){
     // mw.config.get('wgCanonicalSpecialPageName') = "MultiUpload";
     importStylesheetURI('http://fr.wikipedia.org/w/index.php?title=User:Dr Brains/MultiUpload.css&action=raw&ctype=text/css');
     mw.loader.load('//bits.wikimedia.org/skins-1.5/common/edit.js?283-16');
     mw.loader.load('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr Brains/BotFramework.js&action=raw&ctype=text/javascript');
     mw.loader.load('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr_Brains/MultiUploadUtils.js&action=raw&ctype=text/javascript');
     addOnloadHook(MultiUpload_Init);
}else{
     addOnloadHook(MultiUpload_AddLink);
}

var MultiUpload_Text_Title = "Importer des fichiers";
var MultiUpload_Text_File = "Fichier";

var MultiUpload_Text_CloseText    = "Annuler";
var MultiUpload_Text_CloseConfirm = "Voulez-vous vraiment annuler le téléchargement de ce fichier ?";
var MultiUpload_Text_NewText      = "Nouveau fichier";
var MultiUpload_Text_NewConfirm   = "Voulez-vous vraiment valider ces informations et ajouter un nouveau fichier ?";
var MultiUpload_Text_OKText       = "Lancer le téléversement";
var MultiUpload_Text_OKConfirm    = "Voulez-vous vraiment lancer le téléversement";

var MultiUpload_Text_ToggleText = "Masquer/Afficher";

var MultiUpload_Text_RunOKTextBefore = "Le fichier « ";
var MultiUpload_Text_RunOKTextAfter = " » a été téléversé avec succès.";



var MultiUpload_ContentId;
var MultiUpload_UploadIndex        = 0;

function MultiUpload_Init(){
     var Title = document.getElementsByTagName('title')[0];
     Title.innerHTML = MultiUpload_Text_Title;  
     var Content = document.getElementById("bodyContent"); 
     if(!Content) Content = document.getElementById("mw_contentheader"); 
     if(!Content) Content = document.getElementById("article"); 
     if(!Content) return;
     MultiUpload_ContentId = Content.id;
     while(Content.firstChild){ Content.removeChild(Content.firstChild); } 
     var Titre = document.getElementsByTagName('h1')[0]
     Titre.innerHTML = MultiUpload_Text_Title;
     MultiUpload_CreateUploadForm();
}

function MultiUpload_AddLink(){
     var UploadLi = document.getElementById("t-upload");
     if(!UploadLi) return;
     var NewLi = document.createElement('li');
     NewLi.id = "t-multiupload";
     var NewA = document.createElement('a');
     NewA.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join("Special:MultiUpload");
     NewA.innerHTML = MultiUpload_Text_Title;
     NewLi.appendChild(NewA);
     if(UploadLi.nextSibling){
          UploadLi.parentNode.insertBefore(NewLi, UploadLi.nextSibling);
     }else{
          UploadLi.parentNode.appendChild(NewLi);
     }
}

function MultiUpload_CreateUploadForm(){
    MultiUpload_UploadIndex++
    MultiUpload_ValidLastUploadForm();
    var url = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join("Special:Upload");
    BotFrameworkRequestGET(url, MultiUpload_InsertUploadForm, true)
}

function MultiUpload_InsertUploadForm(Req, Param){
    var Content = document.getElementById(MultiUpload_ContentId);
    if(!Content) return;
    if(!mw.config.get('wgFileExtensions')) mw.config.get('wgFileExtensions') = getFileExtensions();
    var NewFieldset = document.createElement('fieldset');
    NewFieldset.id = "UploadFieldset";
    var NewLegend = document.createElement('legend');
    NewLegend.id = "UploadLegend";
    NewLegend.innerHTML = MultiUpload_Text_File + " N°" + MultiUpload_UploadIndex;
    NewFieldset.appendChild(NewLegend);
    var Temp = document.createElement('div');
    Temp.style.display = "none";
    document.body.appendChild(Temp);
    Temp.innerHTML = Req.responseText;
    var UploadForm = BotFramework_getElementWithId( "mw-upload-form" , "form" , Temp );
    NewFieldset.appendChild(UploadForm);
    Content.insertBefore(NewFieldset, Content.firstChild);
    Temp.parentNode.removeChild(Temp);
    wgUploadSetup();
    MultiUpload_ModifyUploadForm();
}

function MultiUpload_ModifyUploadForm(){
    var OldButton = document.getElementsByName('wpUpload')[0];
    var NewButtonNew = document.createElement('input');
    NewButtonNew.type = "button";
    NewButtonNew.id = "MultiUpload_PlusButton";
    NewButtonNew.value = MultiUpload_Text_NewText;
    NewButtonNew.onclick = function(){
        MultiUpload_CreateUploadForm();
    }
    NewButtonNew.onselect = function(){
        MultiUpload_CreateUploadForm();
    }
    OldButton.parentNode.insertBefore(NewButtonNew, OldButton);
    var NewButtonOK = document.createElement('input');
    NewButtonOK.type = "button";
    NewButtonOK.id = "MultiUpload_OKButton";
    NewButtonOK.value = MultiUpload_Text_OKText;
    NewButtonOK.onclick = function(){
        MultiUpload_RunUpload();
    }
    NewButtonOK.onselect = function(){
        MultiUpload_RunUpload();
    }
    OldButton.parentNode.insertBefore(NewButtonOK, OldButton);
    OldButton.style.display = "none";
    var IgnoreWarnings = document.getElementById("wpIgnoreWarning");
    if(IgnoreWarnings){
        IgnoreWarnings.checked = "checked";
        IgnoreWarnings.disabled = "disabled";
    }
    var editbox = document.getElementById('wpUploadDescription');
    if (editbox){
        if (editbox.value == ''){
        editbox.value = "{"+"{Information\n"
                      + "|Description = Indiquez ici toutes informations utiles pour comprendre ce que l'image représente\n"
                      + "|Source = Indiquez ici l'adresse web où a été trouvée l'image initialement\n"
                      + "|Date = \n"
                      + "|Auteur = Indiquez qui est l'auteur de l'image\n"
                      + "|Permission = \n"
                      + "}"+"}\n\n"
                      + "<!--Merci d'ajouter au moins une catégorie. Exemple : [[Catégorie:Image sur Wikipédia]]-->";
        }
    }
}

var MultiUpload_ParamsNames = new Array("wpUploadFile", "wpDestFile", "wpUploadDescription", "wpLicense", "wpWatchthis", "wpIgnoreWarning", "wpEditToken", "title", "wpDestFileWarningAck");

function MultiUpload_RunUpload(){
    MultiUpload_UploadIndex++
    MultiUpload_ValidLastUploadForm();
    var AllFileParams = new Array();
    for(var a=0,l=MultiUpload_UploadIndex.length;a<l;a++){
        var Fieldset = document.getElementById("UploadFieldset_MU" + a);
        if(!Fielset) continue;
        var ThisFileParams = new Array();
        for(var b=0,m=MultiUpload_ParamsNames.length;b<m;b++){
            var Element = document.getElementById(MultiUpload_ParamsNames[b]+"_MU" + a);
            if(!Element) Element = document.getElementByName(MultiUpload_ParamsNames[b]+"_MU" + a)[0];
            if(Element){
                if(Element.id){
                    Element.id = Element.id.split("_MU" + a).join("");
                    if(Element.id == "wpDestFile") ThisFileParams["wpDestFile"] = Element.value;
                }
                if(Element.name) Element.name = Element.name.split("_MU" + a).join("");
            }
        }
        ThisFileParams["Index"] = a;
        BotFrameworkRequestPOSTUpload(MultiUpload_RunOK, ThisFileParams );
    }
}

function MultiUpload_RunOK(Req, ThisFileParams){
    var Index = ThisFileParams["Index"];
    var File =  ThisFileParams["wpDestFile"];
    var Fieldset = document.getElementById("UploadFieldset_MU" + Index);
    if(!Fielset) return;

    var Legend = Fieldset.getElementsByTagName('legend')[0];
    if(Legend){
        var NewLink = document.createElement('a');
        NewLink.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join(mw.config.get('wgFormattedNamespaces')[6] + ":" + File);
        NewLink.title = mw.config.get('wgFormattedNamespaces')[6] + ":" + File;
        NewLink.appendChild(document.createTextNode(File));
        Legend.appendChild(document.createTextNode(" — " +MultiUpload_Text_RunOKTextBefore));
        Legend.appendChild(NewLink);
        Legend.appendChild(document.createTextNode(MultiUpload_Text_RunOKTextAfter));
    }
    var Form = Fieldset.getElementsByTagName('form')[0];
    if(Form){
        var Result = BotFramework_Parse(Req.responseText);
        var bC = MultiUpload_getElementWithId( MultiUpload_ContentId , "div" , Result );
        bC.id = "Result_"+Index;
        Form.parentNode.insertBefore(bC, Form);
        Form.parentNode.removeChild(Form);
    }
}

function MultiUpload_ValidLastUploadForm(){
    var FieldSet = document.getElementById("UploadFieldset");
    if(!FieldSet) return;
    var Nodes = FieldSet.getElementsByTagName('*');
    for(var a=0,l=Nodes.length;a<l;a++){
        if(Nodes[a].tagName){
            var Tag = Nodes[a].tagName.toLowerCase()
            if(Tag == "input" || Tag == "textarea"){
                Nodes[a].disabled = "disabled";
            }
        }
        if(!Nodes[a].id && !Nodes[a].name) continue;
        if(Nodes[a].id) Nodes[a].id = Nodes[a].id + "_MU"+ MultiUpload_UploadIndex;
        if(Nodes[a].name) Nodes[a].name = Nodes[a].name + "_MU"+ MultiUpload_UploadIndex;

    }
    FieldSet.id = FieldSet.id + "_MU"+ MultiUpload_UploadIndex
    var Legend = FieldSet.getElementsByTagName('legend')[0];
    if(Legend){
        var Value = Legend.innerHTML;
        Legend.innerHTML = "";
        var InputToggle = document.createElement('input');
        InputToggle.type = "button";
        InputToggle.id = "MultiUpload_ToggleButton_MU"+MultiUpload_UploadIndex;
        InputToggle.value = MultiUpload_Text_ToggleText + " " + Value;
        InputToggle.onclick = function(){
            MultiUpload_ToggleForm(MultiUpload_getIndex(this));
        }
        InputToggle.onselect = function(){
            MultiUpload_ToggleForm(MultiUpload_getIndex(this));
        }
        Legend.appendChild(InputToggle);
        var InputCancel = document.createElement('input');
        InputCancel.type = "button";
        InputCancel.id = "MultiUpload_CancelButton_MU"+MultiUpload_UploadIndex;
        InputCancel.value = MultiUpload_Text_CloseText + " " + Value;
        InputCancel.onclick = function(){
            MultiUpload_CancelThisUpload(MultiUpload_getIndex(this));
        }
        InputCancel.onselect = function(){
            MultiUpload_CancelThisUpload(MultiUpload_getIndex(this));
        }
        Legend.appendChild(InputCancel);
        MultiUpload_ToggleForm(MultiUpload_UploadIndex);
    }
}


function MultiUpload_ToggleForm(Index){
    var UploadForm = document.getElementById("mw-upload-form_MU"+Index);
    if(!UploadForm) return;
    if(UploadForm.style.display == "none"){
        UploadForm.style.display = "block"
    }else{
        UploadForm.style.display = "none"
    }
}


function MultiUpload_CancelThisUpload(Index){
    var UploadFieldset = document.getElementById("UploadFieldset_MU"+Index);
    if(!UploadFieldset) return;
    if(confirm(MultiUpload_Text_CloseConfirm)) UploadFieldset.parentNode.removeChild(UploadFieldset);
}

// RÉCUPÉRATION DU N° D'INDEX
 
function MultiUpload_getIndex( Element ){
    return parseInt(Element.id.replace(/[^0-9]/g, ""));
}

function MultiUpload_getElementWithId( elementId , elementTagName , elementParentNode ){
      if(!elementParentNode) elementParentNode = document; 
      if(!elementTagName) elementTagName = "*";  
      if (elementParentNode.getElementById) return elementParentNode.getElementById(elementId); 
      var TheElement = false;
      var Elements = elementParentNode.getElementsByTagName(elementTagName);
      var elementcount = 0;
      while(elementcount<Elements.length){
            var Id = Elements[elementcount].getAttribute('id');
            if(Id){
                  if(Id==elementId){
                        TheElement = Elements[elementcount];
                        break;
                  }
            }
            elementcount++
      }
      if (! TheElement) return null;
      return TheElement;
}

//</nowiki></pre></source>