alchemy_cms 2.2.rc1 → 2.2.rc2

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.
@@ -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: