/************************************
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);