Contexto Ejecución - Combo Listar-Multi Proyectos

Ingeniero, buen día

Trabajando en la última versión toba_3.3.25, y extendiendo el proyecto aplicando el contexto de ejecución, como puedo mantener el combo de la parte superior derecho, donde me lista todos los proyectos a los que tiene acceso un usuario logueado, para pasar de uno a otro sin necesidad de volver a escribir la url.

Se que la idea que mantienen con la nueva estructura, es que cada proyecto sea independiente, pero me gustaría mantener dicha opción

También si me puedes orientar en como alinear los efs, como los multi check (ver grafica)

Quedo atento.
Cordial Saludo


ef desalineados.png

ef desalineados.png

Buen día, me pasó lo mismo, no sé por qué no está en modo “responsive” el combo de proyectos ya que en las clases bases está el código que puse en mis clases de “tipo de página”, te adjunto el fragmento que puse en mi tipo página “tp_normal.php”, cambio las llamadas de “cambio_proyecto” y “cambio_perfil” por las propias clase:

protected function cabecera_aplicacion()
{
if ( toba::proyecto()->get_parametro(‘requiere_validacion’) ) {
$mostrar_app_launcher = toba::proyecto()->get_parametro(‘proyecto’, ‘app_launcher’, false);
if (!$mostrar_app_launcher) {
//— Salir
$js = toba_editor::modo_prueba() ? ‘window.close()’ : ‘salir()’;
echo toba::output()->get(‘PaginaNormal’)->getSalir($js);

  		//--- Usuario
  		$this->info_usuario();
  	} else {
  		//--- Usuario y aplicaciones
  		$this->info_usuario_aplicaciones();			
  		//--- Proyecto
  		if(toba::proyecto()->es_multiproyecto()) {
  			$this->cambio_proyecto();
  		}
  		if (toba::proyecto()->permite_cambio_perfiles()) {
  			$this->cambio_perfil();
  		}


  	}
  }
  
  $muestra = toba::proyecto()->get_parametro('proyecto', 'mostrar_resize_fuente', false);
  if (! is_null($muestra) && $muestra) {
  	$this->mostrar_resize_fuente();
  }

  //--- Logo		
  $this->mostrar_logo();

}

public function getCambioProyecto($proyectos,$actual)
{
$salida = ‘’;
if (count($proyectos) > 1) {
//ei_arbol($proyectos);
//-- Si hay al menos dos proyectos
$salida .= ‘

’;
//$salida .= ‘’ . \toba_recurso::imagen_toba(“home.png”,true).‘’;
$salida .= ‘ ’;
$datos = rs_convertir_asociativo($proyectos, [0], 1);
$salida .= \toba_form::select(apex_sesion_qs_cambio_proyecto, $actual, $datos, ‘ef-combo’, ‘onchange=“vinculador.ir_a_proyecto(this.value)”’);
$salida .= \toba_js::abrir();
$salida .= 'var url_proyectos = '.\toba_js::arreglo(\toba::instancia()->get_url_proyectos(array_keys($datos)), true);
$salida .= \toba_js::cerrar();
$salida .= ‘
’;
}
return $salida;
}

public function getCambioPerfil($perfiles)
{
$salida = ‘’;
if (count($perfiles) > 1) {
//-- Si hay al menos dos perfiles funcionales
$salida .= ‘

’;
$perfiles = [‘grupo_acceso’ => apex_ef_no_seteado, ‘nombre’ => ’ Todos '];
$datos = rs_convertir_asociativo($perfiles, [‘grupo_acceso’], ‘nombre’);
$actual = \toba::memoria()->get_dato(‘usuario_perfil_funcional_seleccionado’);
if (is_null($actual)) {
$actual = apex_ef_no_seteado;
}
$salida .= \toba_form::abrir(‘chng_profile’, \toba::vinculador()->get_url());
$salida .= \toba_form::select(apex_sesion_qs_cambio_pf, $actual, $datos, ‘ef-combo’, ‘onchange=“submit();”’);
$salida .= \toba_form::cerrar();
$salida .= ‘
’;
}
return $salida;
}

Me tocó otra solución, cree en el menú una operación que me abre un cuadro con la lista de proyectos del usuario.
Cada fila es un proyecto y lo asocio a un archivo plano, que abre dicho proyecto, si requieres el código me cuentas.

Excelente !!! me gustó tu solución !!
Por ahora no lo voy a necesitar, llegado el caso te lo pido, muchas gracias !!
Saludos desde Rosario, Santa Fe, Argentina