dturriaga
(Turriaga, Diego)
26 Mayo, 2016 21:07
1
Tengo que reconocer que no tengo paciencia para probar 30 combinaciones o más, así que de antemano perdón. Intentaré preguntar de forma genérica cosa que la respuesta le sea útil a tod@s.
Tengo un pagelet_renglones.js personalizo en la ruta:
pers/univ/operaciones/operacion/renglones/pagelet_renglones.js
Y tengo un pluggin de jqery en la ruta:
pers/univ/www/js/superPluggin.js
En la primera línea de pagelet_renglones.js intento cargar dinámicamente al pluggin:
$.getScript( "js/superScript.js");
Pero ya hice varias pruebas y el script no carga… ¿Cómo debiera ser el path relativo?
dturriaga
(Turriaga, Diego)
27 Mayo, 2016 16:04
2
Supongo que la mejor forma de encararlo será incluirlo en el twig personalizado de la operación.
Analizando los twigs encontré algo que quizás funcione:
<script type='text/javascript' src='{{ url_recursos ~ 'siu/js/guarani_mash.js' }}' charset="{{encoding}}"></script>
{% if es_browser %}
<link type='text/css' href='{{ url_recursos ~ 'siu/css/guarani_mash.css' }}' rel='stylesheet' />
{% if mash_personalizado %}
<link type='text/css' href='{{ url_recursos ~ personalizacion ~ '/css/guarani_mash.css' }}' rel='stylesheet' />
Probaré un mix de lo anterior (con suerte funciona):
<script type='text/javascript' src='{{ url_recursos ~ personalizacion ~ 'pers/univ/js/superScript.js' }}' charset="{{encoding}}"></script>
Pero estoy viendo como me queda la estructura compilada (…/_comp/) y me marea un poco…
no hay rastro de superScript.js
dentro de la estructura del siu encuentro que existe el path _comp/siu/js/escalas/univ/cond_res.js (pero no existe _comp/univ/js/escalas/cond_res.js)
Veré de reordenar los archivos y probarlo en modo desarrollo, si funciona bien recien compilo los recursos y lo pruevo en producción.
lleonardis
(Leonardis, Leonel Eduardo)
27 Mayo, 2016 19:38
3
Hola Diego, lo ideal seria lo siguiente, primero hay que modificar esto en el CORE del 3W para que funcione:
reemplaza el archivo src/siu/lib/kernel/nucleo/acceso_recurso.php por el que te adjunte (OJO es un txt, cambiale la extensión).
en el archivo src/siu/lib/kernel/nucleo/recursos.php función get_path_js cambiale el encabezado por (se le agrega el parámetro $ns ):
static function get_path_js($nombre, $ns = false)
{
.................
}
agrega la siguiente función en el archivo src/siu/lib/kernel/util/vinculador.php :
function vinculo_js($nombre)
{
$alias = kernel::proyecto()->get_alias();
$path_url = "js/$nombre.js";
$ns = kernel::proyecto()->get_personalizacion_activa();
if (kernel::proyecto()->get_produccion()) {
$url_recursos = kernel::proyecto()->get_url_recursos() . "/$ns";
$url_js = "$url_recursos/$path_url";
} else {
$url_js = "$alias/rs.php/" . self::PARAM_IGNORED_RECURSOS . "/$path_url?ns=$ns";
}
return $url_js;
}
Ahora si podemos personalizar:
agregas tu JS, ej: src/pers/univ/www/js/superPluggin.js
para cargarlo en el pagelet src/pers/univ/operaciones/notas_cursada/pagelet_renglones.php seria:
<?php
namespace univ\operaciones\notas_cursada;
use kernel\kernel;
class pagelet_renglones extends \siu\operaciones\notas_cursada\pagelet_renglones
{
function get_js_files()
{
//Archivos JS que carga el SIU
$archivos = parent::get_js_files();
//archivo JS agregado por la Universidad
$archivos[] = kernel::vinculador()->vinculo_js("superPluggin");
return $archivos;
}
}
con esto vas a poder cargar el archivo js/superPluggin.js en el pagelet personalizado ya sea en desarrollo o producción.
podes usar este mismo código para cargarlo en cualquier otro lugar.
saludos.
acceso_recurso.txt (2.95 KB)
dturriaga
(Turriaga, Diego)
30 Mayo, 2016 19:22
4
Fantástico aporte Leonel!
Y también sería fantástico que esta mejora se incluya en las nuevas versiones de 3W… así no se pierde en este hilo.
lleonardis
(Leonardis, Leonel Eduardo)
30 Mayo, 2016 20:01
5
Perfecto!!!
si, se va a incluir para las próximas versiones!!!
saludos.
dturriaga
(Turriaga, Diego)
30 Mayo, 2016 22:10
6
Importante!
Tuve que hacer un pequeño cambio (en negrita) para que funcione:
function vinculo_js($nombre)
{
$alias = kernel::proyecto()->get_alias();
$path_url = "js/$nombre.js";
$ns = kernel::proyecto()->get_personalizacion_activa();
if (kernel::proyecto()->get_produccion()) {
$url_recursos = kernel::proyecto()->get_url_recursos()."/$ns/operaciones";
$url_js = "$url_recursos/$path_url";
} else {
$url_js = “$alias/rs.php/$path_url”;
}
return $url_js;
}