alchemy_cms 2.2.rc1 → 2.2.rc2

Sign up to get free protection for your applications and to get access to all the features.
@@ -123,9 +123,9 @@ module Alchemy
123
123
  return if element_descriptions.blank?
124
124
  element_scratch = element_descriptions.select { |m| m["name"] == attributes['name'].split('#').first }.first
125
125
  element = Element.new(
126
- element_scratch.except('contents', 'available_contents', 'display_name').merge({
127
- :page_id => attributes['page_id']
128
- })
126
+ element_scratch.except('contents', 'available_contents', 'display_name', 'amount').merge({
127
+ :page_id => attributes['page_id']
128
+ })
129
129
  )
130
130
  element
131
131
  end
@@ -178,18 +178,23 @@ module Alchemy
178
178
  elements_for_layout = []
179
179
  elements_for_layout += all_definitions_for(page_layout['elements'])
180
180
  return [] if elements_for_layout.blank?
181
- # all unique elements from this layout
182
- unique_elements = elements_for_layout.select { |m| m["unique"] == true }
181
+ # all unique and limited elements from this layout
182
+ limited_elements = elements_for_layout.select{ |m| m["unique"] == true || (m["amount"] > 0 unless m["amount"].nil?) }
183
183
  elements_already_on_the_page = page.elements
184
- # delete all elements from the elements that could be placed that are unique and already and the page
185
- unique_elements.each do |unique_element|
186
- elements_already_on_the_page.each do |already_placed_element|
187
- if already_placed_element.name == unique_element["name"]
188
- elements_for_layout.delete(unique_element)
189
- end
184
+ # delete all elements from the elements that could be placed that are unique or limited and already and the page
185
+ elements_counts = Hash.new(0)
186
+ elements_already_on_the_page.each { |e| elements_counts[e.name] += 1 }
187
+ limited_elements.each do |limited_element|
188
+ next if elements_counts[limited_element["name"]] == 0
189
+ if limited_element["unique"]
190
+ elements_for_layout.delete(limited_element) if elements_counts[limited_element["name"]] > 0
191
+ next
192
+ end
193
+ unless limited_element["amount"].nil?
194
+ elements_for_layout.delete(limited_element) if elements_counts[limited_element["name"]] >= limited_element["amount"]
190
195
  end
191
196
  end
192
- return elements_for_layout
197
+ elements_for_layout
193
198
  end
194
199
 
195
200
  def self.all_definitions_for(element_names)
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
 
3
- VERSION = "2.2.rc1"
3
+ VERSION = "2.2.rc2"
4
4
 
5
5
  end
@@ -78,6 +78,44 @@ describe Alchemy::Element do
78
78
  Alchemy::Element.trashed.should include(@element)
79
79
  end
80
80
 
81
+ context "limited amount" do
82
+ before(:each) do
83
+ descriptions = Alchemy::Element.descriptions
84
+ descriptions << {
85
+ 'name' => 'column_headline',
86
+ 'amount' => 3,
87
+ 'contents' => [{'name' => 'headline', 'type' => 'EssenceText'}]
88
+ }
89
+ descriptions << {
90
+ 'name' => 'unique_headline',
91
+ 'unique' => true,
92
+ 'amount' => 3,
93
+ 'contents' => [{'name' => 'headline', 'type' => 'EssenceText'}]
94
+ }
95
+ Alchemy::Element.stub!(:descriptions).and_return(descriptions)
96
+ Alchemy::PageLayout.add(
97
+ 'name' => 'columns',
98
+ 'elements' => ['column_headline', 'unique_headline'],
99
+ 'autogenerate' => ['unique_headline', 'column_headline', 'column_headline', 'column_headline']
100
+ )
101
+ @page = Factory(:page, :page_layout => 'columns')
102
+ end
103
+
104
+ it "should be readable" do
105
+ element = Alchemy::Element.all_definitions_for(['column_headline']).first
106
+ element['amount'].should be 3
107
+ end
108
+
109
+ it "should limit elements" do
110
+ Alchemy::Element.all_for_page(@page).each { |e| e['name'].should_not == 'column_headline' }
111
+ end
112
+
113
+ it "should be ignored if unique" do
114
+ Alchemy::Element.all_for_page(@page).each { |e| e['name'].should_not == 'unique_headline' }
115
+ end
116
+
117
+ end
118
+
81
119
  context "trashed" do
82
120
 
83
121
  before(:each) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.rc1
4
+ version: 2.2.rc2
5
5
  prerelease: 4
6
6
  platform: ruby
7
7
  authors:
@@ -16,7 +16,7 @@ date: 2012-04-06 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70345801404800 !ruby/object:Gem::Requirement
19
+ requirement: &70253002665740 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ~>
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 3.2.1
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70345801404800
27
+ version_requirements: *70253002665740
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: authlogic
30
- requirement: &70345801403120 !ruby/object:Gem::Requirement
30
+ requirement: &70253002665240 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70345801403120
38
+ version_requirements: *70253002665240
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: awesome_nested_set
41
- requirement: &70345801402000 !ruby/object:Gem::Requirement
41
+ requirement: &70253002663400 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ~>
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '2.0'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70345801402000
49
+ version_requirements: *70253002663400
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: declarative_authorization
52
- requirement: &70345801560280 !ruby/object:Gem::Requirement
52
+ requirement: &70253002662260 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ~>
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: 0.5.4
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *70345801560280
60
+ version_requirements: *70253002662260
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: tvdeyen-fleximage
63
- requirement: &70345801559060 !ruby/object:Gem::Requirement
63
+ requirement: &70253002830180 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ~>
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: 1.1.0
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70345801559060
71
+ version_requirements: *70253002830180
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: kaminari
74
- requirement: &70345801557220 !ruby/object:Gem::Requirement
74
+ requirement: &70253002829200 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ~>
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: 0.13.0
80
80
  type: :runtime
81
81
  prerelease: false
82
- version_requirements: *70345801557220
82
+ version_requirements: *70253002829200
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: acts_as_ferret
85
- requirement: &70345801556420 !ruby/object:Gem::Requirement
85
+ requirement: &70253002828020 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ~>
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0.5'
91
91
  type: :runtime
92
92
  prerelease: false
93
- version_requirements: *70345801556420
93
+ version_requirements: *70253002828020
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: acts_as_list
96
- requirement: &70345801555280 !ruby/object:Gem::Requirement
96
+ requirement: &70253002827120 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ~>
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0.1'
102
102
  type: :runtime
103
103
  prerelease: false
104
- version_requirements: *70345801555280
104
+ version_requirements: *70253002827120
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: magiclabs-userstamp
107
- requirement: &70345801554340 !ruby/object:Gem::Requirement
107
+ requirement: &70253002826360 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ~>
@@ -112,10 +112,10 @@ dependencies:
112
112
  version: 2.0.2
113
113
  type: :runtime
114
114
  prerelease: false
115
- version_requirements: *70345801554340
115
+ version_requirements: *70253002826360
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: dynamic_form
118
- requirement: &70345801553380 !ruby/object:Gem::Requirement
118
+ requirement: &70253002825200 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ~>
@@ -123,10 +123,10 @@ dependencies:
123
123
  version: '1.1'
124
124
  type: :runtime
125
125
  prerelease: false
126
- version_requirements: *70345801553380
126
+ version_requirements: *70253002825200
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: jquery-rails
129
- requirement: &70345801589120 !ruby/object:Gem::Requirement
129
+ requirement: &70253002824020 !ruby/object:Gem::Requirement
130
130
  none: false
131
131
  requirements:
132
132
  - - ~>
@@ -134,10 +134,10 @@ dependencies:
134
134
  version: 2.0.0
135
135
  type: :runtime
136
136
  prerelease: false
137
- version_requirements: *70345801589120
137
+ version_requirements: *70253002824020
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: attachment_magic
140
- requirement: &70345801588220 !ruby/object:Gem::Requirement
140
+ requirement: &70253002822820 !ruby/object:Gem::Requirement
141
141
  none: false
142
142
  requirements:
143
143
  - - ~>
@@ -145,10 +145,10 @@ dependencies:
145
145
  version: 0.2.1
146
146
  type: :runtime
147
147
  prerelease: false
148
- version_requirements: *70345801588220
148
+ version_requirements: *70253002822820
149
149
  - !ruby/object:Gem::Dependency
150
150
  name: sass-rails
151
- requirement: &70345801586560 !ruby/object:Gem::Requirement
151
+ requirement: &70252998873340 !ruby/object:Gem::Requirement
152
152
  none: false
153
153
  requirements:
154
154
  - - ~>
@@ -156,10 +156,10 @@ dependencies:
156
156
  version: 3.2.3
157
157
  type: :runtime
158
158
  prerelease: false
159
- version_requirements: *70345801586560
159
+ version_requirements: *70252998873340
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: rspec-rails
162
- requirement: &70345801585780 !ruby/object:Gem::Requirement
162
+ requirement: &70252998872260 !ruby/object:Gem::Requirement
163
163
  none: false
164
164
  requirements:
165
165
  - - ~>
@@ -167,10 +167,10 @@ dependencies:
167
167
  version: '2.8'
168
168
  type: :development
169
169
  prerelease: false
170
- version_requirements: *70345801585780
170
+ version_requirements: *70252998872260
171
171
  - !ruby/object:Gem::Dependency
172
172
  name: sqlite3
173
- requirement: &70345801585100 !ruby/object:Gem::Requirement
173
+ requirement: &70252998871700 !ruby/object:Gem::Requirement
174
174
  none: false
175
175
  requirements:
176
176
  - - ! '>='
@@ -178,10 +178,10 @@ dependencies:
178
178
  version: '0'
179
179
  type: :development
180
180
  prerelease: false
181
- version_requirements: *70345801585100
181
+ version_requirements: *70252998871700
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: jasminerice
184
- requirement: &70345801584240 !ruby/object:Gem::Requirement
184
+ requirement: &70252998870900 !ruby/object:Gem::Requirement
185
185
  none: false
186
186
  requirements:
187
187
  - - ! '>='
@@ -189,7 +189,7 @@ dependencies:
189
189
  version: '0'
190
190
  type: :development
191
191
  prerelease: false
192
- version_requirements: *70345801584240
192
+ version_requirements: *70252998870900
193
193
  description: Alchemy is a Rails 3 CMS with a flexible content storing architecture.
194
194
  email:
195
195
  - alchemy@magiclabs.de
@@ -855,7 +855,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
855
855
  version: '0'
856
856
  segments:
857
857
  - 0
858
- hash: 802306676812212571
858
+ hash: 2832410516678511225
859
859
  required_rubygems_version: !ruby/object:Gem::Requirement
860
860
  none: false
861
861
  requirements: