Module: Alchemy::Admin::NavigationHelper
- Included in:
- BaseHelper
- Defined in:
- app/helpers/alchemy/admin/navigation_helper.rb
Overview
This module contains helper methods for rendering the admin navigation.
Instance Method Summary collapse
-
#admin_subnavigation ⇒ Object
Renders the subnavigation from current module.
-
#alchemy_main_navigation_entry(alchemy_module) ⇒ Object
Renders one admin main navigation entry.
-
#entry_active?(entry) ⇒ Boolean
Returns true if given navi entry is in params controller and action.
-
#main_navigation_css_classes(navigation) ⇒ Object
CSS classes for main navigation entry.
-
#navigate_module(navigation) ⇒ Object
Used for checking the main navi permissions.
-
#sorted_alchemy_modules ⇒ Object
Alchemy modules for main navigation.
-
#url_for_module(alchemy_module) ⇒ Object
Returns url for given Alchemy module.
-
#url_for_module_sub_navigation(navigation) ⇒ Object
Returns url for given Alchemy module sub navigation entry.
Instance Method Details
#admin_subnavigation ⇒ Object
Renders the subnavigation from current module
We find the module from current controller and index action.
25 26 27 28 29 30 31 32 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 25 def if current_alchemy_module.present? render( 'alchemy/admin/partials/sub_navigation', entries: ) end end |
#alchemy_main_navigation_entry(alchemy_module) ⇒ Object
Renders one admin main navigation entry
13 14 15 16 17 18 19 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 13 def (alchemy_module) render( 'alchemy/admin/partials/main_navigation_entry', alchemy_module: alchemy_module.stringify_keys, navigation: (alchemy_module) ) end |
#entry_active?(entry) ⇒ Boolean
Returns true if given navi entry is in params controller and action
Example
<%= entry_active?({controller: 'admin/users', action: 'index'}) %>
75 76 77 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 75 def entry_active?(entry) is_entry_controller_active?(entry) && is_entry_action_active?(entry) end |
#main_navigation_css_classes(navigation) ⇒ Object
CSS classes for main navigation entry.
60 61 62 63 64 65 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 60 def () [ 'main_navi_entry', admin_mainnavi_active?() ? 'active' : nil ].compact.join(' ') end |
#navigate_module(navigation) ⇒ Object
Used for checking the main navi permissions
To let your module be navigatable by the user you have to provide an Ability for it.
Example:
# module.yml
name: 'my_module'
navigation: {
controller: 'my/admin/posts'
action: 'index'
}
# ability.rb
can :index, :my_admin_posts
50 51 52 53 54 55 56 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 50 def navigate_module() .stringify_keys! [ ['action'].to_sym, ['controller'].to_s.gsub(/\A\//, '').gsub(/\//, '_').to_sym ] end |
#sorted_alchemy_modules ⇒ Object
Alchemy modules for main navigation.
Sorted by position attribute, if given.
117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 117 def sorted_alchemy_modules sorted = [] not_sorted = [] alchemy_modules.map do |m| if m['position'].blank? not_sorted << m else sorted << m end end sorted.sort_by { |m| m['position'] } + not_sorted end |
#url_for_module(alchemy_module) ⇒ Object
Returns url for given Alchemy module.
If the module is inside an engine it calls the url_for
helper on the engines routing proxy.
If the module is inside the host rails app it calls the url_for
helper on the main_app routing proxy.
88 89 90 91 92 93 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 88 def url_for_module(alchemy_module) route_from_engine_or_main_app( alchemy_module['engine_name'], (alchemy_module) ) end |
#url_for_module_sub_navigation(navigation) ⇒ Object
Returns url for given Alchemy module sub navigation entry.
If the module is inside an engine it calls the url_for
helper on the engines routing proxy.
If the module is inside the host rails app it calls the url_for
helper on the main_app routing proxy.
104 105 106 107 108 109 110 111 |
# File 'app/helpers/alchemy/admin/navigation_helper.rb', line 104 def () alchemy_module = module_definition_for() return if alchemy_module.nil? route_from_engine_or_main_app( alchemy_module['engine_name'], () ) end |