effective_pages 0.9.7 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/effective/menu.rb +22 -12
- data/lib/effective_pages/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1a00ef1dd50024c7491f7112e97b858fd65a7a9
|
4
|
+
data.tar.gz: a1cb70948388278617d07d3e401bb0a43f425f1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abadfdb4293769589bb16bba5f0818377056b6fcc2842c7678dfc8e7ea756315cb3b5f1f71ba8128534f8674faa1b0547a87bd8cbb4039bc45455bf8e6b2be0a
|
7
|
+
data.tar.gz: 598eea46d0fdbc1a2543dfba51f87ca048fe603032da65f8d52acdd0f5e28a9fbf3801606ab8efb05cb8637a43107bd2074bcc3252f44bdbb51d015f2f276a0e
|
@@ -12,25 +12,35 @@ module Effective
|
|
12
12
|
|
13
13
|
accepts_nested_attributes_for :menu_items, :allow_destroy => true
|
14
14
|
|
15
|
-
|
15
|
+
before_save do
|
16
16
|
if self.menu_items.find { |menu_item| menu_item.lft == 1 }.blank?
|
17
|
-
menu_items.build(:title => 'Home', :url => '
|
17
|
+
menu_items.build(:title => 'Home', :url => '/', :lft => 1, :rgt => 2)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.update_from_effective_regions!(params)
|
22
|
-
|
23
|
-
|
22
|
+
Effective::Menu.transaction do
|
23
|
+
(params || {}).each do |menu_id, attributes|
|
24
|
+
menu = Effective::Menu.includes(:menu_items).find(menu_id)
|
25
|
+
menu.menu_items.delete_all
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
+
attributes[:menu_items_attributes].each do |_, atts|
|
28
|
+
atts[:menuable_type] = 'Effective::Page' if atts[:menuable_type].blank?
|
29
|
+
atts.delete(:id)
|
30
|
+
end
|
27
31
|
|
28
|
-
|
29
|
-
# It has a left of 1 and a right of max(items.right)
|
30
|
-
right = attributes[:menu_items_attributes].map { |_, atts| atts[:rgt].to_i }.max
|
31
|
-
menu.menu_items.find { |menu_item| menu_item.lft == 1 }.rgt = right + 1
|
32
|
+
menu.attributes = attributes
|
32
33
|
|
33
|
-
|
34
|
+
# So when we render the menu, we don't include the Root/Home item.
|
35
|
+
# It has a left of 1 and a right of max(items.right)
|
36
|
+
right = attributes[:menu_items_attributes].map { |_, atts| atts[:rgt].to_i }.max
|
37
|
+
|
38
|
+
root_node = menu.menu_items.find { |menu_item| menu_item.lft == 1 }
|
39
|
+
root_node ||= menu.menu_items.build(:title => 'Home', :url => '/', :lft => 1, :rgt => 2)
|
40
|
+
root_node.rgt = right + 1
|
41
|
+
|
42
|
+
menu.save!
|
43
|
+
end
|
34
44
|
end
|
35
45
|
end
|
36
46
|
|
@@ -42,7 +52,7 @@ module Effective
|
|
42
52
|
def build(&block)
|
43
53
|
raise 'build must be called with a block' if !block_given?
|
44
54
|
|
45
|
-
root = menu_items.build(:title => 'Home', :url => '
|
55
|
+
root = menu_items.build(:title => 'Home', :url => '/', :lft => 1, :rgt => 2)
|
46
56
|
root.parent = true
|
47
57
|
instance_exec(&block) # A call to dropdown or item
|
48
58
|
root.rgt = menu_items.map(&:rgt).max
|