Error al crear ruta para acceder a un recurso .js

Buenos días, me comunico en esta oportunidad porque nos vimos en la necesidad de personalizar el archivo selector_colegios.js que se encuentra dentro de la carpeta “www/js/_comun/selector_colegios”. Utilizamos la función " vinculo_js_por_personalizacion(“/_comun/selector_colegio/selector_colegio”,“pers_uncu”);“, pero tira el siguiente error " Uncaught exception ‘Exception’ with message ‘LOCALIZADOR: No existe el recurso solicitado. Nombre: ‘operaciones/js/_comun/selector_colegio/selector_colegio.js’’ in /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/localizador.php:217” evidentemente no arma la ruta correctamente y no se en que nos estaremos equivocando.

Saludos

Hola,

¿Podrías comentarnos qué personalización están desarrollando en el selector de colegios?

Saludos,
Fernando

Buen día Fernando:
Lo que estamos haciendo es que si al buscar colegios no encuentra el colegio porque no esta cargado que es lo que normalmente pasa, hay muchos colegios de mendoza que no están, se rellene un campo y se envíe un email,al equipo central para que este lo agregue para la siguiente preinscripción. Básicamente agregamos un par de funciones al archivo js:
function agregar_colegio()
{
// alert ($(‘input[id=agregar_colegio-otro]’).val());
agregar_enviar_colegio($(‘input[id=agregar_colegio-otro]’).val());
cerrar_popup();
}
function agregar_enviar_colegio(_colegio)
{
$.ajax({
url: info.url_agregar_enviar_colegio,
dataType: ‘json’,
data: { colegio: _colegio},
type: ‘post’,
async: true,

	success: function(data) {
                //console.log(data);
		alert("Tu petición de agregar colegio se realizó correctamente. En breve lo analizaremos.");
                    //$('#'+info.retorno_descr).val(data.colegio_descr);
                    
	}
});

}

Luego en el controlador se realizaría lo siguiente
//--------------------------------------------------------------------------
//---- Agregar Colegio para proxima preinscripcion y mandar mail ----------------------------------
//--------------------------------------------------------------------------
function accion__agregar_enviar_colegio()
{
$colegio=$this->get_param(‘colegio’, ‘post’);
$datos_propios[‘nombre’] = $colegio;
$alta = abm::alta(‘uncu_sga_coleg_para_agregar’,$datos_propios);
/**
*Envío mail a equipo central para que se agregue la escuela en la próxima preinscripción
*/
$envio_mail= $this->enviar_mail_agregar_colegio($colegio);
if ($envio_mail) {
$this->render_raw_json(array(‘colegio_descr’ => $colegio));
}

    }    
    protected function enviar_mail_agregar_colegio($colegio)
{
	
	$dir_mail= 'mailasdf@uncu.edu.ar';
	$asunto = 'Agregar colegio a Preinscripción';
            $unidad_academica=consultas::get_unidad_academica();
	
	$cuerpo = '<div style="background-color: #F1F1F1; width: 100%; min-height: 400px; color: rgb(35, 31, 32); font-family: Calibri, Helvetica, Arial, sans-serif; font-size: 14px; background-position: 50% 0%; background-repeat: repeat no-repeat;">
                        <div align="center" style="width: 100%; margin: 0px auto; padding-top: 30px;">
                          <table style="padding: 0px; margin: 0px; border-collapse: collapse; empty-cells: hide; width: 100%;">
                              <tbody>           
                                  <tr>
                                    <td style="padding: 0px;">
                                      <div style="vertical-align: top; width: 90%; margin: 0px auto; padding: 0px !important;">
                                          <div style="padding: 15px 10px; margin: 0px; border: 1px solid rgb(188, 187, 193); background-color: rgb(255, 255, 255);">
                                            Nuevo Colegio: '.$colegio.' Pedido desde la Unidad Académica: '.$unidad_academica['nombre'].
                                         ' </div>
                                      </div>
                                    </td>
                                  </tr>
                              </tbody>
                          </table>
                        </div>
                      </div>
                      ';
            
            
	$mail = new mail($dir_mail, $asunto, $cuerpo, null, '', 'UTF8');
	$mail->set_html(true);
	$exito = $mail->enviar();
            
            if($exito){
              return true;
            }
    }

Saludos

Buenas tardes, el método vinculo_js_por_personalizacion genera un vínculo a un archivo JS dentro de la carpeta www/js

si lo usan así
vinculo_js_por_personalizacion(“/_comun/selector_colegio/selector_colegio”,“pers_uncu”)
están pasando el path del archivo además del nombre del archivo

Prueben moviendo el archivo desde www/js/_comun/selector_colegio hasta www/js y usen el método sólo con el nombre y la personalización como parámetros
vinculo_js_por_personalizacion(“selector_colegio”,“pres_uncu”);

Esperamos el comentario de sus resultados.
Saludos.

Buenas, hicimos lo que nos mencionan, pero sigue sin funcionar:

Uncaught exception ‘Exception’ with message ‘LOCALIZADOR: No existe el recurso solicitado. Nombre: ‘operaciones/./__ignored__js/selector_colegio.js’’ in /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/localizador.php:217\nStack trace:\n#0 /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/recursos.php(24): kernel\nucleo\localizador->path_recurso(‘operaciones/./…', false)\n#1 /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/recursos.php(96): kernel\nucleo\recursos::get_full_path('operaciones/./…’)\n#2 /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/acceso_recurso.php(32): kernel\nucleo\recursos::get_pl_js(‘.’, ‘__ignored__js’, ‘selector_colegi…’)\n#3 /opt/proyectos/preinscripcion36/src/siu/www/rs.php(8): kernel\nucleo\acceso_recurso::procesar()\n#4 {main}\n thrown in /opt/proyectos/preinscripcion36/src/siu/lib/kernel/nucleo/localizador.php on line 217, referer: http://172.22.17777/preinscripcion/313/censo/datos_estudios

Hola, ¿Podrían compartirnos parte del código? Nos gustaría ver la función get_js_files() del archivo pagelet_datos_estudios.php que es desde donde se agregan los JS.

debería verse similar al esto
function get_js_files()
{
$files = parent::get_js_files();
$files = kernel::vinculador()->vinculo_recurso(“js/jqueryui.extra.js”);
$files = kernel::vinculador()->vinculo_recurso(“js/plugin_autosave.js”);
$files = kernel::vinculador()->vinculo_recurso(“js/jTPS.js”);
//$files = kernel::vinculador()->vinculo_recurso(“js/_comun/selector_colegio/selector_colegio.js”);
$files = kernel::vinculador()->vinculo_js_por_personalizacion(“selector_colegio”,“personalizacion”);
$files = kernel::vinculador()->vinculo_recurso(“js/_comun/selector_titulo_sec/selector_titulo_sec.js”);
return $files;
}

Gracias.

Si, este sería
function get_js_files()
{
$files = parent::get_js_files();
$files = kernel::vinculador()->vinculo_recurso(“js/plugin_autosave.js”);
$files = kernel::vinculador()->vinculo_recurso(“js/jTPS.js”);
$files =kernel::vinculador()->vinculo_js_por_personalizacion(“selector_colegio”,“pers_uncu”);
$files = kernel::vinculador()->vinculo_recurso(“js/_comun/selector_titulo_sec/selector_titulo_sec.js”);

            return $files;
}

¿Podrían subir esta personalización a su nodo del colab para que podamos reproducir el error y encontrar la solución?

Gracias.

Buenos días, ya commiteamos la personalización, en la carpeta pers_uncu, hay varias mas pero para no crear conflictos subimos toda la carpeta. Dentro de esta carpeta hay una que se llama ‘scripts_bd_personalizada’, que son los que hay que correr para que funcione la personalización. El mensaje del commit es el siguiente
“UNCuyo - Personalizaciones de preinscripcion 3.6.0 a pedido de Jose Canteros en el foro en respuesta al Topic: Error al crear ruta para acceder a un recurso js” y el número de revisión es 14192.

Antes de probar hay que descomentar en el método:
function get_js_files()
{
$files = parent::get_js_files();
$files = kernel::vinculador()->vinculo_recurso(“js/plugin_autosave.js”);
$files = kernel::vinculador()->vinculo_recurso(“js/jTPS.js”);
$files = kernel::vinculador()->vinculo_recurso(“js/_comun/selector_colegio/selector_colegio.js”);
//$files[] =kernel::vinculador()->vinculo_js_por_personalizacion(“selector_colegio”,“pers_uncu”);
$files = kernel::vinculador()->vinculo_recurso(“js/_comun/selector_titulo_sec/selector_titulo_sec.js”);

            return $files;
}

ya que para poder seguir avanzando lo habiamos dejado en la carpeta original…

Estimados, descargamos, instalamos, actualizamos la base de datos y probamos su personalización.
No tuvimos ningún inconveniente y pudimos usar el script selector_colegio.js sólo descomentando la línea indicada.

Le sugerimos que lo vuelvan a probar en una nueva instalación desde cero.

Seguiremos en contacto por este medio y de ser necesario por GDS.

Quedamos a la espera de sus comentarios.

Saludos.