diff --git a/dist/javascript/async_upload.js b/dist/javascript/async_upload.js index bc269316e92014be0ef84f4aa6b199ba52607072..f1485f486e2d82f6c6241d21dd3ffa5a68d6a5d6 100644 --- a/dist/javascript/async_upload.js +++ b/dist/javascript/async_upload.js @@ -1,71 +1,71 @@ // JavaScript Document -jQuery.async_upload_count = 0; jQuery.fn.async_upload = function(add_function) { - return this.submit(function(){ - return do_async_upload(this); + return this.ajaxForm({ + beforeSubmit:async_upload_before_submit, + success:add_function }); - - function do_async_upload(form) { - jQuery.async_upload_count++; - var num = jQuery.async_upload_count; - var jForm = jQuery(form); - var par = jQuery(jForm).parent(); - jQuery("div.upload_message",par) - .remove(); - if(!form.async_init) { - form.async_init = true - jForm - .append("<input type='hidden' name='iframe' value='iframe'>") - .find("input[@name='redirect']") - .val("") - .end(); - } - - jForm.attr("target","upload_frame"+num); - var jFrame = jQuery("<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 - jFrame[0].iframeload = function(num) { +} + +// Safari plante quand on utilise clone() -> on utilise html() +// Mais FF a un bug sur les urls contenant ~ quand on utilise html() -> on utilise clone() +jQuery.fn.clone2 = jQuery.browser.mozilla ? jQuery.fn.clone : jQuery.fn.html; + +var iframeHandler = function(data,jForm,success) { //remove the previous message - jQuery("div.upload_message",par).remove(); - var res = jQuery(".upload_answer",this.contentDocument || document.frames(this.name).document.body); + jQuery("div.upload_message",$(jForm).parent()).remove(); + var res = jQuery(data).filter(".upload_answer"); //possible classes //upload_document_added if(res.is(".upload_document_added")) { - return add_function(res,jForm); + return res; } //upload_error if(res.is(".upload_error")) { var msg = jQuery("<div class='upload_message'>") .append(res.html()) jForm.after(msg[0]); - return true; + return false; } //upload_zip_list if(res.is(".upload_zip_list")) { var zip_form = jQuery("<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(); + .ajaxForm({ + beforeSubmit:function(data){ + jForm.before(jQuery("<div class='upload_message' style='height:1%'>").append(ajax_image_searching)[0]); + data.push({name:"iframe",value:"iframe"}); + }, + success:function(res,s) { + success(res,s,jForm); + } + }); jForm.after(zip_form[0]); - return true; + return false; } - }; +}; - jForm.before(jQuery("<div class='upload_message' style='height:1%'>").append(ajax_image_searching)[0]); - return true; - } -} - -// Safari plante quand on utilise clone() -> on utilise html() -// Mais FF a un bug sur les urls contenant ~ quand on utilise html() -> on utilise clone() -jQuery.fn.clone2 = jQuery.browser.mozilla ? jQuery.fn.clone : jQuery.fn.html; +function async_upload_before_submit(data,form) { + form.before(jQuery("<div class='upload_message' style='height:1%'>").append(ajax_image_searching)[0]); + //if not present add the iframe input + if(!form.find("input[name=iframe]").length) + form.append("<input type='hidden' name='iframe' value='iframe'>"); + //reset the redirect input + form + .find("input[@name='redirect']") + .val(""); + //add the submit button as hidden input, because it is not passed with form.submit() + form.find("input.async_upload_submit'").remove(); + if(form[0].clk) { + var click = jQuery(form[0].clk); + form.append("<input type='hidden' class='async_upload_submit' name='"+click.attr("name")+"' value='"+click.val()+"'>"); + } +}; -function async_upload_article_edit(res,jForm){ +function async_upload_article_edit(res,s,jForm){ + res = iframeHandler(res,jForm,async_upload_article_edit); + if(!res) return true; var cont; //verify if a new document or a customized vignette var anchor = jQuery(res.find(">a:first[@id^=document]")); @@ -101,7 +101,10 @@ function async_upload_article_edit(res,jForm){ return true; } -function async_upload_icon(res) { +function async_upload_icon(res,s,jForm) { + res = iframeHandler(res,jForm); + if(!res) return true; + res.find(">div").each(function(){ var cont = jQuery("#"+this.id); verifForm(cont.html(jQuery(this).html())); @@ -111,7 +114,10 @@ function async_upload_icon(res) { return true; } -function async_upload_portfolio_documents(res){ +function async_upload_portfolio_documents(res,s,jForm){ + res = iframeHandler(res,jForm,async_upload_portfolio_documents); + if(!res) return true; + res.find(">div").each(function(){ var cont = jQuery("#"+this.id); var self = jQuery(this); diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php index e85087e043d8aa1fe16c893082d8271b9a5d142b..3a55d7cc8fc54e17852a0e4bff9b718486aa8fc5 100644 --- a/ecrire/exec/naviguer.php +++ b/ecrire/exec/naviguer.php @@ -411,7 +411,7 @@ function naviguer_doc ($id, $type = "article", $script, $flag_editable) { } $res .= http_script('',"async_upload.js") - . http_script('$(".form_upload").async_upload(async_upload_portfolio_documents);'); + . http_script('$("form.form_upload").async_upload(async_upload_portfolio_documents);'); } else $res =''; diff --git a/ecrire/inc/iconifier.php b/ecrire/inc/iconifier.php index 3d897ae35c1dfbba814764d1426867b403e0e44d..635ed58abf95e2c01143bb8413929dcca4681b39 100644 --- a/ecrire/inc/iconifier.php +++ b/ecrire/inc/iconifier.php @@ -163,7 +163,7 @@ function decrire_logo($id_objet, $mode, $id, $width, $height, $img, $titre="", $ . ajax_action_auteur("iconifier", "$id-$nom.$format", $script, "$id_objet=$id&type=$id_objet", array(_T('lien_supprimer')), - '',"function(r,status) {this.innerHTML = r; \$('.form_upload_icon',this).async_upload(async_upload_icon);}") ."]" + '',"function(r,status) {this.innerHTML = r; \$('form.form_upload_icon',this).async_upload(async_upload_icon);}") ."]" : '') . "</div>"); } diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php index 3abc0daa2ed5d5ed6f59b3ac8a24b15967c8999d..6ad0720a4d76d863bb2a5fb275d180a4141f8396 100644 --- a/ecrire/inc/legender.php +++ b/ecrire/inc/legender.php @@ -169,7 +169,7 @@ function vignette_formulaire_legender($id_document, $document, $script, $type, $ $iframe_redirect = generer_url_ecrire("documenter","id_$type=$id&type=$type",true); $s = ($ancre =='documents' ? '': '-'); $f = $id_vignette ? "/$id_document" : ''; - $action = ajax_action_auteur('documenter', "$s$id/$type/$id_vignette$f", $script, "id_$type=$id&type=$type&s=$s&show_docs=$id_document#$ancre", array($texte),'',"function(r,noeud) {noeud.innerHTML = r; \$('.form_upload',noeud).async_upload(async_upload_portfolio_documents);}"); + $action = ajax_action_auteur('documenter', "$s$id/$type/$id_vignette$f", $script, "id_$type=$id&type=$type&s=$s&show_docs=$id_document#$ancre", array($texte),'',"function(r,noeud) {noeud.innerHTML = r; \$('form.form_upload',noeud).async_upload(async_upload_portfolio_documents);}"); } $joindre = charger_fonction('joindre', 'inc');