spree_backend 3.2.9 → 3.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend/admin.js +16 -15
  3. data/app/assets/javascripts/spree/backend/checkouts/edit.js +25 -26
  4. data/app/assets/javascripts/spree/backend/general_settings.js.coffee +10 -12
  5. data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +4 -6
  6. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +7 -1
  7. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +4 -1
  8. data/app/assets/javascripts/spree/backend/user_picker.js +3 -1
  9. data/app/assets/javascripts/spree/backend.js +3 -3
  10. data/app/controllers/spree/admin/countries_controller.rb +1 -0
  11. data/app/controllers/spree/admin/log_entries_controller.rb +2 -2
  12. data/app/controllers/spree/admin/orders/customer_details_controller.rb +5 -6
  13. data/app/controllers/spree/admin/orders_controller.rb +4 -4
  14. data/app/controllers/spree/admin/payments_controller.rb +21 -10
  15. data/app/controllers/spree/admin/products_controller.rb +5 -0
  16. data/app/controllers/spree/admin/promotion_rules_controller.rb +11 -7
  17. data/app/controllers/spree/admin/stock_transfers_controller.rb +1 -1
  18. data/app/controllers/spree/admin/taxons_controller.rb +31 -23
  19. data/app/helpers/spree/admin/base_helper.rb +1 -1
  20. data/app/helpers/spree/admin/navigation_helper.rb +10 -4
  21. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +2 -2
  22. data/app/views/spree/admin/general_settings/edit.html.erb +8 -8
  23. data/app/views/spree/admin/images/_form.html.erb +2 -2
  24. data/app/views/spree/admin/images/edit.html.erb +2 -2
  25. data/app/views/spree/admin/images/new.html.erb +1 -1
  26. data/app/views/spree/admin/option_types/_form.html.erb +2 -2
  27. data/app/views/spree/admin/option_types/index.html.erb +4 -4
  28. data/app/views/spree/admin/orders/_line_items.html.erb +40 -38
  29. data/app/views/spree/admin/orders/_shipment.html.erb +77 -76
  30. data/app/views/spree/admin/orders/customer_details/_form.html.erb +5 -5
  31. data/app/views/spree/admin/orders/index.html.erb +16 -16
  32. data/app/views/spree/admin/payment_methods/_form.html.erb +2 -2
  33. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  34. data/app/views/spree/admin/products/_add_stock_form.html.erb +3 -3
  35. data/app/views/spree/admin/products/_form.html.erb +16 -16
  36. data/app/views/spree/admin/products/index.html.erb +4 -4
  37. data/app/views/spree/admin/products/new.html.erb +8 -8
  38. data/app/views/spree/admin/promotion_categories/index.html.erb +3 -3
  39. data/app/views/spree/admin/promotions/_form.html.erb +3 -3
  40. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +1 -1
  41. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +2 -2
  42. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +2 -2
  43. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +2 -4
  44. data/app/views/spree/admin/promotions/edit.html.erb +3 -3
  45. data/app/views/spree/admin/promotions/index.html.erb +6 -6
  46. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +2 -2
  47. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +4 -4
  48. data/app/views/spree/admin/properties/_form.html.erb +2 -2
  49. data/app/views/spree/admin/properties/index.html.erb +6 -6
  50. data/app/views/spree/admin/prototypes/index.html.erb +4 -4
  51. data/app/views/spree/admin/reimbursement_types/_form.html.erb +4 -4
  52. data/app/views/spree/admin/reimbursements/edit.html.erb +1 -1
  53. data/app/views/spree/admin/return_authorizations/_form.html.erb +13 -1
  54. data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
  55. data/app/views/spree/admin/return_index/return_authorizations.html.erb +5 -5
  56. data/app/views/spree/admin/shared/_content_header.html.erb +2 -2
  57. data/app/views/spree/admin/shared/_header.html.erb +2 -2
  58. data/app/views/spree/admin/shared/_index_table_options.html.erb +2 -2
  59. data/app/views/spree/admin/shared/_order_summary.html.erb +1 -1
  60. data/app/views/spree/admin/shared/_table_filter.html.erb +1 -1
  61. data/app/views/spree/admin/shared/_translations.html.erb +0 -1
  62. data/app/views/spree/admin/shared/_update_order_state.js.erb +1 -1
  63. data/app/views/spree/admin/shipping_methods/_form.html.erb +10 -10
  64. data/app/views/spree/admin/state_changes/index.html.erb +3 -3
  65. data/app/views/spree/admin/states/_form.html.erb +2 -2
  66. data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
  67. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +4 -4
  68. data/app/views/spree/admin/stock_transfers/index.html.erb +3 -3
  69. data/app/views/spree/admin/stock_transfers/new.html.erb +2 -2
  70. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  71. data/app/views/spree/admin/tax_rates/_form.html.erb +2 -2
  72. data/app/views/spree/admin/taxonomies/_list.html.erb +2 -2
  73. data/app/views/spree/admin/taxonomies/{edit.erb → edit.html.erb} +0 -0
  74. data/app/views/spree/admin/taxonomies/index.html.erb +2 -2
  75. data/app/views/spree/admin/taxons/_form.html.erb +5 -5
  76. data/app/views/spree/admin/taxons/edit.html.erb +3 -0
  77. data/app/views/spree/admin/trackers/_form.html.erb +2 -2
  78. data/app/views/spree/admin/users/_addresses_form.html.erb +2 -2
  79. data/app/views/spree/admin/users/_form.html.erb +2 -2
  80. data/app/views/spree/admin/users/_user_page_actions.html.erb +1 -1
  81. data/app/views/spree/admin/users/index.html.erb +5 -5
  82. data/app/views/spree/admin/users/items.html.erb +1 -1
  83. data/app/views/spree/admin/users/orders.html.erb +1 -1
  84. data/app/views/spree/admin/variants/_form.html.erb +2 -2
  85. data/app/views/spree/admin/zones/_form.html.erb +2 -2
  86. data/app/views/spree/layouts/admin.html.erb +3 -3
  87. data/config/initializers/assets.rb +1 -1
  88. data/lib/spree/backend/engine.rb +0 -1
  89. data/spec/controllers/spree/admin/base_controller_spec.rb +46 -0
  90. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +185 -0
  91. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +41 -0
  92. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +18 -0
  93. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +199 -0
  94. data/spec/controllers/spree/admin/orders_controller_spec.rb +296 -0
  95. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +64 -0
  96. data/spec/controllers/spree/admin/payments_controller_spec.rb +97 -0
  97. data/spec/controllers/spree/admin/products_controller_spec.rb +137 -0
  98. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +21 -0
  99. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +21 -0
  100. data/spec/controllers/spree/admin/promotions_controller_spec.rb +44 -0
  101. data/spec/controllers/spree/admin/refunds_controller_spec.rb +32 -0
  102. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +74 -0
  103. data/spec/controllers/spree/admin/reports_controller_spec.rb +42 -0
  104. data/spec/controllers/spree/admin/resource_controller_spec.rb +252 -0
  105. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +225 -0
  106. data/spec/controllers/spree/admin/return_index_controller_spec.rb +37 -0
  107. data/spec/controllers/spree/admin/return_items_controller_spec.rb +27 -0
  108. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +14 -0
  109. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +19 -0
  110. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +41 -0
  111. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +41 -0
  112. data/spec/controllers/spree/admin/tax_categories_controller_spec.rb +34 -0
  113. data/spec/controllers/spree/admin/users_controller_spec.rb +161 -0
  114. data/spec/controllers/spree/admin/variants_controller_spec.rb +32 -0
  115. data/spec/features/admin/configuration/analytics_tracker_spec.rb +47 -0
  116. data/spec/features/admin/configuration/countries_spec.rb +24 -0
  117. data/spec/features/admin/configuration/general_settings_spec.rb +44 -0
  118. data/spec/features/admin/configuration/payment_methods_spec.rb +63 -0
  119. data/spec/features/admin/configuration/roles_spec.rb +47 -0
  120. data/spec/features/admin/configuration/shipping_methods_spec.rb +62 -0
  121. data/spec/features/admin/configuration/states_spec.rb +68 -0
  122. data/spec/features/admin/configuration/stock_locations_spec.rb +48 -0
  123. data/spec/features/admin/configuration/store_credit_categories_spec.rb +50 -0
  124. data/spec/features/admin/configuration/tax_categories_spec.rb +56 -0
  125. data/spec/features/admin/configuration/tax_rates_spec.rb +18 -0
  126. data/spec/features/admin/configuration/zones_spec.rb +39 -0
  127. data/spec/features/admin/homepage_spec.rb +89 -0
  128. data/spec/features/admin/locale_spec.rb +31 -0
  129. data/spec/features/admin/orders/adjustments_promotions_spec.rb +53 -0
  130. data/spec/features/admin/orders/adjustments_spec.rb +124 -0
  131. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +47 -0
  132. data/spec/features/admin/orders/customer_details_spec.rb +154 -0
  133. data/spec/features/admin/orders/line_items_spec.rb +51 -0
  134. data/spec/features/admin/orders/listing_spec.rb +224 -0
  135. data/spec/features/admin/orders/log_entries_spec.rb +55 -0
  136. data/spec/features/admin/orders/new_order_spec.rb +186 -0
  137. data/spec/features/admin/orders/order_details_spec.rb +660 -0
  138. data/spec/features/admin/orders/payments_spec.rb +244 -0
  139. data/spec/features/admin/orders/risk_analysis_spec.rb +48 -0
  140. data/spec/features/admin/orders/shipments_spec.rb +64 -0
  141. data/spec/features/admin/orders/state_changes_spec.rb +21 -0
  142. data/spec/features/admin/products/edit/images_spec.rb +86 -0
  143. data/spec/features/admin/products/edit/products_spec.rb +56 -0
  144. data/spec/features/admin/products/edit/taxons_spec.rb +41 -0
  145. data/spec/features/admin/products/edit/variants_spec.rb +56 -0
  146. data/spec/features/admin/products/option_types_spec.rb +114 -0
  147. data/spec/features/admin/products/products_spec.rb +445 -0
  148. data/spec/features/admin/products/properties_spec.rb +147 -0
  149. data/spec/features/admin/products/prototypes_spec.rb +112 -0
  150. data/spec/features/admin/products/stock_management_spec.rb +124 -0
  151. data/spec/features/admin/products/taxonomies_spec.rb +52 -0
  152. data/spec/features/admin/products/variant_spec.rb +50 -0
  153. data/spec/features/admin/promotions/adjustments_spec.rb +258 -0
  154. data/spec/features/admin/promotions/option_value_rule_spec.rb +70 -0
  155. data/spec/features/admin/promotions/tiered_calculator_spec.rb +70 -0
  156. data/spec/features/admin/refund_reasons/refund_reasons_spec.rb +57 -0
  157. data/spec/features/admin/reimbursement_type/edit_reimbursement_type_spec.rb +36 -0
  158. data/spec/features/admin/reimbursement_type/new_reimbursement_type_spec.rb +62 -0
  159. data/spec/features/admin/reports_spec.rb +61 -0
  160. data/spec/features/admin/return_authorization_reasons/return_authorization_reasons_spec.rb +63 -0
  161. data/spec/features/admin/returns/customer_returns_spec.rb +80 -0
  162. data/spec/features/admin/returns/return_authorizations_spec.rb +152 -0
  163. data/spec/features/admin/stock_transfer_spec.rb +91 -0
  164. data/spec/features/admin/store_credits_spec.rb +93 -0
  165. data/spec/features/admin/taxons_spec.rb +53 -0
  166. data/spec/features/admin/users_spec.rb +286 -0
  167. data/spec/helpers/admin/base_helper_spec.rb +30 -0
  168. data/spec/helpers/admin/navigation_helper_spec.rb +111 -0
  169. data/spec/helpers/admin/promotion_rules_helper_spec.rb +12 -0
  170. data/spec/helpers/admin/stock_movements_helper_spec.rb +30 -0
  171. data/spec/models/spree/resource_spec.rb +48 -0
  172. data/spec/routing/admin_path_spec.rb +22 -0
  173. data/spec/spec_helper.rb +144 -0
  174. data/spec/support/appear_before_matcher.rb +8 -0
  175. data/spec/support/ror_ringer.jpeg +0 -0
  176. data/spec/test_views/spree/admin/submodule/posts/edit.html.erb +1 -0
  177. data/spec/test_views/spree/admin/submodule/posts/new.html.erb +1 -0
  178. data/spec/test_views/spree/admin/widgets/edit.html.erb +1 -0
  179. data/spec/test_views/spree/admin/widgets/new.html.erb +1 -0
  180. data/spree_backend.gemspec +4 -4
  181. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +130 -154
  182. metadata +106 -29
  183. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  184. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  185. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  186. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  187. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  188. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  189. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  190. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  191. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  192. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  193. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  194. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  195. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  196. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +0 -357
@@ -3,7 +3,7 @@
3
3
  <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
4
4
  <div class="container-fluid">
5
5
  <div class="row">
6
- <div class="navbar-header col-sm-3 col-md-2">
6
+ <div class="navbar-header col-xs-3 col-md-2">
7
7
  <%= link_to(
8
8
  image_tag(Spree::Config[:admin_interface_logo], id: 'logo'),
9
9
  spree.admin_path,
@@ -15,7 +15,7 @@
15
15
  <span class="icon-bar"></span>
16
16
  </span>
17
17
  </div>
18
- <div class="col-sm-9 col-md-10">
18
+ <div class="col-xs-9 col-md-10">
19
19
  <div class="navbar-right" data-hook="admin_login_navigation_bar"></div>
20
20
  </div>
21
21
  </div>
@@ -5,10 +5,10 @@
5
5
  <% end %>
6
6
 
7
7
  <div class="row index-pagination-row">
8
- <div class="col-sm-6">
8
+ <div class="col-xs-6">
9
9
  <%= paginate collection %>
10
10
  </div>
11
- <div class="col-sm-6">
11
+ <div class="col-xs-6">
12
12
  <div class="pagination-wrap">
13
13
  <%= form_tag(per_page_dropdown_params(args), { method: :get, class: 'js-per-page-form form-inline' }) do %>
14
14
  <%= per_page_dropdown %>
@@ -11,7 +11,7 @@
11
11
  </td>
12
12
  <td>
13
13
  <span class="state label label-<%= @order.state %>">
14
- <%= Spree.t(@order.state, scope: :order_state) %>
14
+ <%= Spree.t(@order.state, scope: :order_states) %>
15
15
  </span>
16
16
  </td>
17
17
  </tr>
@@ -1,6 +1,6 @@
1
1
  <% if content_for?(:table_filter) %>
2
2
  <div class="filter-wrap row">
3
- <div class="col-sm-12">
3
+ <div class="col-xs-12">
4
4
  <div class="input-group index-filter-button">
5
5
  <span class="input-group-btn">
6
6
  <button class="btn btn-default js-show-index-filters" type="button">
@@ -2,7 +2,6 @@
2
2
  Spree.translations = <%==
3
3
  { abbr_day_names: I18n.t(:abbr_day_names, scope: :date),
4
4
  add: Spree.t(:add),
5
- are_you_sure: Spree.t(:are_you_sure),
6
5
  are_you_sure_delete: Spree.t(:are_you_sure_delete),
7
6
  bill_address: Spree.t(:bill_address),
8
7
  cancel: Spree.t(:cancel, scope: :actions),
@@ -1,4 +1,4 @@
1
- $('#order_tab_summary h5#order_status').html('<%= j Spree.t(:status) %>: <%= j Spree.t(@order.state, scope: :order_state) %>');
1
+ $('#order_tab_summary h5#order_status').html('<%= j Spree.t(:status) %>: <%= j Spree.t(@order.state, scope: :order_states) %>');
2
2
  $('#order_tab_summary h5#order_total').html('<%= j Spree.t(:total) %>: <%= j @order.display_total.to_html %>');
3
3
 
4
4
  <% if @order.completed? %>
@@ -1,6 +1,6 @@
1
1
  <div data-hook="admin_shipping_method_form_fields">
2
2
  <div class="row">
3
- <div data-hook="admin_shipping_method_form_name_field" class="col-md-6">
3
+ <div data-hook="admin_shipping_method_form_name_field" class="col-xs-12 col-md-6">
4
4
  <%= f.field_container :name, class: ['form-group'] do %>
5
5
  <%= f.label :name, Spree.t(:name) %>
6
6
  <%= f.text_field :name, class: 'form-control' %>
@@ -8,17 +8,17 @@
8
8
  <% end %>
9
9
  </div>
10
10
 
11
- <div data-hook="admin_shipping_method_form_display_field" class="col-md-6">
11
+ <div data-hook="admin_shipping_method_form_display_field" class="col-xs-12 col-md-6">
12
12
  <%= f.field_container :display_on, class: ['form-group'] do %>
13
13
  <%= f.label :display_on, Spree.t(:display) %>
14
- <%= select(:shipping_method, :display_on, Spree::ShippingMethod::DISPLAY.collect { |display| [Spree.t(display), display == :both ? nil : display.to_s] }, {}, { class: 'select2' }) %>
14
+ <%= select(:shipping_method, :display_on, Spree::ShippingMethod::DISPLAY.collect { |display| [Spree.t(display), display.to_s] }, {}, { class: 'select2' }) %>
15
15
  <%= f.error_message_on :display_on %>
16
16
  <% end %>
17
17
  </div>
18
18
  </div>
19
19
 
20
20
  <div class="row">
21
- <div data-hook="admin_shipping_method_form_internal_name_field" class="col-md-4">
21
+ <div data-hook="admin_shipping_method_form_internal_name_field" class="col-xs-12 col-md-4">
22
22
  <%= f.field_container :admin_name, class: ['form-group'] do %>
23
23
  <%= f.label :admin_name, Spree.t(:internal_name) %>
24
24
  <%= f.text_field :admin_name, class: 'form-control', label: false %>
@@ -26,7 +26,7 @@
26
26
  <% end %>
27
27
  </div>
28
28
 
29
- <div data-hook="admin_shipping_method_form_code" class="col-md-4">
29
+ <div data-hook="admin_shipping_method_form_code" class="col-xs-12 col-md-4">
30
30
  <%= f.field_container :code, class: ['form-group'] do %>
31
31
  <%= f.label :code, Spree.t(:code) %>
32
32
  <%= f.text_field :code, class: 'form-control', label: false %>
@@ -34,7 +34,7 @@
34
34
  <% end %>
35
35
  </div>
36
36
 
37
- <div data-hook="admin_shipping_method_form_tracking_url_field" class="col-md-4">
37
+ <div data-hook="admin_shipping_method_form_tracking_url_field" class="col-xs-12 col-md-4">
38
38
  <%= f.field_container :tracking_url, class: ['form-group'] do %>
39
39
  <%= f.label :tracking_url, Spree.t(:tracking_url) %>
40
40
  <%= f.text_field :tracking_url, class: 'form-control', placeholder: Spree.t(:tracking_url_placeholder) %>
@@ -45,7 +45,7 @@
45
45
  </div>
46
46
 
47
47
  <div class="row">
48
- <div data-hook="admin_shipping_method_form_availability_fields" class="col-md-6">
48
+ <div data-hook="admin_shipping_method_form_availability_fields" class="col-xs-12 col-md-6">
49
49
  <div class="panel panel-default categories">
50
50
  <div class="panel-heading">
51
51
  <h1 class="panel-title">
@@ -69,7 +69,7 @@
69
69
  </div>
70
70
  </div>
71
71
 
72
- <div class="col-md-6">
72
+ <div class="col-xs-12 col-md-6">
73
73
  <div class="panel panel-default">
74
74
  <div class="panel-heading">
75
75
  <h1 class="panel-title">
@@ -96,11 +96,11 @@
96
96
  </div>
97
97
 
98
98
  <div class="row">
99
- <div data-hook="admin_shipping_method_form_calculator_fields" class="col-md-6">
99
+ <div data-hook="admin_shipping_method_form_calculator_fields" class="col-xs-12 col-md-6">
100
100
  <%= render partial: 'spree/admin/shared/calculator_fields', locals: { f: f } %>
101
101
  </div>
102
102
 
103
- <div class="col-md-6">
103
+ <div class="col-xs-12 col-md-6">
104
104
  <div class="panel panel-default tax_categories">
105
105
  <div class="panel-heading">
106
106
  <h1 class="panel-title">
@@ -1,6 +1,6 @@
1
1
  <%= render partial: 'spree/admin/shared/order_tabs', locals: { current: :state_changes } %>
2
2
 
3
- <% content_for :page_title do %>
3
+ <% content_for :page_title do %>
4
4
  / <%= plural_resource_name(Spree::StateChange) %>
5
5
  / <%= Spree::StateChange.human_attribute_name(:state_changes) %>
6
6
  <% end %>
@@ -21,8 +21,8 @@
21
21
  <% @state_changes.each do |state_change| %>
22
22
  <tr>
23
23
  <td><%= Spree.t("state_machine_states.#{state_change.name}") %></td>
24
- <td><%= state_change.previous_state ? Spree.t(state_change.previous_state) : Spree.t(:previous_state_missing) %></td>
25
- <td><%= Spree.t(state_change.next_state) %></td>
24
+ <td><%= state_change.previous_state ? Spree.t(state_change.previous_state, scope: "#{ state_change.name }_states") : Spree.t(:previous_state_missing) %></td>
25
+ <td><%= Spree.t(state_change.next_state, scope: "#{ state_change.name}_states") %></td>
26
26
  <td>
27
27
  <% if state_change.user %>
28
28
  <% user_login = state_change.user.try(:login) || state_change.user.try(:email) %>
@@ -1,12 +1,12 @@
1
1
  <div data-hook="admin_state_form_fields" class="row">
2
- <div class="col-md-6">
2
+ <div class="col-xs-12 col-md-6">
3
3
  <%= f.field_container :name, class: ['form-group'] do %>
4
4
  <%= f.label :name, Spree.t(:name) %>
5
5
  <%= f.text_field :name, class: 'form-control' %>
6
6
  <%= f.error_message_on :name %>
7
7
  <% end %>
8
8
  </div>
9
- <div class="col-md-6">
9
+ <div class="col-xs-12 col-md-6">
10
10
  <%= f.field_container :abbr, class: ['form-group'] do %>
11
11
  <%= f.label :abbr, Spree.t(:abbreviation) %>
12
12
  <%= f.text_field :abbr, class: 'form-control' %>
@@ -1,6 +1,6 @@
1
1
  <div data-hook="admin_stock_locations_form_fields">
2
2
  <div class="row">
3
- <div class="col-md-9" data-hook="stock_location_names">
3
+ <div class="col-xs-12 col-md-9" data-hook="stock_location_names">
4
4
  <div data-hook="stock_location_name">
5
5
  <%= f.field_container :name, class: ['form-group'] do %>
6
6
  <%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br />
@@ -16,7 +16,7 @@
16
16
  </div>
17
17
  </div>
18
18
 
19
- <div class="col-md-3" data-hook="stock_location_status">
19
+ <div class="col-xs-12 col-md-3" data-hook="stock_location_status">
20
20
  <strong><%= Spree.t(:status) %></strong>
21
21
  <div class="checkbox" data-hook="stock_location_active">
22
22
  <%= label_tag :active do %>
@@ -2,27 +2,27 @@
2
2
  <fieldset>
3
3
  <legend><%= Spree.t(:move_stock_between_locations)%></legend>
4
4
  <div data-hook="admin_stock_movements_form_fields" class="row">
5
- <div class="col-md-5">
5
+ <div class="col-xs-12 col-md-5">
6
6
  <div class="form-group" id="stock_movement_transfer_from_field">
7
7
  <%= label_tag :stock_location_from_id, Spree.t(:transfer_from_location) %>
8
8
  <%= select_tag :stock_location_from_id, options_from_collection_for_select(@stock_locations, :id, :name), class: 'select2' %>
9
9
  </div>
10
10
  </div>
11
- <div class="col-md-5">
11
+ <div class="col-xs-12 col-md-5">
12
12
  <div class="form-group" id="stock_movement_transfer_to_field">
13
13
  <%= label_tag :stock_location_to_id, Spree.t(:transfer_to_location) %>
14
14
  <%= select_tag :stock_location_to_id, options_from_collection_for_select(@stock_locations, :id, :name), class: 'select2' %>
15
15
  </div>
16
16
  </div>
17
17
 
18
- <div class="col-md-5">
18
+ <div class="col-xs-12 col-md-5">
19
19
  <div class="form-group" id="stock_movement_variant_id_field">
20
20
  <%= label_tag 'variant_id', Spree.t(:variant) %>
21
21
  <%= select_tag :variant_id, options_from_collection_for_select(@variants, :id, :name_and_sku), class: 'select2' %>
22
22
  </div>
23
23
  </div>
24
24
 
25
- <div class="col-md-5">
25
+ <div class="col-xs-12 col-md-5">
26
26
  <div class="form-group" id="stock_movement_quantity_field">
27
27
  <%= label_tag 'quantity', Spree.t(:quantity) %>
28
28
  <%= number_field_tag :quantity, 1, class: 'form-control' %>
@@ -12,14 +12,14 @@
12
12
  <%= search_form_for @q, url: admin_stock_transfers_path do |f| %>
13
13
 
14
14
  <div class="row no-marginb">
15
- <div class="col-md-4">
15
+ <div class="col-xs-12 col-md-4">
16
16
  <div class="form-group">
17
17
  <%= f.label :reference_cont, Spree.t(:reference_contains) %>
18
18
  <%= f.text_field :reference_cont, class: 'form-control' %>
19
19
  </div>
20
20
  </div>
21
21
 
22
- <div class="col-md-4">
22
+ <div class="col-xs-12 col-md-4">
23
23
  <div class="form-group">
24
24
  <%= f.label :source_location, Spree.t(:source) %>
25
25
  <%= f.select :source_location_id_eq,
@@ -28,7 +28,7 @@
28
28
  </div>
29
29
  </div>
30
30
 
31
- <div class="col-md-4">
31
+ <div class="col-xs-12 col-md-4">
32
32
  <div class="form-group">
33
33
  <%= f.label :destination_location, Spree.t(:destination) %>
34
34
  <%= f.select :destination_location_id_eq,
@@ -62,14 +62,14 @@
62
62
 
63
63
  <div class="panel-body">
64
64
  <div class="row">
65
- <div class="col-md-8">
65
+ <div class="col-xs-12 col-md-8">
66
66
  <div class="form-group" id="stock_movement_variant_id_field">
67
67
  <%= label_tag 'variant_id', Spree.t(:variant) %>
68
68
  <%= hidden_field_tag 'transfer_variant', {}, {class: 'fullwidth-input'} %>
69
69
  </div>
70
70
  </div>
71
71
 
72
- <div class="col-md-4">
72
+ <div class="col-xs-12 col-md-4">
73
73
  <div class="form-group" id="stock_movement_quantity_field">
74
74
  <%= label_tag :transfer_variant_quantity, Spree.t(:quantity) %>
75
75
  <div class="input-group">
@@ -6,7 +6,7 @@
6
6
  <% end %>
7
7
 
8
8
  <% content_for :page_actions do %>
9
- <%= button_link_to Spree.t(:add_store_credit), spree.new_admin_user_store_credit_path(@user), class: "btn-success", icon: 'add' %>
9
+ <%= button_link_to Spree.t(:add_store_credit), spree.new_admin_user_store_credit_path(@user), class: "btn-success", icon: 'add' if can?(:create, Spree::StoreCredit) %>
10
10
  <% end %>
11
11
 
12
12
  <% if @store_credits.any? %>
@@ -7,7 +7,7 @@
7
7
  </div>
8
8
 
9
9
  <div class="panel-body">
10
- <div class="col-md-6">
10
+ <div class="col-xs-12 col-md-6">
11
11
  <div data-hook="name" class="form-group">
12
12
  <%= f.label :name, Spree.t(:name) %>
13
13
  <%= f.text_field :name, class: 'form-control' %>
@@ -30,7 +30,7 @@
30
30
  </div>
31
31
  </div>
32
32
 
33
- <div class="col-md-6">
33
+ <div class="col-xs-12 col-md-6">
34
34
  <div data-hook="zone" class="form-group">
35
35
  <%= f.label :zone, Spree.t(:zone) %>
36
36
  <%= f.collection_select(:zone_id, @available_zones, :id, :name, {}, {class: 'select2'}) %>
@@ -14,8 +14,8 @@
14
14
  </td>
15
15
  <td><%= taxonomy.name %></td>
16
16
  <td class="actions actions-2 text-right">
17
- <%= link_to_edit taxonomy.id, no_text: true %>
18
- <%= link_to_delete taxonomy, no_text: true %>
17
+ <%= link_to_edit taxonomy.id, no_text: true if can?(:edit, taxonomy) %>
18
+ <%= link_to_delete taxonomy, no_text: true if can?(:delete, taxonomy) %>
19
19
  </td>
20
20
  </tr>
21
21
  <% end %>
@@ -4,7 +4,7 @@
4
4
 
5
5
  <% content_for :page_actions do %>
6
6
  <%= button_link_to Spree.t(:new_taxonomy), new_object_url, class: "btn-success", icon: 'add', id: 'admin_new_taxonomy_link' %>
7
- <% end %>
7
+ <% end if can?(:create, Spree::Taxonomy) %>
8
8
 
9
9
  <% if @taxonomies.any? %>
10
10
  <div id="list-taxonomies" data-hook>
@@ -13,6 +13,6 @@
13
13
  <% else %>
14
14
  <div class="alert alert-info no-objects-found">
15
15
  <%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::Taxonomy)) %>,
16
- <%= link_to Spree.t(:add_one), new_object_url %>!
16
+ <%= link_to Spree.t(:add_one), new_object_url if can?(:create, Spree::Taxonomy) %>!
17
17
  </div>
18
18
  <% end %>
@@ -1,15 +1,15 @@
1
1
  <div data-hook="admin_inside_taxon_form">
2
2
  <div class="row">
3
- <div class="col-md-5">
3
+ <div class="col-xs-12 col-md-5">
4
4
  <%= f.field_container :name, class: ['form-group'] do %>
5
5
  <%= f.label :name, Spree.t(:name) %> <span class="required">*</span>
6
6
  <%= text_field :taxon, :name, class: 'form-control' %>
7
7
  <%= f.error_message_on :name, class: 'error-message' %>
8
8
  <% end %>
9
9
 
10
- <%= f.field_container :permalink_part, class: ['form-group'] do %>
11
- <%= f.label :permalink_part, Spree.t(:permalink) %> <span class="required">*</span>
12
- <%= text_field_tag :permalink_part, @permalink_part, class: 'form-control' %>
10
+ <%= f.field_container :permalink, class: ['form-group'] do %>
11
+ <%= label_tag :permalink_part, Spree.t(:permalink) %> <span class="required">*</span>
12
+ <%= text_field_tag :permalink_part, @permalink_part, class: 'form-control', required: true %>
13
13
  <p class="help-block" id="permalink_part_display">
14
14
  <%= @taxon.permalink.split('/')[0...-1].join('/') + '/' %>
15
15
  </p>
@@ -21,7 +21,7 @@
21
21
  <% end %>
22
22
  </div>
23
23
 
24
- <div class="col-md-7">
24
+ <div class="col-xs-12 col-md-7">
25
25
  <%= f.field_container :description, class: ['form-group'] do %>
26
26
  <%= f.label :description, Spree.t(:description) %>
27
27
  <%= f.text_area :description, class: 'form-control', rows: 6 %>
@@ -6,6 +6,9 @@
6
6
 
7
7
  <%# Because otherwise the form would attempt to use to_param of @taxon %>
8
8
  <% form_url = admin_taxonomy_taxon_path(@taxonomy.id, @taxon.id) %>
9
+
10
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @taxon } %>
11
+
9
12
  <%= form_for [:admin, @taxonomy, @taxon], method: :put, url: form_url, html: { multipart: true } do |f| %>
10
13
  <%= render 'form', f: f %>
11
14
 
@@ -1,12 +1,12 @@
1
1
  <div data-hook="admin_tracker_form_fields" class="row">
2
- <div class="col-md-4" data-hook="analytics_id">
2
+ <div class="col-xs-12 col-md-4" data-hook="analytics_id">
3
3
  <%= f.field_container :analytics_id, class: ["form-group"], "data-hook" => "analytics_id" do %>
4
4
  <%= f.label :analytics_id, Spree.t(:google_analytics_id) %>
5
5
  <%= f.text_field :analytics_id, class: 'form-control' %>
6
6
  <%= f.error_message_on :analytics_id %>
7
7
  <% end %>
8
8
  </div>
9
- <div class="col-md-4">
9
+ <div class="col-xs-12 col-md-4">
10
10
  <div data-hook="active" class="form-group">
11
11
  <%= label_tag nil, Spree.t(:active) %>
12
12
  <div class="radio">
@@ -1,5 +1,5 @@
1
1
  <div class="row">
2
- <div data-hook="bill_address_wrapper" class="col-md-6">
2
+ <div data-hook="bill_address_wrapper" class="col-xs-12 col-md-6">
3
3
  <div class="panel panel-default">
4
4
  <div class="panel-heading">
5
5
  <h1 class="panel-title">
@@ -16,7 +16,7 @@
16
16
  </div>
17
17
  </div>
18
18
 
19
- <div data-hook="ship_address_wrapper" class="col-md-6">
19
+ <div data-hook="ship_address_wrapper" class="col-xs-12 col-md-6">
20
20
  <div class="panel panel-default">
21
21
  <div class="panel-heading">
22
22
  <h1 class="panel-title">
@@ -1,5 +1,5 @@
1
1
  <div data-hook="admin_user_form_fields" class="row">
2
- <div class="col-md-6">
2
+ <div class="col-xs-12 col-md-6">
3
3
  <%= f.field_container :email, class: ['form-group'] do %>
4
4
  <%= f.label :email, Spree.t(:email) %>
5
5
  <%= f.email_field :email, class: 'form-control' %>
@@ -20,7 +20,7 @@
20
20
 
21
21
  </div>
22
22
 
23
- <div data-hook="admin_user_form_password_fields" class="col-md-6">
23
+ <div data-hook="admin_user_form_password_fields" class="col-xs-12 col-md-6">
24
24
  <%= f.field_container :password, class: ['form-group'] do %>
25
25
  <%= f.label :password, Spree.t(:password) %>
26
26
  <%= f.password_field :password, class: 'form-control' %>
@@ -1,3 +1,3 @@
1
1
  <% content_for :page_actions do %>
2
- <%= button_link_to Spree.t(:create_new_order), spree.new_admin_order_path(user_id: @user.id), class: "btn-success", icon: 'add' %>
2
+ <%= button_link_to Spree.t(:create_new_order), spree.new_admin_order_path(user_id: @user.id), class: "btn-success", icon: 'add' if can?(:create, Spree::Order) %>
3
3
  <% end %>
@@ -4,7 +4,7 @@
4
4
 
5
5
  <% content_for :page_actions do %>
6
6
  <%= button_link_to Spree.t(:new_user), new_admin_user_url, class: "btn-success", icon: 'add', id: 'admin_new_user_link' %>
7
- <% end %>
7
+ <% end if can? :create, Spree::user_class %>
8
8
 
9
9
  <% content_for :table_filter_title do %>
10
10
  <%= Spree.t(:search) %>
@@ -18,13 +18,13 @@
18
18
  <%= f.text_field :email_cont, class: "form-control js-quick-search-target" %>
19
19
  </div>
20
20
  <div class="row">
21
- <div class="col-md-6">
21
+ <div class="col-xs-12 col-md-6">
22
22
  <div class="form-group">
23
23
  <%= f.label Spree.t(:first_name) %>
24
24
  <%= f.text_field :bill_address_firstname_cont, class: 'form-control' %>
25
25
  </div>
26
26
  </div>
27
- <div class="col-md-6">
27
+ <div class="col-xs-12 col-md-6">
28
28
  <div class="form-group">
29
29
  <%= f.label Spree.t(:last_name) %>
30
30
  <%= f.text_field :bill_address_lastname_cont, class: 'form-control' %>
@@ -57,8 +57,8 @@
57
57
  <tr id="<%= spree_dom_id user %>" data-hook="admin_users_index_rows">
58
58
  <td class='user_email'><%=link_to user.email, edit_admin_user_url(user) %></td>
59
59
  <td data-hook="admin_users_index_row_actions" class="actions actions-2 text-right">
60
- <%= link_to_edit user, no_text: true %>
61
- <%= link_to_delete user, no_text: true %>
60
+ <%= link_to_edit user, no_text: true if can?(:edit, user) %>
61
+ <%= link_to_delete user, no_text: true if can?(:delete, user) %>
62
62
  </td>
63
63
  </tr>
64
64
  <% end %>
@@ -39,7 +39,7 @@
39
39
  <td class="item-quantity"><%= item.quantity %></td>
40
40
  <td class="item-total"><%= item.money.to_html %></td>
41
41
  <td class="order-state">
42
- <div class="state <%= order.state.downcase %>"><%= Spree.t("order_state.#{order.state.downcase}") %></div>
42
+ <div class="state <%= order.state.downcase %>"><%= Spree.t("order_states.#{order.state.downcase}") %></div>
43
43
  <% if order.payment_state %>
44
44
  <div class="state <%= order.payment_state %>"><%= link_to Spree.t("payment_states.#{order.payment_state}"), admin_order_payments_path(order) %></div>
45
45
  <% end %>
@@ -26,7 +26,7 @@
26
26
  <td class="order-completed-at"><%= order_time(order.completed_at) if order.completed_at %></td>
27
27
  <td class="order-number"><%= link_to order.number, edit_admin_order_path(order) %></td>
28
28
  <td class="order-state">
29
- <div class="state <%= order.state.downcase %>"><%= Spree.t("order_state.#{order.state.downcase}") %></div>
29
+ <div class="state <%= order.state.downcase %>"><%= Spree.t("order_states.#{order.state.downcase}") %></div>
30
30
  <% if order.payment_state %>
31
31
  <div class="state <%= order.payment_state %>"><%= link_to Spree.t("payment_states.#{order.payment_state}"), admin_order_payments_path(order) %></div>
32
32
  <% end %>
@@ -1,5 +1,5 @@
1
1
  <div class="row">
2
- <div data-hook="admin_variant_form_fields" class="col-md-6">
2
+ <div data-hook="admin_variant_form_fields" class="col-xs-12 col-md-6">
3
3
  <div data-hook="variants">
4
4
  <% @product.option_types.each do |option_type| %>
5
5
  <div class="form-group" data-hook="presentation">
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  </div>
40
40
 
41
- <div class="col-md-6" data-hook="admin_variant_form_additional_fields">
41
+ <div class="col-xs-12 col-md-6" data-hook="admin_variant_form_additional_fields">
42
42
  <% [:weight, :height, :width, :depth].each do |field| %>
43
43
  <div class="form-group" data-hook="<%= field %>"><%= f.label field, Spree.t(field) %>
44
44
  <% value = number_with_precision(@variant.send(field), precision: 2) %>
@@ -1,5 +1,5 @@
1
1
  <div class="row">
2
- <div class="col-md-6" data-hook="admin_zone_form_fields">
2
+ <div class="col-xs-12 col-md-6" data-hook="admin_zone_form_fields">
3
3
  <div class="panel panel-default">
4
4
  <div class="panel-heading">
5
5
  <h1 class="panel-title"><%= Spree.t(:general_settings)%></h1>
@@ -42,7 +42,7 @@
42
42
  </div>
43
43
  </div>
44
44
  </div>
45
- <div class="col-md-6">
45
+ <div class="col-xs-12 col-md-6">
46
46
  <%= render partial: 'state_members', locals: { zone_form: zone_form }%>
47
47
  <%= render partial: 'country_members', locals: { zone_form: zone_form } %>
48
48
  </div>
@@ -30,7 +30,7 @@
30
30
  <%#-------------------------------------------------%>
31
31
  <%# Sidebar %>
32
32
  <%#-------------------------------------------------%>
33
- <div class="col-sm-3 col-md-2 hidden-xs sidebar" id="main-sidebar" data-hook="admin_tabs">
33
+ <div class="<%= main_sidebar_classes %>" id="main-sidebar" data-hook="admin_tabs">
34
34
  <%= render partial: 'spree/admin/shared/main_menu' %>
35
35
  </div>
36
36
 
@@ -53,7 +53,7 @@
53
53
  <%#-------------------------------------------------%>
54
54
  <%# Main content %>
55
55
  <%#-------------------------------------------------%>
56
- <div class="<%= content_for?(:sidebar) ? 'with-sidebar col-md-9 col-sm-8' : 'col-sm-12' %>" id="content" data-hook>
56
+ <div class="<%= content_for?(:sidebar) ? 'with-sidebar col-xs-8 col-md-9' : 'col-xs-12' %>" id="content" data-hook>
57
57
  <%= render partial: 'spree/admin/shared/table_filter' if content_for?(:table_filter)%>
58
58
  <%= yield %>
59
59
  </div>
@@ -62,7 +62,7 @@
62
62
  <%# Inner aside %>
63
63
  <%#-------------------------------------------------%>
64
64
  <% if content_for?(:sidebar) %>
65
- <div class="col-md-3 col-sm-4">
65
+ <div class="col-xs-4 col-md-3">
66
66
  <%= render partial: 'spree/admin/shared/sidebar' %>
67
67
  </div>
68
68
  <% end %>
@@ -1 +1 @@
1
- Rails.application.config.assets.precompile += %w( jquery-ui/* admin/* credit_cards/credit_card.gif )
1
+ Rails.application.config.assets.precompile += %w( admin/* credit_cards/credit_card.gif )
@@ -21,7 +21,6 @@ module Spree
21
21
  spree/backend/all*
22
22
  spree/backend/address_states.js
23
23
  jquery.jstree/themes/spree/*
24
- fontawesome-webfont*
25
24
  select2_locale*
26
25
  ]
27
26
  end
@@ -0,0 +1,46 @@
1
+ # Spree's rpsec controller tests get the Spree::ControllerHacks
2
+ # we don't need those for the anonymous controller here, so
3
+ # we call process directly instead of get
4
+ require 'spec_helper'
5
+
6
+ describe Spree::Admin::BaseController, type: :controller do
7
+ controller(Spree::Admin::BaseController) do
8
+ def index
9
+ authorize! :update, Spree::Order
10
+ render plain: 'test'
11
+ end
12
+ end
13
+
14
+ context "unauthorized request" do
15
+ before do
16
+ allow_any_instance_of(Spree::Admin::BaseController).to receive(:spree_current_user).and_return(nil)
17
+ end
18
+
19
+ it "redirects to root" do
20
+ allow(controller).to receive_message_chain(:spree, :root_path).and_return('/root')
21
+ get :index
22
+ expect(response).to redirect_to '/root'
23
+ end
24
+ end
25
+
26
+ context "#generate_api_key" do
27
+ let(:user) { mock_model(Spree.user_class, has_spree_role?: true) }
28
+
29
+ before do
30
+ allow(controller).to receive(:authorize_admin) { true }
31
+ allow(controller).to receive(:try_spree_current_user) { user }
32
+ end
33
+
34
+ it "generates the API key for a user when they visit" do
35
+ expect(user).to receive(:spree_api_key).and_return(nil)
36
+ expect(user).to receive(:generate_spree_api_key!)
37
+ get :index
38
+ end
39
+
40
+ it "does not attempt to regenerate the API key if the key is already set" do
41
+ expect(user).to receive(:spree_api_key).and_return('fake')
42
+ expect(user).not_to receive(:generate_spree_api_key!)
43
+ get :index
44
+ end
45
+ end
46
+ end