refinerycms-products 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/app/controllers/addresses_controller.rb +22 -22
  2. data/app/controllers/admin/carts_controller.rb +7 -7
  3. data/app/controllers/admin/categories_controller.rb +50 -50
  4. data/app/controllers/admin/customers_controller.rb +12 -12
  5. data/app/controllers/admin/line_items_controller.rb +7 -7
  6. data/app/controllers/admin/products_controller.rb +23 -23
  7. data/app/controllers/carts_controller.rb +110 -110
  8. data/app/controllers/categories_controller.rb +32 -32
  9. data/app/controllers/customers_controller.rb +33 -33
  10. data/app/controllers/line_items_controller.rb +8 -8
  11. data/app/controllers/products_controller.rb +61 -61
  12. data/app/controllers/profiles_controller.rb +36 -36
  13. data/app/helpers/address_helper.rb +20 -20
  14. data/app/helpers/products_helper.rb +41 -33
  15. data/app/models/address.rb +18 -18
  16. data/app/models/cart.rb +54 -54
  17. data/app/models/category.rb +28 -28
  18. data/app/models/customer.rb +32 -32
  19. data/app/models/line_item.rb +28 -28
  20. data/app/models/product.rb +46 -46
  21. data/app/views/addresses/edit.html.erb +42 -42
  22. data/app/views/admin/carts/_actions.html.erb +27 -27
  23. data/app/views/admin/carts/_cart.html.erb +18 -18
  24. data/app/views/admin/carts/_carts.html.erb +1 -1
  25. data/app/views/admin/carts/_form.html.erb +24 -24
  26. data/app/views/admin/carts/_records.html.erb +17 -17
  27. data/app/views/admin/carts/_sortable_list.html.erb +7 -7
  28. data/app/views/admin/carts/edit.html.erb +1 -1
  29. data/app/views/admin/carts/index.html.erb +10 -10
  30. data/app/views/admin/carts/new.html.erb +1 -1
  31. data/app/views/admin/categories/_actions.html.erb +27 -27
  32. data/app/views/admin/categories/_categories.html.erb +1 -1
  33. data/app/views/admin/categories/_category.html.erb +25 -25
  34. data/app/views/admin/categories/_form.html.erb +49 -49
  35. data/app/views/admin/categories/_records.html.erb +17 -17
  36. data/app/views/admin/categories/_sortable_list.html.erb +10 -10
  37. data/app/views/admin/categories/edit.html.erb +1 -1
  38. data/app/views/admin/categories/index.html.erb +12 -12
  39. data/app/views/admin/categories/new.html.erb +1 -1
  40. data/app/views/admin/customers/_actions.html.erb +27 -27
  41. data/app/views/admin/customers/_customer.html.erb +18 -18
  42. data/app/views/admin/customers/_customers.html.erb +1 -1
  43. data/app/views/admin/customers/_form.html.erb +40 -40
  44. data/app/views/admin/customers/_records.html.erb +17 -17
  45. data/app/views/admin/customers/_sortable_list.html.erb +7 -7
  46. data/app/views/admin/customers/edit.html.erb +1 -1
  47. data/app/views/admin/customers/index.html.erb +10 -10
  48. data/app/views/admin/customers/new.html.erb +1 -1
  49. data/app/views/admin/customers/show.html.erb +59 -59
  50. data/app/views/admin/line_items/_actions.html.erb +27 -27
  51. data/app/views/admin/line_items/_form.html.erb +29 -29
  52. data/app/views/admin/line_items/_line_item.html.erb +18 -18
  53. data/app/views/admin/line_items/_line_items.html.erb +1 -1
  54. data/app/views/admin/line_items/_records.html.erb +17 -17
  55. data/app/views/admin/line_items/_sortable_list.html.erb +7 -7
  56. data/app/views/admin/line_items/edit.html.erb +1 -1
  57. data/app/views/admin/line_items/index.html.erb +10 -10
  58. data/app/views/admin/line_items/new.html.erb +1 -1
  59. data/app/views/admin/products/_actions.html.erb +42 -42
  60. data/app/views/admin/products/_form.html.erb +120 -120
  61. data/app/views/admin/products/_product.html.erb +23 -23
  62. data/app/views/admin/products/_products.html.erb +1 -1
  63. data/app/views/admin/products/_records.html.erb +17 -17
  64. data/app/views/admin/products/_sortable_list.html.erb +13 -13
  65. data/app/views/admin/products/edit.html.erb +1 -1
  66. data/app/views/admin/products/index.html.erb +12 -12
  67. data/app/views/admin/products/new.html.erb +1 -1
  68. data/app/views/carts/show.html.erb +56 -56
  69. data/app/views/categories/index.html.erb +11 -11
  70. data/app/views/categories/show.html.erb +33 -33
  71. data/app/views/customers/index.html.erb +11 -11
  72. data/app/views/customers/show.html.erb +52 -52
  73. data/app/views/line_items/index.html.erb +11 -11
  74. data/app/views/line_items/show.html.erb +39 -39
  75. data/app/views/products/index.html.erb +33 -33
  76. data/app/views/products/show.html.erb +65 -65
  77. data/app/views/profiles/_order_history.html.erb +23 -23
  78. data/app/views/profiles/_show_address.html.erb +3 -3
  79. data/app/views/profiles/account_details.html.erb +31 -31
  80. data/app/views/profiles/address_details.html.erb +9 -9
  81. data/app/views/profiles/index.html.erb +75 -75
  82. data/app/views/profiles/order_history_details.html.erb +39 -39
  83. data/config/locales/en.yml +97 -97
  84. data/config/locales/fr.yml +25 -25
  85. data/config/locales/lolcat.yml +25 -25
  86. data/config/locales/nb.yml +21 -21
  87. data/config/locales/nl.yml +21 -21
  88. data/config/routes.rb +58 -58
  89. data/lib/generators/refinerycms_products_generator.rb +5 -5
  90. data/lib/refinerycms-carts.rb +31 -31
  91. data/lib/refinerycms-categories.rb +30 -30
  92. data/lib/refinerycms-customers.rb +34 -34
  93. data/lib/refinerycms-line_items.rb +30 -30
  94. data/lib/refinerycms-products.rb +65 -65
  95. data/lib/tasks/products.rake +12 -12
  96. metadata +95 -98
@@ -1,18 +1,18 @@
1
- class Address < ActiveRecord::Base
2
- belongs_to :customer
3
-
4
- validates_presence_of :address_line_1, :suburb, :city, :postal_code, :customer
5
-
6
- scope :is_default, where(:default => true)
7
-
8
- def set_as_default
9
- self.update_attribute(:default, true)
10
-
11
- other_addresses = Address.where(:customer_id => self.customer_id)
12
- other_addresses.each do |address|
13
- if self.id != address.id
14
- address.update_attribute(:default, false)
15
- end
16
- end
17
- end
18
- end
1
+ class Address < ActiveRecord::Base
2
+ belongs_to :customer
3
+
4
+ validates_presence_of :address_line_1, :suburb, :city, :postal_code, :customer
5
+
6
+ scope :is_default, where(:default => true)
7
+
8
+ def set_as_default
9
+ self.update_attribute(:default, true)
10
+
11
+ other_addresses = Address.where(:customer_id => self.customer_id)
12
+ other_addresses.each do |address|
13
+ if self.id != address.id
14
+ address.update_attribute(:default, false)
15
+ end
16
+ end
17
+ end
18
+ end
data/app/models/cart.rb CHANGED
@@ -1,54 +1,54 @@
1
- class Cart < ActiveRecord::Base
2
- before_save :check_is_current_for_sibling_carts
3
-
4
- belongs_to :customer
5
- has_many :line_items
6
- has_many :products, :through => :line_items
7
-
8
- # def title was created automatically because you didn't specify a string field
9
- # when you ran the refinery_engine generator. Love, Refinery CMS.
10
- def title
11
- "Override def title in vendor/engines/carts/app/models/cart.rb"
12
- end
13
-
14
- def grand_total
15
- total = 0
16
- line_items.each do |li|
17
- total += li.total_price
18
- end
19
- total
20
- end
21
-
22
-
23
- def add_to_the_cart(product_id, quantity = 1, variant_id = nil)
24
- if variant_id.blank?
25
- li = self.line_items.where(:product_id => product_id).first
26
- else
27
- li = self.line_items.where(:product_id => product_id, :variant_id => variant_id).first
28
- end
29
-
30
- #logger.info("****************** the variant id = #{variant_id}")
31
-
32
- if li.present?
33
- li.quantity += quantity.to_i
34
- li.save
35
- else
36
- if variant_id.blank?
37
- self.line_items.create(:product_id => product_id, :quantity => quantity)
38
- else
39
- self.line_items.create(:product_id => product_id, :quantity => quantity, :variant_id => variant_id)
40
- end
41
-
42
- end
43
- end
44
-
45
- def check_is_current_for_sibling_carts
46
- if is_current.present? and is_current == true and customer_id.present?
47
- other_carts = Cart.where(:customer_id => self.customer_id)
48
- other_carts.each do |cart|
49
- cart.update_attributes(:is_current => false) if cart.id != self.id
50
- end
51
- end
52
- end
53
-
54
- end
1
+ class Cart < ActiveRecord::Base
2
+ before_save :check_is_current_for_sibling_carts
3
+
4
+ belongs_to :customer
5
+ has_many :line_items
6
+ has_many :products, :through => :line_items
7
+
8
+ # def title was created automatically because you didn't specify a string field
9
+ # when you ran the refinery_engine generator. Love, Refinery CMS.
10
+ def title
11
+ "Override def title in vendor/engines/carts/app/models/cart.rb"
12
+ end
13
+
14
+ def grand_total
15
+ total = 0
16
+ line_items.each do |li|
17
+ total += li.total_price
18
+ end
19
+ total
20
+ end
21
+
22
+
23
+ def add_to_the_cart(product_id, quantity = 1, variant_id = nil)
24
+ if variant_id.blank?
25
+ li = self.line_items.where(:product_id => product_id).first
26
+ else
27
+ li = self.line_items.where(:product_id => product_id, :variant_id => variant_id).first
28
+ end
29
+
30
+ #logger.info("****************** the variant id = #{variant_id}")
31
+
32
+ if li.present?
33
+ li.quantity += quantity.to_i
34
+ li.save
35
+ else
36
+ if variant_id.blank?
37
+ self.line_items.create(:product_id => product_id, :quantity => quantity)
38
+ else
39
+ self.line_items.create(:product_id => product_id, :quantity => quantity, :variant_id => variant_id)
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ def check_is_current_for_sibling_carts
46
+ if is_current.present? and is_current == true and customer_id.present?
47
+ other_carts = Cart.where(:customer_id => self.customer_id)
48
+ other_carts.each do |cart|
49
+ cart.update_attributes(:is_current => false) if cart.id != self.id
50
+ end
51
+ end
52
+ end
53
+
54
+ end
@@ -1,28 +1,28 @@
1
- class Category < ActiveRecord::Base
2
-
3
- include Rails.application.routes.url_helpers
4
- #default_url_options[:host] = request.host_with_port
5
-
6
-
7
- acts_as_indexed :fields => [:name]
8
-
9
- validates :name, :presence => true, :uniqueness => true
10
-
11
-
12
- belongs_to :parent, :class_name => "Category", :foreign_key => "parent_id"
13
- has_many :children, :class_name => "Category", :foreign_key => "parent_id"
14
-
15
- has_and_belongs_to_many :products
16
- has_and_belongs_to_many :banners
17
-
18
- # Docs for acts_as_nested_set https://github.com/collectiveidea/awesome_nested_set
19
- acts_as_nested_set :dependent => :destroy # rather than :delete_all
20
-
21
- def title
22
- name
23
- end
24
-
25
- def url
26
- category_products_path(id)
27
- end
28
- end
1
+ class Category < ActiveRecord::Base
2
+
3
+ include Rails.application.routes.url_helpers
4
+ #default_url_options[:host] = request.host_with_port
5
+
6
+
7
+ acts_as_indexed :fields => [:name]
8
+
9
+ validates :name, :presence => true, :uniqueness => true
10
+
11
+
12
+ belongs_to :parent, :class_name => "Category", :foreign_key => "parent_id"
13
+ has_many :children, :class_name => "Category", :foreign_key => "parent_id"
14
+
15
+ has_and_belongs_to_many :products
16
+ has_and_belongs_to_many :banners
17
+
18
+ # Docs for acts_as_nested_set https://github.com/collectiveidea/awesome_nested_set
19
+ acts_as_nested_set :dependent => :destroy # rather than :delete_all
20
+
21
+ def title
22
+ name
23
+ end
24
+
25
+ def url
26
+ category_products_path(id)
27
+ end
28
+ end
@@ -1,32 +1,32 @@
1
- class Customer < ActiveRecord::Base
2
-
3
- # Include default devise modules. Others available are:
4
- # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
5
- devise :database_authenticatable, :registerable,
6
- :recoverable, :rememberable, :trackable
7
-
8
- # Setup accessible (or protected) attributes for your model
9
- attr_accessible :name, :surname, :contact_number, :email, :password, :password_confirmation #, :remember_me
10
-
11
- acts_as_indexed :fields => [:name, :surname, :contact_number, :email, :encrypted_password]
12
-
13
- validates :email, :presence => true, :uniqueness => true
14
-
15
- has_many :carts
16
- has_many :addresses
17
-
18
- if defined?(Order)
19
- has_many :orders
20
- end
21
-
22
- def self.update_customer(id, name, surname, contact_number, email)
23
- logger.info("********************** params = #{name}")
24
- this_customer = self.find(id)
25
- this_customer.update_attributes(:name => name, :surname => surname, :contact_number => contact_number, :email => email)
26
- this_customer.save!
27
- end
28
-
29
- def delivery_address
30
- addresses.is_default.first
31
- end
32
- end
1
+ class Customer < ActiveRecord::Base
2
+
3
+ # Include default devise modules. Others available are:
4
+ # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable, :trackable
7
+
8
+ # Setup accessible (or protected) attributes for your model
9
+ attr_accessible :name, :surname, :contact_number, :email, :password, :password_confirmation #, :remember_me
10
+
11
+ acts_as_indexed :fields => [:name, :surname, :contact_number, :email, :encrypted_password]
12
+
13
+ validates :email, :presence => true, :uniqueness => true
14
+
15
+ has_many :carts
16
+ has_many :addresses
17
+
18
+ if defined?(Order)
19
+ has_many :orders
20
+ end
21
+
22
+ def self.update_customer(id, name, surname, contact_number, email)
23
+ logger.info("********************** params = #{name}")
24
+ this_customer = self.find(id)
25
+ this_customer.update_attributes(:name => name, :surname => surname, :contact_number => contact_number, :email => email)
26
+ this_customer.save!
27
+ end
28
+
29
+ def delivery_address
30
+ addresses.is_default.first
31
+ end
32
+ end
@@ -1,28 +1,28 @@
1
- class LineItem < ActiveRecord::Base
2
-
3
- belongs_to :cart
4
- belongs_to :product
5
-
6
- # def title was created automatically because you didn't specify a string field
7
- # when you ran the refinery_engine generator. Love, Refinery CMS.
8
- def title
9
- "line item for #{product.name}"
10
- end
11
-
12
- def total_price
13
- if variant_id.present? and defined?(Variant)
14
- variant.price * quantity
15
- else
16
- product.price * quantity
17
- end
18
- end
19
-
20
- def grand_total
21
- total = 0
22
- line_items.each do |li|
23
- total += li.total_price
24
- end
25
- total
26
- end
27
-
28
- end
1
+ class LineItem < ActiveRecord::Base
2
+
3
+ belongs_to :cart
4
+ belongs_to :product
5
+
6
+ # def title was created automatically because you didn't specify a string field
7
+ # when you ran the refinery_engine generator. Love, Refinery CMS.
8
+ def title
9
+ "line item for #{product.name}"
10
+ end
11
+
12
+ def total_price
13
+ if variant_id.present? and defined?(Variant) and variant.price.present?
14
+ variant.price * quantity
15
+ else
16
+ product.price * quantity
17
+ end
18
+ end
19
+
20
+ def grand_total
21
+ total = 0
22
+ line_items.each do |li|
23
+ total += li.total_price
24
+ end
25
+ total
26
+ end
27
+
28
+ end
@@ -1,46 +1,46 @@
1
- require 'acts-as-taggable-on'
2
-
3
- class Product < ActiveRecord::Base
4
-
5
- acts_as_indexed :fields => [:name, :description, :summary]
6
-
7
- if defined?(ActsAsTaggableOn)
8
- acts_as_taggable_on :tags
9
- end
10
-
11
- validates :name, :presence => true, :uniqueness => true
12
- validate :validate_category
13
-
14
- scope :less_than, lambda { |price| where("price < ?", price) }
15
- scope :greater_than, lambda { |price| where("price > ?", price) }
16
-
17
- scope :best_sellers, where(:best_seller => true)
18
- scope :featured, where(:featured => true)
19
- scope :new_products, where(:new_product => true)
20
-
21
- scope :by_category, lambda { |category_id|
22
- ids = []
23
- Category.find(category_id).children.each do |child|
24
- ids << child.id
25
- end
26
- ids << category_id
27
-
28
- joins(:categories).where("categories.id" => ids)
29
- }
30
-
31
- belongs_to :image
32
- has_and_belongs_to_many :categories
33
- has_many :line_items
34
-
35
- def title
36
- name
37
- end
38
-
39
- def validate_category
40
- categories.each do |category|
41
- if category.children.present?
42
- errors.add_to_base("Cannot assign product to a category that has sub-categories")
43
- end
44
- end
45
- end
46
- end
1
+ require 'acts-as-taggable-on'
2
+
3
+ class Product < ActiveRecord::Base
4
+
5
+ acts_as_indexed :fields => [:name, :description, :summary]
6
+
7
+ if defined?(ActsAsTaggableOn)
8
+ acts_as_taggable_on :tags
9
+ end
10
+
11
+ validates :name, :presence => true, :uniqueness => true
12
+ validate :validate_category
13
+
14
+ scope :less_than, lambda { |price| where("price < ?", price) }
15
+ scope :greater_than, lambda { |price| where("price > ?", price) }
16
+
17
+ scope :best_sellers, where(:best_seller => true)
18
+ scope :featured, where(:featured => true)
19
+ scope :new_products, where(:new_product => true)
20
+
21
+ scope :by_category, lambda { |category_id|
22
+ ids = []
23
+ Category.find(category_id).children.each do |child|
24
+ ids << child.id
25
+ end
26
+ ids << category_id
27
+
28
+ joins(:categories).where("categories.id" => ids)
29
+ }
30
+
31
+ belongs_to :image
32
+ has_and_belongs_to_many :categories
33
+ has_many :line_items
34
+
35
+ def title
36
+ name
37
+ end
38
+
39
+ def validate_category
40
+ categories.each do |category|
41
+ if category.children.present?
42
+ errors.add_to_base("Cannot assign product to a category that has sub-categories")
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,42 +1,42 @@
1
- <h3 class="category">Edit Address</h3>
2
-
3
- <div class="newform">
4
- <% form_for(@address) do |f| %>
5
- <% if @address.errors.any? %>
6
- <div id="error_explanation">
7
- <ul>
8
- <% @address.errors.full_messages.each do |msg| %>
9
- <li><%= msg %></li>
10
- <% end %>
11
- </ul>
12
- </div>
13
- <% end %>
14
-
15
- <%= f.hidden_field :customer_id %>
16
- <%= f.hidden_field :default %>
17
-
18
-
19
-
20
- <%= f.label :address_line_1, "Address" %>
21
- <div class="input"><%= f.text_field :address_line_1 %></div>
22
-
23
- <label>&nbsp;</label>
24
- <div class="input"><%= f.text_field :address_line_2 %></div>
25
-
26
- <%= f.label :suburb %>
27
- <div class="input"><%= f.text_field :suburb %></div>
28
-
29
-
30
- <%= f.label :city, "City" %>
31
- <div class="input"><%= f.text_field :city %></div>
32
-
33
- <%= f.label :postal_code %>
34
- <div class="input"><%= f.text_field :postal_code %></div>
35
-
36
-
37
- <div class='btn'><%= f.submit "Update" %></div>
38
-
39
- <% end %>
40
- </div>
41
-
42
-
1
+ <h3 class="category">Edit Address</h3>
2
+
3
+ <div class="newform">
4
+ <% form_for(@address) do |f| %>
5
+ <% if @address.errors.any? %>
6
+ <div id="error_explanation">
7
+ <ul>
8
+ <% @address.errors.full_messages.each do |msg| %>
9
+ <li><%= msg %></li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ <% end %>
14
+
15
+ <%= f.hidden_field :customer_id %>
16
+ <%= f.hidden_field :default %>
17
+
18
+
19
+
20
+ <%= f.label :address_line_1, "Address" %>
21
+ <div class="input"><%= f.text_field :address_line_1 %></div>
22
+
23
+ <label>&nbsp;</label>
24
+ <div class="input"><%= f.text_field :address_line_2 %></div>
25
+
26
+ <%= f.label :suburb %>
27
+ <div class="input"><%= f.text_field :suburb %></div>
28
+
29
+
30
+ <%= f.label :city, "City" %>
31
+ <div class="input"><%= f.text_field :city %></div>
32
+
33
+ <%= f.label :postal_code %>
34
+ <div class="input"><%= f.text_field :postal_code %></div>
35
+
36
+
37
+ <div class='btn'><%= f.submit "Update" %></div>
38
+
39
+ <% end %>
40
+ </div>
41
+
42
+