Update menu function for sub menus

This commit is contained in:
Nicolas Bally 2021-09-04 11:59:07 +02:00
parent f27cf5378d
commit bebd0c0ff9
2 changed files with 51 additions and 20 deletions

View File

@ -22,10 +22,27 @@ class ApplicationController < ActionController::Base
@qi_menu_active = sym.to_sym
else
@qi_menus.each do |k, v|
if v[:elements] and v[:elements][sym.to_sym]
@qi_menu_active = k
@qi_menu_sub_menu_active = sym.to_sym
break
elsif v[:elements]
v[:elements].each do |a,b|
puts "TEST"
puts b[0]
puts "B"
if b[:sub_elements] and b[:sub_elements][sym.to_sym]
@qi_menu_active = k
@qi_menu_sub_menu_active = sym.to_sym
end
end
end
@ -65,12 +82,15 @@ class ApplicationController < ActionController::Base
if current_admin.has_permission?("products")
set_sub_menu :stocks, :p_products, "Produits", admin_p_products_path
set_sub_menu :stocks, :p_product_refs, "Références", admin_p_product_refs_path
set_sub_menu :stocks, :p_articles, "Articles", admin_p_articles_path
# set_sub_menu :stocks, :promos_p_products, "Offres spots", promos_admin_p_products_path
end
if current_admin.has_permission?("product-cats")
set_sub_menu :stocks, :p_product_cats, "Catégories produits", admin_p_product_cats_path
# set_sub_menu :stocks, :p_product_sub_cats, "Sous catégories produits", admin_p_product_sub_cats_path
@ -78,34 +98,36 @@ class ApplicationController < ActionController::Base
end
set_sub_menu :stocks, :p_preferences_products_menu, "Préférences", admin_p_products_path
if current_admin.has_permission?("brands")
set_sub_menu :stocks, :s_brands, "Marques", admin_s_brands_path
set_sub_sub_menu :stocks, :p_preferences_products_menu, :s_brands, "Marques", admin_s_brands_path
end
if current_admin.has_permission?("fournisseurs")
set_sub_menu :stocks, :p_fournisseurs, "Fournisseurs", admin_p_fournisseurs_path
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_fournisseurs, "Fournisseurs", admin_p_fournisseurs_path
end
if current_admin.has_permission?("stocks")
set_sub_menu :stocks, :stock_alias, "Stocks", admin_line_stocks_path
set_sub_sub_menu :stocks, :p_preferences_products_menu, :stock_alias, "Stocks", admin_line_stocks_path
end
if current_admin.has_permission?("boutique")
set_sub_menu :stocks, :p_product_colors, "Couleurs"
set_sub_menu :stocks, :p_article_serial_nums, "Numeros série"
set_sub_menu :stocks, :p_serial_num_types, "Types de Numero série"
set_sub_menu :stocks, :p_product_ref_specs, "Specs"
set_sub_menu :stocks, :p_spec_values, "Valeur de specs"
set_sub_menu :stocks, :p_grades, "Grades" if PGrade::ACTIVATED
set_sub_menu :stocks, :p_product_powers, "Types de chargeurs"
set_sub_menu :stocks, :p_product_zones, "Zones produits"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_product_colors, "Couleurs"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_article_serial_nums, "Numeros série"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_serial_num_types, "Types de Numero série"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_product_ref_specs, "Specs"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_spec_values, "Valeur de specs"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_grades, "Grades" if PGrade::ACTIVATED
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_product_powers, "Types de chargeurs"
set_sub_sub_menu :stocks, :p_preferences_products_menu, :p_product_zones, "Zones produits"
end
@ -198,6 +220,16 @@ class ApplicationController < ActionController::Base
end
def set_sub_sub_menu(big_menu, sub_menu, sub_sub_menu, name, link=nil)
link = eval("admin_#{sub_sub_menu}_path") if !link
@qi_menus[big_menu.to_sym][:elements][sub_menu.to_sym][:sub_elements] = @qi_menus[big_menu.to_sym][:elements][sub_menu.to_sym][:sub_elements] || {}
@qi_menus[big_menu.to_sym][:elements][sub_menu.to_sym][:sub_elements][sub_sub_menu.to_sym] = {:name => name, :link => link}
end
before_action :set_product_display
before_action :set_locale

View File

@ -9,16 +9,15 @@
-if qi_menu_active[:elements]
-qi_menu_active[:elements].each do |k,v|
-if !@dropdown_elements.include?(k)
-if !v[:sub_elements]
%li.nav-item{class: ("active" if @qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k)}
=link_to v[:name], v[:link], :class => "nav-link"
-intersect = @dropdown_elements.&(qi_menu_active[:elements].keys)
-if intersect.any?
%li.nav-item.dropdown
=link_to @dropdown_title, '#', class: "nav-link dropdown-toggle", id: "navbarDropdown", "role" => "button", "data-toggle" => "dropdown", "aria-haspopup" => "true", "aria-expanded" => "false"
%ul.dropdown-menu{"aria-labelledby" => "navbarDropdown"}
-qi_menu_active[:elements].each do |k,v|
-if @dropdown_elements.include?(k)
-else
%li.nav-item.dropdown
=link_to v[:name], v[:link], class: "nav-link dropdown-toggle "+("active" if (@qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k) or (v[:sub_elements] and v[:sub_elements][@qi_menu_sub_menu_active])).to_s , id: "navbarDropdown", "role" => "button", "data-toggle" => "dropdown", "aria-haspopup" => "true", "aria-expanded" => "false"
%ul.dropdown-menu{"aria-labelledby" => "navbarDropdown"}
-v[:sub_elements].each do |k,v|
%li=link_to v[:name], v[:link], :class => "dropdown-item"+(" active" if (@qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k)).to_s