Me pueden brindar una ayuda paso a paso de como poner un titulo en las columnas de los eventos de un cuadro?
En la version toba 2.6 lo arma con la funcion
function html_cuadro_cabecera_columna_evento($rowspan, $pre_columnas)
{
//-- Eventos sobre fila
if($this->_cuadro->cant_eventos_sobre_fila() > 0) {
foreach ($this->_cuadro->get_eventos_sobre_fila() as $evento) {
$etiqueta = ' ';
if ($evento->es_seleccion_multiple()) {
$etiqueta = $evento->get_etiqueta();
}
/**
* Condiciones gobernantes:
* Evento con alineacion a Izquierda
* Se estan graficando eventos pre-columnas de datos
*
*
* El evento se grafica unicamente cuando se dan ambas condiciones o
* cuando no se cumple ninguna de las dos, logicamente eso seria:
* ((A || !B) && (!A || B)) lo cual es igual a un XOR negado.
*/
if ( !($pre_columnas xor $evento->tiene_alineacion_pre_columnas())) {
echo "<td $rowspan class='ei-cuadro-col-tit'>$etiqueta";
if (toba_editor::modo_prueba()) {
$info_comp = $this->_cuadro->get_informacion_basica_componente();
echo toba_editor::get_vinculo_evento($this->_cuadro->get_id(), $info_comp['clase_editor_item'], $evento->get_id())."\n";
}
echo "</td>\n";
}
}
}
}
Donde dice $etiqueta = ’ '; es lo que genera sin titulo a nivel de columna.
Entiendo que una forma es extender el cuadro…
La solucion a mi anterior consulta es la siguiente
A nivel de proyecto se modifico el archivo “[nombre_de_proyecto]/php/extension_toba/componentes/[nombre_de_proyecto]_ei_cuadro.php”
<?php
require_once("weme_ei_cuadro_salida_html.php");
function instanciar_manejador_tipo_salida($tipo)
{
//Si existe seteo explicito de parte del usuario para el tipo de salida
if (isset($this->_manejador_tipo_salida[$tipo])) {
$clase = $this->_manejador_tipo_salida[$tipo];
} else {
//Verifico que sea uno de los tipos estandar o disparo excepcion
switch($tipo) {
case 'html':
$clase = 'weme_ei_cuadro_salida_' . $this->_tipo_salida; break; //ACA ESTA LA MODIFICACION
case 'impresion_html':
case 'pdf':
case 'excel':
case 'xml':
$clase = 'toba_ei_cuadro_salida_' . $this->_tipo_salida;
break;
default:
throw new toba_error_def('El tipo de salida solicitado carece de una clase que lo soporte');
}
}
if (isset($clase)) {
$this->_salida = new $clase($this);
}
}?>
y el archivo PHP “weme_ei_cuadro_salida_html.php” es el siguiente
<?php
class weme_ei_cuadro_salida_html extends toba_ei_cuadro_salida_html
{
function html_cuadro_cabecera_columna_evento($rowspan, $pre_columnas)
{
//-- Eventos sobre fila
if($this->_cuadro->cant_eventos_sobre_fila() > 0) {
foreach ($this->_cuadro->get_eventos_sobre_fila() as $evento) {
//Esto coloca el titulo en la columna de evento
$etiqueta = $evento->get_etiqueta();
// $imagen = $evento->get_imagen();
if ( !($pre_columnas xor $evento->tiene_alineacion_pre_columnas())) {
echo "<td $rowspan class='ei-cuadro-col-tit'>$etiqueta";
if (toba_editor::modo_prueba()) {
$info_comp = $this->_cuadro->get_informacion_basica_componente();
echo toba_editor::get_vinculo_evento($this->_cuadro->get_id(), $info_comp['clase_editor_item'], $evento->get_id())."\n";
}
echo "</td>\n";
}
}
}
}
}
?>
Ahora como saco la etiqueta del boton? (Ver captura en adjunto)
vas a tener que pegar una vuelta un poco mas grande entonces. Como el html de los eventos no se genera en la misma clase, la que te queda es hacerte una extension de ‘toba_evento_usuario’ y luego redefinir el metodo toba_ei_cuadro::cargar_lista_eventos.
protected function cargar_lista_eventos()
{
foreach ($this->_info_eventos as $info_evento) {
$e = new CLASE_NUEVA($info_evento, $this);
$this->_eventos_usuario[ $e->get_id() ] = $e; //Lista de eventos
$this->_eventos_usuario_utilizados[ $e->get_id() ] = $e; //Lista de utilizados
if( $e->es_implicito() ){
toba::logger()->debug($this->get_txt() . " IMPLICITO: " . $e->get_id(), 'toba');
$this->_evento_implicito = $e;
}
}
}
Una vez tengas eso, vas a tener que redefinir el metodo get_html en tu clase nueva para que no saque la etiqueta como parte del boton.
Luego en el archivo “nombre_proyecto[weme]_ei_cuadro.php” guardado en “nombre_proyecto[weme]\php\extension_toba\componentes” se declaro nuavente la funcion que comentastes de la siguiente manera
<?php
//Se invoca para que funcione la funcion "cargar_lista_eventos" y poder sacar el titulo de la etiqueta
require_once("weme_evento_usuario.php");
class weme_ei_cuadro extends toba_ei_cuadro
{
protected function cargar_lista_eventos()
{
foreach ($this->_info_eventos as $info_evento) {
$e = new weme_evento_usuario($info_evento, $this); //--> Aca esta el nombre de la nueva clase recien creada
$this->_eventos_usuario[ $e->get_id() ] = $e; //Lista de eventos
$this->_eventos_usuario_utilizados[ $e->get_id() ] = $e; //Lista de utilizados
if( $e->es_implicito() ){
toba::logger()->debug($this->get_txt() . " IMPLICITO: " . $e->get_id(), 'toba');
$this->_evento_implicito = $e;
}
}
}
}
?>