workarea-storefront 3.4.45 → 3.5.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +52 -0
  3. data/app/assets/javascripts/workarea/storefront/application.js.erb +2 -12
  4. data/app/assets/javascripts/workarea/storefront/config.js.erb +0 -5
  5. data/app/assets/javascripts/workarea/storefront/modules/{analytics.js → analytics.js.erb} +17 -0
  6. data/app/assets/javascripts/workarea/storefront/modules/dialog_buttons.js +1 -1
  7. data/app/assets/javascripts/workarea/storefront/modules/workarea_analytics.js +4 -0
  8. data/app/assets/stylesheets/workarea/storefront/application.scss.erb +0 -2
  9. data/app/assets/stylesheets/workarea/storefront/email/_base.scss +9 -1
  10. data/app/assets/stylesheets/workarea/storefront/email/_components.scss +1 -1
  11. data/app/assets/stylesheets/workarea/storefront/email/_helpers.scss +16 -0
  12. data/app/assets/stylesheets/workarea/storefront/email/{_settings.scss → _settings.scss.erb} +1 -1
  13. data/app/controllers/workarea/storefront/analytics_controller.rb +36 -21
  14. data/app/controllers/workarea/storefront/application_controller.rb +2 -4
  15. data/app/controllers/workarea/storefront/cart_items_controller.rb +1 -2
  16. data/app/controllers/workarea/storefront/checkout/addresses_controller.rb +0 -2
  17. data/app/controllers/workarea/storefront/checkouts_controller.rb +6 -4
  18. data/app/controllers/workarea/storefront/content_areas_controller.rb +1 -0
  19. data/app/controllers/workarea/storefront/content_blocks_controller.rb +1 -0
  20. data/app/controllers/workarea/storefront/current_checkout.rb +20 -14
  21. data/app/controllers/workarea/storefront/downloads_controller.rb +18 -0
  22. data/app/controllers/workarea/storefront/email_signups_controller.rb +1 -0
  23. data/app/controllers/workarea/storefront/errors_controller.rb +6 -0
  24. data/app/controllers/workarea/storefront/recent_views_controller.rb +2 -35
  25. data/app/controllers/workarea/storefront/recommendations_controller.rb +2 -2
  26. data/app/controllers/workarea/storefront/searches_controller.rb +0 -11
  27. data/app/controllers/workarea/storefront/users/accounts_controller.rb +2 -7
  28. data/app/controllers/workarea/storefront/users/credit_cards_controller.rb +5 -2
  29. data/app/controllers/workarea/storefront/users/passwords_controller.rb +1 -5
  30. data/app/helpers/workarea/storefront/application_helper.rb +19 -3
  31. data/app/helpers/workarea/storefront/content_helper.rb +1 -1
  32. data/app/helpers/workarea/storefront/favicons_helper.rb +6 -7
  33. data/app/helpers/workarea/storefront/navigation_helper.rb +10 -0
  34. data/app/helpers/workarea/storefront/schema_org_helper.rb +156 -0
  35. data/app/mailers/workarea/storefront/application_mailer.rb +1 -0
  36. data/app/view_models/workarea/storefront/category_view_model.rb +2 -2
  37. data/app/view_models/workarea/storefront/content_block_view_model.rb +41 -10
  38. data/app/view_models/workarea/storefront/content_blocks/product_insights_view_model.rb +1 -1
  39. data/app/view_models/workarea/storefront/display_content.rb +3 -1
  40. data/app/view_models/workarea/storefront/inquiry_view_model.rb +1 -7
  41. data/app/view_models/workarea/storefront/inventory_status_view_model.rb +10 -6
  42. data/app/view_models/workarea/storefront/order_item_view_model.rb +14 -0
  43. data/app/view_models/workarea/storefront/product_view_model.rb +22 -4
  44. data/app/view_models/workarea/storefront/recommendations_view_model.rb +8 -4
  45. data/app/view_models/workarea/storefront/search_view_model.rb +1 -1
  46. data/app/view_models/workarea/storefront/user_activity_view_model.rb +6 -17
  47. data/app/views/layouts/workarea/storefront/application.html.haml +13 -17
  48. data/app/views/layouts/workarea/storefront/checkout.html.haml +1 -1
  49. data/app/views/layouts/workarea/storefront/content_preview.html.haml +1 -0
  50. data/app/views/layouts/workarea/storefront/email.html.haml +33 -26
  51. data/app/views/layouts/workarea/storefront/empty.html.haml +1 -0
  52. data/app/views/layouts/workarea/storefront/navigation.html.haml +1 -1
  53. data/app/views/workarea/storefront/account_mailer/creation.html.haml +2 -0
  54. data/app/views/workarea/storefront/account_mailer/password_reset.html.haml +2 -0
  55. data/app/views/workarea/storefront/cart_items/create.html.haml +1 -1
  56. data/app/views/workarea/storefront/carts/show.html.haml +1 -1
  57. data/app/views/workarea/storefront/categories/show.html.haml +3 -2
  58. data/app/views/workarea/storefront/checkouts/confirmation.html.haml +1 -1
  59. data/app/views/workarea/storefront/contacts/show.html.haml +4 -2
  60. data/app/views/workarea/storefront/content_areas/show.html.haml +1 -0
  61. data/app/views/workarea/storefront/content_blocks/_category_summary.html.haml +2 -1
  62. data/app/views/workarea/storefront/content_blocks/_product_insights.html.haml +2 -1
  63. data/app/views/workarea/storefront/content_blocks/_product_list.html.haml +2 -1
  64. data/app/views/workarea/storefront/errors/show.html.haml +1 -0
  65. data/app/views/workarea/storefront/fulfillment_mailer/shipped.html.haml +3 -1
  66. data/app/views/workarea/storefront/order_mailer/_summary.html.haml +6 -0
  67. data/app/views/workarea/storefront/order_mailer/confirmation.html.haml +3 -0
  68. data/app/views/workarea/storefront/order_mailer/reminder.html.haml +3 -0
  69. data/app/views/workarea/storefront/orders/_summary.html.haml +3 -1
  70. data/app/views/workarea/storefront/orders/show.html.haml +3 -3
  71. data/app/views/workarea/storefront/pages/home_page.html.haml +4 -0
  72. data/app/views/workarea/storefront/pages/robots.text.erb +0 -1
  73. data/app/views/workarea/storefront/pages/show.html.haml +1 -0
  74. data/app/views/workarea/storefront/products/_price.html.haml +1 -2
  75. data/app/views/workarea/storefront/products/_pricing.html.haml +12 -6
  76. data/app/views/workarea/storefront/products/_summary.html.haml +3 -3
  77. data/app/views/workarea/storefront/products/show.html.haml +6 -4
  78. data/app/views/workarea/storefront/products/templates/_generic.html.haml +5 -5
  79. data/app/views/workarea/storefront/products/templates/_option_selects.html.haml +5 -7
  80. data/app/views/workarea/storefront/products/templates/_option_thumbnails.html.haml +5 -7
  81. data/app/views/workarea/storefront/recent_views/aside.html.haml +3 -10
  82. data/app/views/workarea/storefront/recent_views/narrow.html.haml +3 -10
  83. data/app/views/workarea/storefront/recent_views/show.html.haml +3 -10
  84. data/app/views/workarea/storefront/recommendations/show.html.haml +1 -1
  85. data/app/views/workarea/storefront/searches/show.html.haml +4 -5
  86. data/app/views/workarea/storefront/users/accounts/edit.html.haml +3 -3
  87. data/app/views/workarea/storefront/users/accounts/show.html.haml +3 -3
  88. data/app/views/workarea/storefront/users/addresses/edit.html.haml +3 -3
  89. data/app/views/workarea/storefront/users/addresses/new.html.haml +3 -3
  90. data/app/views/workarea/storefront/users/credit_cards/edit.html.haml +3 -3
  91. data/app/views/workarea/storefront/users/credit_cards/new.html.haml +3 -3
  92. data/app/views/workarea/storefront/users/orders/index.html.haml +3 -3
  93. data/app/views/workarea/storefront/users/orders/show.html.haml +4 -4
  94. data/app/views/workarea/storefront/users/passwords/new.html.haml +3 -3
  95. data/config/locales/en.yml +16 -3
  96. data/config/routes.rb +4 -2
  97. data/test/dummy/config/initializers/session_store.rb +1 -1
  98. data/test/helpers/workarea/storefront/content_helper_test.rb +1 -0
  99. data/test/helpers/workarea/storefront/navigation_helper_test.rb +4 -0
  100. data/test/helpers/workarea/storefront/schema_org_helper_test.rb +27 -0
  101. data/test/integration/workarea/storefront/analytics_integration_test.rb +44 -4
  102. data/test/integration/workarea/storefront/cart_items_integration_test.rb +0 -12
  103. data/test/integration/workarea/storefront/categories_integration_test.rb +0 -10
  104. data/test/integration/workarea/storefront/checkout_side_effects_integration_test.rb +15 -1
  105. data/test/integration/workarea/storefront/checkouts_integration_test.rb +68 -11
  106. data/test/integration/workarea/storefront/contact_form_integration_test.rb +18 -20
  107. data/test/integration/workarea/storefront/content_blocks_integration_test.rb +1 -4
  108. data/test/integration/workarea/storefront/current_checkout_integration_test.rb +53 -2
  109. data/test/integration/workarea/storefront/downloads_integration_test.rb +38 -0
  110. data/test/integration/workarea/storefront/email_signups_integration_test.rb +2 -0
  111. data/test/integration/workarea/storefront/guest_browsing_integration_test.rb +2 -2
  112. data/test/integration/workarea/storefront/impersonations_integration_test.rb +2 -2
  113. data/test/integration/workarea/storefront/login_integration_test.rb +3 -9
  114. data/test/integration/workarea/storefront/order_data_integration_test.rb +1 -9
  115. data/test/integration/workarea/storefront/place_order_integration_test.rb +5 -7
  116. data/test/integration/workarea/storefront/placing_order_integration_test.rb +1 -1
  117. data/test/integration/workarea/storefront/recent_views_integration_test.rb +29 -0
  118. data/test/integration/workarea/storefront/releases_integration_test.rb +132 -0
  119. data/test/integration/workarea/storefront/search_integration_test.rb +0 -46
  120. data/test/integration/workarea/storefront/segment_overrides_integration_test.rb +48 -0
  121. data/test/integration/workarea/storefront/segments_integration_test.rb +250 -0
  122. data/test/integration/workarea/storefront/store_credit_integration_test.rb +1 -1
  123. data/test/integration/workarea/storefront/users/credit_cards_integration_test.rb +2 -2
  124. data/test/integration/workarea/storefront/users/passwords_integration_test.rb +0 -19
  125. data/test/javascripts/traffic_referrer_spec.js +1 -1
  126. data/test/mailers/workarea/storefront/transactional_mailer_test.rb +9 -13
  127. data/test/system/workarea/storefront/analytics_system_test.rb +54 -40
  128. data/test/system/workarea/storefront/content_system_test.rb +10 -1
  129. data/test/system/workarea/storefront/digital_products_system_test.rb +2 -0
  130. data/test/system/workarea/storefront/download_system_test.rb +145 -0
  131. data/test/system/workarea/storefront/guest_checkout_system_test.rb +20 -0
  132. data/test/system/workarea/storefront/logged_in_checkout_system_test.rb +31 -32
  133. data/test/system/workarea/storefront/passwords_system_test.rb +35 -37
  134. data/test/system/workarea/storefront/pricing_overrides_system_test.rb +13 -2
  135. data/test/system/workarea/storefront/segment_overrides_system_test.rb +69 -0
  136. data/test/view_models/workarea/storefront/category_view_model_test.rb +20 -0
  137. data/test/view_models/workarea/storefront/content_block_view_model_test.rb +135 -3
  138. data/test/view_models/workarea/storefront/display_content_test.rb +4 -0
  139. data/test/view_models/workarea/storefront/product_view_model/option_set_test.rb +7 -8
  140. data/test/view_models/workarea/storefront/product_view_model_test.rb +17 -10
  141. data/test/view_models/workarea/storefront/search_view_model_test.rb +0 -6
  142. data/test/view_models/workarea/storefront/user_activity_view_model_test.rb +18 -20
  143. metadata +20 -22
  144. data/app/assets/javascripts/workarea/storefront/modules/recent_views.js +0 -25
  145. data/app/assets/javascripts/workarea/storefront/modules/search_fields.js +0 -59
  146. data/app/assets/javascripts/workarea/storefront/templates/ui_menu_heading.jst.ejs +0 -1
  147. data/app/assets/javascripts/workarea/storefront/templates/ui_menu_item.jst.ejs +0 -8
  148. data/app/assets/stylesheets/jquery_ui/storefront/_ui_autocomplete.scss +0 -17
  149. data/app/assets/stylesheets/jquery_ui/storefront/_ui_menu.scss +0 -40
  150. data/app/controllers/workarea/storefront/http_caching.rb +0 -33
  151. data/app/controllers/workarea/storefront/user_activity.rb +0 -19
  152. data/app/view_models/workarea/storefront/search_suggestion_view_model.rb +0 -87
  153. data/app/views/workarea/storefront/searches/index.json.jbuilder +0 -1
  154. data/app/views/workarea/storefront/style_guides/components/_ui_autocomplete.html.haml +0 -11
  155. data/test/dummy/tmp/screenshots/.keep +0 -0
  156. data/test/view_models/workarea/storefront/search_suggestion_view_model_test.rb +0 -42
@@ -4,6 +4,7 @@
4
4
  - if @content.present?
5
5
  - add_css(@content.css)
6
6
  - add_javascript(@content.javascript)
7
+ - add_head_content(@content.head_content)
7
8
 
8
9
  !!!
9
10
  /
@@ -32,7 +32,7 @@
32
32
  = append_partials('storefront.document_head')
33
33
  = javascript_include_tag Workarea.config.asset_manifests.storefront_javascript_head
34
34
 
35
- %body{ itemscope: true, itemtype: 'http://schema.org/WebPage' }
35
+ %body
36
36
 
37
37
  %ul.accessibility-nav.visually-hidden
38
38
  %li= link_to t('workarea.storefront.layouts.accessibility_info'), accessibility_path
@@ -1,5 +1,7 @@
1
1
  = append_partials('storefront.account_creation_mailer.top')
2
2
 
3
+ = render_schema_org(email_action_schema(users_account_url, t('workarea.storefront.email.account_created.email_action.name')))
4
+
3
5
  - content_for :preheader_text do
4
6
  = @content
5
7
 
@@ -1,5 +1,7 @@
1
1
  = append_partials('storefront.password_reset_mailer.top')
2
2
 
3
+ = render_schema_org(email_action_schema(reset_password_url(@reset.token), t('workarea.storefront.email.password_reset.email_action.name')))
4
+
3
5
  - content_for :preheader_text do
4
6
  = @content
5
7
 
@@ -67,5 +67,5 @@
67
67
  .grid
68
68
  - @cart.recommendations.each do |product|
69
69
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
70
- .product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
70
+ .product-summary.product-summary--small
71
71
  = render 'workarea/storefront/products/summary', product: product
@@ -174,7 +174,7 @@
174
174
  .grid
175
175
  - @cart.recommendations.each do |product|
176
176
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
177
- .product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
177
+ .product-summary.product-summary--small
178
178
  = render 'workarea/storefront/products/summary', product: product
179
179
 
180
180
  %div{ data: { recommendations_placeholder: recent_views_path } }
@@ -3,10 +3,10 @@
3
3
 
4
4
  - add_css(@category.css)
5
5
  - add_javascript(@category.javascript)
6
+ - add_head_content(@category.head_content)
6
7
 
7
8
  - content_for :head do
8
9
  - cache "#{@category.cache_key}/head", expires_in: Workarea.config.cache_expirations.categories_fragment_cache do
9
- %meta{ property: 'recent-view', content: recent_view_content(category_id: @category.id) }
10
10
  %meta{ property: 'global-id', content: @category.to_global_id.to_param }
11
11
 
12
12
  - if @category.first_page? && !@category.has_filters?
@@ -89,10 +89,11 @@
89
89
  .pagination{ data: { analytics: product_list_analytics_data(@category.name).to_json, pagination: pagination_data(@category.products), back_to_top_button: '' } }
90
90
  .grid
91
91
  - @category.products.each_with_index do |product, position|
92
+ = render_schema_org(product_schema(product))
92
93
  = append_partials('storefront.category_browse_grid_item', product: product, position: position)
93
94
 
94
95
  .grid__cell.grid__cell--50.grid__cell--25-at-medium.grid__cell--20-at-wide{ data: { pagination_item: '' } }
95
- .product-summary{ itemscope: true, itemtype: 'http://schema.org/Product' }
96
+ .product-summary
96
97
  = render 'workarea/storefront/products/summary', product: product
97
98
  - if show_pagination?(@category.products)
98
99
  .pagination__button
@@ -34,5 +34,5 @@
34
34
  %span.button-property__text= t('workarea.storefront.users.sign_up_for_email')
35
35
  %p= button_tag t('workarea.storefront.users.create_account'), value: 'sign_up', class: 'button', data: { disable_with: loading_indicator(t('workarea.storefront.users.create_account_disabled_text')) }
36
36
 
37
- = render 'workarea/storefront/orders/summary', order: @order, recommendations: @order.recommendations, show_fulfillment: false
37
+ = render 'workarea/storefront/orders/summary', order: @order, recommendations: @order.recommendations
38
38
  = append_partials('storefront.checkout_confirmation')
@@ -5,10 +5,12 @@
5
5
  %meta{ name: :description, content: @inquiry.meta_description }
6
6
 
7
7
  - content_for :breadcrumbs do
8
+ = render_schema_org(breadcrumb_list_schema([[t('workarea.storefront.layouts.home'), root_url], [@inquiry.title, page_url('inquiry')]]))
9
+
8
10
  %p.breadcrumbs__node-group
9
- %span.breadcrumbs__node{ itemprop: 'breadcrumb' }
11
+ %span.breadcrumbs__node
10
12
  = link_to t('workarea.storefront.layouts.home'), root_path, rel: 'home', class: 'breadcrumbs__link'
11
- %span.breadcrumbs__node{ itemprop: 'breadcrumb' }
13
+ %span.breadcrumbs__node
12
14
  %span.breadcrumbs__text= @inquiry.title
13
15
 
14
16
  .view
@@ -1,6 +1,7 @@
1
1
  - @title = @content.browser_title
2
2
  - add_css(@content.css)
3
3
  - add_javascript(@content.javascript)
4
+ - add_head_content(@content.head_content)
4
5
 
5
6
  .view
6
7
  = render_content_blocks(@content.content_blocks_for(@area_id))
@@ -10,6 +10,7 @@
10
10
  - else
11
11
  .grid
12
12
  - products.each do |product|
13
+ = render_schema_org(product_schema(product))
13
14
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
14
- %div.product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
15
+ %div.product-summary.product-summary--small
15
16
  = render 'workarea/storefront/products/summary', product: product
@@ -5,6 +5,7 @@
5
5
  - if view_model.products.present?
6
6
  .grid
7
7
  - view_model.products.each do |product|
8
+ = render_schema_org(product_schema(product))
8
9
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
9
- .product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
10
+ .product-summary.product-summary--small
10
11
  = render 'workarea/storefront/products/summary', product: product
@@ -5,6 +5,7 @@
5
5
  - if products.present?
6
6
  .grid{ data: { analytics: product_list_analytics_data("Custom product list").to_json } }
7
7
  - products.each do |product|
8
+ = render_schema_org(product_schema(product))
8
9
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
9
- %div.product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
10
+ %div.product-summary.product-summary--small
10
11
  = render 'workarea/storefront/products/summary', product: product
@@ -2,6 +2,7 @@
2
2
 
3
3
  - add_css(@content.css)
4
4
  - add_javascript(@content.javascript)
5
+ - add_head_content(@content.head_content)
5
6
 
6
7
  - content_for :head do
7
8
  %meta{ property: 'global-id', content: @content.to_global_id.to_param }
@@ -1,7 +1,9 @@
1
1
  = append_partials('storefront.fulfillment_shipped_mailer.top')
2
2
 
3
+ = render_schema_org(fulfillment_email_schema(@order, @package))
4
+
3
5
  - content_for :preheader_text do
4
- = t('workarea.storefront.email.order_shipped.heading', order_id: @order.id)
6
+ = t('workarea.storefront.email.order_cancellation.heading', order_id: @order.id)
5
7
 
6
8
  %tr
7
9
  %td
@@ -160,6 +160,12 @@
160
160
  %strong= t('workarea.storefront.orders.quantity')
161
161
  %td.align-right= item.quantity
162
162
 
163
+ - if item.token.present?
164
+ %tr
165
+ %td= link_to t('workarea.storefront.orders.download'), download_url(item.token)
166
+
167
+ = append_partials('storefront.order_summary_item_details', item: item)
168
+
163
169
  = append_partials('storefront.order_mailer_summary_order_details', item: item)
164
170
 
165
171
  - if item.total_adjustments.many?
@@ -1,5 +1,8 @@
1
1
  = append_partials('storefront.order_confirmation_mailer.top')
2
2
 
3
+ = render_schema_org(email_action_schema(order_url(@order), t('workarea.storefront.email.order_confirmation.email_action.name')))
4
+ = render_schema_org(order_email_schema(@order))
5
+
3
6
  - content_for :preheader_text do
4
7
  = @content
5
8
 
@@ -1,5 +1,8 @@
1
1
  = append_partials('storefront.order_reminder_mailer.top')
2
2
 
3
+ = render_schema_org(email_action_schema(resume_cart_url(@order.token), t('workarea.storefront.email.order_reminder.email_action.name'), t('workarea.storefront.email.order_reminder.email_action.description')))
4
+ = render_schema_org(order_email_schema(@order))
5
+
3
6
  - content_for :preheader_text do
4
7
  = @content
5
8
 
@@ -63,6 +63,8 @@
63
63
  - item.customizations.each do |name, value|
64
64
  #{name.titleize}: #{value}
65
65
  %br
66
+ - if item.token&.enabled?
67
+ = link_to t('workarea.storefront.orders.download'), download_path(item.token)
66
68
  = append_partials('storefront.order_summary_item_details', item: item)
67
69
 
68
70
  .grid__cell.grid__cell--25-at-medium
@@ -260,7 +262,7 @@
260
262
  .grid
261
263
  - recommendations.each do |product|
262
264
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
263
- .product-summary.product-summary--small{ itemscope: true, itemtype: 'http://schema.org/Product' }
265
+ .product-summary.product-summary--small
264
266
  = render 'workarea/storefront/products/summary', product: product
265
267
 
266
268
  %ul.order-help-menu
@@ -2,11 +2,11 @@
2
2
 
3
3
  - content_for :breadcrumbs do
4
4
  %p.breadcrumbs__node-group
5
- %span.breadcrumbs__node{ itemprop: 'breadcrumb' }
5
+ %span.breadcrumbs__node
6
6
  = link_to t('workarea.storefront.layouts.home'), root_path, rel: 'home', class: 'breadcrumbs__link'
7
- %span.breadcrumbs__node{ itemprop: 'breadcrumb' }
7
+ %span.breadcrumbs__node
8
8
  = link_to t('workarea.storefront.orders.order_status'), check_orders_path, class: 'breadcrumbs__link'
9
- %span.breadcrumbs__node{ itemprop: 'breadcrumb' }
9
+ %span.breadcrumbs__node
10
10
  %span.breadcrumbs__text #{t('workarea.storefront.orders.order')} #{@order.id}
11
11
 
12
12
  .view
@@ -2,6 +2,10 @@
2
2
 
3
3
  - add_css(@page.css)
4
4
  - add_javascript(@page.javascript)
5
+ - add_head_content(@page.head_content)
6
+
7
+ - content_for :breadcrumbs do
8
+ = render_schema_org(breadcrumb_list_schema([[t('workarea.storefront.layouts.home'), root_url]]))
5
9
 
6
10
  - content_for :head do
7
11
  %meta{ property: 'global-id', content: @page.to_global_id.to_param }
@@ -11,7 +11,6 @@ Disallow: /login
11
11
  Disallow: /logout
12
12
  Disallow: /forgot_password
13
13
  Disallow: /users
14
- Disallow: /wish_lists
15
14
  Disallow: /products/*/details
16
15
  <% end %>
17
16
  <%= append_partials('storefront.robots_txt') %>
@@ -3,6 +3,7 @@
3
3
 
4
4
  - add_css(@page.css)
5
5
  - add_javascript(@page.javascript)
6
+ - add_head_content(@page.head_content)
6
7
 
7
8
  - content_for :head do
8
9
  - cache "#{@page.cache_key}/head", expires_in: Workarea.config.cache_expirations.pages_fragment_cache do
@@ -1,4 +1,3 @@
1
+ -# TODO v3.5 Remove
1
2
  - if price.present?
2
- %meta{ itemprop: 'priceCurrency', content: price.currency }
3
- %meta{ itemprop: 'price', content: price.to_f }
4
3
  = number_to_currency price
@@ -3,27 +3,33 @@
3
3
  - if product.one_price?
4
4
  %p.product-prices__price
5
5
  - if product.show_sell_range?
6
- %span.product-prices__sell-price.product-prices__sell-price--min= render 'workarea/storefront/products/price', price: product.sell_min_price
6
+ %span.product-prices__sell-price.product-prices__sell-price--min
7
+ = number_to_currency(product.sell_min_price)
7
8
  %span.product-prices__sell-price.product-prices__sell-price--max – #{number_to_currency product.sell_max_price}
8
9
  - else
9
- %span.product-prices__sell-price= render 'workarea/storefront/products/price', price: product.sell_min_price
10
+ %span.product-prices__sell-price
11
+ = number_to_currency(product.sell_min_price)
10
12
 
11
13
  - else
12
14
  - if product.on_sale?
13
15
  %p.product-prices__price.product-prices__price--on-sale
14
16
  - if product.show_sell_range?
15
- %strong.product-prices__sell-price.product-prices__sell-price--min= render 'workarea/storefront/products/price', price: product.sell_min_price
17
+ %strong.product-prices__sell-price.product-prices__sell-price--min
18
+ = number_to_currency(product.sell_min_price)
16
19
  %strong.product-prices__sell-price.product-prices__sell-price--max – #{number_to_currency product.sell_max_price}
17
20
  - else
18
- %strong.product-prices__sell-price= render 'workarea/storefront/products/price', price: product.sell_min_price
21
+ %strong.product-prices__sell-price
22
+ = number_to_currency(product.sell_min_price)
19
23
 
20
24
  - else
21
25
  %p.product-prices__price
22
26
  - if product.show_sell_range?
23
- %span.product-prices__sell-price.product-prices__sell-price--min= render 'workarea/storefront/products/price', price: product.sell_min_price
27
+ %span.product-prices__sell-price.product-prices__sell-price--min
28
+ = number_to_currency(product.sell_min_price)
24
29
  %span.product-prices__sell-price.product-prices__sell-price--max – #{number_to_currency product.sell_max_price}
25
30
  - else
26
- %span.product-prices__sell-price= render 'workarea/storefront/products/price', price: product.sell_min_price
31
+ %span.product-prices__sell-price
32
+ = number_to_currency(product.sell_min_price)
27
33
 
28
34
  %p.product-prices__price.product-prices__price--original
29
35
  - if product.show_original_range?
@@ -1,12 +1,12 @@
1
1
  - cache "#{product.cache_key}/summary", expires_in: Workarea.config.cache_expirations.product_summary_fragment_cache do
2
2
  %p.product-summary__media
3
3
  = link_to product_path(product, product.browse_link_options), class: 'product-summary__media-link', style: intrinsic_ratio_product_image_styles(product.primary_image), data: { analytics_product_impression: product_impression_data(product), analytics: product_click_analytics_data(product).to_json } do
4
- = image_tag(product_image_url(product.primary_image, :large_thumb), alt: product.name, itemprop: 'image', class: 'product-summary__media-image')
4
+ = image_tag(product_image_url(product.primary_image, :large_thumb), alt: product.name, class: 'product-summary__media-image')
5
5
 
6
6
  .product-summary__info
7
- %p.product-summary__name{ itemprop: 'name' }= link_to product.name, product_path(product, product.browse_link_options), itemprop: 'url', data: { analytics: product_click_analytics_data(product).to_json }
7
+ %p.product-summary__name= link_to product.name, product_path(product, product.browse_link_options), data: { analytics: product_click_analytics_data(product).to_json }
8
8
 
9
- .product-prices.product-prices--summary{ itemprop: 'offers', itemscope: true, itemtype: 'http://schema.org/Offer' }
9
+ .product-prices.product-prices--summary
10
10
  = render 'workarea/storefront/products/pricing', product: product
11
11
 
12
12
  = append_partials('storefront.product_summary', product: product)
@@ -3,7 +3,6 @@
3
3
 
4
4
  - content_for :head do
5
5
  - cache "#{@product.cache_key}/head", expires_in: Workarea.config.cache_expirations.product_show_fragment_cache do
6
- %meta{ property: 'recent-view', content: recent_view_content(product_id: @product.id) }
7
6
  %meta{ property: 'global-id', content: @product.to_global_id.to_param }
8
7
  = append_partials('storefront.product_head', product: @product)
9
8
 
@@ -20,8 +19,11 @@
20
19
  %meta{ property: 'og:description', content: strip_tags(@product.meta_description) }
21
20
 
22
21
  - cache "#{@product.cache_key}/show", expires_in: Workarea.config.cache_expirations.product_show_fragment_cache do
22
+
23
+ = render_schema_org(product_schema(@product, related_products: @product.recommendations))
24
+
23
25
  .view
24
- .product-detail-container{ itemscope: true, itemtype: 'http://schema.org/Product', data: { analytics: product_view_analytics_data(@product).to_json } }
26
+ .product-detail-container{ data: { analytics: product_view_analytics_data(@product).to_json } }
25
27
 
26
28
  .product-details{ class: "product-details--#{@product.template}" }
27
29
  = render "workarea/storefront/products/templates/#{@product.template}", product: @product
@@ -29,7 +31,7 @@
29
31
  - if @product.description.present?
30
32
  .product-detail-container__description#description
31
33
  %h2.product-detail-container__description-heading= t('workarea.storefront.products.description')
32
- .product-detail-container__description-body{ itemprop: 'description' }!= @product.description
34
+ .product-detail-container__description-body!= @product.description
33
35
 
34
36
  = append_partials('storefront.product_description', product: @product)
35
37
 
@@ -40,7 +42,7 @@
40
42
  .grid{ data: { analytics: product_list_analytics_data('Product Recommendations').to_json } }
41
43
  - @product.recommendations.each do |product|
42
44
  .grid__cell.grid__cell--50.grid__cell--33-at-medium.grid__cell--16-at-wide
43
- .product-summary.product-summary--small{ itemprop: 'isRelatedTo', itemscope: true, itemtype: 'http://schema.org/Product' }
45
+ .product-summary.product-summary--small
44
46
  = render 'workarea/storefront/products/summary', product: product
45
47
 
46
48
  %div{ data: { recommendations_placeholder: recent_views_path } }
@@ -2,12 +2,12 @@
2
2
  .grid__cell.grid__cell--60-at-medium
3
3
 
4
4
  .product-details__name
5
- %h1.product-details__heading{ itemprop: 'name' }= product.name
5
+ %h1.product-details__heading= product.name
6
6
 
7
7
  %p.product-details__id
8
- %span{ itemprop: 'productID' }= product.id
8
+ %span= product.id
9
9
 
10
- .product-prices.product-prices--details{ itemprop: 'offers', itemscope: true, itemtype: 'http://schema.org/Offer' }
10
+ .product-prices.product-prices--details
11
11
  = render 'workarea/storefront/products/pricing', product: product
12
12
 
13
13
  = append_partials('storefront.product_pricing_details', product: product)
@@ -49,13 +49,13 @@
49
49
 
50
50
  = append_partials('storefront.product_details', product: product)
51
51
 
52
- %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button', itemprop: 'url'
52
+ %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
53
53
 
54
54
  .grid__cell.grid__cell--40-at-medium
55
55
 
56
56
  .product-details__primary-image
57
57
  = link_to(product_image_url(product.primary_image, :zoom), target: '_blank', rel: 'noopener', class: 'product-details__primary-image-link', style: intrinsic_ratio_product_image_styles(product.primary_image), data: { dialog_button: '' }) do
58
- = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), itemprop: 'image', class: 'product-details__primary-image-link-image'
58
+ = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), class: 'product-details__primary-image-link-image'
59
59
 
60
60
  - if product.images.length > 1
61
61
  .product-details__alt-images
@@ -2,16 +2,14 @@
2
2
  .grid__cell.grid__cell--60-at-medium
3
3
 
4
4
  .product-details__name
5
- %h1.product-details__heading{ itemprop: 'name' }= product.name
5
+ %h1.product-details__heading= product.name
6
6
 
7
7
  %p.product-details__id
8
- %span{ itemprop: 'productID' }= product.id
8
+ %span= product.id
9
9
 
10
- .product-prices.product-prices--details{ itemprop: 'offers', itemscope: true, itemtype: 'http://schema.org/Offer' }
10
+ .product-prices.product-prices--details
11
11
  = render 'workarea/storefront/products/pricing', product: product
12
12
 
13
- = append_partials('storefront.product_pricing_details', product: product)
14
-
15
13
  - if product.description.present?
16
14
  .product-details__description
17
15
  %p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
@@ -52,13 +50,13 @@
52
50
 
53
51
  = append_partials('storefront.product_details', product: product)
54
52
 
55
- %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button', itemprop: 'url'
53
+ %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
56
54
 
57
55
  .grid__cell.grid__cell--40-at-medium
58
56
 
59
57
  .product-details__primary-image
60
58
  = link_to(product_image_url(product.primary_image, :zoom), target: '_blank', rel: 'noopener', class: 'product-details__primary-image-link', style: intrinsic_ratio_product_image_styles(product.primary_image), data: { dialog_button: '' }) do
61
- = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), itemprop: 'image', class: 'product-details__primary-image-link-image'
59
+ = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), class: 'product-details__primary-image-link-image'
62
60
 
63
61
  - if product.images.length > 1
64
62
  .product-details__alt-images
@@ -2,16 +2,14 @@
2
2
  .grid__cell.grid__cell--60-at-medium
3
3
 
4
4
  .product-details__name
5
- %h1.product-details__heading{ itemprop: 'name' }= product.name
5
+ %h1.product-details__heading= product.name
6
6
 
7
7
  %p.product-details__id
8
- %span{ itemprop: 'productID' }= product.id
8
+ %span= product.id
9
9
 
10
- .product-prices.product-prices--details{ itemprop: 'offers', itemscope: true, itemtype: 'http://schema.org/Offer' }
10
+ .product-prices.product-prices--details
11
11
  = render 'workarea/storefront/products/pricing', product: product
12
12
 
13
- = append_partials('storefront.product_pricing_details', product: product)
14
-
15
13
  - if product.description.present?
16
14
  .product-details__description
17
15
  %p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
@@ -58,13 +56,13 @@
58
56
 
59
57
  = append_partials('storefront.product_details', product: product)
60
58
 
61
- %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button', itemprop: 'url'
59
+ %p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
62
60
 
63
61
  .grid__cell.grid__cell--40-at-medium
64
62
 
65
63
  .product-details__primary-image
66
64
  = link_to(product_image_url(product.primary_image, :zoom), target: '_blank', rel: 'noopener', class: 'product-details__primary-image-link', style: intrinsic_ratio_product_image_styles(product.primary_image), data: { dialog_button: '' }) do
67
- = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), itemprop: 'image', class: 'product-details__primary-image-link-image'
65
+ = image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), class: 'product-details__primary-image-link-image'
68
66
 
69
67
  - if product.images.length > 1
70
68
  .product-details__alt-images