spree_frontend 3.4.6 → 3.5.0.rc1
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 +5 -5
- data/app/assets/images/credit_cards/icons/jcb.png +0 -0
- data/app/assets/javascripts/spree/frontend/cart.js.coffee +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +1 -1
- data/app/assets/javascripts/spree/frontend/product.js +75 -0
- data/app/assets/stylesheets/spree/frontend/frontend_bootstrap.css.scss +8 -1
- data/app/controllers/spree/checkout_controller.rb +0 -1
- data/app/controllers/spree/content_controller.rb +3 -28
- data/app/controllers/spree/orders_controller.rb +0 -1
- data/app/controllers/spree/products_controller.rb +0 -1
- data/app/controllers/spree/taxons_controller.rb +0 -1
- data/app/helpers/spree/frontend_helper.rb +9 -1
- data/app/views/spree/checkout/_payment.html.erb +1 -1
- data/app/views/spree/checkout/edit.html.erb +0 -7
- data/app/views/spree/layouts/spree_application.html.erb +1 -3
- data/app/views/spree/orders/edit.html.erb +0 -8
- data/app/views/spree/orders/show.html.erb +0 -9
- data/app/views/spree/products/_product.html.erb +1 -1
- data/app/views/spree/products/show.html.erb +0 -4
- data/app/views/spree/shared/_products.html.erb +0 -6
- data/app/views/spree/taxons/show.html.erb +0 -5
- data/config/routes.rb +1 -1
- metadata +12 -24
- data/app/assets/javascripts/spree/frontend/product.js.coffee +0 -54
- data/app/helpers/spree/trackers_helper.rb +0 -18
- data/app/views/spree/shared/_google_add_items.js.erb +0 -11
- data/app/views/spree/shared/_google_analytics.js.erb +0 -18
- data/app/views/spree/shared/_google_checkout.js.erb +0 -10
- data/app/views/spree/shared/_google_purchase.js.erb +0 -13
- data/app/views/spree/shared/trackers/segment/_cart_viewed.js.erb +0 -12
- data/app/views/spree/shared/trackers/segment/_checkout_step_viewed.js.erb +0 -8
- data/app/views/spree/shared/trackers/segment/_initializer.js.erb +0 -8
- data/app/views/spree/shared/trackers/segment/_order_complete.js.erb +0 -24
- data/app/views/spree/shared/trackers/segment/_product_added.js.erb +0 -5
- data/app/views/spree/shared/trackers/segment/_product_list_filtered.js.erb +0 -16
- data/app/views/spree/shared/trackers/segment/_product_list_viewed.js.erb +0 -12
- data/app/views/spree/shared/trackers/segment/_product_viewed.js.erb +0 -5
- data/app/views/spree/shared/trackers/segment/_products_searched.js.erb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d69f005170eed1f41fcf00bb878c4320cf3a2be0
|
4
|
+
data.tar.gz: 911ea2fe68f6c24efa01664f722b0ac178835edc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bac9eb68fa0a1e5eb3d518658fc250d2d76af3450893ff7ecc096eca0696c28dfa7e8329c9fbdf6e0cdb1644c82cca89447fd4a64c0a00a7b30bd2910eb0f06
|
7
|
+
data.tar.gz: b0af5d6e4e9462bf811b07f9358e2d4b87cce827ee8c3b6ae9db5aa564fec9ad3c4bfa83860f9918d8e1484947099022bef4064a0d7dc6de9fdfd8fdf9d82d61
|
Binary file
|
@@ -12,7 +12,7 @@ Spree.ready ($) ->
|
|
12
12
|
input =
|
13
13
|
couponCodeField: $('#order_coupon_code')
|
14
14
|
couponStatus: $('#coupon_status')
|
15
|
-
if input.couponCodeField.val()
|
15
|
+
if $.trim(input.couponCodeField.val()).length > 0
|
16
16
|
if new CouponManager(input).applyCoupon()
|
17
17
|
@submit()
|
18
18
|
return true
|
@@ -45,7 +45,7 @@ Spree.ready ($) ->
|
|
45
45
|
input =
|
46
46
|
couponCodeField: $('#order_coupon_code')
|
47
47
|
couponStatus: $('#coupon_status')
|
48
|
-
if input.couponCodeField.val()
|
48
|
+
if $.trim(input.couponCodeField.val()).length > 0
|
49
49
|
if new CouponManager(input).applyCoupon()
|
50
50
|
@submit()
|
51
51
|
return true
|
@@ -0,0 +1,75 @@
|
|
1
|
+
Spree.ready(function ($) {
|
2
|
+
|
3
|
+
Spree.addImageHandlers = function () {
|
4
|
+
var thumbnails = $("#product-images ul.thumbnails");
|
5
|
+
($("#main-image")).data("selectedThumb", ($("#main-image img")).attr("src"));
|
6
|
+
thumbnails.find("li").eq(0).addClass("selected");
|
7
|
+
|
8
|
+
thumbnails.find("a").on("click", function (event) {
|
9
|
+
($("#main-image")).data("selectedThumb", ($(event.currentTarget)).attr("href"));
|
10
|
+
($("#main-image")).data("selectedThumbId", ($(event.currentTarget)).parent().attr("id"));
|
11
|
+
thumbnails.find("li").removeClass("selected");
|
12
|
+
($(event.currentTarget)).parent("li").addClass("selected");
|
13
|
+
return false;
|
14
|
+
});
|
15
|
+
|
16
|
+
thumbnails.find("li").on("mouseenter", function (event) {
|
17
|
+
return ($("#main-image img")).attr("src", ($(event.currentTarget)).find("a").attr("href"));
|
18
|
+
});
|
19
|
+
|
20
|
+
return thumbnails.find("li").on("mouseleave", function (event) {
|
21
|
+
return ($("#main-image img")).attr("src", ($("#main-image")).data("selectedThumb"));
|
22
|
+
});
|
23
|
+
};
|
24
|
+
|
25
|
+
Spree.showVariantImages = function (variantId) {
|
26
|
+
($("li.vtmb")).hide();
|
27
|
+
($("li.tmb-" + variantId)).show();
|
28
|
+
var currentThumb = $("#" + ($("#main-image")).data("selectedThumbId"));
|
29
|
+
|
30
|
+
if (!currentThumb.hasClass("vtmb + variantId")) {
|
31
|
+
var thumb = $(($("#product-images ul.thumbnails li:visible.vtmb")).eq(0));
|
32
|
+
|
33
|
+
if (!(thumb.length > 0)) {
|
34
|
+
thumb = $(($("#product-images ul.thumbnails li:visible")).eq(0));
|
35
|
+
}
|
36
|
+
|
37
|
+
var newImg = thumb.find("a").attr("href");
|
38
|
+
($("#product-images ul.thumbnails li")).removeClass("selected");
|
39
|
+
thumb.addClass("selected");
|
40
|
+
($("#main-image img")).attr("src", newImg);
|
41
|
+
($("#main-image")).data("selectedThumb", newImg);
|
42
|
+
return ($("#main-image")).data("selectedThumbId", thumb.attr("id"));
|
43
|
+
}
|
44
|
+
};
|
45
|
+
|
46
|
+
Spree.updateVariantPrice = function (variant) {
|
47
|
+
var variantPrice = variant.data("price");
|
48
|
+
|
49
|
+
if (variantPrice) {
|
50
|
+
return ($(".price.selling")).text(variantPrice);
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
54
|
+
Spree.disableCartForm = function (variant) {
|
55
|
+
var inStock = variant.data("in-stock");
|
56
|
+
return $("#add-to-cart-button").attr("disabled", !inStock);
|
57
|
+
};
|
58
|
+
|
59
|
+
var radios = $("#product-variants input[type='radio']");
|
60
|
+
|
61
|
+
if (radios.length > 0) {
|
62
|
+
var selectedRadio = $("#product-variants input[type='radio'][checked='checked']");
|
63
|
+
Spree.showVariantImages(selectedRadio.attr("value"));
|
64
|
+
Spree.updateVariantPrice(selectedRadio);
|
65
|
+
Spree.disableCartForm(selectedRadio);
|
66
|
+
|
67
|
+
radios.click(function (event) {
|
68
|
+
Spree.showVariantImages(this.value);
|
69
|
+
Spree.updateVariantPrice($(this));
|
70
|
+
return Spree.disableCartForm($(this));
|
71
|
+
});
|
72
|
+
}
|
73
|
+
|
74
|
+
return Spree.addImageHandlers();
|
75
|
+
});
|
@@ -8,6 +8,7 @@
|
|
8
8
|
#spree-header {
|
9
9
|
background-color: $brand-primary;
|
10
10
|
margin-bottom: $line-height-computed;
|
11
|
+
padding-top: 0.25em;
|
11
12
|
|
12
13
|
#header {
|
13
14
|
background: rgba($gray-darker, 0.4);
|
@@ -19,10 +20,16 @@
|
|
19
20
|
|
20
21
|
img {
|
21
22
|
max-width: 100%;
|
22
|
-
max-height:
|
23
|
+
max-height: 5.5vmax;
|
23
24
|
}
|
24
25
|
}
|
25
26
|
|
27
|
+
.navbar-nav > li > a {
|
28
|
+
padding-top: 0;
|
29
|
+
padding-bottom: 10px;
|
30
|
+
line-height: $line-height-computed;
|
31
|
+
}
|
32
|
+
|
26
33
|
.nav a {
|
27
34
|
color: white;
|
28
35
|
|
@@ -4,7 +4,6 @@ module Spree
|
|
4
4
|
# checkout which has nothing to do with updating an order that this approach
|
5
5
|
# is waranted.
|
6
6
|
class CheckoutController < Spree::StoreController
|
7
|
-
before_action :expires_now, only: [:edit]
|
8
7
|
before_action :load_order_with_lock
|
9
8
|
before_action :ensure_valid_state_lock_version, only: [:update]
|
10
9
|
before_action :set_state_if_present
|
@@ -1,43 +1,18 @@
|
|
1
1
|
module Spree
|
2
2
|
class ContentController < Spree::StoreController
|
3
3
|
# Don't serve local files or static assets
|
4
|
-
|
5
|
-
after_action :fire_visited_path, only: :show
|
6
|
-
|
7
|
-
rescue_from ActionView::MissingTemplate, with: :render_404
|
4
|
+
after_action :fire_visited_path, except: :cvv
|
8
5
|
|
9
6
|
respond_to :html
|
10
7
|
|
11
|
-
def
|
12
|
-
ActiveSupport::Deprecation.warn(<<-EOS, caller)
|
13
|
-
ContentController#show is deprecated and will be removed in Spree 3.5
|
14
|
-
Please don't use dynamic render paths and just declare your actions in
|
15
|
-
ContentController decorator, eg.
|
16
|
-
|
17
|
-
routes.rb:
|
18
|
-
get '/content/custom_page', to: 'content#custom_page', as: :custom_page
|
19
|
-
|
20
|
-
controllers/spree/content_controller_decorator.rb:
|
21
|
-
Spree::ContentController.class_eval do
|
22
|
-
def custom_page
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
change links from:
|
27
|
-
spree.content_path('custom_page')
|
28
|
-
|
29
|
-
to:
|
30
|
-
spree.custom_page
|
31
|
-
EOS
|
32
|
-
render action: params[:path]
|
33
|
-
end
|
8
|
+
def test; end
|
34
9
|
|
35
10
|
def cvv
|
36
11
|
render layout: false
|
37
12
|
end
|
38
13
|
|
39
14
|
def fire_visited_path
|
40
|
-
Spree::PromotionHandler::Page.new(current_order, params[:
|
15
|
+
Spree::PromotionHandler::Page.new(current_order, params[:action]).activate
|
41
16
|
end
|
42
17
|
end
|
43
18
|
end
|
@@ -5,7 +5,7 @@ module Spree
|
|
5
5
|
@body_class
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
8
|
+
def spree_breadcrumbs(taxon, separator = ' ')
|
9
9
|
return '' if current_page?('/') || taxon.nil?
|
10
10
|
separator = raw(separator)
|
11
11
|
crumbs = [content_tag(:li, content_tag(:span, link_to(content_tag(:span, Spree.t(:home), itemprop: 'name'), spree.root_path, itemprop: 'url') + separator, itemprop: 'item'), itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement')]
|
@@ -20,6 +20,14 @@ module Spree
|
|
20
20
|
content_tag(:nav, crumb_list, id: 'breadcrumbs', class: 'col-md-12')
|
21
21
|
end
|
22
22
|
|
23
|
+
def breadcrumbs(taxon, separator = ' ')
|
24
|
+
ActiveSupport::Deprecation.warn(<<-EOS, caller)
|
25
|
+
Spree::FrontendHelper#breadcrumbs was renamed to Spree::FrontendHelper#spree_breadcrumbs
|
26
|
+
and will be removed in Spree 3.6. Please update your code to avoid problems after update
|
27
|
+
EOS
|
28
|
+
spree_breadcrumbs(taxon, separator)
|
29
|
+
end
|
30
|
+
|
23
31
|
def checkout_progress(numbers: false)
|
24
32
|
states = @order.checkout_steps
|
25
33
|
items = states.each_with_index.map do |state, i|
|
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
<ul class="list-group" id="payment-method-fields" data-hook>
|
41
41
|
<% @order.available_payment_methods.each do |method| %>
|
42
|
-
<li class="list-group-item">
|
42
|
+
<li class="list-group-item radio">
|
43
43
|
<label>
|
44
44
|
<%= radio_button_tag "order[payments_attributes][][payment_method_id]", method.id, method == @order.available_payment_methods.first %>
|
45
45
|
<%= Spree.t(method.name, scope: :payment_methods, default: method.name) %>
|
@@ -1,11 +1,4 @@
|
|
1
1
|
<% @body_id = 'checkout-page' %>
|
2
|
-
<% content_for :google_analytics do %>
|
3
|
-
<%= render partial: 'spree/shared/google_checkout.js', locals: { order: @order, step_number: (@order.checkout_steps.index(@order.state) + 1) } %>
|
4
|
-
<% end %>
|
5
|
-
|
6
|
-
<%= render partial: 'spree/shared/trackers/segment/checkout_step_viewed.js',
|
7
|
-
formats: :js,
|
8
|
-
locals: { order: @order } %>
|
9
2
|
|
10
3
|
<div id="checkout" data-hook>
|
11
4
|
<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %>
|
@@ -8,13 +8,11 @@
|
|
8
8
|
<%= render partial: 'spree/shared/head' %>
|
9
9
|
</head>
|
10
10
|
<body class="<%= body_class %>" id="<%= @body_id || 'default' %>" data-hook="body">
|
11
|
-
<%= render partial: 'spree/shared/google_analytics.js' %>
|
12
|
-
<%= render partial: 'spree/shared/trackers/segment/initializer.js' %>
|
13
11
|
<%= render partial: 'spree/shared/header' %>
|
14
12
|
|
15
13
|
<div class="container">
|
16
14
|
<div class="row" data-hook>
|
17
|
-
<%=
|
15
|
+
<%= spree_breadcrumbs(@taxon) %>
|
18
16
|
|
19
17
|
<%= render partial: 'spree/shared/sidebar' if content_for? :sidebar %>
|
20
18
|
|
@@ -1,13 +1,5 @@
|
|
1
1
|
<% @body_id = 'cart' %>
|
2
2
|
|
3
|
-
<% if @variant %>
|
4
|
-
<%= render partial: 'spree/shared/trackers/segment/product_added.js',
|
5
|
-
formats: :js,
|
6
|
-
locals: { product: @variant.product, order: @order } %>
|
7
|
-
<% end %>
|
8
|
-
<%= render partial: 'spree/shared/trackers/segment/cart_viewed.js',
|
9
|
-
formats: :js,
|
10
|
-
locals: { order: @order } %>
|
11
3
|
<div data-hook="cart_container">
|
12
4
|
<h1><%= Spree.t(:shopping_cart) %></h1>
|
13
5
|
|
@@ -1,12 +1,3 @@
|
|
1
|
-
<% if order_just_completed?(@order) %>
|
2
|
-
<%= render partial: 'spree/shared/trackers/segment/order_complete.js',
|
3
|
-
formats: :js,
|
4
|
-
locals: { order: @order } %>
|
5
|
-
<% content_for :google_analytics do %>
|
6
|
-
<%= render partial: 'spree/shared/google_purchase.js', locals: { order: @order } %>
|
7
|
-
<% end %>
|
8
|
-
<% end %>
|
9
|
-
|
10
1
|
<fieldset id="order_summary" data-hook>
|
11
2
|
<h1><%= accurate_title %></h1>
|
12
3
|
<% if order_just_completed?(@order) %>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
</div>
|
12
12
|
<div class="panel-footer text-center">
|
13
13
|
<span itemprop="offers" itemscope itemtype="https://schema.org/Offer">
|
14
|
-
<span class="price selling lead" itemprop="price" content="<%= product.price_in(current_currency).amount.to_d %>">
|
14
|
+
<span class="price selling lead" itemprop="price" content="<%= (product.price_in(current_currency).amount.nil?)? 0 : product.price_in(current_currency).amount.to_d %>">
|
15
15
|
<%= display_price(product) %>
|
16
16
|
</span>
|
17
17
|
<span itemprop="priceCurrency" content="<%= current_currency %>"></span>
|
@@ -1,9 +1,5 @@
|
|
1
1
|
<% @body_id = 'product-details' %>
|
2
2
|
|
3
|
-
<%= render partial: 'spree/shared/trackers/segment/product_viewed.js',
|
4
|
-
formats: :js,
|
5
|
-
locals: { product: @product } %>
|
6
|
-
|
7
3
|
<% cache cache_key_for_product do %>
|
8
4
|
<div data-hook="product_show" class="row" itemscope itemtype="https://schema.org/Product">
|
9
5
|
<div class="col-md-4 col-sm-5" data-hook="product_left_part">
|
@@ -10,18 +10,12 @@
|
|
10
10
|
<%= Spree.t(:no_products_found) %>
|
11
11
|
</div>
|
12
12
|
<% elsif params.key?(:keywords) %>
|
13
|
-
<%= render partial: 'spree/shared/trackers/segment/products_searched.js',
|
14
|
-
formats: :js,
|
15
|
-
locals: { query: params[:keywords] } %>
|
16
13
|
<div data-hook="products_search_results_heading_results_found">
|
17
14
|
<h6 class="search-results-title"><%= Spree.t(:search_results, keywords: h(params[:keywords])) %></h6>
|
18
15
|
</div>
|
19
16
|
<% end %>
|
20
17
|
</div>
|
21
18
|
|
22
|
-
<%= render partial: 'spree/shared/trackers/segment/product_list_viewed.js',
|
23
|
-
formats: :js,
|
24
|
-
locals: { taxon: @taxon, products: products } %>
|
25
19
|
<% if products.any? %>
|
26
20
|
<div id="products" class="row" data-hook>
|
27
21
|
<%= render partial: 'spree/products/product', collection: products, locals: { taxon: @taxon } %>
|
@@ -1,10 +1,5 @@
|
|
1
1
|
<h1 class="taxon-title"><%= @taxon.name %></h1>
|
2
2
|
|
3
|
-
<% if params[:search].present? %>
|
4
|
-
<%= render partial: 'spree/shared/trackers/segment/product_list_filtered.js',
|
5
|
-
formats: :js,
|
6
|
-
locals: { search: params[:search], products: @products } %>
|
7
|
-
<% end %>
|
8
3
|
<% content_for :sidebar do %>
|
9
4
|
<div data-hook="taxon_sidebar_navigation">
|
10
5
|
<%= render partial: 'spree/shared/taxonomies' %>
|
data/config/routes.rb
CHANGED
@@ -25,6 +25,6 @@ Spree::Core::Engine.add_routes do
|
|
25
25
|
|
26
26
|
get '/unauthorized', to: 'home#unauthorized', as: :unauthorized
|
27
27
|
get '/content/cvv', to: 'content#cvv', as: :cvv
|
28
|
-
get '/content
|
28
|
+
get '/content/test', to: 'content#test'
|
29
29
|
get '/cart_link', to: 'store#cart_link', as: :cart_link
|
30
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_api
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: 3.5.0.rc1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.
|
26
|
+
version: 3.5.0.rc1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.5.0.rc1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
40
|
+
version: 3.5.0.rc1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bootstrap-sass
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- app/assets/images/credit_cards/icons/directdebit.png
|
121
121
|
- app/assets/images/credit_cards/icons/discover.png
|
122
122
|
- app/assets/images/credit_cards/icons/egold.png
|
123
|
+
- app/assets/images/credit_cards/icons/jcb.png
|
123
124
|
- app/assets/images/credit_cards/icons/maestro.png
|
124
125
|
- app/assets/images/credit_cards/icons/master.png
|
125
126
|
- app/assets/images/credit_cards/icons/paypal.png
|
@@ -141,7 +142,7 @@ files:
|
|
141
142
|
- app/assets/javascripts/spree/frontend/checkout/payment.js.coffee
|
142
143
|
- app/assets/javascripts/spree/frontend/checkout/shipment.js.coffee
|
143
144
|
- app/assets/javascripts/spree/frontend/coupon_manager.js.coffee
|
144
|
-
- app/assets/javascripts/spree/frontend/product.js
|
145
|
+
- app/assets/javascripts/spree/frontend/product.js
|
145
146
|
- app/assets/stylesheets/spree/frontend.css
|
146
147
|
- app/assets/stylesheets/spree/frontend/_variables.scss
|
147
148
|
- app/assets/stylesheets/spree/frontend/frontend_bootstrap.css.scss
|
@@ -156,7 +157,6 @@ files:
|
|
156
157
|
- app/helpers/spree/frontend_helper.rb
|
157
158
|
- app/helpers/spree/orders_helper.rb
|
158
159
|
- app/helpers/spree/taxons_helper.rb
|
159
|
-
- app/helpers/spree/trackers_helper.rb
|
160
160
|
- app/models/spree/frontend_configuration.rb
|
161
161
|
- app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb
|
162
162
|
- app/views/kaminari/twitter-bootstrap-3/_gap.html.erb
|
@@ -196,10 +196,6 @@ files:
|
|
196
196
|
- app/views/spree/shared/_address.html.erb
|
197
197
|
- app/views/spree/shared/_error_messages.html.erb
|
198
198
|
- app/views/spree/shared/_filters.html.erb
|
199
|
-
- app/views/spree/shared/_google_add_items.js.erb
|
200
|
-
- app/views/spree/shared/_google_analytics.js.erb
|
201
|
-
- app/views/spree/shared/_google_checkout.js.erb
|
202
|
-
- app/views/spree/shared/_google_purchase.js.erb
|
203
199
|
- app/views/spree/shared/_head.html.erb
|
204
200
|
- app/views/spree/shared/_header.html.erb
|
205
201
|
- app/views/spree/shared/_link_to_cart.html.erb
|
@@ -216,15 +212,6 @@ files:
|
|
216
212
|
- app/views/spree/shared/_taxonomies.html.erb
|
217
213
|
- app/views/spree/shared/_translations.html.erb
|
218
214
|
- app/views/spree/shared/forbidden.html.erb
|
219
|
-
- app/views/spree/shared/trackers/segment/_cart_viewed.js.erb
|
220
|
-
- app/views/spree/shared/trackers/segment/_checkout_step_viewed.js.erb
|
221
|
-
- app/views/spree/shared/trackers/segment/_initializer.js.erb
|
222
|
-
- app/views/spree/shared/trackers/segment/_order_complete.js.erb
|
223
|
-
- app/views/spree/shared/trackers/segment/_product_added.js.erb
|
224
|
-
- app/views/spree/shared/trackers/segment/_product_list_filtered.js.erb
|
225
|
-
- app/views/spree/shared/trackers/segment/_product_list_viewed.js.erb
|
226
|
-
- app/views/spree/shared/trackers/segment/_product_viewed.js.erb
|
227
|
-
- app/views/spree/shared/trackers/segment/_products_searched.js.erb
|
228
215
|
- app/views/spree/shared/unauthorized.html.erb
|
229
216
|
- app/views/spree/taxons/_taxon.html.erb
|
230
217
|
- app/views/spree/taxons/show.html.erb
|
@@ -255,12 +242,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
255
242
|
version: 2.2.7
|
256
243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
244
|
requirements:
|
258
|
-
- - "
|
245
|
+
- - ">"
|
259
246
|
- !ruby/object:Gem::Version
|
260
|
-
version:
|
247
|
+
version: 1.3.1
|
261
248
|
requirements:
|
262
249
|
- none
|
263
|
-
|
250
|
+
rubyforge_project:
|
251
|
+
rubygems_version: 2.6.14
|
264
252
|
signing_key:
|
265
253
|
specification_version: 4
|
266
254
|
summary: Frontend e-commerce functionality for the Spree project.
|
@@ -1,54 +0,0 @@
|
|
1
|
-
Spree.ready ($) ->
|
2
|
-
Spree.addImageHandlers = ->
|
3
|
-
thumbnails = ($ '#product-images ul.thumbnails')
|
4
|
-
($ '#main-image').data 'selectedThumb', ($ '#main-image img').attr('src')
|
5
|
-
thumbnails.find('li').eq(0).addClass 'selected'
|
6
|
-
thumbnails.find('a').on 'click', (event) ->
|
7
|
-
($ '#main-image').data 'selectedThumb', ($ event.currentTarget).attr('href')
|
8
|
-
($ '#main-image').data 'selectedThumbId', ($ event.currentTarget).parent().attr('id')
|
9
|
-
thumbnails.find('li').removeClass 'selected'
|
10
|
-
($ event.currentTarget).parent('li').addClass 'selected'
|
11
|
-
false
|
12
|
-
|
13
|
-
thumbnails.find('li').on 'mouseenter', (event) ->
|
14
|
-
($ '#main-image img').attr 'src', ($ event.currentTarget).find('a').attr('href')
|
15
|
-
|
16
|
-
thumbnails.find('li').on 'mouseleave', (event) ->
|
17
|
-
($ '#main-image img').attr 'src', ($ '#main-image').data('selectedThumb')
|
18
|
-
|
19
|
-
Spree.showVariantImages = (variantId) ->
|
20
|
-
($ 'li.vtmb').hide()
|
21
|
-
($ 'li.tmb-' + variantId).show()
|
22
|
-
currentThumb = ($ '#' + ($ '#main-image').data('selectedThumbId'))
|
23
|
-
if not currentThumb.hasClass('vtmb-' + variantId)
|
24
|
-
thumb = ($ ($ '#product-images ul.thumbnails li:visible.vtmb').eq(0))
|
25
|
-
thumb = ($ ($ '#product-images ul.thumbnails li:visible').eq(0)) unless thumb.length > 0
|
26
|
-
newImg = thumb.find('a').attr('href')
|
27
|
-
($ '#product-images ul.thumbnails li').removeClass 'selected'
|
28
|
-
thumb.addClass 'selected'
|
29
|
-
($ '#main-image img').attr 'src', newImg
|
30
|
-
($ '#main-image').data 'selectedThumb', newImg
|
31
|
-
($ '#main-image').data 'selectedThumbId', thumb.attr('id')
|
32
|
-
|
33
|
-
Spree.updateVariantPrice = (variant) ->
|
34
|
-
variantPrice = variant.data('price')
|
35
|
-
($ '.price.selling').text(variantPrice) if variantPrice
|
36
|
-
|
37
|
-
Spree.disableCartForm = (variant) ->
|
38
|
-
inStock = variant.data('in-stock')
|
39
|
-
$('#add-to-cart-button').attr('disabled', !inStock)
|
40
|
-
|
41
|
-
radios = ($ '#product-variants input[type="radio"]')
|
42
|
-
|
43
|
-
if radios.length > 0
|
44
|
-
selectedRadio = ($ '#product-variants input[type="radio"][checked="checked"]')
|
45
|
-
Spree.showVariantImages selectedRadio.attr('value')
|
46
|
-
Spree.updateVariantPrice selectedRadio
|
47
|
-
Spree.disableCartForm selectedRadio
|
48
|
-
|
49
|
-
radios.click (event) ->
|
50
|
-
Spree.showVariantImages @value
|
51
|
-
Spree.updateVariantPrice ($ this)
|
52
|
-
Spree.disableCartForm ($ this)
|
53
|
-
|
54
|
-
Spree.addImageHandlers()
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module TrackersHelper
|
3
|
-
def product_for_segment(product, optional = {})
|
4
|
-
{
|
5
|
-
product_id: product.id,
|
6
|
-
sku: product.sku,
|
7
|
-
category: product.category.try(:name),
|
8
|
-
name: product.name,
|
9
|
-
brand: product.brand.try(:name),
|
10
|
-
price: product.price,
|
11
|
-
currency: product.currency,
|
12
|
-
url: product_url(product),
|
13
|
-
}.tap do |hash|
|
14
|
-
hash[:image_url] = asset_url(optional.delete(:image).attachment) if optional[:image]
|
15
|
-
end.merge(optional).to_json.html_safe
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<% order.line_items.each do |line_item| %>
|
2
|
-
ga('ec:addProduct', { // Provide product details in a productFieldObject.
|
3
|
-
'id': '<%= j (line_item.sku.present? ? line_item.sku : line_item.variant_id.to_s) %>', // Product ID (string).
|
4
|
-
'name': '<%= j line_item.name %>', // Product name (string).
|
5
|
-
'category': '<%= j line_item.category.try(:name) %>', // Product category (string).
|
6
|
-
'brand': '<%= j line_item.brand.try(:name) %>', // Product brand (string).
|
7
|
-
'variant': '<%= j line_item.options_text %>', // Product variant (string).
|
8
|
-
'price': '<%= line_item.price %>',
|
9
|
-
'quantity': <%= line_item.quantity %>
|
10
|
-
});
|
11
|
-
<% end %>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<% if tracker = Spree::Tracker.current(:google_analytics) %>
|
2
|
-
<script>
|
3
|
-
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
4
|
-
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
5
|
-
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
6
|
-
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
7
|
-
|
8
|
-
<% if user_analytics_id = try_spree_current_user.try(:analytics_id) %>
|
9
|
-
ga('create', { 'trackingId': '<%= tracker.analytics_id %>', 'cookieDomain': 'auto', 'userId': '<%= user_analytics_id %>' });
|
10
|
-
<% else %>
|
11
|
-
ga('create', '<%= tracker.analytics_id %>', 'auto');
|
12
|
-
<% end %>
|
13
|
-
|
14
|
-
ga('require', 'displayfeatures');
|
15
|
-
<%= yield :google_analytics %>
|
16
|
-
ga('send', 'pageview');
|
17
|
-
</script>
|
18
|
-
<% end %>
|
@@ -1,10 +0,0 @@
|
|
1
|
-
<%# more info: https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce %>
|
2
|
-
ga('require', 'ec');
|
3
|
-
ga('set', '&cu', '<%= current_currency %>');
|
4
|
-
|
5
|
-
<%= render partial: 'spree/shared/google_add_items.js', locals: { order: order } %>
|
6
|
-
|
7
|
-
// Add the step number and additional info about the checkout to the action.
|
8
|
-
ga('ec:setAction','checkout', {
|
9
|
-
'step': <%= step_number %>
|
10
|
-
});
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<%# more info: https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce %>
|
2
|
-
ga('require', 'ec');
|
3
|
-
ga('set', '&cu', '<%= current_currency %>');
|
4
|
-
|
5
|
-
<%= render partial: 'spree/shared/google_add_items.js', locals: { order: order } %>
|
6
|
-
|
7
|
-
ga('ec:setAction', 'purchase', { // Transaction details are provided in an actionFieldObject.
|
8
|
-
'id': '<%= j order.number %>', // Transaction ID. Required.
|
9
|
-
'affiliation': '<%= current_store.name %>', // Affiliation (string).
|
10
|
-
'revenue': '<%= order.total %>', // Revenue (currency).
|
11
|
-
'tax': '<%= @order.tax_total %>', // Tax.
|
12
|
-
'shipping': '<%= @order.ship_total %>' // Shipping.
|
13
|
-
});
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
if (typeof analytics !== 'undefined') {
|
3
|
-
analytics.track('Cart Viewed', {
|
4
|
-
cart_id: '<%= order.number %>',
|
5
|
-
products: [
|
6
|
-
<% order.line_items.each_with_index do |line_item, index| %>
|
7
|
-
<%= product_for_segment(line_item, position: index+1, quantity: line_item.quantity) %>,
|
8
|
-
<% end %>
|
9
|
-
]
|
10
|
-
});
|
11
|
-
}
|
12
|
-
</script>
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<% if tracker = Spree::Tracker.current(:segment) %>
|
2
|
-
<script>
|
3
|
-
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.1.0";
|
4
|
-
analytics.load('<%= tracker.analytics_id %>');
|
5
|
-
analytics.page()
|
6
|
-
}}();
|
7
|
-
</script>
|
8
|
-
<% end %>
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
if (typeof analytics !== 'undefined') {
|
3
|
-
analytics.track('Order Completed', {
|
4
|
-
order_id: '<%= order.number %>',
|
5
|
-
total: '<%= order.total %>',
|
6
|
-
shipping: '<%= order.shipment_total %>',
|
7
|
-
tax: '<%= order.additional_tax_total %>',
|
8
|
-
discount: '<%= order.promo_total %>',
|
9
|
-
coupon: '<%= order.promo_code %>',
|
10
|
-
currency: '<%= order.currency %>',
|
11
|
-
products: [
|
12
|
-
<% order.line_items.each do |line_item| %>
|
13
|
-
{
|
14
|
-
product_id: '<%= line_item.product.id %>',
|
15
|
-
sku: '<%= line_item.variant.sku %>',
|
16
|
-
name: '<%= line_item.product.name %>',
|
17
|
-
price: '<%= line_item.price %>',
|
18
|
-
quantity: '<%= line_item.quantity %>'
|
19
|
-
},
|
20
|
-
<% end %>
|
21
|
-
]
|
22
|
-
});
|
23
|
-
}
|
24
|
-
</script>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
if (typeof analytics !== 'undefined') {
|
3
|
-
analytics.track('Product List Filtered', {
|
4
|
-
filters: [
|
5
|
-
<% search.to_unsafe_h.each do |type, value| %>
|
6
|
-
<%= { type: type, value: value } .to_json.html_safe %>,
|
7
|
-
<% end %>
|
8
|
-
],
|
9
|
-
products: [
|
10
|
-
<% products.each_with_index do |product, index| %>
|
11
|
-
<%= product_for_segment(product, position: index+1, image: product.images.first) %>,
|
12
|
-
<% end %>
|
13
|
-
]
|
14
|
-
});
|
15
|
-
}
|
16
|
-
</script>
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
if (typeof analytics !== 'undefined') {
|
3
|
-
analytics.track('Product List Viewed', {
|
4
|
-
category: '<%= taxon.try(:name) %>',
|
5
|
-
products: [
|
6
|
-
<% products.each_with_index do |product, index| %>
|
7
|
-
<%= product_for_segment(product, position: index+1, image: product.images.first) %>,
|
8
|
-
<% end %>
|
9
|
-
]
|
10
|
-
});
|
11
|
-
}
|
12
|
-
</script>
|