Skip to content
Extraits de code Groupes Projets
Bifurcation depuis spip / spip
15779 validations de retard le dépôt en amont.
async_upload.js 3,81 Kio
// JavaScript Document
jQuery.async_upload_count = 0;
jQuery.fn.async_upload = function(add_function) {
  return this.submit(function(){
    return do_async_upload(this);
  });
  
  function do_async_upload(form) {
    jQuery.async_upload_count++;
    var num = jQuery.async_upload_count;
    var jForm = $(form);
    var par = $(jForm).parent();
    $("div.upload_message",par)
    .remove();
    if(!form.async_init) {
      form.async_init = true
      jForm
      .attr("target","upload_frame"+num)
      .append("<input type='hidden' name='iframe' value='iframe'>")
      .find("input[@name='redirect']")
        .val("")
      .end();
    }
  
    if (!form.jFrame) {
      form.jFrame = $("<iframe id='upload_frame"+num+"' name='upload_frame"+num+"' frameborder='0' marginwidth='0' marginheight='0' scrolling='no' style='position:absolute;width:1px;height:1px;' onload='this.iframeload("+num+")'></iframe>")
      .appendTo("body");
    }
    
    //IE apparently do not write anything in an iframe onload event handler 
    form.jFrame[0].iframeload = function(num) {
        //remove the previous message
        $("div.upload_message",par).remove();
        var res = $(".upload_answer",this.contentDocument || document.frames(this.name).document.body);
        //possible classes 
        //upload_document_added
        if(res.is(".upload_document_added")) {
          return add_function(res,jForm);
        }
        //upload_error
        if(res.is(".upload_error")) {
          var msg = $("<div class='upload_message'>")
          .append(res.html())
          jForm.after(msg[0]);
          return true;
        } 
        //upload_zip_list
        if(res.is(".upload_zip_list")) {
          var zip_form = $("<div class='upload_message'>").append(res.html());
          zip_form
          .find("form")
            .attr("target","upload_frame"+num)
            .append("<input type='hidden' name='iframe' value='iframe'>")
          .end();
          jForm.after(zip_form[0]);
          return true;  
        }
    };
    
    jForm.before($("<div class='upload_message' style='height:1%'>").append(ajax_image_searching)[0]);
    return true;
  }
}

function async_upload_article_edit(res,jForm){
      var cont;
      //add a class to new documents
      res.
      find(">div[@class]")
        .addClass("documents_added")
        .css("display","none")
      .end();
      if (jForm.find("input[@name='arg']").val().search("vignette")!=-1)
        cont = $("#liste_images");
      else
        cont = $("#liste_documents");
      cont
      .prepend(res.html());
      //find added documents, remove label and show them nicely
      //set overflow to visible to completely show the overlay icon
      cont.
      find("div.documents_added")
        .removeClass("documents_added")
        .show("slow",function(){
            var anim = $(this).css({"height":"","overflow":""});
            //bug explorer-opera-safari
            if(!jQuery.browser.mozilla) anim.width(this.orig.width-2);
            $(anim).find("img[@onclick]").get(0).onclick();
        })
        .overflow("");
      verifForm(cont);
      return true;
}

function async_upload_icon(res) {
  res.find(">div").each(function(){
    var cont = $("#"+this.id);
    verifForm(cont.html($(this).html()));
    $("form.form_upload_icon",cont).async_upload(async_upload_icon);
		cont.find("img[@onclick]").each(function(){this.onclick();});
  });
  return true;                     
}

function async_upload_portfolio_documents(res){
  res.find(">div").each(function(){
    var cont = $("#"+this.id);
    var self = $(this);
    if(!cont.size()) {
      cont = $(this.id.search(/--/)!=-1 ? "#portfolio":"#documents")
      .append(self.clone().get());
    }
    verifForm(cont.html(self.html()));
    $("form.form_upload",cont).async_upload(async_upload_portfolio_documents);
  });
  return true;             
}