caboose-cms 0.5.129 → 0.5.130

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWFmMTA2YWM3Yzc0Nzc2MDBkOTQzMzVkMGQ4MjcwOGY3Y2QzMzM5Nw==
4
+ YWEzYzcwNzIxOGRiMmZkZjJhYzg3Y2I2YjQ5NDkwOWE3N2RmNTA5OA==
5
5
  data.tar.gz: !binary |-
6
- ODY1M2FjNWY0ZDhjOWQzODEyZThlNjk4NjE2OGNmOTM1Mjk3NTQzMw==
6
+ YWVmNzkyNGQ2OWZmZTY4ZGViYTFlMWFmOTcyMzE2NWEyZDE3OWQyMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDBjNDU3Y2VmN2M3YzJhZTU2NjlkMzZkMDQ2OWZkYjQ5ZGJhYzEzNGI0ZWUy
10
- YmU2NDBlNTAxNzFkMDFlZGUzY2U4N2Q2NjFlZWNmOWI1ODNhOWJhM2IwZGM3
11
- OWJhYjdjNjk2ZGZkOTU4NGY5M2E1ZjZlNzJmYzY2ZGU2NTQyZjU=
9
+ NDBmZWIxYWIyODY5OTExMDMzNjA1OWQ3OWNhNzU4MDQ2ZTI3MzRhMzA3NWU4
10
+ ZTA4OTY0ODIyMTA2ZWViYmY4OWFhOTc1NzE2ZTU0ZmE1NjU1YTA0OTAwYjBk
11
+ NjA2YzEyMzM2Mzg1MWU3Y2NiNDllNjZlOGY3MDc5YThiY2MzYTQ=
12
12
  data.tar.gz: !binary |-
13
- MzgzYTFkNzBmYjI5NDE0NmFhZjBhNjBmMzM1NmViYWJlZTRkMzYyMmU3ZTY1
14
- MWI3ODc5ZDlhMTU3ZDRlM2Y3MDZjZTk5MzJhYTA5NmQ4YTg5ODcwNzY5NGQw
15
- NGEzNzgyNmZmMzRjMzM5MDBlYjg2OTAzN2EyMWZlOTQ5YzAzYTQ=
13
+ NTgxMzE2YWQ4NjA4MmM4OWJkYjlmMzM1NDE5NTBlYjkyYzBhNTE0NmJjNjdi
14
+ MDI3NDNjYWZiODBhZjQxYzgwYWU5ZmIzMzgzMmZmNDhiNjNhMzdjZDBiZTI5
15
+ YWMzMjdjMWYyZjUwOWMwMWNiMjY1MmVhMjg5OTc4YTFmYTU4MDM=
@@ -13,16 +13,33 @@ module Caboose
13
13
  def index
14
14
 
15
15
  # If id exists, is an integer and a product exists with the specified id then get the product
16
- if params[:id] && params[:id].to_i > 0 && Product.exists?(params[:id])
17
- @product = Product.find(params[:id])
18
- render 'product/not_available' and return if @product.status == 'Inactive'
19
-
20
- @category = @product.categories.first
21
- @review = Review.new
22
- @reviews = Review.where(:product_id => @product.id).limit(10).order("id DESC") || nil
23
- @logged_in_user = logged_in_user
24
-
25
- render 'caboose/products/details' and return
16
+ if params[:id]
17
+ if params[:id] == 'sales'
18
+ products = Caboose::Product.where(:site_id => @site.id, :status => Caboose::Product::STATUS_ACTIVE, :on_sale => true).all
19
+ @sale_categories = {}
20
+ products.each do |p|
21
+ cat = 'Uncategorized'
22
+ if p.categories.count > 0
23
+ cats = p.categories.last.ancestry.collect{ |a| a.name }
24
+ cats.shift
25
+ cat = cats.join(' > ')
26
+ end
27
+ @sale_categories[cat] = [] if @sale_categories[cat].nil?
28
+ @sale_categories[cat] << p
29
+ end
30
+ render 'caboose/products/sales' and return
31
+
32
+ elsif params[:id].to_i > 0 && Product.exists?(params[:id])
33
+ @product = Product.find(params[:id])
34
+ render 'product/not_available' and return if @product.status == 'Inactive'
35
+
36
+ @category = @product.categories.first
37
+ @review = Review.new
38
+ @reviews = Review.where(:product_id => @product.id).limit(10).order("id DESC") || nil
39
+ @logged_in_user = logged_in_user
40
+
41
+ render 'caboose/products/details' and return
42
+ end
26
43
  end
27
44
 
28
45
  # Filter params from url
@@ -327,7 +344,9 @@ module Caboose
327
344
  when 'seo_description' then product.seo_description = value
328
345
  when 'status' then product.status = value
329
346
  when 'category_id' then product.toggle_category(value[0], value[1])
330
- when 'stackable_group_id' then product.stackable_group_id = value
347
+ when 'stackable_group_id' then product.stackable_group_id = value
348
+ when 'allow_gift_wrap' then product.allow_gift_wrap = value
349
+ when 'gift_wrap_price' then product.gift_wrap_price = value
331
350
  when 'option1' then product.option1 = value
332
351
  when 'option2' then product.option2 = value
333
352
  when 'option3' then product.option3 = value
@@ -8,18 +8,23 @@ module Caboose
8
8
  belongs_to :parent, :class_name => 'LineItem', :foreign_key => 'parent_id'
9
9
  has_many :children, :class_name => 'LineItem', :foreign_key => 'parent_id'
10
10
 
11
- attr_accessible :id,
12
- :order_package_id,
13
- :variant_id,
14
- :unit_price,
15
- :quantity,
16
- :subtotal,
17
- :notes,
18
- :order_id,
19
- :status,
20
- :custom1,
21
- :custom2,
22
- :custom3
11
+ attr_accessible :id ,
12
+ :order_id ,
13
+ :order_package_id ,
14
+ :variant_id ,
15
+ :unit_price ,
16
+ :quantity ,
17
+ :subtotal ,
18
+ :notes ,
19
+ :status ,
20
+ :custom1 ,
21
+ :custom2 ,
22
+ :custom3 ,
23
+ :is_gift ,
24
+ :include_gift_message ,
25
+ :gift_message ,
26
+ :gift_wrap ,
27
+ :hide_prices
23
28
 
24
29
  #
25
30
  # Scopes
@@ -23,6 +23,7 @@ module Caboose
23
23
  :tax,
24
24
  :shipping,
25
25
  :handling,
26
+ :gift_wrap,
26
27
  :custom_discount,
27
28
  :discount,
28
29
  :total,
@@ -139,12 +140,13 @@ module Caboose
139
140
  end
140
141
 
141
142
  def calculate
142
- self.update_column(:subtotal , self.calculate_subtotal )
143
- self.update_column(:tax , self.calculate_tax )
144
- self.update_column(:shipping , self.calculate_shipping )
145
- self.update_column(:handling , self.calculate_handling )
146
- self.update_column(:discount , self.calculate_discount )
147
- self.update_column(:total , self.calculate_total )
143
+ self.update_column(:subtotal , self.calculate_subtotal )
144
+ self.update_column(:tax , self.calculate_tax )
145
+ self.update_column(:shipping , self.calculate_shipping )
146
+ self.update_column(:handling , self.calculate_handling )
147
+ self.update_column(:gift_wrap , self.calculate_gift_wrap )
148
+ self.update_column(:discount , self.calculate_discount )
149
+ self.update_column(:total , self.calculate_total )
148
150
  end
149
151
 
150
152
  def calculate_subtotal
@@ -172,6 +174,16 @@ module Caboose
172
174
  self.subtotal * self.site.store_config.handling_percentage.to_f
173
175
  end
174
176
 
177
+ def calculate_gift_wrap
178
+ x = 0.0
179
+ self.line_items.each do |li|
180
+ next if !li.gift_wrap
181
+ next if !li.product.allow_gift_wrap
182
+ x = x + li.product.gift_wrap_price * li.quantity
183
+ end
184
+ return x
185
+ end
186
+
175
187
  def calculate_discount
176
188
  return 0.0 if self.discounts.nil? || self.discounts.count == 0
177
189
  x = 0.0
@@ -181,7 +193,7 @@ module Caboose
181
193
  end
182
194
 
183
195
  def calculate_total
184
- return (self.subtotal + self.tax + self.shipping + self.handling) - self.discount
196
+ return (self.subtotal + self.tax + self.shipping + self.handling + self.gift_wrap) - self.discount
185
197
  end
186
198
 
187
199
  def shipping_and_handling
@@ -17,26 +17,36 @@ module Caboose
17
17
 
18
18
  #default_scope order('store_products.sort_order')
19
19
 
20
- attr_accessible :id,
21
- :site_id,
22
- :alternate_id,
23
- :title,
24
- :description,
25
- :vendor_id,
26
- :handle,
27
- :date_available,
28
- :seo_title,
29
- :seo_description,
30
- :option1,
31
- :option2,
32
- :option3,
33
- :default1,
34
- :default2,
35
- :default3,
36
- :status,
37
- :custom_input,
38
- :featured
39
-
20
+ attr_accessible :id ,
21
+ :site_id ,
22
+ :alternate_id ,
23
+ :title ,
24
+ :caption ,
25
+ :description ,
26
+ :handle ,
27
+ :status ,
28
+ :vendor_id ,
29
+ :category_id ,
30
+ :option1 ,
31
+ :option2 ,
32
+ :option3 ,
33
+ :default1 ,
34
+ :default2 ,
35
+ :default3 ,
36
+ :seo_title ,
37
+ :seo_description ,
38
+ :alternate_id ,
39
+ :date_available ,
40
+ :custom_input ,
41
+ :sort_order ,
42
+ :featured ,
43
+ :stackable_group_id ,
44
+ :on_sale ,
45
+ :allow_gift_wrap ,
46
+ :gift_wrap_price
47
+
48
+ STATUS_ACTIVE = 'Active'
49
+ STATUS_INACTIVE = 'Inactive'
40
50
 
41
51
  #
42
52
  # Scopes
@@ -285,15 +285,19 @@ class Caboose::Schema < Caboose::Utilities::Schema
285
285
  [ :order_package_id , :integer ],
286
286
  [ :variant_id , :integer ],
287
287
  [ :parent_id , :integer ],
288
- [ :status , :string ],
289
- [ :tracking_number , :string ],
288
+ [ :status , :string ],
290
289
  [ :quantity , :integer , :default => 0 ],
291
290
  [ :unit_price , :decimal , { :precision => 8, :scale => 2 }],
292
291
  [ :subtotal , :decimal , { :precision => 8, :scale => 2 }],
293
292
  [ :notes , :text ],
294
293
  [ :custom1 , :string ],
295
294
  [ :custom2 , :string ],
296
- [ :custom3 , :string ]
295
+ [ :custom3 , :string ],
296
+ [ :is_gift , :boolean , { :default => false }],
297
+ [ :include_gift_message , :boolean , { :default => false }],
298
+ [ :gift_message , :text ],
299
+ [ :gift_wrap , :boolean , { :default => false }],
300
+ [ :hide_prices , :boolean , { :default => false }]
297
301
  ],
298
302
  Caboose::MediaCategory => [
299
303
  [ :parent_id , :integer ],
@@ -342,6 +346,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
342
346
  [ :tax , :decimal , { :precision => 8, :scale => 2 }],
343
347
  [ :shipping , :decimal , { :precision => 8, :scale => 2 }],
344
348
  [ :handling , :decimal , { :precision => 8, :scale => 2 }],
349
+ [ :gift_wrap , :decimal , { :precision => 8, :scale => 2 }],
345
350
  [ :custom_discount , :decimal , { :precision => 8, :scale => 2 }],
346
351
  [ :discount , :decimal , { :precision => 8, :scale => 2 }],
347
352
  [ :total , :decimal , { :precision => 8, :scale => 2 }],
@@ -471,7 +476,9 @@ class Caboose::Schema < Caboose::Utilities::Schema
471
476
  [ :sort_order , :integer ],
472
477
  [ :featured , :boolean , :default => false ],
473
478
  [ :stackable_group_id , :integer ],
474
- [ :on_sale , :boolean , { :default => false }]
479
+ [ :on_sale , :boolean , { :default => false }],
480
+ [ :allow_gift_wrap , :boolean , { :default => false }],
481
+ [ :gift_wrap_price , :decimal , { :precision => 8, :scale => 2 }]
475
482
  ],
476
483
  Caboose::ProductImage => [
477
484
  [ :product_id , :integer ],
@@ -0,0 +1,2 @@
1
+ <p>These are the product sales.</p>
2
+
@@ -1,6 +1,12 @@
1
+ <%
2
+ # Note: This block is in the content area for the /products pages.
3
+ # It's set up like this so that each site can have custom views.
4
+ %>
1
5
  <div id='block_<%= block.id %>'>
2
6
 
3
- <%= block.partial('product_crumbtrail', local_assigns) %>
7
+ <%= block.partial('product_crumbtrail', local_assigns) %>
8
+ <% if @sale_categories %>
9
+ <%= block.partial('product_sales', local_assigns) %>
4
10
  <% if @product %>
5
11
  <%= block.partial('product_details', local_assigns) %>
6
12
  <% else %>
@@ -3,16 +3,18 @@ p = @product
3
3
  %>
4
4
  <%= render :partial => 'caboose/products/admin_header' %>
5
5
 
6
- <p><div id='product_<%= p.id %>_vendor_id'></div></p>
7
- <p><div id='product_<%= p.id %>_title'></div></p>
8
- <p><div id='product_<%= p.id %>_caption'></div></p>
9
- <p><div id='product_<%= p.id %>_handle'></div></p>
10
- <p><div id='product_<%= p.id %>_featured'></div></p>
11
- <p><div id='product_<%= p.id %>_seo_title'></div></p>
12
- <p><div id='product_<%= p.id %>_seo_description'></div></p>
13
- <p><div id='product_<%= p.id %>_status'></div></p>
14
- <p><div id='product_<%= p.id %>_alternate_id'></div></p>
15
- <p><div id='product_<%= p.id %>_date_available'></div></p>
6
+ <p><div id='product_<%= p.id %>_vendor_id' ></div></p>
7
+ <p><div id='product_<%= p.id %>_title' ></div></p>
8
+ <p><div id='product_<%= p.id %>_caption' ></div></p>
9
+ <p><div id='product_<%= p.id %>_handle' ></div></p>
10
+ <p><div id='product_<%= p.id %>_featured' ></div></p>
11
+ <p><div id='product_<%= p.id %>_seo_title' ></div></p>
12
+ <p><div id='product_<%= p.id %>_seo_description' ></div></p>
13
+ <p><div id='product_<%= p.id %>_status' ></div></p>
14
+ <p><div id='product_<%= p.id %>_alternate_id' ></div></p>
15
+ <p><div id='product_<%= p.id %>_date_available' ></div></p>
16
+ <p><div id='product_<%= p.id %>_allow_gift_wrap' ></div></p>
17
+ <p><div id='product_<%= p.id %>_gift_wrap_price' ></div></p>
16
18
 
17
19
  <div id='message'><%= raw flash[:message] ? flash[:message] : "" %></div>
18
20
 
@@ -40,7 +42,9 @@ $(document).ready(function() {
40
42
  { name: 'seo_description' , nice_name: 'SEO Meta Description' , type: 'textarea' , value: <%= raw Caboose.json(p.seo_description ) %>, width: 500, height: 150 },
41
43
  { name: 'alternate_id' , nice_name: 'Alternate ID' , type: 'text' , value: <%= raw Caboose.json(p.alternate_id ) %>, width: 500 },
42
44
  { name: 'date_available' , nice_name: 'Date Available' , type: 'text' , value: <%= raw Caboose.json(date_available ) %>, width: 500 },
43
- { name: 'featured' , nice_name: 'Featured' , type: 'checkbox' , value: <%= raw Caboose.json(p.featured ) %>, width: 500 }
45
+ { name: 'featured' , nice_name: 'Featured' , type: 'checkbox' , value: <%= raw Caboose.json(p.featured ) %>, width: 500 },
46
+ { name: 'allow_gift_wrap' , nice_name: 'Allow Gift Wrap' , type: 'checkbox' , value: <%= raw Caboose.json(p.allow_gift_wrap ? 1 : 0) %>, width: 500 },
47
+ { name: 'gift_wrap_price' , nice_name: 'Gift Wrap Price' , type: 'text' , value: <%= raw Caboose.json(p.gift_wrap_price ? number_with_delimiter(p.gift_wrap_price, :precision => 2) : '') %>, width: 500 }
44
48
  ]
45
49
  });
46
50
  });
@@ -401,7 +401,7 @@ Caboose::Engine.routes.draw do
401
401
  #=============================================================================
402
402
  # Products
403
403
  #=============================================================================
404
-
404
+
405
405
  get '/products/:id/info' => 'products#info'
406
406
  get '/products/:id' => 'products#index', :constraints => { :id => /.*/ }
407
407
  get '/products' => 'products#index'
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.5.129'
2
+ VERSION = '0.5.130'
3
3
  end
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.5.129
4
+ version: 0.5.130
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -680,6 +680,7 @@ files:
680
680
  - app/views/caboose/blocks/_product_category.html.erb
681
681
  - app/views/caboose/blocks/_product_crumbtrail.html.erb
682
682
  - app/views/caboose/blocks/_product_details.html.erb
683
+ - app/views/caboose/blocks/_product_sales.html.erb
683
684
  - app/views/caboose/blocks/_products.html.erb
684
685
  - app/views/caboose/blocks/_render_function.html.erb
685
686
  - app/views/caboose/blocks/_richtext.html.erb
@@ -822,6 +823,7 @@ files:
822
823
  - app/views/caboose/products/details.html.erb
823
824
  - app/views/caboose/products/index.html.erb
824
825
  - app/views/caboose/products/not_available.html.erb
826
+ - app/views/caboose/products/sales.html.erb
825
827
  - app/views/caboose/redirects/admin_edit.html.erb
826
828
  - app/views/caboose/redirects/admin_index.html.erb
827
829
  - app/views/caboose/redirects/admin_new.html.erb