Back to Repository

Seleccion Multiple en GESTIÓN DE PRESENTACIÓN ELECTRÓNICA

0 upvotes
By daniela.lebed@lexas.com.ar
Manual (context menu)

Match Pattern

https://notificaciones.scba.gov.ar/gestion/gestionpresentacion.aspx*

Script Code

$(document).ready(function() {
    // 1. Validar si la función original existe en el objeto global window
    if (typeof window.AdjuntarDocumentoV4 === 'function') {

        // 2. Hacer el input file múltiple usando jQuery
        $('#File').attr('multiple', 'multiple');

        // 3. Reemplazar la función original con la nueva lógica
        window.AdjuntarDocumentoV4 = function() {
            var input, fr;
            var resultado = true;

            if (typeof window.FileReader !== 'function') {
                alertNotif("Su navegador no soporta el manejo local de archivos requerido. Por favor actualícelo a una versión más reciente.");
                return false;
            }

            // Obtenemos el elemento nativo desde el objeto jQuery para acceder a .files
            input = $('#File')[0]; 
            
            if (!input || !input.files || input.files.length === 0) {
                alertNotif("Por favor seleccione el documento que desea adjuntar.");
                return false;
            }

            var aTiposMime = ['application/pdf', 'image/jpeg', 'image/png', 'audio/mpeg', 'audio/mp3', 'video/mp4'];
            var tamanoMaximo = 20971520; // 20MB

            // ETAPA 1: VALIDACIÓN (Todos o ninguno)
            for (var i = 0; i < input.files.length; i++) {
                var fileValidar = input.files[i];
                var tipoArchValidar = fileValidar.type.toLowerCase();

                if (aTiposMime.indexOf(tipoArchValidar) < 0) {
                    alertNotif("No se pueden adjuntar archivos de ese tipo. Se permite adjuntar documentos en formato PDF, imágenes en formato PNG y JPEG, audio MP3 y vídeo MPEG-4.");
                    return false;
                }
                
                if (fileValidar.size > tamanoMaximo) {
                    alertNotif("El tamaño del documento '" + fileValidar.name + "' excede el máximo permitido.");
                    return false;
                }
            }

            // ETAPA 2: PROCESAMIENTO MULTI-ARCHIVO
            for (let j = 0; j < input.files.length; j++) {
                let file = input.files[j];
                let nomArch = file.name;
                let tipoArch = file.type.toLowerCase();

                fr = new FileReader();
                fr.onload = function (e) {
                    document.getElementById('hdListArchivos').value += base64ArrayBuffer(e.target.result) + '**' + nomArch + '**' + tipoArch + "||";
                    var id_archivo = generateUUID();
                    var html = `<li id="${id_archivo}" class="list-group-item"><a target="_blank" href="${nomArch}">${nomArch}</a><a href="#documentos" onclick="quitarAdjunto('${id_archivo}','${nomArch}')"><span class="glyphicon glyphicon-trash pull-right"  aria-label="Eliminar archivos."></span></a></li>`;
                    
                    $('#documentos').html($('#documentos').html() + html);
                    $('#hdNombresArchivos').val($('#hdNombresArchivos').val() + id_archivo + '||');
                };
                fr.readAsArrayBuffer(file);
            }

            // Limpiar el input usando jQuery
            $('#File').val('');
            
            return resultado;
        };

        alert("Input #File configurado como múltiple y función AdjuntarDocumentoV4 reemplazada.");
    } else {
        alert("No se encontró la función AdjuntarDocumentoV4 para reemplazar.");
    }
});
Install requires the InjectJS Chrome extension. Scripts run only on sites matching the pattern above. Review code before installing any community script.