From bebd0c0ff956a5e405f8c83d40ca5b896a76eac9 Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Sat, 4 Sep 2021 11:59:07 +0200 Subject: [PATCH] Update menu function for sub menus --- app/controllers/application_controller.rb | 54 ++++++++++++++++++----- app/views/layouts/_navbar.haml | 17 ++++--- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f0ed23e..ef397dc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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,11 +82,14 @@ 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 @@ -77,35 +97,37 @@ 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 @@ -196,6 +218,16 @@ class ApplicationController < ActionController::Base @qi_menus[big_menu.to_sym][:elements][sub_menu.to_sym] = {:name => name, :link => link} 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 diff --git a/app/views/layouts/_navbar.haml b/app/views/layouts/_navbar.haml index 1ca0db6..8bbc47c 100644 --- a/app/views/layouts/_navbar.haml +++ b/app/views/layouts/_navbar.haml @@ -9,18 +9,17 @@ -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 - +