caboose-cms 0.2.99 → 0.2.100
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/helpers/caboose/products_helper.rb +19 -0
- data/app/models/caboose/page_bar_generator.rb +77 -16
- data/app/models/caboose/utilities/schema.rb +21 -2
- data/lib/caboose/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZWU0MjQ4ZTg2ODI3ZDczYWQ3YzJjOTBkNWE2NzA5NzQ1NDMxZTM0Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDNhZTBhMDI2OWM1YTJhMzkyNWI5OWUyNmZkMzI2YjE5ZGRiM2Y4MA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGU0Zjk5MTUxNGU4Y2RlZjQ0NzVmYWVmZGY4NmYyYjA3OTI4NjFkOGQ1MTdm
|
10
|
+
ZjU1YWQxZTU2YjFmZTA1YzdmYmMwNzgzOTU2NjhiMDkxYzVjOTgyMmU4NjZj
|
11
|
+
MzNkNTM0ODJlNmU1Y2RmNzU0YzMwOWRlYTJiNGRmZDk2N2YwN2I=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDc4ZWYwNTkwMzg1YTUyZGIxYTAxNzY0MGJlYzljNDhiN2NjODE0ZGFlNmFm
|
14
|
+
M2FjMjhmNGE2ZTBiOTAwYzlmY2IyODE4NTliYjk0NGU0MmNhYWFmOWI2NjMx
|
15
|
+
OTdjNDI5OTE0ODExYThiNTNlOWM4MWJkZTYzNDJiYzJlYzRjNGI=
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Caboose
|
2
|
+
module ProductsHelper
|
3
|
+
|
4
|
+
def average_review(product_id)
|
5
|
+
all_reviews = Review.where(:product_id => product_id)
|
6
|
+
score = 0
|
7
|
+
count = 0
|
8
|
+
all_reviews.each do |r|
|
9
|
+
if r.rating && r.rating != 0
|
10
|
+
score += r.rating
|
11
|
+
count += 1
|
12
|
+
end
|
13
|
+
end
|
14
|
+
return score/count if count > 0
|
15
|
+
return 0
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -1,3 +1,13 @@
|
|
1
|
+
# Note:
|
2
|
+
# For includes to work with namespaces other than the root namespace, the
|
3
|
+
# full namespaced class_name has to be set in the model on the association
|
4
|
+
# being included. For example:
|
5
|
+
#
|
6
|
+
# class Animals::Dog
|
7
|
+
# has_many :friends, :class_name => 'Animals::Dog'
|
8
|
+
# end
|
9
|
+
#
|
10
|
+
|
1
11
|
module Caboose
|
2
12
|
class PageBarGenerator
|
3
13
|
#
|
@@ -28,14 +38,37 @@ module Caboose
|
|
28
38
|
'base_url' => '',
|
29
39
|
'page' => 1,
|
30
40
|
'item_count' => 0,
|
31
|
-
'items_per_page' => 10
|
41
|
+
'items_per_page' => 10,
|
42
|
+
'includes' => nil # Hash of association includes
|
43
|
+
# {
|
44
|
+
# search_field_1 => [association_name, join_table, column_name],
|
45
|
+
# search_field_2 => [association_name, join_table, column_name]
|
46
|
+
# }
|
32
47
|
}
|
33
48
|
params.each { |key, val| @params[key] = val }
|
34
49
|
options.each { |key, val| @options[key] = val }
|
35
50
|
@params.each { |key, val| @params[key] = post_get[key].nil? ? val : post_get[key] }
|
36
51
|
@options.each { |key, val| @options[key] = post_get[key].nil? ? val : post_get[key] }
|
37
52
|
fix_desc
|
38
|
-
|
53
|
+
|
54
|
+
@options['item_count'] = model_with_includes.where(where).count
|
55
|
+
end
|
56
|
+
|
57
|
+
def model_with_includes
|
58
|
+
m = @options['model'].constantize
|
59
|
+
return m if @options['includes'].nil?
|
60
|
+
|
61
|
+
associations = []
|
62
|
+
@options['includes'].each do |field, arr|
|
63
|
+
next if @params[field].nil? || (@params[field].kind_of?(String) && @params[field].length == 0)
|
64
|
+
associations << arr[0]
|
65
|
+
end
|
66
|
+
associations.uniq.each { |assoc| m = m.includes(assoc) }
|
67
|
+
return m
|
68
|
+
end
|
69
|
+
|
70
|
+
def table_name_of_association(assoc)
|
71
|
+
return @options['model'].constantize.reflect_on_association(assoc.to_sym).class_name.constantize.table_name
|
39
72
|
end
|
40
73
|
|
41
74
|
def fix_desc
|
@@ -61,13 +94,25 @@ module Caboose
|
|
61
94
|
return true
|
62
95
|
end
|
63
96
|
|
64
|
-
def items
|
65
|
-
|
97
|
+
def items
|
98
|
+
assoc = model_with_includes.where(where)
|
66
99
|
if @options['items_per_page'] != -1
|
67
100
|
assoc = assoc.limit(limit).offset(offset)
|
68
101
|
end
|
69
102
|
return assoc.reorder(reorder).all
|
70
103
|
end
|
104
|
+
|
105
|
+
def all_items
|
106
|
+
return model_with_includes.where(where).all
|
107
|
+
end
|
108
|
+
|
109
|
+
def item_values(attribute)
|
110
|
+
arr = []
|
111
|
+
model_with_includes.where(where).all.each do |m|
|
112
|
+
arr << m[attribute]
|
113
|
+
end
|
114
|
+
return arr.uniq
|
115
|
+
end
|
71
116
|
|
72
117
|
def generate
|
73
118
|
|
@@ -137,7 +182,8 @@ module Caboose
|
|
137
182
|
vars.push("#{k}[]=#{v2}") if !v2.nil? && v2.length > 0
|
138
183
|
end
|
139
184
|
else
|
140
|
-
|
185
|
+
next if v.nil? || (v.kind_of?(String) && v.length == 0)
|
186
|
+
vars.push("#{k}=#{v}")
|
141
187
|
end
|
142
188
|
end
|
143
189
|
return URI.escape(vars.join('&'))
|
@@ -158,30 +204,45 @@ module Caboose
|
|
158
204
|
|
159
205
|
def where
|
160
206
|
sql = []
|
161
|
-
values = []
|
207
|
+
values = []
|
208
|
+
table = @options['model'].constantize.table_name
|
162
209
|
@params.each do |k,v|
|
163
|
-
next if v.nil? || v.length == 0
|
210
|
+
next if v.nil? || (v.kind_of?(String) && v.length == 0)
|
211
|
+
|
212
|
+
col = nil
|
213
|
+
if @options['includes'] && @options['includes'].include?(k)
|
214
|
+
arr = @options['includes'][k]
|
215
|
+
col = "#{table_name_of_association(arr[0])}.#{arr[1]}"
|
216
|
+
end
|
164
217
|
|
165
218
|
sql2 = ""
|
166
219
|
if k.ends_with?('_gte')
|
167
|
-
|
220
|
+
col = "#{table}.#{k[0..-5]}" if col.nil?
|
221
|
+
sql2 = "#{col} >= ?"
|
168
222
|
elsif k.ends_with?('_gt')
|
169
|
-
|
223
|
+
col = "#{table}.#{k[0..-4]}" if col.nil?
|
224
|
+
sql2 = "#{col} > ?"
|
170
225
|
elsif k.ends_with?('_lte')
|
171
|
-
|
226
|
+
col = "#{table}.#{k[0..-5]}" if col.nil?
|
227
|
+
sql2 = "#{col} <= ?"
|
172
228
|
elsif k.ends_with?('_lt')
|
173
|
-
|
229
|
+
col = "#{table}.#{k[0..-4]}" if col.nil?
|
230
|
+
sql2 = "#{col} < ?"
|
174
231
|
elsif k.ends_with?('_bw')
|
175
|
-
|
232
|
+
col = "#{table}.#{k[0..-4]}" if col.nil?
|
233
|
+
sql2 = "upper(#{col}) like ?"
|
176
234
|
v = v.kind_of?(Array) ? v.collect{ |v2| "#{v2}%".upcase } : "#{v}%".upcase
|
177
235
|
elsif k.ends_with?('_ew')
|
178
|
-
|
236
|
+
col = "#{table}.#{k[0..-4]}" if col.nil?
|
237
|
+
sql2 = "upper(#{col}) like ?"
|
179
238
|
v = v.kind_of?(Array) ? v.collect{ |v2| "%#{v2}".upcase } : "%#{v}".upcase
|
180
239
|
elsif k.ends_with?('_like')
|
181
|
-
|
240
|
+
col = "#{table}.#{k[0..-6]}" if col.nil?
|
241
|
+
sql2 = "upper(#{col}) like ?"
|
182
242
|
v = v.kind_of?(Array) ? v.collect{ |v2| "%#{v2}%".upcase } : "%#{v}%".upcase
|
183
|
-
else
|
184
|
-
|
243
|
+
else
|
244
|
+
col = "#{table}.#{k}" if col.nil?
|
245
|
+
sql2 = "#{col} = ?"
|
185
246
|
end
|
186
247
|
|
187
248
|
if v.kind_of?(Array)
|
@@ -6,6 +6,11 @@ class Caboose::Utilities::Schema
|
|
6
6
|
return nil
|
7
7
|
end
|
8
8
|
|
9
|
+
# Columns (in order) that were removed in the development of the gem.
|
10
|
+
def self.removed_columns
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
|
9
14
|
# Any column indexes that need to exist in the database
|
10
15
|
def self.indexes
|
11
16
|
return nil
|
@@ -29,7 +34,9 @@ class Caboose::Utilities::Schema
|
|
29
34
|
def self.create_schema
|
30
35
|
return if self.schema.nil?
|
31
36
|
|
32
|
-
rename_tables
|
37
|
+
rename_tables
|
38
|
+
remove_columns
|
39
|
+
|
33
40
|
c = ActiveRecord::Base.connection
|
34
41
|
self.schema.each do |model, columns|
|
35
42
|
tbl = model.table_name
|
@@ -53,6 +60,7 @@ class Caboose::Utilities::Schema
|
|
53
60
|
else
|
54
61
|
|
55
62
|
# Add a temp column
|
63
|
+
c.remove_column tbl, "#{col[0]}_temp" if c.column_exists?(tbl, "#{col[0]}_temp")
|
56
64
|
if col.count > 2
|
57
65
|
c.add_column tbl, "#{col[0]}_temp", col[1], col[2]
|
58
66
|
else
|
@@ -105,6 +113,17 @@ class Caboose::Utilities::Schema
|
|
105
113
|
self.renamed_tables.each do |old_name, new_name|
|
106
114
|
c.rename_table old_name, new_name if c.table_exists?(old_name)
|
107
115
|
end
|
108
|
-
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# Removes a set of tables
|
119
|
+
def self.remove_columns
|
120
|
+
return if self.removed_columns.nil?
|
121
|
+
c = ActiveRecord::Base.connection
|
122
|
+
self.removed_columns.each do |model, columns|
|
123
|
+
columns.each do |col|
|
124
|
+
c.remove_column model.table_name, col if c.column_exists?(model.table_name, col)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
109
128
|
|
110
129
|
end
|
data/lib/caboose/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.100
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- app/helpers/caboose/application_helper.rb
|
177
177
|
- app/helpers/caboose/pages_helper.rb
|
178
178
|
- app/helpers/caboose/permissions_helper.rb
|
179
|
+
- app/helpers/caboose/products_helper.rb
|
179
180
|
- app/models/caboose/approval_request.rb
|
180
181
|
- app/models/caboose/asset.rb
|
181
182
|
- app/models/caboose/authenticator.rb
|