spree_core 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/assets/images/credit_cards/icons/diners_club.png +0 -0
- data/app/assets/javascripts/admin/address_states.js +1 -1
- data/app/assets/javascripts/admin/admin.js.erb +18 -13
- data/app/assets/javascripts/admin/calculator.js +2 -2
- data/app/assets/javascripts/admin/checkouts/edit.js +3 -1
- data/app/assets/javascripts/admin/image_settings.js.erb +5 -5
- data/app/assets/javascripts/admin/orders/edit.js +1 -1
- data/app/assets/javascripts/admin/payments/new.js +9 -2
- data/app/assets/javascripts/admin/spree_core.js +13 -1
- data/app/assets/javascripts/admin/taxon_autocomplete.js.erb +2 -1
- data/app/assets/javascripts/admin/variant_autocomplete.js.erb +23 -19
- data/app/assets/javascripts/spree.js.coffee +37 -0
- data/app/assets/javascripts/store/checkout.js.coffee +8 -0
- data/app/assets/javascripts/store/product.js.coffee +1 -1
- data/app/assets/javascripts/store/spree_core.js +1 -0
- data/app/assets/stylesheets/admin/components/_sidebar.scss +7 -6
- data/app/assets/stylesheets/admin/components/_states.scss +16 -12
- data/app/assets/stylesheets/admin/globals/_variables.scss +102 -96
- data/app/assets/stylesheets/admin/shared/_forms.scss +2 -1
- data/app/assets/stylesheets/admin/shared/_icons.scss +2 -1
- data/app/assets/stylesheets/admin/shared/_layout.scss +4 -1
- data/app/assets/stylesheets/admin/shared/_tables.scss +8 -0
- data/app/assets/stylesheets/store/screen.css.scss +28 -16
- data/app/assets/stylesheets/store/variables.css.scss +4 -2
- data/app/controllers/spree/admin/adjustments_controller.rb +7 -3
- data/app/controllers/spree/admin/base_controller.rb +10 -5
- data/app/controllers/spree/admin/line_items_controller.rb +3 -2
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +3 -2
- data/app/controllers/spree/admin/orders_controller.rb +2 -2
- data/app/controllers/spree/admin/payments_controller.rb +1 -1
- data/app/controllers/spree/admin/resource_controller.rb +5 -5
- data/app/controllers/spree/admin/shipments_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller.rb +1 -1
- data/app/controllers/spree/admin/users_controller.rb +96 -0
- data/app/controllers/spree/checkout_controller.rb +18 -7
- data/app/controllers/spree/locale_controller.rb +1 -1
- data/app/controllers/spree/orders_controller.rb +20 -2
- data/app/controllers/spree/taxons_controller.rb +8 -2
- data/app/helpers/spree/admin/images_helper.rb +6 -2
- data/app/helpers/spree/admin/navigation_helper.rb +23 -3
- data/app/helpers/spree/base_helper.rb +9 -5
- data/app/helpers/spree/orders_helper.rb +13 -0
- data/app/helpers/spree/products_helper.rb +9 -4
- data/app/mailers/spree/base_mailer.rb +16 -0
- data/app/mailers/spree/order_mailer.rb +12 -11
- data/app/mailers/spree/shipment_mailer.rb +4 -7
- data/app/mailers/spree/test_mailer.rb +2 -3
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/app_configuration.rb +9 -3
- data/app/models/spree/calculator/default_tax.rb +5 -1
- data/app/models/spree/calculator/per_item.rb +1 -1
- data/app/models/spree/classification.rb +7 -0
- data/app/models/spree/credit_card.rb +1 -5
- data/app/models/spree/gateway.rb +10 -2
- data/app/models/spree/gateway/bogus.rb +5 -5
- data/app/models/spree/inventory_unit.rb +4 -4
- data/app/models/spree/line_item.rb +1 -1
- data/app/models/spree/order.rb +15 -35
- data/app/models/spree/order/checkout.rb +52 -0
- data/app/models/spree/order_populator.rb +11 -3
- data/app/models/spree/order_updater.rb +3 -4
- data/app/models/spree/payment.rb +23 -1
- data/app/models/spree/payment/processing.rb +18 -5
- data/app/models/spree/payment_method.rb +4 -0
- data/app/models/spree/price.rb +2 -3
- data/app/models/spree/product.rb +12 -4
- data/app/models/spree/product/scopes.rb +29 -16
- data/app/models/spree/return_authorization.rb +1 -1
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/taxon.rb +21 -6
- data/app/models/spree/variant.rb +7 -2
- data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +2 -2
- data/app/views/spree/admin/countries/index.html.erb +1 -0
- data/app/views/spree/admin/general_settings/edit.html.erb +10 -2
- data/app/views/spree/admin/images/index.html.erb +7 -3
- data/app/views/spree/admin/mail_methods/index.html.erb +2 -2
- data/app/views/spree/admin/orders/_form.html.erb +3 -3
- data/app/views/spree/admin/orders/_line_item.html.erb +1 -1
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +4 -4
- data/app/views/spree/admin/orders/index.html.erb +60 -52
- data/app/views/spree/admin/payment_methods/_form.html.erb +2 -2
- data/app/views/spree/admin/payment_methods/index.html.erb +39 -35
- data/app/views/spree/admin/payments/_list.html.erb +1 -1
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +10 -10
- data/app/views/spree/admin/products/_form.html.erb +7 -12
- data/app/views/spree/admin/products/index.html.erb +13 -15
- data/app/views/spree/admin/products/new.html.erb +3 -1
- data/app/views/spree/admin/return_authorizations/_form.html.erb +7 -7
- data/app/views/spree/admin/return_authorizations/edit.html.erb +17 -11
- data/app/views/spree/admin/return_authorizations/index.html.erb +4 -4
- data/app/views/spree/admin/return_authorizations/new.html.erb +13 -6
- data/app/views/spree/admin/shared/_alert.html.erb +1 -1
- data/app/views/spree/admin/shared/_configuration_menu.html.erb +6 -2
- data/app/views/spree/admin/shared/_order_details.html.erb +6 -6
- data/app/views/spree/admin/shared/_order_tabs.html.erb +20 -37
- data/app/views/spree/admin/shared/_routes.html.erb +1 -1
- data/app/views/spree/admin/shared/_tabs.html.erb +1 -2
- data/app/views/spree/admin/shared/_update_order_state.js +1 -1
- data/app/views/spree/admin/shipments/_form.html.erb +24 -24
- data/app/views/spree/admin/shipments/edit.html.erb +13 -13
- data/app/views/spree/admin/shipments/index.html.erb +35 -31
- data/app/views/spree/admin/shipping_methods/index.html.erb +35 -32
- data/app/views/spree/admin/tax_rates/_form.html.erb +2 -1
- data/app/views/spree/admin/taxons/_form.html.erb +17 -0
- data/app/views/spree/admin/taxons/edit.html.erb +3 -1
- data/app/views/spree/admin/trackers/_form.html.erb +2 -2
- data/app/views/spree/admin/trackers/index.html.erb +2 -2
- data/app/views/spree/admin/users/_form.html.erb +37 -0
- data/app/views/spree/admin/users/edit.html.erb +28 -0
- data/app/views/spree/admin/users/index.html.erb +53 -0
- data/app/views/spree/admin/users/new.html.erb +23 -0
- data/app/views/spree/admin/users/show.html.erb +21 -0
- data/app/views/spree/admin/variants/edit.html.erb +6 -4
- data/app/views/spree/admin/variants/index.html.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +4 -4
- data/app/views/spree/admin/zones/index.html.erb +3 -1
- data/app/views/spree/checkout/_delivery.html.erb +1 -1
- data/app/views/spree/checkout/_payment.html.erb +1 -1
- data/app/views/spree/checkout/_summary.html.erb +2 -2
- data/app/views/spree/checkout/payment/_gateway.html.erb +6 -6
- data/app/views/spree/layouts/spree_application.html.erb +0 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
- data/app/views/spree/orders/_adjustments.html.erb +1 -1
- data/app/views/spree/orders/_line_item.html.erb +2 -2
- data/app/views/spree/orders/edit.html.erb +1 -1
- data/app/views/spree/payments/_payment.html.erb +16 -0
- data/app/views/spree/products/_cart_form.html.erb +2 -2
- data/app/views/spree/products/_thumbnails.html.erb +3 -3
- data/app/views/spree/products/index.html.erb +1 -1
- data/app/views/spree/shared/_google_analytics.html.erb +1 -1
- data/app/views/spree/shared/_main_nav_bar.html.erb +1 -1
- data/app/views/spree/shared/_order_details.html.erb +10 -24
- data/app/views/spree/shared/_products.html.erb +1 -1
- data/app/views/spree/shared/_search.html.erb +1 -1
- data/app/views/spree/taxons/show.html.erb +1 -1
- data/config/initializers/check_for_orphaned_preferences.rb +5 -2
- data/config/locales/en.yml +24 -5
- data/config/routes.rb +4 -3
- data/db/default/spree/countries.rb +229 -0
- data/db/default/spree/roles.rb +2 -0
- data/db/default/spree/states.rb +57 -0
- data/db/default/spree/zones.rb +17 -0
- data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +9 -0
- data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +5 -0
- data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +5 -0
- data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +5 -0
- data/db/migrate/20130226054936_add_variant_id_index_to_spree_prices.rb +5 -0
- data/db/migrate/20130319062004_change_orders_total_precision.rb +8 -0
- data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +7 -0
- data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +7 -0
- data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +7 -0
- data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +9 -0
- data/lib/generators/spree/dummy/templates/rails/database.yml +9 -6
- data/lib/spree/core/calculated_adjustments.rb +1 -1
- data/lib/spree/core/controller_helpers/auth.rb +3 -3
- data/lib/spree/core/controller_helpers/common.rb +1 -11
- data/lib/spree/core/controller_helpers/order.rb +15 -12
- data/lib/spree/core/engine.rb +5 -1
- data/lib/spree/core/mail_interceptor.rb +4 -6
- data/lib/spree/core/mail_settings.rb +52 -23
- data/lib/spree/core/permalinks.rb +1 -3
- data/lib/spree/core/testing_support/authorization_helpers.rb +1 -1
- data/lib/spree/core/testing_support/capybara_ext.rb +30 -0
- data/lib/spree/core/testing_support/common_rake.rb +8 -0
- data/lib/spree/core/testing_support/factories/payment_factory.rb +1 -1
- data/lib/spree/core/testing_support/factories/product_factory.rb +7 -2
- data/lib/spree/core/testing_support/factories/variant_factory.rb +4 -2
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/money.rb +14 -3
- data/lib/spree/product_filters.rb +1 -1
- data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +3 -2
- data/vendor/assets/javascripts/jsuri.js +2 -0
- data/vendor/assets/javascripts/modernizr.js +3 -3
- metadata +78 -69
- data/db/default/spree/countries.yml +0 -1589
- data/db/default/spree/roles.yml +0 -5
- data/db/default/spree/states.yml +0 -256
- data/db/default/spree/zone_members.yml +0 -169
- data/db/default/spree/zones.yml +0 -13
data/app/models/spree/price.rb
CHANGED
@@ -8,13 +8,12 @@ module Spree
|
|
8
8
|
attr_accessible :variant_id, :currency, :amount
|
9
9
|
|
10
10
|
def display_amount
|
11
|
-
|
12
|
-
money.to_s
|
11
|
+
money
|
13
12
|
end
|
14
13
|
alias :display_price :display_amount
|
15
14
|
|
16
15
|
def money
|
17
|
-
Spree::Money.new(amount, { :currency => currency })
|
16
|
+
Spree::Money.new(amount || 0, { :currency => currency })
|
18
17
|
end
|
19
18
|
|
20
19
|
def price
|
data/app/models/spree/product.rb
CHANGED
@@ -24,7 +24,8 @@ module Spree
|
|
24
24
|
has_many :product_properties, :dependent => :destroy
|
25
25
|
has_many :properties, :through => :product_properties
|
26
26
|
|
27
|
-
|
27
|
+
has_many :classifications, :dependent => :delete_all
|
28
|
+
has_many :taxons, :through => :classifications
|
28
29
|
|
29
30
|
belongs_to :tax_category
|
30
31
|
belongs_to :shipping_category
|
@@ -130,6 +131,10 @@ module Spree
|
|
130
131
|
self[:on_demand] = new_on_demand
|
131
132
|
end
|
132
133
|
|
134
|
+
def count_on_hand=(value)
|
135
|
+
raise I18n.t('exceptions.count_on_hand_setter')
|
136
|
+
end
|
137
|
+
|
133
138
|
# Returns true if there are inventory units (any variant) with "on_hand" state for this product
|
134
139
|
# Variants take precedence over master
|
135
140
|
def has_stock?
|
@@ -263,9 +268,12 @@ module Spree
|
|
263
268
|
end
|
264
269
|
|
265
270
|
def recalculate_count_on_hand
|
266
|
-
|
267
|
-
variants.sum(:count_on_hand)
|
268
|
-
|
271
|
+
value = if has_variants?
|
272
|
+
variants.sum(:count_on_hand)
|
273
|
+
else
|
274
|
+
(master ? master.count_on_hand : 0)
|
275
|
+
end
|
276
|
+
self[:count_on_hand] = value
|
269
277
|
end
|
270
278
|
|
271
279
|
# the master on_hand is meaningless once a product has variants as the inventory
|
@@ -18,14 +18,18 @@ module Spree
|
|
18
18
|
]
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
def self.add_simple_scopes(scopes)
|
22
|
+
scopes.each do |name|
|
23
|
+
# We should not define price scopes here, as they require something slightly different
|
24
|
+
next if name.to_s.include?("master_price")
|
25
|
+
parts = name.to_s.match(/(.*)_by_(.*)/)
|
26
|
+
order_text = "#{Product.quoted_table_name}.#{parts[2]} #{parts[1] == 'ascend' ? "ASC" : "DESC"}"
|
27
|
+
self.scope(name.to_s, relation.order(order_text))
|
28
|
+
end
|
27
29
|
end
|
28
30
|
|
31
|
+
add_simple_scopes simple_scopes
|
32
|
+
|
29
33
|
add_search_scope :ascend_by_master_price do
|
30
34
|
joins(:master => :default_price).order("#{price_table_name}.amount ASC")
|
31
35
|
end
|
@@ -64,9 +68,14 @@ module Spree
|
|
64
68
|
#
|
65
69
|
# SELECT COUNT(*) ...
|
66
70
|
add_search_scope :in_taxon do |taxon|
|
67
|
-
|
68
|
-
|
69
|
-
|
71
|
+
if ActiveRecord::Base.connection.adapter_name == "PostgreSQL"
|
72
|
+
scope = select("DISTINCT ON (spree_products.id) spree_products.*")
|
73
|
+
else
|
74
|
+
scope = select("DISTINCT(spree_products.id), spree_products.*")
|
75
|
+
end
|
76
|
+
|
77
|
+
scope.joins(:taxons).
|
78
|
+
where(Taxon.table_name => { :id => taxon.self_and_descendants.map(&:id) })
|
70
79
|
end
|
71
80
|
|
72
81
|
# This scope selects products in all taxons AND all its descendants
|
@@ -184,7 +193,7 @@ module Spree
|
|
184
193
|
end
|
185
194
|
|
186
195
|
add_search_scope :not_deleted do
|
187
|
-
where(
|
196
|
+
where("#{Product.quoted_table_name}.deleted_at IS NULL or #{Product.quoted_table_name}.deleted_at >= ?", Time.zone.now)
|
188
197
|
end
|
189
198
|
|
190
199
|
# Can't use add_search_scope for this as it needs a default argument
|
@@ -211,14 +220,18 @@ module Spree
|
|
211
220
|
group("spree_products.id").joins(:taxons).where(Taxon.arel_table[:name].eq(name))
|
212
221
|
end
|
213
222
|
|
214
|
-
|
215
|
-
|
216
|
-
|
223
|
+
# This method needs to be defined *as a method*, otherwise it will cause the
|
224
|
+
# problem shown in #1247.
|
225
|
+
def self.group_by_products_id
|
226
|
+
if (ActiveRecord::Base.connection.adapter_name == 'PostgreSQL')
|
227
|
+
# Need to check, otherwise `column_names` will fail
|
228
|
+
if table_exists?
|
229
|
+
group(column_names.map { |col_name| "#{table_name}.#{col_name}"})
|
230
|
+
end
|
231
|
+
else
|
232
|
+
group("#{self.quoted_table_name}.id")
|
217
233
|
end
|
218
|
-
else
|
219
|
-
scope :group_by_products_id, { :group => "#{self.quoted_table_name}.id" }
|
220
234
|
end
|
221
|
-
search_scopes << :group_by_products_id
|
222
235
|
|
223
236
|
private
|
224
237
|
|
data/app/models/spree/taxon.rb
CHANGED
@@ -3,11 +3,13 @@ module Spree
|
|
3
3
|
acts_as_nested_set :dependent => :destroy
|
4
4
|
|
5
5
|
belongs_to :taxonomy
|
6
|
-
|
6
|
+
has_many :classifications, :dependent => :delete_all
|
7
|
+
has_many :products, :through => :classifications
|
7
8
|
|
8
9
|
before_create :set_permalink
|
9
10
|
|
10
|
-
attr_accessible :name, :parent_id, :position, :icon, :description, :permalink, :taxonomy_id
|
11
|
+
attr_accessible :name, :parent_id, :position, :icon, :description, :permalink, :taxonomy_id,
|
12
|
+
:meta_description, :meta_keywords, :meta_title
|
11
13
|
|
12
14
|
validates :name, :presence => true
|
13
15
|
|
@@ -35,16 +37,29 @@ module Spree
|
|
35
37
|
fs
|
36
38
|
end
|
37
39
|
|
40
|
+
# Return meta_title if set otherwise generates from root name and/or taxon name
|
41
|
+
def seo_title
|
42
|
+
if meta_title
|
43
|
+
meta_title
|
44
|
+
else
|
45
|
+
root? ? name : "#{root.name} - #{name}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
38
49
|
# Creates permalink based on Stringex's .to_url method
|
39
50
|
def set_permalink
|
40
|
-
if
|
41
|
-
self.permalink = name.to_url
|
51
|
+
if parent.present?
|
52
|
+
self.permalink = [parent.permalink, (permalink.blank? ? name.to_url : permalink.split('/').last)].join('/')
|
42
53
|
else
|
43
|
-
|
44
|
-
self.permalink = [parent_taxon.permalink, (permalink.blank? ? name.to_url : permalink.split('/').last)].join('/')
|
54
|
+
self.permalink = name.to_url if permalink.blank?
|
45
55
|
end
|
46
56
|
end
|
47
57
|
|
58
|
+
# For #2759
|
59
|
+
def to_param
|
60
|
+
permalink
|
61
|
+
end
|
62
|
+
|
48
63
|
def active_products
|
49
64
|
scope = products.active
|
50
65
|
scope = scope.on_hand unless Spree::Config[:show_zero_stock_products]
|
data/app/models/spree/variant.rb
CHANGED
@@ -14,7 +14,7 @@ module Spree
|
|
14
14
|
has_many :inventory_units
|
15
15
|
has_many :line_items
|
16
16
|
has_and_belongs_to_many :option_values, :join_table => :spree_option_values_variants
|
17
|
-
has_many :images, :as => :viewable, :order => :position, :dependent => :destroy
|
17
|
+
has_many :images, :as => :viewable, :order => :position, :dependent => :destroy, :class_name => "Spree::Image"
|
18
18
|
|
19
19
|
has_one :default_price,
|
20
20
|
:class_name => 'Spree::Price',
|
@@ -35,7 +35,8 @@ module Spree
|
|
35
35
|
before_validation :set_cost_currency
|
36
36
|
after_save :process_backorders
|
37
37
|
after_save :save_default_price
|
38
|
-
after_save :recalculate_product_on_hand
|
38
|
+
after_save :recalculate_product_on_hand
|
39
|
+
after_create :set_position
|
39
40
|
|
40
41
|
# default variant scope only lists non-deleted variants
|
41
42
|
scope :deleted, lambda { where('deleted_at IS NOT NULL') }
|
@@ -221,6 +222,10 @@ module Spree
|
|
221
222
|
def set_cost_currency
|
222
223
|
self.cost_currency = Spree::Config[:currency] if cost_currency.nil? || cost_currency.empty?
|
223
224
|
end
|
225
|
+
|
226
|
+
def set_position
|
227
|
+
self.update_column(:position, product.variants.maximum(:position).to_i + 1)
|
228
|
+
end
|
224
229
|
end
|
225
230
|
end
|
226
231
|
|
@@ -8,14 +8,14 @@
|
|
8
8
|
</tr>
|
9
9
|
</thead>
|
10
10
|
<tbody>
|
11
|
-
<% @
|
11
|
+
<% @collection.each do |adjustment|
|
12
12
|
@edit_url = edit_admin_order_adjustment_path(@order, adjustment)
|
13
13
|
@delete_url = admin_order_adjustment_path(@order, adjustment)
|
14
14
|
%>
|
15
15
|
<tr id="<%= spree_dom_id(adjustment) %>" data-hook="adjustment_row" class="<%= cycle('odd', 'even')%>">
|
16
16
|
<td class="align-center"><%= pretty_time(adjustment.created_at) %></td>
|
17
17
|
<td class="align-center"><%= adjustment.label %></td>
|
18
|
-
<td class="align-center"><%= adjustment.display_amount %></td>
|
18
|
+
<td class="align-center"><%= adjustment.display_amount.to_html %></td>
|
19
19
|
<td class='actions'>
|
20
20
|
<%= link_to_edit adjustment, :no_text => true %>
|
21
21
|
<%= link_to_delete adjustment, :no_text => true %>
|
@@ -52,16 +52,24 @@
|
|
52
52
|
<div class="choices">
|
53
53
|
<ul>
|
54
54
|
<li>
|
55
|
-
<%= radio_button_tag :currency_symbol_position, "before" %>
|
55
|
+
<%= radio_button_tag :currency_symbol_position, "before", Spree::Config[:currency_symbol_position] == "before" %>
|
56
56
|
<%= label_tag :currency_symbol_position_before, Spree::Money.new(10, :symbol_position => "before") %>
|
57
57
|
</li>
|
58
58
|
<li class="white-space-nowrap">
|
59
|
-
<%= radio_button_tag :currency_symbol_position, "after" %>
|
59
|
+
<%= radio_button_tag :currency_symbol_position, "after", Spree::Config[:currency_symbol_position] == "after" %>
|
60
60
|
<%= label_tag :currency_symbol_position_after, Spree::Money.new(10, :symbol_position => "after") %>
|
61
61
|
</li>
|
62
62
|
</ul>
|
63
63
|
</div>
|
64
64
|
</div>
|
65
|
+
<div class="field">
|
66
|
+
<%= label_tag :currency_decimal_mark, t(:currency_decimal_mark) %><br>
|
67
|
+
<%= text_field_tag :currency_decimal_mark, Spree::Config[:currency_decimal_mark], :size => 3 %>
|
68
|
+
</div>
|
69
|
+
<div class="field">
|
70
|
+
<%= label_tag :currency_thousands_separator, t(:currency_thousands_separator) %><br>
|
71
|
+
<%= text_field_tag :currency_thousands_separator, Spree::Config[:currency_thousands_separator], :size => 3 %>
|
72
|
+
</div>
|
65
73
|
</fieldset>
|
66
74
|
</div>
|
67
75
|
</div>
|
@@ -17,7 +17,9 @@
|
|
17
17
|
<colgroup>
|
18
18
|
<col style="width: 5%">
|
19
19
|
<col style="width: 10%">
|
20
|
-
|
20
|
+
<% if @product.has_variants? %>
|
21
|
+
<col style="width: 25%">
|
22
|
+
<% end %>
|
21
23
|
<col style="width: 45%">
|
22
24
|
<col style="width: 15%">
|
23
25
|
</colgroup>
|
@@ -33,7 +35,7 @@
|
|
33
35
|
</thead>
|
34
36
|
|
35
37
|
<tbody>
|
36
|
-
<% (@product.
|
38
|
+
<% (@product.variant_images).each do |image| %>
|
37
39
|
<tr id="<%= spree_dom_id image %>" data-hook="images_row" class="<%= cycle('odd', 'even')%>">
|
38
40
|
<td class="no-border">
|
39
41
|
<span class="handle"></span>
|
@@ -41,7 +43,9 @@
|
|
41
43
|
<td>
|
42
44
|
<%= link_to image_tag(image.attachment.url(:mini)), image.attachment.url(:product) %>
|
43
45
|
</td>
|
44
|
-
|
46
|
+
<% if @product.has_variants? %>
|
47
|
+
<td><%= options_text_for(image) %></td>
|
48
|
+
<% end %>
|
45
49
|
<td><%= image.alt %></td>
|
46
50
|
<td class="actions">
|
47
51
|
<%= link_to_with_icon 'icon-edit', t(:edit), edit_admin_product_image_url(@product, image), :no_text => true, :data => {:action => 'edit'} %>
|
@@ -28,7 +28,7 @@
|
|
28
28
|
<% @mail_methods.each do |method|%>
|
29
29
|
<tr id="<%= spree_dom_id method %>" data-hook="admin_mail_methods_index_rows" class="<%= cycle('odd', 'even')%>">
|
30
30
|
<td><%= method.environment.to_s.titleize %></td>
|
31
|
-
<td><%= method.active ? t(:
|
31
|
+
<td><%= method.active ? t(:say_yes) : t(:say_no) %></td>
|
32
32
|
<td data-hook="admin_mail_methods_index_row_actions" class="actions">
|
33
33
|
<%= link_to_edit method, :no_text => true%>
|
34
34
|
<%= link_to_delete method, :no_text => true %>
|
@@ -38,4 +38,4 @@
|
|
38
38
|
<% end %>
|
39
39
|
</tbody>
|
40
40
|
</table>
|
41
|
-
<% end%>
|
41
|
+
<% end%>
|
@@ -31,7 +31,7 @@
|
|
31
31
|
<tbody id="subtotal" data-hook="admin_order_form_subtotal" class="no-border-top">
|
32
32
|
<tr id="subtotal-row">
|
33
33
|
<td colspan="3"><b><%= t(:subtotal) %>:</b></td>
|
34
|
-
<td class="total align-center"><span><%= @order.display_item_total %></span></td>
|
34
|
+
<td class="total align-center"><span><%= @order.display_item_total.to_html %></span></td>
|
35
35
|
<td class="actions"></td>
|
36
36
|
</tr>
|
37
37
|
</tbody>
|
@@ -39,7 +39,7 @@
|
|
39
39
|
<% @order.adjustments.eligible.each do |adjustment| %>
|
40
40
|
<tr>
|
41
41
|
<td colspan="3"><strong><%= adjustment.label %>:</strong></td>
|
42
|
-
<td class="total align-center"><span><%= adjustment.display_amount %></span></td>
|
42
|
+
<td class="total align-center"><span><%= adjustment.display_amount.to_html %></span></td>
|
43
43
|
<td class="actions"></td>
|
44
44
|
</tr>
|
45
45
|
<% end %>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
<tbody id="order-total" data-hook="admin_order_form_total" class="grand-total no-border-top">
|
48
48
|
<tr>
|
49
49
|
<td colspan="3"><b><%= t(:order_total) %>:</b></td>
|
50
|
-
<td class="total align-center"><span id="
|
50
|
+
<td class="total align-center"><span id="order_form_total"><%= @order.display_total.to_html %></span></td>
|
51
51
|
<td class="actions"></td>
|
52
52
|
</tr>
|
53
53
|
</tbody>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<tr id="<%= spree_dom_id(f.object) %>" data-hook="admin_order_form_line_item_row" class="<%= cycle('odd', 'even')%>">
|
2
2
|
<td><%=f.object.variant.product.name%> <%= "(#{f.object.variant.options_text})" unless f.object.variant.option_values.empty? %></td>
|
3
|
-
<td class="price align-center"><%= f.object.
|
3
|
+
<td class="price align-center"><%= f.object.single_money %></td>
|
4
4
|
<td class="qty"><%= f.number_field :quantity, :min => 0, :class => "qty" %></td>
|
5
5
|
<td class="total align-center"><%= f.object.display_amount %></td>
|
6
6
|
<td data-hook="admin_order_form_line_item_actions" class="actions">
|
@@ -16,17 +16,17 @@
|
|
16
16
|
<ul>
|
17
17
|
<% if @order.completed? %>
|
18
18
|
<li>
|
19
|
-
<%= @order.user.nil? ? t(:
|
19
|
+
<%= @order.user.nil? ? t(:say_yes) : t(:say_no) %>
|
20
20
|
</li>
|
21
21
|
<% else %>
|
22
22
|
<% guest = @order.user.nil? || @order.user.anonymous? %>
|
23
23
|
<li>
|
24
24
|
<%= radio_button_tag :guest_checkout, true, guest %>
|
25
|
-
<%= t(:
|
25
|
+
<%= t(:say_yes) %>
|
26
26
|
</li>
|
27
27
|
<li>
|
28
28
|
<%= radio_button_tag :guest_checkout, false, !guest, :disabled => @order.cart? %>
|
29
|
-
<%= t(:
|
29
|
+
<%= t(:say_no) %>
|
30
30
|
</li>
|
31
31
|
<%= hidden_field_tag :user_id, @order.user_id %>
|
32
32
|
<% end %>
|
@@ -63,4 +63,4 @@
|
|
63
63
|
<% content_for :head do %>
|
64
64
|
<%= javascript_include_tag states_path, 'admin/address_states.js' %>
|
65
65
|
<% end %>
|
66
|
-
</fieldset>
|
66
|
+
</fieldset>
|
@@ -15,26 +15,26 @@
|
|
15
15
|
<% content_for :table_filter do %>
|
16
16
|
<div data-hook="admin_orders_index_search">
|
17
17
|
<%= search_form_for [:admin, @search] do |f| %>
|
18
|
-
<div class="field-block alpha four columns">
|
18
|
+
<div class="field-block alpha four columns">
|
19
19
|
<div class="date-range-filter field">
|
20
20
|
<%= label_tag nil, t(:date_range) %>
|
21
21
|
<div class="date-range-fields">
|
22
22
|
<%= f.text_field :created_at_gt, :class => 'datepicker datepicker-from', :value => params[:q][:created_at_gt], :placeholder => t(:start) %>
|
23
|
-
|
23
|
+
|
24
24
|
<span class="range-divider">
|
25
25
|
<i class="icon-arrow-right"></i>
|
26
26
|
</span>
|
27
|
-
|
27
|
+
|
28
28
|
<%= f.text_field :created_at_lt, :class => 'datepicker datepicker-to', :value => params[:q][:created_at_lt], :placeholder => t(:stop) %>
|
29
29
|
</div>
|
30
30
|
</div>
|
31
31
|
|
32
32
|
<div class="field">
|
33
33
|
<%= label_tag nil, t(:status) %>
|
34
|
-
<%= f.select :state_eq, Spree::Order.state_machines[:state].states.collect {|s| [t("order_state.#{s.name}"), s.value]}, {:include_blank => true}, :class => 'select2' %>
|
34
|
+
<%= f.select :state_eq, Spree::Order.state_machines[:state].states.collect {|s| [t("order_state.#{s.name}"), s.value]}, {:include_blank => true}, :class => 'select2' %>
|
35
35
|
</div>
|
36
36
|
</div>
|
37
|
-
|
37
|
+
|
38
38
|
<div class="four columns">
|
39
39
|
<div class="field">
|
40
40
|
<%= label_tag nil, t(:order_number) %>
|
@@ -45,7 +45,7 @@
|
|
45
45
|
<%= f.email_field :email_cont %>
|
46
46
|
</div>
|
47
47
|
</div>
|
48
|
-
|
48
|
+
|
49
49
|
<div class="four columns">
|
50
50
|
<div class="field">
|
51
51
|
<%= label_tag nil, t(:first_name_begins_with) %>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
<%= f.text_field :bill_address_lastname_start, :size => 25%>
|
57
57
|
</div>
|
58
58
|
</div>
|
59
|
-
|
59
|
+
|
60
60
|
<div class="omega four columns">
|
61
61
|
<div class="field checkbox">
|
62
62
|
<label>
|
@@ -80,53 +80,61 @@
|
|
80
80
|
<%= button t(:filter_results), 'icon-search' %>
|
81
81
|
</div>
|
82
82
|
</div>
|
83
|
-
<% end %>
|
83
|
+
<% end %>
|
84
84
|
</div>
|
85
85
|
<% end %>
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
<
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
</
|
87
|
+
<%= paginate @orders %>
|
88
|
+
|
89
|
+
<% unless @orders.empty? %>
|
90
|
+
<table class="index responsive" id="listing_orders" data-hook width="100%">
|
91
|
+
<colgroup>
|
92
|
+
<col style="width: 16%;">
|
93
|
+
<col style="width: 10%;">
|
94
|
+
<col style="width: 13%;">
|
95
|
+
<col style="width: 13%;">
|
96
|
+
<col style="width: 13%;">
|
97
|
+
<col style="width: 17%;">
|
98
|
+
<col style="width: 10%;">
|
99
|
+
<col style="width: 8%;">
|
100
|
+
</colgroup>
|
101
|
+
<thead>
|
102
|
+
<tr data-hook="admin_orders_index_headers">
|
103
|
+
<% if @show_only_completed %>
|
104
|
+
<th><%= sort_link @search, :completed_at, t(:completed_at, :scope => 'activerecord.attributes.spree/order') %></th>
|
105
|
+
<% else %>
|
106
|
+
<th><%= sort_link @search, :created_at, t(:created_at, :scope => 'activerecord.attributes.spree/order') %></th>
|
107
|
+
<% end %>
|
108
|
+
<th><%= sort_link @search, :number, t(:number, :scope => 'activerecord.attributes.spree/order') %></th>
|
109
|
+
<th><%= sort_link @search, :state, t(:state, :scope => 'activerecord.attributes.spree/order') %></th>
|
110
|
+
<th><%= sort_link @search, :payment_state, t(:payment_state, :scope => 'activerecord.attributes.spree/order') %></th>
|
111
|
+
<th><%= sort_link @search, :shipment_state, t(:shipment_state, :scope => 'activerecord.attributes.spree/order') %></th>
|
112
|
+
<th><%= sort_link @search, :email, t(:email, :scope => 'activerecord.attributes.spree/order') %></th>
|
113
|
+
<th><%= sort_link @search, :total, t(:total, :scope => 'activerecord.attributes.spree/order') %></th>
|
114
|
+
<th data-hook="admin_orders_index_header_actions" class="actions"></th>
|
115
|
+
</tr>
|
116
|
+
</thead>
|
117
|
+
<tbody>
|
118
|
+
<% @orders.each do |order| %>
|
119
|
+
<tr data-hook="admin_orders_index_rows" class="state-<%= order.state.downcase %> <%= cycle('odd', 'even') %>">
|
120
|
+
<td class="align-center"><%= l (@show_only_completed ? order.completed_at : order.created_at).to_date %></td>
|
121
|
+
<td><%= link_to order.number, admin_order_path(order) %></td>
|
122
|
+
<td class="align-center"><span class="state <%= order.state.downcase %>"><%= t("order_state.#{order.state.downcase}") %></span></td>
|
123
|
+
<td class="align-center"><span class="state <%= order.payment_state %>"><%= link_to t("payment_states.#{order.payment_state}"), admin_order_payments_path(order) if order.payment_state %></span></td>
|
124
|
+
<td class="align-center"><span class="state <%= order.shipment_state %>"><%= link_to t("shipment_states.#{order.shipment_state}"), admin_order_shipments_path(order) if order.shipment_state %></span></td>
|
125
|
+
<td><%= mail_to order.email %></td>
|
126
|
+
<td class="align-center"><%= order.display_total.to_html %></td>
|
127
|
+
<td class='actions align-center' data-hook="admin_orders_index_row_actions">
|
128
|
+
<%= link_to_edit_url edit_admin_order_path(order), :title => "admin_edit_#{dom_id(order)}", :no_text => true %>
|
129
|
+
</td>
|
130
|
+
</tr>
|
131
|
+
<% end %>
|
132
|
+
</tbody>
|
133
|
+
</table>
|
134
|
+
<% else %>
|
135
|
+
<div class="no-objects-found">
|
136
|
+
<%= t(:no_orders_found)%>
|
137
|
+
</div>
|
138
|
+
<% end %>
|
131
139
|
|
132
140
|
<%= paginate @orders %>
|