blob: 19cb934e1e59b27888968e383c64fe80a0489887 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
module NavigationHelper
#
# used to create a side navigation link.
#
# Signature is the same as link_to, except it accepts an :active value in the html_options
#
def link_to_navigation(*args)
if args.last.is_a? Hash
html_options = args.pop.dup
active_class = html_options.delete(:active) ? 'active' : nil
html_options[:class] = [html_options[:class], active_class].join(' ')
args << html_options
else
active_class = nil
end
content_tag :li, :class => active_class do
link_to(*args)
end
end
#
# returns true if params[:action] matches one of the args.
#
def action?(*actions)
actions.detect do |action|
if action.is_a? String
action == action_string
elsif action.is_a? Symbol
if action == :none
action_string == nil
else
action == action_symbol
end
end
end
end
#
# returns true if params[:controller] matches one of the args.
#
# for example:
# controller?(:me, :home)
# controller?('groups/') <-- matches any controller in namespace 'groups'
#
def controller?(*controllers)
controllers.each do |cntr|
if cntr.is_a? String
if cntr.ends_with?('/')
return true if controller_string.starts_with?(cntr.chop)
end
return true if cntr == controller_string
elsif cntr.is_a? Symbol
return true if cntr == controller_symbol
end
end
return false
end
private
def controller_string
@controller_string ||= params[:controller].to_s.gsub(/^\//, '')
end
def controller_symbol
@controller_symbol ||= params[:controller].gsub(/^\//,'').gsub('/','_').to_sym
end
def action_string
params[:action]
end
def action_symbol
@action_symbol ||= if params[:action].present?
params[:action].to_sym
else
nil
end
end
end
|