[SOLUCIONADO]Restricciones funcionales

Estimados creadores del TOBA.
He observado en el Toba Usuarios, en lo que atañe a las Restricciones Funcionales, que cuando se despliega el árbol a nivel campo para evitar la visualización o edición mediante esta metodología, la lista de campos son íconos sin ninguna referencia a su id. Esto vuelve muy complicada esta tarea.
Espero que mi comentario sea tomado como una crítica constructiva ya que no es mi intención desestimar el trabajo de nadie y menos uno tan complejo como la creación y desarrollo del Toba.
Un cordial saludo.

Hola Claudio,

esto les sucede para algun tipo particular de componente?.. en alguna version particular de toba?. La idea es que el arbol de restricciones se deberia ver como en la imagen:

Si la imagen es igual y vos te referis a ver el ID en el formulario en lugar de la etiqueta, te cuento que algun momento se pensó. pero nos pareció mas útil dejar la etiqueta, ya que las restricciones muchas veces no las define un desarrollador, sino un administrador del sistema que no sabe como relacionar el ID interno en el form con lo que ve en pantalla al ejecutar el sistema.

Saludos


descarga.png

descarga.png

Hola Richard.
Sí, el problema es que como nosotros, la mayoría de las veces no le ponemos etiqueta dado que le hacemos layout, se presenta el problema.
Bueno. Veremos como hacemos.
Te adjunto imagen para que veas como lo visualizamos.
Abrazo.


Sin tAtulo.png

Sin tAtulo.png

Hola Claudio,

ahora entiendo como viene la mano, creo que tengo una especie de solucion pero van a tener que cargar las etiquetas para los campos.

Mirando el codigo me doy cuenta que se le pueden agregar modificadores al template, que no es unicamente poner el id del ef en cuestion. Es algo que deberia estar documentado como parte de la generacion del template pero por lo visto nunca lo trasladamos del changelog a la doc.

Ademas del ID, se pueden agregar dos modificadores extra (al menos los que veo inicialmente en codigo) que serian:

  • etiqueta_mostrar=0 que fuerza a que no se muestre la etiqueta del ef
  • etiqueta_ancho=xx que determina el tamaño minimo que debe poseer la etiqueta en la visualizacion.

Resumiento, un template te podria quedar asi:

[tr]
[td]Etiqueta 1[/td]
[td][ef id=nombre etiqueta_ancho=135][/td]
[/tr]
[tr]
[td]Etiqueta 2[/td]
[td][ef id=direccion etiqueta_mostrar=0][/td]
[/tr]

En teoria de esa manera podes mantener las etiquetas en los forms, que te sirve para poder realizar las restricciones funcionales y por otro lado tener tu etiqueta en el template, tal como la venian manteniendo hasta el momento.

Saludos

Si. Con el asunto de las etiquetas, tal como está, sucede que las pantallas se estiran mucho a lo ancho y no quedan visualmente cómodas.
Suelo ponerles long. de etiqueta 0 y sin etiqueta, para que me ocupe poco o nada de espacio. Con la nueva versión del toba que tengo, tuve que modificar ese detalle y ponerle una long. de etiqueta mínima de 15 px porque el box editable tapaba el asterisco de obligatorio.
Normalmente no les pongo etiquetas en el objeto del toba y lo manejo con el layout aprovechando el efecto de que al poner texto y definición de ef en la celda de una tabla html, pone el ef_editable debajo del texto y queda algo así: (Imágenes adjuntas).

Hace años les había sugerido poder especificar el ancho de las etiquetas, pero no prosperó.
De todos modos, es posible hacerlo extendiendo el componente y modificando el código.
En mi caso, en uno de los sistemas lo hice así:

class editar_layout_propio extends toba_ei_formulario
{
	
	function generar_layout_template()
	{
		$ef_etiq_corta = array('ldepsecr','ldepsubs','ldepersu','ldepdire','ldepdpto','ldepdivi');
		//Parseo del template
		$pattern = '/\[ef([\s\w+=\w+]+)\]/i';
		if (preg_match_all($pattern, $this->_info_formulario['template'], $resultado)) {
			$salida = $this->_info_formulario['template'];
			for ($i=0; $i < count($resultado[0]); $i++) {
				$original = $resultado[0][$i];
				$atributos = array();
				foreach (explode(' ',trim($resultado[1][$i])) as $atributo) {
					$partes = explode('=', $atributo);
					$atributos[$partes[0]] = $partes[1];
				}
				if (! isset($atributos['id'])) {
					throw new toba_error_def($this->get_txt()."Tag [ef] incorrecto, falta atributo id");
				}
                
				if (isset($atributos['etiqueta_mostrar']) && $atributos['etiqueta_mostrar'] == 0) {
					$etiqueta_mostrar = false;
				}
                
				if (isset($atributos['etiqueta_ancho'])) {
					$etiqueta_ancho = $atributos['etiqueta_ancho'];
				}
				
                $etiqueta_mostrar = true;
				if(in_array($atributos['id'],$ef_etiq_corta)){;
                    $etiqueta_mostrar = false;
				}
								
				$html = $this->get_html_ef($atributos['id'], $etiqueta_ancho, $etiqueta_mostrar);
                				
				$salida = str_replace($original, $html, $salida);
			}
			echo $salida;
		} else {
			throw new toba_error_def($this->get_txt()."Template incorrecto");
		}		
	}
}

Bueno, ya te di mucha lata y debes estar ocupado.
Saludos.


Sin tAtulo 2.png

Sin tAtulo 2.png

Sin tAtulo.png

Sin tAtulo.png