Module: Admin::AdminsiteMenuHelper
- Defined in:
- app/helpers/admin/adminsite_menu_helper.rb
Instance Method Summary collapse
- #child_controller_active?(child_controller_names) ⇒ Boolean
- #content_index_link(controller_name, admin_menu, method = nil) ⇒ Object
- #content_index_path(controller_name) ⇒ Object
- #content_menu_item(controller_name, admin_menu, klasses, method) ⇒ Object
- #content_menu_label(url, controller_name) ⇒ Object
- #current_admin_menu ⇒ Object
- #current_url?(url, label = '') ⇒ Boolean
- #html_classes(url, controller_name, klasses = nil, admin_menu = '', label = '') ⇒ Object
- #menu_item(label, url, child_controller_names = [], klasses = nil, method = nil, admin_menu = label) ⇒ Object
- #recognize_path(path) ⇒ Object
Instance Method Details
#child_controller_active?(child_controller_names) ⇒ Boolean
87 88 89 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 87 def child_controller_active?(child_controller_names) child_controller_names.include?(controller.controller_name) end |
#content_index_link(controller_name, admin_menu, method = nil) ⇒ Object
63 64 65 66 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 63 def content_index_link(controller_name, , method = nil) path = content_index_path(controller_name) link_to((path, controller_name), "#{path}?admin_menu=#{}", method: method, ) end |
#content_index_path(controller_name) ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 52 def content_index_path(controller_name) begin if controller_name != controller_name.pluralize eval("admin_#{controller_name}_index_path") else eval("admin_#{controller_name}_path") end rescue end end |
#content_menu_item(controller_name, admin_menu, klasses, method) ⇒ Object
74 75 76 77 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 74 def (controller_name, , klasses, method ) link = content_index_link(controller_name, , method ) raw "<li class='#{html_classes(content_index_path(controller_name), controller_name, klasses, )}'>#{link}</li>" end |
#content_menu_label(url, controller_name) ⇒ Object
68 69 70 71 72 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 68 def (url, controller_name) = recognize_path(url)[:controller] return controller_name.titlecase if .blank? eval("#{}_controller".classify). end |
#current_admin_menu ⇒ Object
12 13 14 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 12 def @current_admin_menu ||= params[:admin_menu] end |
#current_url?(url, label = '') ⇒ Boolean
79 80 81 82 83 84 85 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 79 def current_url?(url, label = '') if label.present? return request.fullpath == "#{url}?admin_menu=#{label}" else return request.fullpath == url end end |
#html_classes(url, controller_name, klasses = nil, admin_menu = '', label = '') ⇒ Object
91 92 93 94 95 96 97 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 91 def html_classes(url, controller_name, klasses = nil, = '', label = '') result = [] result |= [klasses].flatten if klasses.present? result |= ['current'] if current_url?(url, ) result |= ['active'] if == label || controller_name == controller.controller_name result.join(' ') end |
#menu_item(label, url, child_controller_names = [], klasses = nil, method = nil, admin_menu = label) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 16 def (label, url, child_controller_names = [], klasses = nil, method = nil, = label) result = '' = [] = child_controller_names.select do |child_controller_name| controller_class_name = "#{child_controller_name}_controller".classify controller_class = eval("defined?(Adminsite::" + "#{controller_class_name}) ? Adminsite::#{controller_class_name} : Adminsite::Admin::#{controller_class_name}".classify) can?(:read, controller_class.new.) end if current_url?(url, label) || ( child_controller_active?(child_controller_names) && == ) .each do |child_controller_name| << (child_controller_name, , nil, nil ) end end = .compact if .count > 0 begin url_controller_class = "#{recognize_path(url)[:controller]}_controller".classify.constantize if !can?(:read, url_controller_class.new.) url = content_index_path(.first) end rescue end = {method: method} [:title] = current_adminsite_admin_user.email if klasses == 'log_out' link = link_to(label, "#{url}?admin_menu=#{}", ) result = raw "<li class='#{html_classes(url, nil, klasses, , label )}'>#{link}</li>" content_for(:content_menu, .join("\n").html_safe ) end result end |
#recognize_path(path) ⇒ Object
3 4 5 6 7 8 9 10 |
# File 'app/helpers/admin/adminsite_menu_helper.rb', line 3 def recognize_path(path) return {} if path.try(:strip).blank? begin return Adminsite::Engine.routes.recognize_path(path) # '/admin/profiles' return Rails.application.routes.recognize_path(path) rescue Exception => e end end |