spree_frontend 4.2.0.rc5 → 4.2.0
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 +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
|