Errores #5491
Actualizado por Oscar Abad hace alrededor de 2 meses
h1. 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
h1. Análisis
La ruta de la opción de menú que se muestra en la interfaz está implementada en este código:
<pre><code class="ruby">
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
</code></pre>
La función está mal construida y en realidad debería quedar así:
<pre><code class="ruby">
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
</code></pre>
h1. Implementación
https://git.semillasl.com/gong/gor/-/commit/363c6533fd10837e1423dd572fb649f2d72a22ad