From f27cf5378d8980735cef662587910ef63c7cfd89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A9?= Date: Fri, 3 Sep 2021 11:28:59 +0200 Subject: [PATCH] extract navbar + auto dropdown --- app/controllers/application_controller.rb | 6 +- app/views/layouts/_navbar.haml | 77 ++++++++++++++++++ app/views/layouts/admin.html.haml | 97 +---------------------- 3 files changed, 83 insertions(+), 97 deletions(-) create mode 100644 app/views/layouts/_navbar.haml diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 63ae755..f0ed23e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -9,6 +9,7 @@ class ApplicationController < ActionController::Base before_action :init_admin_menu before_action :qi_menu + before_action :set_navbar_dropdown def qi_menu(sym=nil) @@ -499,7 +500,10 @@ class ApplicationController < ActionController::Base end - + def set_navbar_dropdown + @dropdown_elements = [:p_product_cats, :s_brands, :p_product_colors, :p_article_serial_nums, :p_serial_num_types, :p_product_ref_specs, :p_spec_values, :p_grades, :p_product_powers, :p_product_zones] + @dropdown_title = "Parametrage" + end end diff --git a/app/views/layouts/_navbar.haml b/app/views/layouts/_navbar.haml new file mode 100644 index 0000000..1ca0db6 --- /dev/null +++ b/app/views/layouts/_navbar.haml @@ -0,0 +1,77 @@ +#qi_header_wrapper.fh-fixedHeader + %nav#admin_nav.navbar.navbar-expand-lg.navbar-dark.bg-light + %button.navbar-toggler{"type" => "button", "data-toggle" => "collapse", "data-target" => "#navbarSupportedContent", "aria-controls" => "navbarSupportedContent", "aria-expanded" => "false", "aria-label" => "Toggle navigation"} + %span.navbar-toggler-icon + #navbarSupportedContent.collapse.navbar-collapse + %ul.navbar-nav.mr-auto + -if @qi_menu_active + -qi_menu_active = @qi_menus[@qi_menu_active] + + -if qi_menu_active[:elements] + -qi_menu_active[:elements].each do |k,v| + -if !@dropdown_elements.include?(k) + %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) + %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 + + + + + / =qi_menu_active[:elements].each do |k,v| + / %li.dropdown-item=link_to v[:name], v[:link], :class => "nav-link "+("active" if (@qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k)).to_s + / %li.nav-item= link_to v[:name], v[:link], :class => "nav-link "+("active" if (@qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k)).to_s + + + + %ul.nav.navbar-nav.navbar-right.ml-auto + %li.nav-item.qi_help_remove{:style => ("display:none" if !session[:qi_helps] )} + + =link_to ic(:"question-circle"), admin_qi_helps_path(), :onclick => '$(".qi_help").hide();$(".qi_help_add").show();$(".qi_help_remove").hide();', :remote => true, :class => "nav-link" + + + %li.nav-item.qi_help_add{:style => ("display:none" if session[:qi_helps] )} + =link_to ic(:"question-circle-o"), admin_qi_helps_path(:enabled => true), :onclick => '$(".qi_help").show();$(".qi_help_add").hide();$(".qi_help_remove").show();', :remote => true, :class => "nav-link" + + + + -if session[:qi_helps] + :scss + .qi_help{ + display:inherit; + + } + -else + :scss + .qi_help{ + display:none; + + } + + + %li.nav-item.dropdown + %a#navbarDropdown.nav-link.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-toggle" => "dropdown", :href => "#", :role => "button"} + =current_admin.firstname + =current_admin.name + + + .dropdown-menu{"aria-labelledby" => "navbarDropdown"} + = link_to "Gestion des admins", admin_admins_path, :class => "dropdown-item" if current_admin.super_admin + .dropdown-divider + =link_to "Se déconnecter", admin_admin_auth_path(1), method: :delete, :class => "dropdown-item" + + + + + %li.nav-item + =link_to ic(:refresh), "#", :onclick => "location.reload();", :class => "nav-link" + + + + = yield :header diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 3096c58..dc31319 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -86,104 +86,9 @@ - #qi_header_wrapper.fh-fixedHeader - %nav#admin_nav.navbar.navbar-expand-lg.navbar-dark.bg-light - %button.navbar-toggler{"aria-controls" => "navbarSupportedContent", "aria-expanded" => "false", "aria-label" => "Toggle navigation", "data-target" => "#navbarSupportedContent", "data-toggle" => "collapse", :type => "button"} - %span.navbar-toggler-icon - -if current_admin - #navbarSupportedContent.collapse.navbar-collapse - %ul.navbar-nav.mr-auto - -if @qi_menu_active - -qi_menu_active = @qi_menus[@qi_menu_active] - - -if qi_menu_active[:elements] - -qi_menu_active[:elements].each do |k,v| - %li.nav-item= link_to v[:name], v[:link], :class => "nav-link "+("active" if (@qi_menu_sub_menu_active and @qi_menu_sub_menu_active == k)).to_s - - %script - =raw '$("#big_cat_'+@qi_menu_active.to_s+'").addClass("active");' - - - - %form.form-inline.my-2.my-lg-0 - %ul.nav.navbar-nav.navbar-right - %li.nav-item.qi_help_remove{:style => ("display:none" if !session[:qi_helps] )} - - =link_to ic(:"question-circle"), admin_qi_helps_path(), :onclick => '$(".qi_help").hide();$(".qi_help_add").show();$(".qi_help_remove").hide();', :remote => true, :class => "nav-link" - - - %li.nav-item.qi_help_add{:style => ("display:none" if session[:qi_helps] )} - =link_to ic(:"question-circle-o"), admin_qi_helps_path(:enabled => true), :onclick => '$(".qi_help").show();$(".qi_help_add").hide();$(".qi_help_remove").show();', :remote => true, :class => "nav-link" - + =render partial: "layouts/navbar" - - -if session[:qi_helps] - :scss - .qi_help{ - display:inherit; - - } - -else - :scss - .qi_help{ - display:none; - - } - - - - - %li.nav-item.qi_stat_remove{:style => ("display:none" if !session[:qi_stats] )} - - =link_to raw(""+ic(:"pie-chart")+""), admin_qi_stats_path(), :onclick => '$(".qi_stat, .qi_kpi").show();$(".qi_stat_add").show();$(".qi_stat_remove").hide();', :remote => true, :class => "nav-link" - - - %li.nav-item.qi_stat_add{:style => ("display:none" if session[:qi_stats] )} - =link_to ic(:"pie-chart"), admin_qi_stats_path(:enabled => true), :onclick => '$(".qi_stat, .qi_kpi").hide();$(".qi_stat_add").hide();$(".qi_stat_remove").show();', :remote => true, :class => "nav-link" - - - - -if session[:qi_stats] - :scss - .qi_stat, .qi_kpi{ - display:none; - - } - - -else - :scss - .qi_stat, .qi_kpi{ - display:inherit; - - } - - - - %li.nav-item.dropdown - %a#navbarDropdown.nav-link.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-toggle" => "dropdown", :href => "#", :role => "button"} - =current_admin.firstname - =current_admin.name - - - .dropdown-menu{"aria-labelledby" => "navbarDropdown"} - = link_to "Gestion des admins", admin_admins_path, :class => "dropdown-item" if current_admin.super_admin - .dropdown-divider - =link_to "Se déconnecter", admin_admin_auth_path(1), method: :delete, :class => "dropdown-item" - - -if super_current_admin - %li.nav-item - =link_to ic(:"user-secret"), admin_admins_path, :class => "nav-link" - - - %li.nav-item - =link_to ic(:refresh), "#", :onclick => "location.reload();", :class => "nav-link" - - - - - - = yield :header