spree_frontend 4.2.0.rc5 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/frontend.js +10 -0
- data/app/assets/javascripts/spree/frontend/account.js +1 -1
- data/app/assets/javascripts/spree/frontend/cart.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/address.js +1 -1
- data/app/assets/javascripts/spree/frontend/coupon_manager.js +2 -2
- data/app/assets/javascripts/spree/frontend/currency.js +11 -0
- data/app/assets/javascripts/spree/frontend/locale.js +11 -0
- data/app/assets/stylesheets/spree/frontend/application.scss +0 -3
- data/app/assets/stylesheets/spree/frontend/variables/bootstrap-overrides.scss +1 -0
- data/app/assets/stylesheets/spree/frontend/variables/helper-variables.scss +1 -0
- data/app/assets/stylesheets/spree/frontend/variables/variables.scss +54 -0
- data/app/controllers/concerns/spree/locale_urls.rb +23 -0
- data/app/controllers/spree/checkout_controller.rb +8 -8
- data/app/controllers/spree/currency_controller.rb +6 -10
- data/app/controllers/spree/locale_controller.rb +23 -6
- data/app/controllers/spree/orders_controller.rb +2 -2
- data/app/controllers/spree/store_controller.rb +8 -2
- data/app/helpers/spree/addresses_helper.rb +9 -2
- data/app/helpers/spree/frontend_helper.rb +6 -20
- data/app/helpers/spree/navigation_helper.rb +6 -1
- data/app/helpers/spree/store_helper.rb +39 -0
- data/app/helpers/spree/taxons_helper.rb +1 -1
- data/app/views/spree/checkout/_address.html.erb +2 -4
- data/app/views/spree/locale/index.html.erb +1 -0
- data/app/views/spree/orders/_line_item.html.erb +1 -1
- data/app/views/spree/products/_color_option_type.html.erb +1 -1
- data/app/views/spree/shared/_currency_dropdown.html.erb +13 -0
- data/app/views/spree/shared/_footer.html.erb +1 -1
- data/app/views/spree/shared/_head.html.erb +4 -0
- data/app/views/spree/shared/_internationalization_options.html.erb +31 -0
- data/app/views/spree/shared/_line_item.html.erb +2 -2
- data/app/views/spree/shared/_link_to_account.html.erb +5 -5
- data/app/views/spree/shared/_locale_dropdown.html.erb +13 -0
- data/app/views/spree/shared/_login.html.erb +1 -1
- data/app/views/spree/shared/_mobile_internationalization_options.html.erb +37 -0
- data/app/views/spree/shared/_mobile_navigation.html.erb +2 -5
- data/app/views/spree/shared/_nav_bar.html.erb +1 -1
- data/app/views/spree/shared/_order_details.html.erb +2 -2
- data/app/views/spree/users/show.html.erb +1 -1
- data/config/routes.rb +26 -29
- data/lib/generators/spree/frontend/copy_storefront/copy_storefront_generator.rb +1 -7
- data/lib/generators/spree/frontend/install/install_generator.rb +34 -0
- data/lib/generators/spree/frontend/install/templates/config/initializers/spree_storefront.rb +1 -0
- data/lib/generators/spree/frontend/install/templates/config/spree_storefront.yml +99 -0
- metadata +22 -12
- data/app/views/spree/shared/_change_store.html.erb +0 -25
- data/app/views/spree/shared/_mobile_change_store.html.erb +0 -30
@@ -3,7 +3,7 @@ require 'digest'
|
|
3
3
|
module Spree
|
4
4
|
module NavigationHelper
|
5
5
|
def spree_navigation_data
|
6
|
-
@spree_navigation_data ||= SpreeStorefrontConfig.dig(current_store.code, :navigation) || SpreeStorefrontConfig.dig(:default, :navigation) || []
|
6
|
+
@spree_navigation_data ||= SpreeStorefrontConfig.dig(I18n.locale, :navigation) || SpreeStorefrontConfig.dig(current_store.code, :navigation) || SpreeStorefrontConfig.dig(:default, :navigation) || []
|
7
7
|
# safeguard for older Spree installs that don't have spree_navigation initializer
|
8
8
|
# or spree.yml file present
|
9
9
|
rescue
|
@@ -28,6 +28,11 @@ module Spree
|
|
28
28
|
)
|
29
29
|
end
|
30
30
|
|
31
|
+
def should_render_internationalization_dropdown?
|
32
|
+
(defined?(should_render_locale_dropdown?) && should_render_locale_dropdown?) ||
|
33
|
+
(defined?(should_render_currency_dropdown?) && should_render_currency_dropdown?)
|
34
|
+
end
|
35
|
+
|
31
36
|
private
|
32
37
|
|
33
38
|
def spree_navigation_data_cache_key
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Spree
|
2
|
+
module StoreHelper
|
3
|
+
def store_country_iso(store = nil)
|
4
|
+
store ||= current_store if defined?(current_store)
|
5
|
+
|
6
|
+
store&.default_country&.iso&.downcase
|
7
|
+
end
|
8
|
+
|
9
|
+
def stores
|
10
|
+
@stores ||= Spree::Store.includes(:default_country).order(:id)
|
11
|
+
end
|
12
|
+
|
13
|
+
def store_currency_symbol(store = nil)
|
14
|
+
store ||= current_store if defined?(current_store)
|
15
|
+
return unless store&.default_currency
|
16
|
+
|
17
|
+
::Money::Currency.find(store.default_currency).symbol
|
18
|
+
end
|
19
|
+
|
20
|
+
def store_locale_name(store = nil)
|
21
|
+
store ||= current_store if defined?(current_store)
|
22
|
+
return unless store
|
23
|
+
return store.name if store.default_locale.blank?
|
24
|
+
|
25
|
+
Spree.t('i18n.this_file_language', locale: store.default_locale)
|
26
|
+
end
|
27
|
+
|
28
|
+
def should_render_store_chooser?
|
29
|
+
Spree::Config.show_store_selector && stores.size > 1
|
30
|
+
end
|
31
|
+
|
32
|
+
def store_link(store = nil, html_opts = {})
|
33
|
+
store ||= current_store if defined?(current_store)
|
34
|
+
return unless store
|
35
|
+
|
36
|
+
link_to "#{store_locale_name(store)} (#{store_currency_symbol(store)})", store.formatted_url, **html_opts
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -5,7 +5,7 @@ module Spree
|
|
5
5
|
# to show the most popular products for a particular taxon (that is an exercise left to the developer.)
|
6
6
|
def taxon_preview(taxon, max = 4)
|
7
7
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
8
|
-
TaxonsHelper is deprecated and will be removed in Spree
|
8
|
+
TaxonsHelper is deprecated and will be removed in Spree 5.0.
|
9
9
|
Please remove any `helper 'spree/taxons'` from your controllers.
|
10
10
|
DEPRECATION
|
11
11
|
products = taxon.active_products.distinct.select('spree_products.*, spree_products_taxons.position').limit(max)
|
@@ -1,5 +1,3 @@
|
|
1
|
-
<% @addresses = try_spree_current_user ? user_available_addresses : [] %>
|
2
|
-
|
3
1
|
<% if !try_spree_current_user || try_spree_current_user.email.blank? %>
|
4
2
|
<div class="row">
|
5
3
|
<div class="col-12 mb-4">
|
@@ -28,10 +26,10 @@
|
|
28
26
|
<%= label_tag :order_use_billing, Spree.t(:use_billing_address), class: 'spree-checkbox-label' %>
|
29
27
|
</div>
|
30
28
|
<% end %>
|
31
|
-
<% if
|
29
|
+
<% if user_available_addresses.present? %>
|
32
30
|
<div class="select_address mb-5">
|
33
31
|
<div class="form-group col">
|
34
|
-
<%
|
32
|
+
<% user_available_addresses.each_with_index do |address, idx| %>
|
35
33
|
<div class="row mb-3" id="<%= [address_type, dom_id(address)].join('_') %>">
|
36
34
|
<label class="form-check-label spree-radio-label col-8">
|
37
35
|
<%= form.radio_button "#{address_name}_id", address.id, checked: (address.id == try_spree_current_user["#{address_name}_id"] || idx == 0) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'spree/shared/locale_dropdown' %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= order_form.fields_for :line_items, line_item do |item_form| %>
|
4
4
|
<div class="d-table-row shopping-cart-item">
|
5
5
|
<div class="d-table-cell shopping-cart-item-image" data-hook="cart_item_image">
|
6
|
-
<%= link_to product_image(variant), variant.product %>
|
6
|
+
<%= link_to product_image(variant), spree.product_path(variant.product) %>
|
7
7
|
</div>
|
8
8
|
<div class="d-table-cell shopping-cart-item-description" data-hook="cart_item_description">
|
9
9
|
<h2 class="item-title"><%= link_to line_item.name, spree.product_path(variant.product) %></h2>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<li>
|
10
10
|
<%= label_tag "variant_option_value_id_#{option_type[:id]}_#{option_value[:id]}",
|
11
11
|
class: "m-1 m-sm-2 m-md-1 color-select-label",
|
12
|
-
title: option_value[:name],
|
12
|
+
title: option_value[:name]&.humanize,
|
13
13
|
data: { toggle: "tooltip", placement: "bottom" } do %>
|
14
14
|
|
15
15
|
<%= radio_button_tag "variant_option_value_id_#{option_type[:id]}",
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if defined?(should_render_currency_dropdown?) && should_render_currency_dropdown? %>
|
2
|
+
<%= form_tag spree.set_currency_path, method: :get, class: 'px-4 py-3 w-100', id: 'currency-select' do %>
|
3
|
+
<div class="form-group">
|
4
|
+
<label for="switch_to_currency" class="dropdown-header text-center">
|
5
|
+
<%= Spree.t(:choose_currency) %>
|
6
|
+
</label>
|
7
|
+
<%= select_tag(:switch_to_currency,
|
8
|
+
options_for_select(supported_currency_options, current_currency),
|
9
|
+
class: 'custom-select w-100') %>
|
10
|
+
<noscript><%= submit_tag %></noscript>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
@@ -68,7 +68,7 @@
|
|
68
68
|
<%= Spree.t('nav_bar.my_account') %>
|
69
69
|
</div>
|
70
70
|
<div class="pt-2">
|
71
|
-
<%= link_to Spree.t(
|
71
|
+
<%= link_to Spree.t(:my_orders).upcase, spree.account_path(anchor: "account-my-orders") %>
|
72
72
|
</div>
|
73
73
|
</div>
|
74
74
|
<% end %>
|
@@ -8,5 +8,9 @@
|
|
8
8
|
<%= stylesheet_link_tag 'spree/frontend/all', media: 'screen', 'data-turbolinks-track': 'reload' %>
|
9
9
|
<%= csrf_meta_tags %>
|
10
10
|
<%= render 'spree/shared/paths' %>
|
11
|
+
<script>
|
12
|
+
var SPREE_LOCALE = '<%= I18n.locale %>'
|
13
|
+
var SPREE_CURRENCY = '<%= current_currency %>'
|
14
|
+
</script>
|
11
15
|
<%= javascript_include_tag 'spree/frontend/all', defer: true, 'data-turbolinks-track': 'reload' %>
|
12
16
|
<%= yield :head %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<% if (defined?(should_render_store_chooser?) && should_render_store_chooser?) || (defined?(should_render_internationalization_dropdown?) && should_render_internationalization_dropdown?) %>
|
2
|
+
<li class="d-none d-xl-block internationalization-options">
|
3
|
+
<div class="dropdown navbar-right-dropdown">
|
4
|
+
<button id="internationalization-button-desktop" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t(:internationalization) %>">
|
5
|
+
<%= icon(name: 'global',
|
6
|
+
classes: 'd-none d-xl-inline-block',
|
7
|
+
width: 41,
|
8
|
+
height: 36) %>
|
9
|
+
<%= icon(name: 'arrow-down',
|
10
|
+
classes: 'd-inline-block d-xl-none',
|
11
|
+
width: 15,
|
12
|
+
height: 15) %>
|
13
|
+
</button>
|
14
|
+
|
15
|
+
<div id="internationalization-options-desktop" class="dropdown-menu dropdown-menu-right text-left">
|
16
|
+
<% if (defined?(should_render_store_chooser?) && should_render_store_chooser?) %>
|
17
|
+
<% stores.each do |store| %>
|
18
|
+
<div class="pl-3 d-flex justify-content-between align-items-center stores-list">
|
19
|
+
<%= country_flag_icon(store_country_iso(store)) %>
|
20
|
+
<%= store_link(store, class: "dropdown-item text-uppercase #{'font-weight-bold' if current_store == store}") %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
<% else %>
|
24
|
+
<%= render 'spree/shared/locale_dropdown' %>
|
25
|
+
<div class="dropdown-divider"></div>
|
26
|
+
<%= render 'spree/shared/currency_dropdown' %>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</li>
|
31
|
+
<% end %>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<div class="checkout-confirm-order-details-line-items-line-item w-100 d-table-row">
|
2
2
|
<div class="checkout-confirm-order-details-line-items-line-item-name d-table-cell align-middle py-3 py-sm-4">
|
3
3
|
<div class="d-flex align-items-lg-center">
|
4
|
-
<%= link_to product_image(line_item.variant), line_item.product %>
|
4
|
+
<%= link_to product_image(line_item.variant), spree.product_path(line_item.product) %>
|
5
5
|
<div class="d-flex flex-column mt-2 mt-lg-0">
|
6
|
-
<div><%= link_to line_item.name, line_item.product %></div>
|
6
|
+
<div><%= link_to line_item.name, spree.product_path(line_item.product) %></div>
|
7
7
|
<ul class="checkout-confirm-order-details-line-items-line-item-name-options text-uppercase list-unstyled mb-0">
|
8
8
|
<% line_item.variant.option_values.sort { |ov| ov.option_type.position }.each do |ov| %>
|
9
9
|
<li>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% if try_spree_current_user %>
|
2
|
-
<%= link_to Spree.t(
|
3
|
-
<%= link_to Spree.t('nav_bar.admin_panel'), spree.admin_orders_path, class: 'dropdown-item text-uppercase' if try_spree_current_user.has_spree_role?(:admin) %>
|
4
|
-
<%= link_to Spree.t(
|
2
|
+
<%= link_to Spree.t(:my_account).upcase, spree.account_path, class: 'dropdown-item' if spree.respond_to?(:account_path) %>
|
3
|
+
<%= link_to Spree.t('nav_bar.admin_panel'), spree.admin_orders_path(locale: nil), class: 'dropdown-item text-uppercase' if try_spree_current_user.has_spree_role?(:admin) %>
|
4
|
+
<%= link_to Spree.t(:logout).upcase, spree_logout_path, class: 'dropdown-item', method: :get if defined?(spree_logout_path) %>
|
5
5
|
<% else %>
|
6
|
-
<%= link_to Spree.t(
|
7
|
-
<%= link_to Spree.t(
|
6
|
+
<%= link_to Spree.t(:login).upcase, spree_login_path, class: 'dropdown-item' if defined?(spree_login_path) %>
|
7
|
+
<%= link_to Spree.t(:sign_up).upcase, spree_signup_path, class: 'dropdown-item' if defined?(spree_signup_path) %>
|
8
8
|
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if should_render_locale_dropdown? %>
|
2
|
+
<%= form_tag spree.set_locale_path, method: :get, class: 'px-4 py-3 w-100', id: 'locale-select' do %>
|
3
|
+
<div class="form-group">
|
4
|
+
<label for="switch_to_locale" class="dropdown-header text-center">
|
5
|
+
<%= Spree.t('i18n.language') %>
|
6
|
+
</label>
|
7
|
+
<%= select_tag(:switch_to_locale,
|
8
|
+
options_for_select(supported_locales_options, I18n.locale),
|
9
|
+
class: 'custom-select w-100') %>
|
10
|
+
<noscript><%= submit_tag %></noscript>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
@@ -25,7 +25,7 @@
|
|
25
25
|
</div>
|
26
26
|
<% end %>
|
27
27
|
|
28
|
-
<%= f.submit Spree.t(:
|
28
|
+
<%= f.submit Spree.t(:login), class: 'btn btn-primary btn-block spree-btn mt-2' %>
|
29
29
|
<% end %>
|
30
30
|
|
31
31
|
<% if spree.respond_to?(:recover_password_path) %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<% if (defined?(should_render_store_chooser?) && should_render_store_chooser?) || (defined?(should_render_internationalization_dropdown?) && should_render_internationalization_dropdown?) %>
|
2
|
+
<% link_title = "#{Spree.t(:choose_currency)} / #{Spree.t('i18n.language')}" %>
|
3
|
+
|
4
|
+
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
5
|
+
<span class="w-75"><%= link_title %></span>
|
6
|
+
<a class="w-25 text-right mobile-navigation-category-link" data-category="internationalization" href="#" aria-label="<%= link_title %>">
|
7
|
+
<%= icon(name: 'arrow-right',
|
8
|
+
classes: 'd-sm-none spree-icon-arrow spree-icon-arrow-right',
|
9
|
+
width: 16,
|
10
|
+
height: 16) %>
|
11
|
+
<%= icon(name: 'arrow-right',
|
12
|
+
classes: 'd-none d-sm-inline spree-icon-arrow spree-icon-arrow-right',
|
13
|
+
width: 14,
|
14
|
+
height: 27) %>
|
15
|
+
</a>
|
16
|
+
|
17
|
+
<ul class="list-unstyled position-absolute mobile-navigation-sublist" data-category="internationalization">
|
18
|
+
<li class="text-center font-weight-bold mobile-navigation-sublist-header">
|
19
|
+
<%= Spree.t(:internationalization) %>
|
20
|
+
</li>
|
21
|
+
<% if (defined?(should_render_store_chooser?) && should_render_store_chooser?) %>
|
22
|
+
<% stores.each do |store| %>
|
23
|
+
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
24
|
+
<%= country_flag_icon(store_country_iso(store)) %>
|
25
|
+
<%= store_link(store, class: "dropdown-item text-uppercase d-flex #{'font-weight-bold' if current_store == store}") %>
|
26
|
+
</li>
|
27
|
+
<% end %>
|
28
|
+
<% else %>
|
29
|
+
<div class="mt-4 pt-4">
|
30
|
+
<%= render 'spree/shared/locale_dropdown' %>
|
31
|
+
<div class="dropdown-divider mt-4 pb-4"></div>
|
32
|
+
<%= render 'spree/shared/currency_dropdown' %>
|
33
|
+
</div>
|
34
|
+
<% end %>
|
35
|
+
</ul>
|
36
|
+
</li>
|
37
|
+
<% end %>
|
@@ -7,11 +7,8 @@
|
|
7
7
|
width: 26,
|
8
8
|
height: 26) %>
|
9
9
|
</button>
|
10
|
-
<figure class="logo header-spree-fluid-logo" data-hook>
|
11
|
-
<%= logo %>
|
12
|
-
</figure>
|
13
10
|
<div id="top-nav-bar-mobile" class="m-0 p-0 header-spree-fluid-secondary-navigation" data-hook>
|
14
|
-
<button id="mobile-navigation-close-button" aria-label="<%= Spree.t(
|
11
|
+
<button id="mobile-navigation-close-button" aria-label="<%= Spree.t(:close) %>">
|
15
12
|
<%= icon(name: 'close',
|
16
13
|
classes: 'd-inline',
|
17
14
|
width: 26,
|
@@ -44,7 +41,7 @@
|
|
44
41
|
<% end %>
|
45
42
|
</li>
|
46
43
|
<% end %>
|
47
|
-
<%= render partial: 'spree/shared/
|
44
|
+
<%= render partial: 'spree/shared/mobile_internationalization_options' %>
|
48
45
|
</ul>
|
49
46
|
</div>
|
50
47
|
<% end %>
|
@@ -75,11 +75,11 @@
|
|
75
75
|
<div class="checkout-confirm-order-details-line-items-line-item-name d-table-cell align-middle py-3 py-sm-4">
|
76
76
|
<div class="d-flex align-items-lg-center">
|
77
77
|
<div class="checkout-confirm-order-details-line-items-line-item-name-image" data-hook="order_item_image">
|
78
|
-
<%= link_to product_image(item.variant), item.product %>
|
78
|
+
<%= link_to product_image(item.variant), spree.product_path(item.product) %>
|
79
79
|
</div>
|
80
80
|
<div class="d-flex flex-column mt-2 mt-lg-0" data-hook="order_item_description">
|
81
81
|
<div data-hook="order_item_name">
|
82
|
-
<%= link_to item.name, item.product, class: 'checkout-confirm-order-details-line-items-line-item-name-link' %>
|
82
|
+
<%= link_to item.name, spree.product_path(item.product), class: 'checkout-confirm-order-details-line-items-line-item-name-link' %>
|
83
83
|
</div>
|
84
84
|
<% unless item.variant.is_master? %>
|
85
85
|
<ul class="checkout-confirm-order-details-line-items-line-item-name-options text-uppercase list-unstyled mb-0">
|
@@ -57,7 +57,7 @@
|
|
57
57
|
<tbody>
|
58
58
|
<% @orders.each do |order| %>
|
59
59
|
<tr>
|
60
|
-
<td class="account-page-order-number"><%= link_to order.number,
|
60
|
+
<td class="account-page-order-number"><%= link_to order.number, spree.order_path(order), class: "text-primary" %></td>
|
61
61
|
<td class="account-page-order-date"><%= l order.completed_at.to_date %></td>
|
62
62
|
<td class="account-page-order-status"><%= Spree.t("order_state.#{order.state}").titleize %></td>
|
63
63
|
<td class="account-page-order-payment-state"><%= Spree.t("payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
|
data/config/routes.rb
CHANGED
@@ -1,39 +1,36 @@
|
|
1
1
|
Spree::Core::Engine.add_routes do
|
2
|
-
|
2
|
+
scope '(:locale)', locale: /#{Spree.available_locales.join('|')}/, defaults: { locale: nil } do
|
3
|
+
root to: 'home#index'
|
3
4
|
|
4
|
-
|
5
|
+
resources :products, only: [:index, :show]
|
6
|
+
get '/products/:id/related', to: 'products#related'
|
7
|
+
# route globbing for pretty nested taxon and product paths
|
8
|
+
get '/t/*id', to: 'taxons#show', as: :nested_taxons
|
9
|
+
get '/product_carousel/:id', to: 'taxons#product_carousel'
|
5
10
|
|
6
|
-
|
11
|
+
# non-restful checkout stuff
|
12
|
+
patch '/checkout/update/:state', to: 'checkout#update', as: :update_checkout
|
13
|
+
get '/checkout/:state', to: 'checkout#edit', as: :checkout_state
|
14
|
+
get '/checkout', to: 'checkout#edit', as: :checkout
|
7
15
|
|
8
|
-
|
9
|
-
patch '/checkout/update/:state', to: 'checkout#update', as: :update_checkout
|
10
|
-
get '/checkout/:state', to: 'checkout#edit', as: :checkout_state
|
11
|
-
get '/checkout', to: 'checkout#edit', as: :checkout
|
16
|
+
resources :orders, except: [:index, :new, :create, :destroy]
|
12
17
|
|
13
|
-
|
18
|
+
resources :addresses, except: [:show]
|
14
19
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
resources :addresses, except: [:show]
|
20
|
-
|
21
|
-
get '/cart', to: 'orders#edit', as: :cart
|
22
|
-
patch '/cart', to: 'orders#update', as: :update_cart
|
23
|
-
put '/cart/empty', to: 'orders#empty', as: :empty_cart
|
20
|
+
get '/cart', to: 'orders#edit', as: :cart
|
21
|
+
patch '/cart', to: 'orders#update', as: :update_cart
|
22
|
+
put '/cart/empty', to: 'orders#empty', as: :empty_cart
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
get '/content/cvv', to: 'content#cvv', as: :cvv
|
25
|
+
get '/content/test', to: 'content#test'
|
26
|
+
get '/cart_link', to: 'store#cart_link', as: :cart_link
|
27
|
+
get '/account_link', to: 'store#account_link', as: :account_link
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
get '/account_link', to: 'store#account_link', as: :account_link
|
29
|
+
get '/locales', to: 'locale#index', as: :locales
|
30
|
+
get '/locale/set', to: 'locale#set', as: :set_locale
|
31
|
+
get '/currency/set', to: 'currency#set', as: :set_currency
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
get '/currency/set', to: 'currency#set', defaults: { format: :json }, as: :set_currency
|
33
|
+
get '/api_tokens', to: 'store#api_tokens'
|
34
|
+
post '/ensure_cart', to: 'store#ensure_cart'
|
35
|
+
end
|
39
36
|
end
|
@@ -1,24 +1,18 @@
|
|
1
1
|
module Spree
|
2
2
|
module Frontend
|
3
3
|
class CopyStorefrontGenerator < Rails::Generators::Base
|
4
|
-
desc 'Copies storefront from spree frontend to your application'
|
4
|
+
desc 'Copies all storefront views and stylesheets from spree frontend to your application'
|
5
5
|
|
6
6
|
def self.source_paths
|
7
7
|
[
|
8
8
|
File.expand_path('../../../../../app', __dir__),
|
9
|
-
File.expand_path('../../../../../app/assets/images', __dir__),
|
10
9
|
File.expand_path('../../../../../app/assets/stylesheets/spree/frontend', __dir__),
|
11
|
-
File.expand_path('../../../../../app/assets/stylesheets/spree/frontend/variables', __dir__)
|
12
10
|
]
|
13
11
|
end
|
14
12
|
|
15
13
|
def copy_storefront
|
16
14
|
directory 'views', './app/views'
|
17
|
-
directory 'noimage', './app/assets/images/noimage'
|
18
|
-
directory 'homepage', './app/assets/images/homepage'
|
19
|
-
directory 'meganav', './app/assets/images/meganav'
|
20
15
|
template 'application.scss', './app/assets/stylesheets/spree/frontend/application.scss'
|
21
|
-
template 'variables.scss', './app/assets/stylesheets/spree/frontend/variables/variables.scss'
|
22
16
|
end
|
23
17
|
end
|
24
18
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Spree
|
2
|
+
module Frontend
|
3
|
+
module Generators
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
desc 'Copies storefront configuration files for easy customization'
|
6
|
+
|
7
|
+
def self.source_paths
|
8
|
+
[
|
9
|
+
File.expand_path('templates', __dir__),
|
10
|
+
File.expand_path('../templates', "../#{__FILE__}"),
|
11
|
+
File.expand_path('../templates', "../../#{__FILE__}"),
|
12
|
+
File.expand_path('../../../../../app/views/spree', __dir__),
|
13
|
+
File.expand_path('../../../../../app/assets/images', __dir__),
|
14
|
+
File.expand_path('../../../../../app/assets/stylesheets/spree/frontend/variables', __dir__)
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
def install
|
19
|
+
# main navigation configuration
|
20
|
+
template 'config/initializers/spree_storefront.rb', 'config/initializers/spree_storefront.rb'
|
21
|
+
template 'config/spree_storefront.yml', 'config/spree_storefront.yml'
|
22
|
+
# static images
|
23
|
+
directory 'noimage', './app/assets/images/noimage'
|
24
|
+
directory 'homepage', './app/assets/images/homepage'
|
25
|
+
directory 'meganav', './app/assets/images/meganav'
|
26
|
+
# SCSS theming
|
27
|
+
template 'variables.scss', './app/assets/stylesheets/spree/frontend/variables/variables.scss'
|
28
|
+
# home page template
|
29
|
+
directory 'home', './app/views/spree/home'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|