caboose-cms 0.2.99 → 0.2.100
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 +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
|