Class: Releaf::Builders::Page::MenuBuilder
- Inherits:
-
Object
- Object
- Releaf::Builders::Page::MenuBuilder
show all
- Includes:
- Base, Template, InstanceCache
- Defined in:
- app/builders/releaf/builders/page/menu_builder.rb
Instance Attribute Summary
Attributes included from Template
#template
Instance Method Summary
collapse
Methods included from Template
#initialize
Methods included from Base
#default_translation_scope, #html_escape, #icon, #layout_settings, #locale_options, #resource_title, #safe_join, #t, #tag, #template_variable, #translate_locale, #wrapper
#instance_cache, #instance_cache_store, #reset_instance_cache
Instance Method Details
#active?(item) ⇒ Boolean
11
12
13
14
15
16
17
18
19
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 11
def active?(item)
instance_cache("active_#{item.class.name}_#{item.name}") do
if item.group?
item.controllers.find{|subitem| active?(subitem) }.present?
else
item.controller_name == controller.short_name
end
end
end
|
#collapsed_item?(item) ⇒ Boolean
48
49
50
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 48
def collapsed_item?(item)
item.group? && !active?(item) && layout_settings("releaf.menu.collapsed.#{item.name}") == true
end
|
#compact_side? ⇒ Boolean
94
95
96
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 94
def compact_side?
layout_settings('releaf.side.compact')
end
|
#compacter ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 106
def compacter
tag(:div, class: "compacter") do
if compact_side?
icon_name = "angle-double-right"
title_attribute = 'title-expand'
else
icon_name = "angle-double-left"
title_attribute = 'title-collapse'
end
button(nil, icon_name, title: compacter_data[title_attribute], data: compacter_data )
end
end
|
#compacter_data ⇒ Object
119
120
121
122
123
124
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 119
def compacter_data
{
'title-expand' => t("Expand", scope: :admin),
'title-collapse' => t("Collapse", scope: :admin)
}
end
|
#item_attributes(item) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 52
def item_attributes(item)
attributes = {
class: item_classes(item),
data: {
name: item.name
}
}
attributes.delete(:class) if attributes[:class].empty?
attributes
end
|
#item_classes(item) ⇒ Object
64
65
66
67
68
69
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 64
def item_classes(item)
list = []
list << "collapsed" if collapsed_item?(item)
list << "active" if active?(item)
list
end
|
#item_collapser(item) ⇒ Object
86
87
88
89
90
91
92
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 86
def item_collapser(item)
tag(:span, class: "collapser") do
tag(:button, type: "button") do
item_collapser_icon(item)
end
end
end
|
#item_collapser_icon(item) ⇒ Object
98
99
100
101
102
103
104
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 98
def item_collapser_icon(item)
if compact_side?
icon("chevron-right")
else
icon(collapsed_item?(item) ? "chevron-down" : "chevron-up")
end
end
|
#item_name_abbreviation(item_full_name) ⇒ Object
78
79
80
81
82
83
84
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 78
def item_name_abbreviation( item_full_name )
return "" if item_full_name.blank?
item_full_name.split(/(?<!\s)\//).last.to_s[0..1].mb_chars.capitalize
end
|
#item_name_content(item) ⇒ Object
71
72
73
74
75
76
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 71
def item_name_content(item)
item_full_name = item.localized_name
item_abbreviation = item_name_abbreviation( item_full_name )
tag(:abbr, item_abbreviation, title: item_full_name) + tag(:span, item_full_name, class: "name")
end
|
26
27
28
29
30
31
32
33
34
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 26
def (item)
tag(:li, item_attributes(item)) do
if item.group?
(item)
else
(item)
end
end
end
|
42
43
44
45
46
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 42
def (item)
tag(:span, class: "trigger") do
item_name_content(item) << item_collapser(item)
end << (item.controllers)
end
|
36
37
38
39
40
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 36
def (item)
tag(:a, class: "trigger", href: item.path) do
item_name_content(item)
end
end
|
21
22
23
24
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 21
def (items)
level_content = items.map{|item| (item) }.compact
tag(:ul){ level_content } if level_content.present?
end
|
#output ⇒ Object
7
8
9
|
# File 'app/builders/releaf/builders/page/menu_builder.rb', line 7
def output
compacter << tag(:nav, (Releaf.application.config.))
end
|