Problemas con set_ocultar_agregar() en multilinea

Estoy trabajando sobre una pantalla con un formulario multilinea que dependiendo de donde lo llamo tiene que ser de solo lectura.
Para ello en el PHP en el método de configuración del formulario multilinea (conf__ml_xxxx) agrego este código

		
                $form_ml->set_ocultar_agregar();
		$form_ml->set_borrar_en_linea(false);
		$mis_efs = $form_ml->get_nombres_ef();
		foreach ($mis_efs as $mi_ef){
			$form_ml->ef($mi_ef)->set_solo_lectura();
		}

Tanto la eliminación del boton borrar en linea como el hacer todos los ef de solo lectura funciona, pero el botón de agregar linea sigue apareciendo.
Alguna idea?

Gracias.

Hola Pablo,

Me parece que se trataria de un bug, esta faltando checkear la variable que maneja si se muestra el boton o no, por eso lo estas viendo a pesar de desactivar todo. En que version estas laburando de toba?
Finalmente, si queres poner todo el formulario solo_lectura, podes usar este mecanismo.

Saludos y gracias por el aviso :slight_smile:

Hola Richard, estoy en la version 6.2.1 porque no me animé a la migración.
Cuando detallé el problema no me di cuenta que había seteado la botonera abajo, y es ahí donde salta el problema.
Mi solución fue modificar el método generar_botones en la clase que hereda el formulario multilinea en el proyecto.

Te paso la solución y estoy abierto a mejoras ya que uds tienen más clara la estructura.
El cambio está en negritas.

/**
* Genera la botonera del componente
* @param string $clase Clase css con el que se muestra la botonera
*/
function generar_botones($clase = ‘’, $extra=‘’)
{
$agregar_abajo = ($this->_info_formulario[‘filas_agregar’] && $this->_modo_agregar[0]);
if ($this->hay_botones() || $agregar_abajo) {
echo “

”;
$agregar = $this->_info_formulario[‘filas_agregar’];
$ordenar = $this->_info_formulario[‘filas_ordenar’];
if ($agregar_abajo && $this->_mostrar_agregar) {
$img = toba_recurso::imagen_toba(‘nucleo/agregar.gif’, false);
$texto = “”;
if ($this->_modo_agregar[1] != ‘’) {
$texto .= ’ ‘.$this->_modo_agregar[1];
}
echo toba_form::button_html(“{$this->objeto_js}_agregar”, $texto,
"onclick=’{$this->objeto_js}.crear_fila();'",
$this->_rango_tabs[0]++, ‘+’, ‘Crea una nueva fila’);
}
$this->generar_botones_eventos();
echo “
”;
}
}

Hola Pablo,

te consultaba la version en la que estabas justamente porque subi el fix a la rama de desarrollo 2.6, que basicamente es el mismo cambio que metiste vos… pero de paso te actualizas ;).

Saludos

Hola Richard, gracias por todo. Te pregunto, no encontré una función para eliminar el botón borrar del multilinea. Me la pasé de largo o no la hay ?
Yo lo que hice fue de nuevo tocar la función generar_formulario_cuerpo. Y poner ahí una variable que me dice si renderizar o no el botón de borrar.
Obviamente lo que quiero conseguir con tooodo esto es una pantalla solamente de consulta donde el usuario no pueda tocar nada, pero como estoy en pleno desarrollo y los requerimientos me cambian, en realidad , reutilizo el formulario de carga de datos que según la condición edita o no. Y si tengo que modificar el formulario, lo modifico en un solo lugar. Hasta ahora funciona perfecto.

Respecto a la actualización de 2.6.1 a 2.6.5, donde hay documentación de como hacerla de forma segura?

Gracias por todo.
Saludos.
Pablo

En el conf del ML puedes aplicar

$componente()->desactivar_agregado _filas();

Espero te sirva

Hola Pablo,

no deberias tener problemas para realizar la migracion, siendo ambas versiones de 3er digito mayormente tenes correcciones de bugs, asi que con un svn update deberias poder llevarlo a cabo sin dramas.

En caso de que hayas bajado el tar.gz o el zip, hacete un backup de la instalacion actual y luego descomprimi la nueva version sobre el directorio existente.

Saludos

Buenas tardes, alguien le ha pasado?

al usar la línea para ocultar en el ML - $componente()->desactivar_agregado _filas();
Funciona correctamente hasta la versión de toba_2_7
al pasarnos a la versión toba_3.24 NO funciona y al pasar por la línea, muestra un error Function name must be a string
Abortando el proyecto

Gracias por la ayuda
Cordial saludo

Me basé en la solución de Jaco,

$this->dep(‘ml’)->desactivar_agregado_filas();

Mil gracias, cordial saludo