Proyecto

General

Perfil

Acciones

Errores #5491

cerrada

[Menu] No se muestra correctamente la opción de menú seleccionada para algunas opciones

Añadido por Oscar Abad hace 5 meses. Actualizado hace 5 meses.

Estado:
Resuelta
Prioridad:
Urgente
Asignado a:
Categoría:
Desarrollo
Versión prevista:
Fecha de inicio:
2024-07-05
Fecha fin:
% Realizado:

100%

Tiempo estimado:
Versión:

Descripción

Especificación

En la versión de staging-develop no se está mostrando para algunas opciones la opción de menú actualmente seleccionada.
Viene de la siguiente funcionalidad: https://dev.intranet.oei.int/issues/1934

Análisis

La ruta de la opción de menú que se muestra en la interfaz está implementada en este código:

  def ruta_menu
    objs_seccion = menu_seccion

    if params[:menu]
      obj_menu = objs_seccion.find {|c| c[:url][:menu] == params[:menu].to_s}
      texto = obj_menu[:rotulo]
      texto += " >> " 
      accion = controladores_menu.find {|c| ( c[:url][:controller] == params[:controller] ) and
                                            ( c[:url][:action] ?  c[:url][:action] == params[:action] : true ) and
                                            ( c[:url][:listado] ?  c[:url][:listado] == params[:listado] : true )}
      texto += accion ? accion[:rotulo] : _('Otras opciones')
    else
      obj_menu = objs_seccion.find do |c|
        c[:url][:controller] == params[:controller] and (c[:url][:action] ?  c[:url][:action] == params[:action] : true )
      end

    end

    obj_menu = objs_seccion.find do |c|
      c[:url][:controller] == params[:controller] and (c[:url][:action] ?  c[:url][:action] == params[:action] : true )
    end
    texto = obj_menu[:rotulo] if obj_menu

    # Ponemos esto por, por ejemplo, el menu de entrada de proyecto (Infocontroller) no esta habilitado pero si que lo estan otras opciones del menú
    return texto ?  texto : _('Otras opciones')
  end

La función está mal construida y en realidad debería quedar así:

  def ruta_menu
    objs_seccion = menu_seccion

    if params[:menu]
      obj_menu = objs_seccion.find {|c| c[:url][:menu] == params[:menu].to_s}
      texto = obj_menu[:rotulo]
      texto += " >> " 
      accion = controladores_menu.find {|c| ( c[:url][:controller] == params[:controller] ) and
                                            ( c[:url][:action] ?  c[:url][:action] == params[:action] : true ) and
                                            ( c[:url][:listado] ?  c[:url][:listado] == params[:listado] : true )}
      texto += accion ? accion[:rotulo] : _('Otras opciones')
    else
      obj_menu = objs_seccion.find do |c|
        c[:url][:controller] == params[:controller] and (c[:url][:action] ?  c[:url][:action] == params[:action] : true )
      end
      texto = obj_menu[:rotulo] if obj_menu
    end

    # Ponemos esto por, por ejemplo, el menu de entrada de proyecto (Infocontroller) no esta habilitado pero si que lo estan otras opciones del menú
    return texto ?  texto : _('Otras opciones')
  end

Implementación

https://git.semillasl.com/gong/gor/-/commit/363c6533fd10837e1423dd572fb649f2d72a22ad

Acciones

Exportar a: Atom PDF