Module: ActiveAdmin::ViewHelpers::BreadcrumbHelper
- Included in:
- ActiveAdmin::ViewHelpers
- Defined in:
- lib/active_admin/view_helpers/breadcrumb_helper.rb
Constant Summary collapse
- GUID_REGEX =
'(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12})'
- ID_REGEX =
'\d+|[a-f0-9]{24}|' + GUID_REGEX
Instance Method Summary collapse
-
#breadcrumb_links(path = request.path) ⇒ Object
Returns an array of links to use in a breadcrumb.
- #breadcrumb_part_config(parent_part) ⇒ Object
- #default_breadcrumb_links(path) ⇒ Object
Instance Method Details
#breadcrumb_links(path = request.path) ⇒ Object
Returns an array of links to use in a breadcrumb
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/active_admin/view_helpers/breadcrumb_helper.rb', line 6 def (path = request.path) setting = active_admin_config. if setting.blank? nil elsif setting.is_a?(Proc) instance_exec(controller, &setting) else (path) end end |
#breadcrumb_part_config(parent_part) ⇒ Object
44 45 46 47 48 |
# File 'lib/active_admin/view_helpers/breadcrumb_helper.rb', line 44 def (parent_part) config = active_admin_config parent = config.belongs_to_config.try :target parent && parent.resource_name.route_key == parent_part ? parent : config end |
#default_breadcrumb_links(path) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/active_admin/view_helpers/breadcrumb_helper.rb', line 21 def (path) # remove leading "/" and split up the URL # and remove last since it's used as the page title parts = path.split('/').select(&:present?)[0..-2] parts.each_with_index.map do |part, index| config = (parts[index-1]) if part.match?(/\A(#{ID_REGEX})\z/) # 1. try using `display_name` if we can locate a DB object # 2. try using the model name translation # 3. default to calling `titlecase` on the URL fragment name = config && display_name(config.find_resource part) name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase # Don't create a link if the resource's show action is disabled if !config || config.defined_actions.include?(:show) link_to name, '/' + parts[0..index].join('/') else name end end end |