Cache Twigs, personalización no reflejada en pantalla 3w

Hola Gente,

hice una personalización pequeña en un .tiwg, en 3w ( version 3.11.0 ) pero no veo los cambios reflejados en la pantalla ( en ambiente de producción ), les comento que acciones tome para poder ver los cambios reflejados, enumero a continuación las acciones:

  1. Hice cambios en el twig
  2. Compile recursos ( el servidor se encontraba en desarrollo )
  3. Configure en producción el servidor
  4. Reinicie apache
  5. Limpie la cache del navegador
  6. Inicie sesión mas de una vez en G3W3
  7. Verifique permisos ( en carpetas y archivos )

Después de todas estas acciones los cambios no los veo reflejados.
En el ambiente de desarrollo la personalización si funciona, donde no puedo ver reflejados los cambios es en el servidor de producción ( busque diferencias entre ambos ambientes pero tampoco encuentro diferencias ). Gracias.

Saludos, Pablo

Hola Pablo, están bien los pasos que mencionas.

Proba borrando dentro de la carpeta instalacion/temp las carpetas cuyo nombre se conforma por dos caracteres (ej: ce, 07, etc.), esas son las carpetas que contienen los twigs compilados, si las borras obligas a la aplicación que vuelva a compilar los twigs y así podrás ver los cambios.

saludos.

Hola, hice una prueba y parecería ser eso, vos seguramente tenes varios bloques de acceso, por ende en la carpeta instalacion/temp vas a tener una carpeta por cada uno de esos bloques de acceso.

El problema es que el comando compilar_recursos solo borra los twigs cacheados del primer bloque de acceso listado en instalacion/config.php, lo que tenes que hacer es borrar a mano en los otros bloques de acceso, los twigs compilados se encuentran dentro de carpetas con el nombre ‘01’, ‘23’, ‘5c’ (son carpetas cuyo nombre se compone de 2 caracteres).

Con eso debería funcionar, cualquier cosa avísame.

saludos.

Hola Leonel,

en /instalacion/temp tengo solamente un bloque de acceso, probé tu recomendación, borrar las carpetas cuyo nombre se conforma por dos caracteres (ej: ce, 07, etc.), pero no funciono, sigo sin ver lo cambios en pantalla, ademas verifique que estuviera bien la estructura de directorios donde se encuentra la personalización, la cual esta bien .

Saludos

Hola Pablo, que extraño!!!

Contame un poco mas, que archivo estas personalizando?, que código agregaste? cuanto mas info mejor.

saludos.

Hola Leonel,

a mi también me resulto extraño, por eso revise varias veces. Lo que me solicitaron, fue agregar cambios en el reporte de plan de estudios, en la visualización de las notas que se ven en el plan de estudio y en el reporte en pdf que se puede descargar. Se me solicitaba que se viera la nota sola sin la instancia de la que provenía y el origen ( examen, regularidad, promoción ) de la misma .

modifique los archivos:

carpetadepersonalización/modelo/datos/db/alumno.php
carpetadepersonalización/modelo/transacciones/historia_academica.php
carpetadepersonalización/operaciones/plan_estudio/info_plan/default.twig
carpetadepersonalización/operaciones/plan_estudio/controlador.php

método modificado:

function get_contenido_plan_version_con_historia_academica($parametros)
protected function get_columnas_reporte()

Agregue el siguiente código :
function get_contenido_plan_version_con_historia_academica($parametros)
protected function get_columnas_reporte()

agregue el siguiente código :

Las siguientes lineas fueron las que agregue en el metodo que se encuentra mas abajo:
$estado = (isset($info_act_acad_materia[‘nota’]) && $info_act_acad_materia[‘nota’])? $info_act_acad_materia[‘nota’]." " : “”;
$instancia = (isset($info_act_acad_materia[‘nota’]) && $info_act_acad_materia[‘nota’])? " (“.$info_act_acad_materia[‘resultado_descripcion’].”)" : “”; // agregado
$origen = (isset($info_act_acad_materia[‘nota’]) && $info_act_acad_materia[‘nota’])? $info_act_acad_materia[‘origen’]." " : “”; //agregado
$contenido_plan_version[$key][‘estado’] = $estado;// agregado
$contenido_plan_version[$key][‘origen’]= $origen;// agregado

//·······················································································································································································································································




function get_contenido_plan_version_con_historia_academica($parametros){


try{
            $contenido_plan_version = \toba::consulta_php('co_planes')->get_contenido_plan_version( $parametros['plan_version'] );

            $historia_academica = guarani::historia_academica();
            $tipo_materia_normal = kernel::traductor()->trans('plan_estudio.tipo_materia_normal');
            $detalle_materias_plan_version = catalogo::consultar('plan_estudio', 'get_detalle_materias_plan_version', $parametros);

  foreach($contenido_plan_version as $key => $elemento){

                if($elemento['entidad_subtipo'] == \elemento::subtipo_materia){

                    $detalle_materia = $detalle_materias_plan_version[$elemento['codigo']];
                    $contenido_plan_version[$key]['anio'] = $detalle_materia['anio'];
                    $contenido_plan_version[$key]['periodo'] = $detalle_materia['periodo'];
                    $contenido_plan_version[$key]['tipo'] = $tipo_materia_normal;
                    $contenido_plan_version[$key]['credito'] = $detalle_materia['credito'];
                    $info_act_acad_materia = $historia_academica->get_info_actividad_academica($elemento['codigo']);
                    $estado = (isset($info_act_acad_materia['nota']) && $info_act_acad_materia['nota'])? $info_act_acad_materia['nota']." " : "";
                    $instancia = (isset($info_act_acad_materia['nota']) && $info_act_acad_materia['nota'])? " (".$info_act_acad_materia['resultado_descripcion'].")" : ""; // agregado
                    $origen = (isset($info_act_acad_materia['nota']) && $info_act_acad_materia['nota'])? $info_act_acad_materia['origen']." " : "";               //agregado
                    $contenido_plan_version[$key]['estado'] = $estado;// agregado 
                    $contenido_plan_version[$key]['origen']= $origen;// agregado
                }
            }

            $raiz = self::obtener_elemento_raiz($contenido_plan_version);

            $arbol = self::buildTree($contenido_plan_version, $raiz['elemento']);
            ksort($arbol);
        }
        catch(\guarani_error $e){
            $arbol = array();
        }

        return $arbol;

    }

Los cambios en este método modifican el reporte ( el pdf de la pantalla plan de estudio ) :
lineas agregadas:
‘estado’ => $this->trans(‘Nota’), // modificado
‘origen’ => $this->trans(‘Origen’), // agregado


  protected function get_columnas_reporte(){

        if(!$this->columnas_reporte){

            $this->columnas_reporte = array(
                'codigo' => $this->trans('plan_estudio.materia'),
                'nombre' => $this->trans('plan_estudio.nombre_materia'),
                'tipo' => $this->trans('plan_estudio.tipo_materia'),
                'anio' => $this->trans('plan_estudio.ano_cursada'),
                'periodo' => $this->trans('plan_estudio.periodo_dictado'),
                'credito' => $this->trans('plan_estudio.credito'),
                'estado' =>  $this->trans('Nota'), //  modificado
                'origen' => $this->trans('Origen'),  // agregado

            );

        }

        return $this->columnas_reporte;
    }


Linea agregada en el siguiente método: $datos_materia[‘origen’] = $actividad[‘origen’];


	function get_info_actividad_academica($materia)
	{
		
		$actividad_academica = $this->get_actividad_academica();
		$datos_materia = array();
		
		foreach ($actividad_academica as $actividad) {

				
				if ($materia == $actividad['materia_codigo']) {
					
					// Datos que van para cualquier tipo
					
					$datos_comunes= array();
					$datos_comunes['tipo']					= $actividad['tipo'];
					$datos_comunes['anio']					= $actividad['anio'];
					$datos_comunes['materia_nombre_red']	= $actividad['materia_nombre_red'];
					$datos_comunes['origen']				= $actividad['origen'];
					$datos_comunes['plan_version']			= $actividad['plan_version'];
					$datos_comunes['anio_academico']		= $actividad['anio_academico'];
					$datos_comunes['catedra']				= $actividad['catedra'];
					
					if ($actividad['tipo'] == 'Aprobacion')  { 
						if ($actividad['resultado'] == 'A') {
							
							
							
							$datos_materia = $datos_comunes;
							$datos_materia['fecha_display']			= $actividad['fecha_display'];
							$datos_materia['fecha_orden']			= $actividad['fecha_orden'];
							$datos_materia['nota']					= $actividad['nota'];
							$datos_materia['nota_descripcion']		= $actividad['nota_descripcion'];
							$datos_materia['resultado']				= $actividad['resultado'];
							$datos_materia['resultado_descripcion']	= $actividad['resultado_descripcion'];
							$datos_materia['acta_resolucion']		= $actividad['acta_resolucion'];
							$datos_materia['equivalencia']			= $actividad['equivalencia'];
                                                        $datos_materia['origen']                        = $actividad['origen'];     		// agregado 					

							if ($datos_materia['origen'] == 'Promoción') {
								$datos_materia['comision']				= $actividad['comision']; 
								$datos_materia['comision_nombre']		= $actividad['comision_nombre']; 
								$datos_materia['periodo_lectivo']		= $actividad['periodo_lectivo'];
							}
							
								
							
							break;
						} else {
							continue; // no aprobado
						}
						
					}
		
					if ($actividad['tipo'] == 'Regularidad'){ 
						if ($actividad['resultado'] == 'A' /* && $actividad['VIGENTE'] == '1' */) {
							
							$datos_a_setear = $datos_comunes;
							$datos_a_setear['fecha_display']		= $actividad['fecha_display'];
							$datos_a_setear['fecha_orden']			= $actividad['fecha_orden'];
							$datos_a_setear['nota']					= $actividad['nota'];
							$datos_a_setear['nota_descripcion']		= $actividad['nota_descripcion'];
							$datos_a_setear['resultado']			= $actividad['resultado'];
							$datos_a_setear['resultado_descripcion']= $actividad['resultado_descripcion'];
							$datos_a_setear['acta_resolucion']		= $actividad['acta_resolucion'];
							$datos_a_setear['equivalencia']			= $actividad['equivalencia'];
							$datos_a_setear['comision']				= $actividad['comision']; 
							$datos_a_setear['comision_nombre']		= $actividad['comision_nombre']; 
							$datos_a_setear['periodo_lectivo']		= $actividad['periodo_lectivo']; 
							$datos_a_setear['vigente']				= $actividad['vigente']; 
							$datos_a_setear['cond_regularidad']		= $actividad['cond_regularidad']; 
							$datos_a_setear['fin_vigencia_regul']	= $actividad['fin_vigencia_regul']; 
							$datos_a_setear['turno_cursada']		= $actividad['turno_cursada']; 
                                                        //$datos_a_setear['origen']                       = $actividad['origen'];


							if (! isset($datos_materia['materia'])) {
								$datos_materia = $datos_a_setear;
							} else {
								if ($datos_materia['tipo'] != 'En Curso') {
									if ($datos_materia['fecha_orden'] < $actividad['fecha_orden'] ) {
										$datos_materia = $datos_a_setear;
									}	
								} 
							}
						} 
						continue;
					}
					// si esta en curso piso la cursada
					if ($actividad['tipo'] == 'En Curso') {
						$datos_materia = $datos_comunes;
						$datos_materia['calidad_insc']		= $actividad['calidad_insc'];

					}
				}
				
			}
		
		return $datos_materia;
		
	}


Lineas agregadas en el siguiente fragmento de código:
<th title=“{{ “plan_estudio.origen” | trans }}”>{{ “origen” | trans }}
{{ materia.origen }}


{% macro tabla_materias(materias, parent_id) %}

    <table class="table table-bordered table-condensed" summary="Materias">
    <thead>
    <tr>
        <th title="{{ "plan_estudio.materia" | trans }}">{{ "plan_estudio.materia" | trans }}</th>
        <th title="{{ "plan_estudio.nombre_materia" | trans }}">{{ "plan_estudio.nombre_materia" | trans }}</th>
        <th title="{{ "plan_estudio.estado" | trans }}">{{ "plan_estudio.estado" | trans }}</th>
        <th title="{{ "plan_estudio.tipo_materia" | trans }}">{{ "plan_estudio.tipo_materia" | trans }}</th>
        <th title="{{ "plan_estudio.ano_cursada" | trans }}">{{ "plan_estudio.ano_cursada" | trans }}</th>
        <th title="{{ "plan_estudio.periodo_dictado" | trans }}">{{ "plan_estudio.periodo_dictado" | trans }}</th>
        <th title="{{ "plan_estudio.credito" | trans }}">{{ "plan_estudio.credito" | trans }}</th>
        <th title="{{ "plan_estudio.correlatividades" | trans }}">{{ "plan_estudio.correlatividades" | trans }}</th>
        <th title="{{ "plan_estudio.origen" | trans }}">{{ "origen" | trans }}</th>
    </tr>
    </thead>
    <tbody>

    {% for materia in materias %}

        <tr>
            <td>{{ materia.codigo }}</td>
            <td>{{ materia.nombre }}</td>
            <td>{{ materia.estado }}</td>
            <td>{{ materia.tipo }}</td>
            <td>{{ materia.anio }}</td>
            <td>{{ materia.periodo }}</td>
            <td>{{ materia.credito }}</td>
            <td class="centrado">
                <a class="btn btn-info btn-mini ver_correlatividades" data-completo="false" data-elemento="{{ materia.elemento }}" data-elemento-padre="{{ parent_id }}" data-correlatividades-id="{% if parent_id %}{{ parent_id~'_' }}{% endif %}{{ materia.elemento }}">{{'plan_estudio.correlativas_ver'|trans|capitalize}}</a>
            </td>
            <td>{{ materia.origen }}</td>

        </tr>

        <tr class="correlatividades"  id="{% if parent_id %}{{ parent_id~'_' }}{% endif %}{{ materia.elemento }}">
            <!-- aca escribe el ajax -->
        </tr>

    {% endfor %}

    </tbody>
    </table>
{% endmacro %}

Hola Pablo, intente reproducir el caso pero a mi me funciona bien.

Personalice creando el archivo src/pers/[nombre_pers]/operaciones/plan_estudio/info_plan/default.twig, me lo toma bien en desarrollo y en producción luego de compilar los recursos.

Fíjate si es un problema de cache del navegador, proba refrescando con Ctrl+F5, abriendo una ventana como incógnito o borrando la cache del navegador.

También proba debugeando poniendo marcadores (var_dump, echo, etc) en los archivos que personalizaste para ver si se pasa por allí ya que es un caso extraño.

saludos.

Hola Leonel,

estas ultimas sugerencias que me haces las vengo aplicando, incluso probé cambiando los archivos que se encuentran en ( /path proyecto 3w/3.11.0/src/siu/ ), y no los toma. Donde me funciona bien es en el servidor de desarrollo, donde me funciona mal es en el servidor de producción.

Saludos !

Hola, envíame los logs de la aplicación y los de Apache que se generan cuando ingresas a dicha operación.

saludos.