Module: StandardView::NavigationHelper

Defined in:
app/helpers/standard_view/navigation_helper.rb

Instance Method Summary collapse

Instance Method Details



38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/helpers/standard_view/navigation_helper.rb', line 38

def nav_item(link_target:, icon:, title:, count:, active_class:)
  (:li, class: "nav-item") do
    link_to(link_target, class: "nav-link #{active_class}") do
      (:span) do
        concat icon_for(icon)
        concat " ".html_safe
        concat title
        concat count_badge(count)
      end
    end
  end
end


12
13
14
# File 'app/helpers/standard_view/navigation_helper.rb', line 12

def nav_item_nested_model_for_record(record, model, count_method = nil)
  nav_item_related_model_for_record(record, model, count_method, nested: true)
end


5
6
7
8
9
10
# File 'app/helpers/standard_view/navigation_helper.rb', line 5

def nav_item_overview_for_material(material)
  active_link_class = active_for(controller: material.route_key, action: :show)
  (:li, class: "nav-item") do
    link_to(t("common.overview"), material, class: "nav-link #{active_link_class}")
  end
end


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/helpers/standard_view/navigation_helper.rb', line 16

def nav_item_related_model_for_record(record, model, count_method = nil, nested: false)
  collection = model.model_name.collection
  count_method ||= begin
    default_count_method_name = "#{collection}_count".to_sym
    record.respond_to?(default_count_method_name) ? default_count_method_name : collection
  end

  link_target = [ collection, record ]
  link_target.reverse! if nested

  active_link_arguments = { controller: (nested ? model : record).model_name.collection }
  active_link_arguments[:action] = collection unless nested

  nav_item(
    link_target: link_target,
    icon: model.model_name.singular.to_sym,
    title: title_for_model(model),
    count: record.public_send(count_method.to_sym),
    active_class: active_for(**active_link_arguments),
  )
end