[SOLUCIONADO] personalizar ei_calendario

Buenas:

Tengo que cambiar el comportamiento del ei_calendario y no se como hacer que Toba tome los cambios.
Necito que solo muestre desde el presente hacia el futuro, al revés de su comportamiento actual y que además desactive los dias feriados que tendré en una tabla para tal fin…

Traté de extender la clase pero no me deja redeclarar la case “calendario” que ahora ( Toba 2.7.2) está incluida junto con la clase toba_ei_calendar, y además el __construct esta puesto como “final” y no se puede modificar, por lo cual no puedo llamar a mi clase de “calendario” con los cambios que necesito…

Trate de sobre escribir en mi clase completamente y heredar directamente de toba_ei pero al tratar de instanciar Toba me dice que tiene que heredar de “toba_ei_calendario” …

Bueno quedo a la espera del algún dato que me oriente para que lado seguir.
Gracias

Hola Oscar,

te hago un par de consultas:

  • Esto es para un proyecto propio o una personalizacion de un proyecto SIU?
  • En que version de toba estas trabajando?

La cosa es asi, si el proyecto es “personalizable” (a partir de la version 1.5 se supone que todos lo son), deberias tener una carpeta “extension_toba/componentes” con subclases de todos los componentes toba para tu proyecto, ahi es donde podes definir comportamiento arbitrario para todo el proyecto. Por ejemplo, es lo que usa Diaguita/Guarani/Pilaga para generar comportamiento especifico para un cuadro a lo ancho de todo el sistema.

Si estas personalizando un proyecto SIU, entonces esa modificacion la tenes que hacer a nivel de la personalizacion, por lo cual el archivo tiene que estar dentro de la carpeta de personalizacion del proyecto y seguramente el nombre cambie un poco tambien, normalmente los proyectos ya salen con esa carpeta pero sino, existe un comando para crearla y vincular las subclases. Por eso te preguntaba si era para un proyecto propio o no.

Hasta ahi, lo que seria agregar comportamiento a nivel global para el ei_calendario… si lo que necesitas es algo puntual, entonces con una subclase del mismo te alcanza. Es cierto que el constructor es final… pero eso no te impide cambiar la instancia de la clase “calendario”, siempre podes agregar un metodo nuevo en tu subclase ;).

Por otra parte, la clase “calendario” que estimo es la que tenes que modificar tiene sus metodos publicos asi que podes realizar una extension propia de la misma, modificar lo que necesites y luego pasarle una instancia a la subclase del ei_calendario.

Saludos

Hola Richard

Estoy usando toba 2.7.2 para un proyecto nuestro.

Si tengo la clase en el proyecto en “php/extension_toba” pero tengo que invocar mi clase calendario y esto se hace en el construct


function __construct($id)
	{
		parent::__construct($id);
		$dia = date('d');
		$mes = date('m');
		$anio = date('Y');
		$semana = date('W');
		$this->_semana_seleccionada = array('semana' => $semana, 'anio' => $anio);
		$this->_dia_seleccionado = array('dia' => $dia, 'mes' =>$mes, 'anio' => $anio);
		$this->_mes_actual = array('mes' => $mes, 'anio' => $anio);
		$this->_calendario = new calendario();
}

Esta es la linea que tengo que cambiar: $this->_calendario = new calendario();
Por esta otra $this->_calendario = new mi_calendario(); porque si no me dice que no se puede redeclarar la clase calendario.

O sea: no se como hacer para que instancie mi clase en vez de la que tiene predefinida toba_ei_calendario.
En principio si logro hacer eso creo ya está …

Richard hice lo siguiente y me funcionó:

en toba_ei_calendario.php


function __construct($id)
	{
         ... 
              //$this->_calendario = new calendario();
		$this->set_calendario();
	}
	
	function set_calendario(){
		$this->_calendario = new calendario();
	}

y cuando extiendo la clase en mi proyecto:


function set_calendario(){
		$this->_calendario = new mi_calendario();
}

Y está funcionando en principio, tengo que testear un poco más, el calendario que estaba tratando de modificar funciona bien !

El tema es que vos tendrias que ver si esto es correcto y colocarlo en el nucleo de Toba.
Avisame si se puede hacer o cual es el camino correcto.

Hola Oscar,

te propongo una alternativa :wink:

Saludos

Perfecto, funciona bien!!!
Se implementa asi entonces.

Mil gracias Richard !!!

Saludos