/************************************ Plugin Upload Files Autor: Omar Chumpitaz Modificaciones : Jorge Perez programador.sistemas@gmail.com Fecha: 01 Set 2010 Fecha: 05 Ene 2011 : Reset Form OC: 19/08/2011 se agrego funcion fn_ListarArchivosPostDelete OC: 11/10/2011 se agrego funcion fn_ActualizarVerAdjuntar muestra o oculta el boton adjuntar luego de llegar al limite de archivos permitos OC: 19/01/2012 se agrego validacion si existe atributo pathadd OC: 23/01/2012 se agrego funcion listAttributes OC: 04/04/2012 se optimizo listAttributes para IE9 Dependencia de los siguientes plugins: jquery1.4+ js/jquery.create.js js/jquery.rc4.js js/jquery-ui-1.8.2.custom.min.js js/jquery_ajaxupload.js css/jquery_progressbar.css Plugin para vista previa de archivos imagen js/jquery.fancybox-1.3.1.pack.js key : upload **************************************/ var Lb_Upload; var pct=0; var handle=0; function update_progressbar(shape){ $(shape).reportprogress(++pct); if(pct==99){ pct=0; } if(pct>=100){ clearInterval(handle); } } (function($) { $.fn.extend({ listAttributes: function(prefix) { var list = []; $(this).each(function() { var attributes = []; var nroAttr=0; for(var key in this.attributes) { if (nroAttr 1 ? list : list[0]); }, js_AplicarUpload: function(options){ var defaults = { key:"76ee3de97a1b8b903319b7c013d8c877", //--->clave seguridad que debe ser generada en cada modulo en Properties de cada carpeta maxsize:250, //--->tamaño maximo en Kb del archivo requerid:true, //--->verifica si es oblligatorio adjuntar archivos countfile:1, //--->cantidad de archivo que se pueden permitir cargar data:{}, //--->parametros propios del sistema textErrorUpload:"
Error: No puede cargar archivos en esta sección.", //--->mensaje de error al adjuntar textErrorFilter:"
Sólo puede adjuntar un archivo con cualquiera de los siguientes formatos:", //--->mensaje de error al filtrar textErrorMaxCount:"
No se ha podido adjuntar el archivo porque ha superado el límite de archivos permitidos en esta sección.", //--->mensaje de error al superar limite max se archivos textErrorMaxSize:"
El limite supera el limite de Kb permitidos en esta sección.", //--->mensaje de error al superar limite max peso del archivo textErrorDeleteFile:"
Error al eliminar archivo, intente nuevamente.", //--->mensaje de error al superar limite max peso del archivo textErrorListFile:"
Error al listar archivos.", //--->mensaje de error al superar limite max peso del archivo textErrorValidate:"
Datos Incompletos.", //--->mensaje de error al superar limite max peso del archivo textAdjuntar: "Adjuntar Archivo", //--->Texto del Link Adjuntar callbackSaveUpload:function(file,response){ return false; }, //--->function para enviar informacion a una tabla luego de cargar el archivo callValidatePreUpload:function(){ return true; }, //--->function para validar alguna funcion antes de realizar el upload callbackDeleteUpload:function(){ return true; }, //--->function para realizar una accion adicional al eliminar un archivo callbackSavePostUpload:function(file,response){ return false; }, //--->function para enviar informacion a una tabla luego de cargar el archivo serializeForm:"", idUpload: "", //Nombre de la Variable que recibira el Objeto Upload isAutoUpload:true //True: se cargara automaticamente los file al examinar los objectos }; var op = $.extend(defaults, options); return this.each(function() { //variable globales var ruta_add=$(this).attr("pathadd"); var ruta_del=$(this).attr("pathdel"); var ruta_files=$(this).attr("pathfiles"); var ruta_source=$(this).attr("pathsource"); var countfile=$(this).attr("countfile"); var name_file=$(this).attr("namefile"); var Ls_Filtro=$(this).attr("filter"); var data_param=op.data; if (!$(this).attr("pathadd")) { //variable globales var ruta_add=$(this).attr("path"); var ruta_del=$(this).attr("path"); var ruta_files=$(this).attr("path"); //configuracion de acciones en un solo archivo if (ruta_add.indexOf("?")>=0) ruta_add=ruta_add+"&Ls_Action=upload"; else ruta_add=ruta_add+"?Ls_Action=upload"; if (ruta_del.indexOf("?")>=0) ruta_del=ruta_del+"&Ls_Action=delete"; else ruta_del=ruta_del+"?Ls_Action=delete"; if (ruta_files.indexOf("?")>=0) ruta_files=ruta_files+"&Ls_Action=edit"; else ruta_files=ruta_files+"?Ls_Action=edit"; } var randomnumber=Math.floor(Math.random()*1000) //utilizado para nombrar a los controles dinamicos de forma aleatoria var link_adjuntar="LNK_ArchivosVigencia"+randomnumber.toString(); //Nombre del Link Adjuntar var div_progres="DIV_progressbar"+randomnumber.toString(); //Nombre del Div para la barra de progreso var spa_errorload="SPA_ErrorLoading"+randomnumber.toString(); //Nombre del Span para mostrar los mensajes de error var div_files="DIV_Files"+randomnumber.toString(); //Nombre del Div para listar los archivos //agregando los controles html dinamicos al DIV $(this).append(""); $(this).append(" " + op.textAdjuntar + ""); $(this).append("
"); $(this).append(""); $(this).append("
"); function fn_ActualizarVerAdjuntar() { //Esta funcion oculta o muestra el link de adjuntar cuando adjunto la cantidad de archivo permitidos como maximo var Li_CantidadArchivos=0; $("#"+div_files+" .cls_archivo_adjuntado").each(function(){ Li_CantidadArchivos++; }); var countf='99'; var countE=$("#"+div_files).parent().attr("countfile"); if (countE!='') var countf=$.rc4DecryptStr(countE,op.key); if (window.console) console.log(countf); if (window.console) console.log(Li_CantidadArchivos); if (Li_CantidadArchivos>=parseFloat(countf)){ $("#"+link_adjuntar).prev().hide(); $("#"+link_adjuntar).hide(); }else{ $("#"+link_adjuntar).prev().show(); $("#"+link_adjuntar).show(); } return false; } function fn_ListarArchivos(){ $.ajax({ cache: false, async: false, datatype: "html", data : data_param, url: ruta_files, success: function (html){ $("#"+div_files).html(html); //aplicando funcion para vista previa $(".cls_vistaprevia_img").fancybox({ 'titleShow' : false, 'transitionIn' : 'none', 'transitionOut' : 'none' }); //aplicando funcion para eliminar archivo $("#"+div_files+" .cls_archivo_adjuntado").die().live('click',function(){ var obj=$(this); fn_EliminarArchivo(op.data,obj); return false; }); //actualizando vista del boton adjuntar fn_ActualizarVerAdjuntar(); }, error: function(){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorListFile); } }); return false; } function fn_ListarArchivosPostDelete(){ $.ajax({ cache: false, datatype: "html", data : data_param, url: ruta_files, success: function (html){ $("#"+div_files).html(html); //aplicando funcion para vista previa $(".cls_vistaprevia_img").fancybox({ 'titleShow' : false, 'transitionIn' : 'none', 'transitionOut' : 'none' }); //aplicando funcion para eliminar archivo $("#"+div_files+" .cls_archivo_adjuntado").die().live('click',function(){ var obj=$(this); fn_EliminarArchivo(op.data,obj); return false; }); op.callbackDeleteUpload(); //actualizando vista del boton adjuntar fn_ActualizarVerAdjuntar(); }, error: function(){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorListFile); } }); return false; } function fn_VerificarExtension(ext,filtro){ var verificado=false; var Ls_Filtro=filtro.split(","); if (filtro=='') return true; for (i=0;i=0) || (ls_params[i].indexOf("li")>=0) || (ls_params[i].indexOf("ln")>=0) || (ls_params[i].indexOf("Ls")>=0) || (ls_params[i].indexOf("Li")>=0) || (ls_params[i].indexOf("Ln")>=0)) oDatosForm[ls_params[i]]=file.attr(ls_params[i]); } data_param_delete= $.extend(data_param_delete,oDatosForm); if (window.console) console.log(ruta_del) if (window.console) console.log(data_param_delete) $.ajax({ cache: false, datatype: "html", data : data_param_delete, url: ruta_del, success: function (html){ //$(file).parent().parent().remove(); fn_ListarArchivosPostDelete(); $("#"+spa_errorload).hide(); return html; }, error: function (jqXHR, textStatus, errorThrown){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorDeleteFile); if (window.console) console.log('Error: Al Eliminar Archivo'); if (window.console) console.log(jqXHR.responseText); } }); return false; } function fn_ShowPrintPreview(){ var pathimg=$(this).attr("file"); return false; } //ocultando la barra de progreso $("#"+div_progres).hide(); //encriptando informacion de carga de archivos $(this).attr("countfile",$.rc4EncryptStr($(this).attr("countfile"),op.key)); $(this).attr("requerid",$.rc4EncryptStr($(this).attr("requerid"),op.key)); $(this).attr("maxsize",$.rc4EncryptStr($(this).attr("maxsize"),op.key)); $(this).attr("filter",$.rc4EncryptStr($(this).attr("filter"),op.key)); $(this).attr("pathadd",$.rc4EncryptStr($(this).attr("pathadd"),op.key)); $(this).attr("pathdel",$.rc4EncryptStr($(this).attr("pathdel"),op.key)); $(this).attr("pathfiles",$.rc4EncryptStr($(this).attr("pathfiles"),op.key)); $(this).attr("pathsource",$.rc4EncryptStr($(this).attr("pathsource"),op.key)); $(this).attr("namefile",$.rc4EncryptStr($(this).attr("namefile"),op.key)); if (op.isAutoUpload) { var Adjuntar= new AjaxUpload(link_adjuntar, { action: ruta_add, name: name_file, data: data_param, onSubmit: function(file,ext){ if (window.console) console.log("Iniciando envio..."); //proceso para validar antes de hacer upload var resultValidate=op.callValidatePreUpload(); if (!resultValidate){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorValidate); return false; } if (op.serializeForm.length>0) { var datoform= $(op.serializeForm).serialize(); //$(op.serializeForm).each (function(){ // this.reset(); //}); var aDatosForm=datoform.split("&"); var oDatosForm={}; for (var apos=0;apos " + val + ""); }); } } //Verificacion de cantidad de archivos no supere el limite permitido var Li_CantidadArchivos=0; $("#"+div_files+" .cls_archivo_adjuntado").each(function(){ Li_CantidadArchivos++; }); Li_CantidadArchivos++; if (Li_CantidadArchivos>countfile){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorMaxCount); return false; } try { if (fn_VerificarExtension(ext,Ls_Filtro)){ $("#"+div_progres).show(); handle=setInterval("update_progressbar('#" + div_progres + "')",100); }else{ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorFilter + Ls_Filtro); return false; } } catch(err) { $("#"+spa_errorload).show(); if (window.console) { console.log("A Salir mensjae de error I , causado por ||" + err); } $("#"+spa_errorload).html(op.textErrorUpload); return false; } }, onComplete : function(file,response){ try { clearInterval(handle); $("#"+div_progres).reportprogress(100); $("#"+div_progres).delay(1000).fadeOut("slow"); $("#"+spa_errorload).hide(); op.callbackSaveUpload(file,response); fn_ListarArchivos(); /* try{ js_uploadCompleteParticipacion(); }catch(err){} */ } catch(err) { $("#"+spa_errorload).show(); if (window.console) { console.log("A Salir mensjae de error II , causado por ||" + err); } $("#"+spa_errorload).html(op.textErrorUpload); return false; } if (window.console) console.log("Archivo completamente enviado..."); op.callbackSavePostUpload(); } }); }else{ //Se define el control de upload que se va a llamar al grabar. new AjaxUpload(link_adjuntar, { action: ruta_add, name: name_file, data: data_param, autoSubmit: false, //No se ejecuta al momento el upload, solamente al grabar. onChange: function(file,ext){ op.idUpload = this; //Permite inicializar la variable global para poder llamar el submit del upload al grabar. if (window.console) console.log("uploading paso 1"); //Verificacion de cantidad de archivos no supere el limite permitido var Li_CantidadArchivos=0; $("#"+div_files+" .cls_archivo_adjuntado").each(function(){ Li_CantidadArchivos++; }); Li_CantidadArchivos++; if (Li_CantidadArchivos>countfile){ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorMaxCount); return false; } if (window.console) console.log("inicio paso 2"); try { if (fn_VerificarExtension(ext,Ls_Filtro)){ var Ls_archivo= file + "   - Eliminar "; $('
  • ').appendTo($('#' + div_files)).html(Ls_archivo); if (window.console) console.log("uploading paso 2"); }else{ $("#"+spa_errorload).show(); $("#"+spa_errorload).html(op.textErrorFilter + Ls_Filtro); if (window.console) console.log("error paso 2"); return false; } } catch(err) { $("#"+spa_errorload).show(); if (window.console) { console.log("A Salir mensjae de error I , causado por ||" + err); } $("#"+spa_errorload).html(op.textErrorUpload); return false; } if (window.console) console.log("uploading paso 3"); /* $('#SPA_FileLoadingDocSustentatorio').hide(); $(".CLS_fileComprobante").live('click',function(){ js_confirmarEliminacionArchivo(); return false; }); */ }, onSubmit: function(file,ext){ $("#"+div_progres).show(); handle=setInterval("update_progressbar('#" + div_progres + "')",100); }, onComplete : function(file){ clearInterval(handle); $("#"+div_progres).reportprogress(100); $("#"+div_progres).delay(1000).fadeOut("slow"); $("#"+spa_errorload).hide(); op.callbackSaveUpload(file,response); } }); } //Funcion para listar los archivos adjuntados fn_ListarArchivos(); }); } }); })(jQuery);