Proyecto

General

Perfil

Errores #5491

Actualizado por Oscar Abad hace 22 días

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

Atrás