Skip to content

Commit

Permalink
Merge pull request #2844 from zambot/custom_menu
Browse files Browse the repository at this point in the history
customizable menu
  • Loading branch information
mshibuya committed Jun 26, 2019
2 parents 87b38b3 + 33fdd64 commit a8ba19d
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 3 deletions.
17 changes: 16 additions & 1 deletion app/helpers/rails_admin/application_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,21 @@ def main_navigation
end.join.html_safe
end

def root_navigation
actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
li_stack = nodes.map do |node|
url = rails_admin.url_for(action: node.action_name, controller: "rails_admin/main")
nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
content_tag :li do
link_to nav_icon + " " + wording_for(:menu, node), url, class: "pjax"
end
end.join.html_safe
label ||= t('admin.misc.root_navigation')

%(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
end.join.html_safe
end

def static_navigation
li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
content_tag(:li, link_to(title.to_s, url, target: '_blank'))
Expand Down Expand Up @@ -138,7 +153,7 @@ def breadcrumb(action = @action, _acc = [])

# parent => :root, :collection, :member
def menu_for(parent, abstract_model = nil, object = nil, only_icon = false) # perf matters here (no action view trickery)
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) }
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
actions.collect do |action|
wording = wording_for(:menu, action)
%(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
%ul.nav.navbar-nav.navbar-right.root_links
- actions(:root).each do |action|
- actions(:root).select(&:show_in_navigation).each do |action|
%li{class: "#{action.action_name}_root_link"}= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: action.pjax? ? "pjax" : ""
- if main_app_root_path = (main_app.root_path rescue false)
%li= link_to t('admin.home.name'), main_app_root_path
Expand Down
3 changes: 2 additions & 1 deletion app/views/layouts/rails_admin/_sidebar_navigation.html.haml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
%ul.nav.nav-pills.nav-stacked= main_navigation
%ul.nav.nav-pills.nav-stacked= static_navigation
%ul.nav.nav-pills.nav-stacked= root_navigation
%ul.nav.nav-pills.nav-stacked= static_navigation
1 change: 1 addition & 0 deletions config/locales/rails_admin.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ en:
up: "Up"
down: "Down"
navigation: "Navigation"
root_navigation: "Actions"
navigation_static_label: "Links"
log_out: "Log out"
time_ago: "%{time} ago"
Expand Down
16 changes: 16 additions & 0 deletions lib/rails_admin/config/actions/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,22 @@ class Base
[]
end

register_instance_option :show_in_navigation do
root?
end

register_instance_option :show_in_sidebar do
!show_in_navigation
end

register_instance_option :show_in_menu do
true
end

register_instance_option :sidebar_label do
nil
end

# http://getbootstrap.com/2.3.2/base-css.html#icons
register_instance_option :link_icon do
'icon-question-sign'
Expand Down

0 comments on commit a8ba19d

Please sign in to comment.