[SOLUCIONADO] Titulos en columnas de un cuadro

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…


titulos.doc (119 KB)

Solucionado en parte, ahora otra consulta.

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)


Captura.png

Captura.png

Hola Pablo,

borrandola directamente en el editor.

Saludos

Hola Richard, si la saco del editor, tambien se elimina a nivel de columna.
Esa prueba ya la hice.

Saludos

Hola Pablo,

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.

Saludos

Richard, renegamos un poco pero salio funcionando

Se creo un archivo llamado “weme_evento_usuario.php” y se guardo en “nombre_proyecto[weme]\php\extension_toba\componentes”

<?php
class weme_evento_usuario extends toba_evento_usuario
{
	function get_html($id_submit, $objeto_js, $id_componente)
	{
		if ( $this->anulado ) return null;
		$tab_order = toba_manejador_tabs::instancia()->siguiente();
		$tip = '';
		if (isset($this->datos['ayuda'])) {
			$tip = $this->datos['ayuda'];
		}
		$acceso = tecla_acceso( $this->datos['etiqueta'] );

		if (! $this->es_seleccion_multiple()) {
			$clase_predeterminada = $this->esta_sobre_fila() ? 'ei-boton-fila' : 'ei-boton';
			$clase = ( isset($this->datos['estilo']) && (trim( $this->datos['estilo'] ) != "")) ? $this->datos['estilo'] : $clase_predeterminada;
			$tipo_boton = 'button';		
			if ( !$this->esta_sobre_fila() && isset($this->datos['defecto']) && $this->datos['defecto']) {
				$tipo_boton = 'submit';
				$clase .=  '  ei-boton-defecto';			
			}
			$estilo_inline = $this->oculto ? 'display: none' : null;
			$html = '';
			$html .= $this->get_imagen();
			//$html .= $acceso[0]; -->> Con esto se elimina el texto 
			$tecla = $acceso[1];			
			$js = $this->get_invocacion_js($objeto_js, $id_componente);
			if (isset($js)) {
				$js = 'onclick="'.$js.'"';				
					return toba_form::button_html( $id_submit."_".$this->get_id(), $html, $js, $tab_order, $tecla,
												$tip, $tipo_boton, '', $clase, true, $estilo_inline, $this->activado);
			}
		} else {
			$js = $this->get_invocacion_js($objeto_js, $id_componente);
			$html = '<label>';
			$html .= $this->get_imagen();
			if (isset($js)) {
				$extra = 'onclick="'.$js.'"';
				$extra .= " title='$tip'";
				$extra .= $this->activado ? '' : ' disabled';
				$valor_actual = ($this->es_check_activo) ? $this->parametros : null;
				$html .= toba_form::checkbox($id_submit."_".$this->get_id(), $valor_actual, $this->parametros, '', $extra);
			}
			$html .= '</label>';
			return $html;
		}
	}
}
?>

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;
			}
		}
	}
	
}


?>