Class: Cable::Menu::Base
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from UrlHelper
#direct_link?, #external_link?
#items, #key, #name, #options
Class Attribute Details
.non_deletable ⇒ Object
Returns the value of attribute non_deletable.
4
5
6
|
# File 'lib/cable/menu/base.rb', line 4
def non_deletable
@non_deletable
end
|
Class Method Details
.get_routes ⇒ Object
120
121
122
|
# File 'lib/cable/menu/base.rb', line 120
def self.get_routes
Menu.all.collect( &:url )
end
|
.prevent_deletion(*args) ⇒ Object
116
117
118
|
# File 'lib/cable/menu/base.rb', line 116
def self.prevent_deletion( *args )
Menu.non_deletable = args
end
|
Instance Method Details
#depth=(v) ⇒ Object
32
33
34
|
# File 'lib/cable/menu/base.rb', line 32
def depth=(v)
end
|
#differs?(pid, l, r) ⇒ Boolean
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/cable/menu/base.rb', line 105
def differs?( pid , l , r )
if self.parent.id != pid || self.lft != l || self.r != r
return true
end
return false
end
|
#generate_marketable_url ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/cable/menu/base.rb', line 73
def generate_marketable_url
unless self.external_link?
self.marketable_url = ((self.ancestors.sort_by{|anc| anc.level}.collect{ |a| a.title_or_url.parameterize.to_s } << self.title_or_url.parameterize.to_s))[1..-1].join("/") unless self.direct_link?
puts "Generating marketable url: #{marketable_url}"
puts "Children? #{self.class}"
unless self.children.empty?
self.children.each{|child| child.generate_marketable_url }
end
else
self.marketable_url = ( self.direct_link? ) ? self[:url][1..-1] : self[:url]
end
self.save
end
|
#item_id=(v) ⇒ Object
36
37
|
# File 'lib/cable/menu/base.rb', line 36
def item_id=(v)
end
|
#left=(v) ⇒ Object
23
24
25
|
# File 'lib/cable/menu/base.rb', line 23
def left=(v)
lft = v
end
|
#reorder_children(ordered_ids) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/cable/menu/base.rb', line 53
def reorder_children(ordered_ids)
ordered_ids = ordered_ids.map(&:to_i)
current_ids = children.map(&:id)
unless current_ids - ordered_ids == [] && ordered_ids - current_ids == []
raise ArgumentError, "Not ordering the same ids that I have as children. My children: #{current_ids.join(", ")}. Your list: #{ordered_ids.join(", ")}. Difference: #{(current_ids - ordered_ids).join(', ')} / #{(ordered_ids - current_ids).join(', ')}"
end
j = 0
transaction do
for new_id in ordered_ids
old_id = current_ids[j]
if new_id == old_id
j += 1
else
Menu.where(:id => new_id).first.move_to_left_of(old_id)
current_ids.delete(new_id)
end
end
end
end
|
#right=(v) ⇒ Object
28
29
30
|
# File 'lib/cable/menu/base.rb', line 28
def right=(v)
rgt = v
end
|
#section_root ⇒ Object
101
102
103
|
# File 'lib/cable/menu/base.rb', line 101
def section_root
self.ancestors[ self.level - (self.level - 1) ] || self.ancestors[0] || self
end
|
#show_cb ⇒ Object
39
40
41
|
# File 'lib/cable/menu/base.rb', line 39
def show_cb
Menu.before_save_callback_chain
end
|
#title_or_url ⇒ Object
93
94
95
96
97
98
99
|
# File 'lib/cable/menu/base.rb', line 93
def title_or_url
if self[:url].blank?
self.title
else
self[:url]
end
end
|
#type ⇒ String
Returns The class of the associated resource as defined through cable_menuable polymorphic interface.
49
50
51
|
# File 'lib/cable/menu/base.rb', line 49
def type
end
|
#url ⇒ String
Returns The internally generated friendly URL or a custom url defined for this menu.
43
44
45
46
|
# File 'lib/cable/menu/base.rb', line 43
def url
return self[:url] if self.external_link? || self.direct_link?
return "/#{self.marketable_url}"
end
|