spree_backend 2.0.3 → 2.0.4

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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/FontAwesome.otf +0 -0
  3. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  4. data/app/assets/fonts/fontawesome-webfont.svg +399 -0
  5. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  6. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  7. data/app/assets/images/credit_cards/credit_card.gif +0 -0
  8. data/app/assets/javascripts/admin/admin.js.erb +6 -5
  9. data/app/assets/javascripts/admin/option_type_autocomplete.js.erb +1 -2
  10. data/app/assets/javascripts/admin/shipments.js.erb +3 -3
  11. data/app/assets/javascripts/admin/spree_backend.js +2 -2
  12. data/app/assets/javascripts/admin/stock_transfer.js.coffee +3 -3
  13. data/app/assets/javascripts/admin/variant_autocomplete.js.erb +9 -9
  14. data/app/assets/javascripts/admin/zone.js.coffee +8 -4
  15. data/app/assets/stylesheets/admin/components/_date-picker.scss +1 -1
  16. data/app/assets/stylesheets/admin/components/_navigation.scss +12 -8
  17. data/app/assets/stylesheets/admin/components/_sidebar.scss +2 -0
  18. data/app/assets/stylesheets/admin/globals/_variables.scss +53 -47
  19. data/app/assets/stylesheets/admin/globals/_variables_override.scss +2 -2
  20. data/app/assets/stylesheets/admin/plugins/_font-awesome.scss +1475 -0
  21. data/app/assets/stylesheets/admin/plugins/_jstree.scss +0 -1
  22. data/app/assets/stylesheets/admin/plugins/_select2.scss +40 -31
  23. data/app/assets/stylesheets/admin/shared/_forms.scss +7 -2
  24. data/app/assets/stylesheets/admin/shared/_icons.scss +7 -6
  25. data/app/assets/stylesheets/admin/shared/_layout.scss +2 -3
  26. data/app/assets/stylesheets/admin/shared/_tables.scss +7 -0
  27. data/app/assets/stylesheets/admin/spree_backend.css +1 -1
  28. data/app/controllers/spree/admin/orders/customer_details_controller.rb +3 -0
  29. data/app/controllers/spree/admin/orders_controller.rb +8 -0
  30. data/app/controllers/spree/admin/payments_controller.rb +2 -1
  31. data/app/controllers/spree/admin/products_controller.rb +9 -3
  32. data/app/controllers/spree/admin/stock_items_controller.rb +29 -6
  33. data/app/controllers/spree/admin/stock_locations_controller.rb +12 -0
  34. data/app/controllers/spree/admin/stock_movements_controller.rb +4 -31
  35. data/app/controllers/spree/admin/stock_transfers_controller.rb +1 -1
  36. data/app/controllers/spree/admin/tax_categories_controller.rb +1 -1
  37. data/app/controllers/spree/admin/variants_controller.rb +1 -2
  38. data/app/helpers/spree/admin/orders_helper.rb +4 -0
  39. data/app/views/spree/admin/mail_methods/_form.html.erb +3 -7
  40. data/app/views/spree/admin/orders/_shipment.html.erb +96 -126
  41. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +33 -0
  42. data/app/views/spree/admin/orders/edit.html.erb +10 -4
  43. data/app/views/spree/admin/orders/index.html.erb +1 -1
  44. data/app/views/spree/admin/payments/_form.html.erb +3 -1
  45. data/app/views/spree/admin/product_properties/index.html.erb +1 -1
  46. data/app/views/spree/admin/products/_add_stock_form.html.erb +31 -2
  47. data/app/views/spree/admin/products/_form.html.erb +2 -2
  48. data/app/views/spree/admin/products/edit.html.erb +5 -3
  49. data/app/views/spree/admin/products/index.html.erb +4 -4
  50. data/app/views/spree/admin/products/new.html.erb +10 -0
  51. data/app/views/spree/admin/products/stock.html.erb +17 -17
  52. data/app/views/spree/admin/promotions/_promotion_action.html.erb +2 -1
  53. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +1 -0
  54. data/app/views/spree/admin/prototypes/index.html.erb +1 -1
  55. data/app/views/spree/admin/shared/_product_tabs.html.erb +10 -9
  56. data/app/views/spree/admin/shared/_routes.html.erb +4 -0
  57. data/app/views/spree/admin/shared/_tabs.html.erb +1 -1
  58. data/app/views/spree/admin/shared/_translations.html.erb +27 -25
  59. data/app/views/spree/admin/shipping_methods/_form.html.erb +9 -4
  60. data/app/views/spree/admin/states/index.html.erb +1 -1
  61. data/app/views/spree/admin/stock_items/destroy.js.erb +1 -0
  62. data/app/views/spree/admin/stock_locations/_form.html.erb +8 -0
  63. data/app/views/spree/admin/stock_locations/index.html.erb +35 -31
  64. data/app/views/spree/admin/stock_locations/new.html.erb +2 -2
  65. data/app/views/spree/admin/stock_movements/index.html.erb +3 -6
  66. data/app/views/spree/admin/stock_transfers/index.html.erb +1 -1
  67. data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
  68. data/app/views/spree/admin/stock_transfers/show.html.erb +1 -2
  69. data/app/views/spree/admin/taxonomies/edit.erb +1 -1
  70. data/app/views/spree/admin/variants/_autocomplete.js.erb +1 -1
  71. data/app/views/spree/admin/zones/_member_type.html.erb +3 -3
  72. data/app/views/spree/layouts/admin.html.erb +9 -15
  73. data/config/routes.rb +2 -2
  74. data/lib/spree/backend.rb +1 -0
  75. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +2 -2
  76. data/vendor/assets/javascripts/jquery.jstree/themes/apple/style.css +2 -2
  77. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +5 -5
  78. metadata +35 -21
  79. data/app/assets/images/admin/bg/spree_50.png +0 -0
  80. data/app/assets/stylesheets/admin/plugins/font-awesome.scss +0 -303
  81. data/app/views/spree/admin/shared/_stock_movement_form.html.erb +0 -30
  82. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
  83. data/vendor/assets/fonts/fontawesome-webfont.svg +0 -255
  84. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  85. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  86. data/vendor/assets/stylesheets/font-awesome-ie7.css +0 -645
  87. data/vendor/assets/stylesheets/font-awesome.css.erb +0 -303
@@ -26,7 +26,6 @@
26
26
  width: 90%;
27
27
  height: auto;
28
28
  line-height: inherit;
29
- text-transform: uppercase;
30
29
  padding: 5px 0 5px 10px;
31
30
  margin-bottom: 10px;
32
31
 
@@ -27,23 +27,6 @@
27
27
  @extend [class^="icon-"]:before;
28
28
  margin-top: 2px;
29
29
  }
30
-
31
- div {
32
- background-image: none !important;
33
- background-color: transparent !important;
34
- border-radius: 0 !important;
35
- border: none !important;
36
-
37
- b {
38
- background-image: none !important;
39
- display: inherit !important;
40
- width: auto !important;
41
- height: auto !important;
42
- margin-top: 10px;
43
- @extend .icon-caret-down;
44
- @extend [class^="icon-"]:before;
45
- }
46
- }
47
30
  }
48
31
 
49
32
  &.select2-container-active {
@@ -68,19 +51,25 @@
68
51
  }
69
52
 
70
53
  .select2-search {
71
- @extend [class^="icon-"]:before;
72
54
  @extend .icon-search;
55
+
73
56
  font-size: 100%;
74
- padding-left: 15px;
75
57
  color: darken($color-border, 15);
58
+ padding: 0 9px 0 0;
59
+
60
+ &:before {
61
+ @extend [class^="icon-"]:before;
62
+
63
+ position: absolute;
64
+ top: 13px;
65
+ left: 13px;
66
+ }
76
67
 
77
68
  input {
78
69
  @extend input[type="text"];
79
- margin-top: 5px;
80
- margin-left: -23px;
81
- padding-left: 25px;
82
- padding-top: 6px;
83
- padding-bottom: 6px;
70
+
71
+ padding: 6px 0 6px 25px;
72
+ margin: 5px 0 0 5px;
84
73
  font-family: $base-font-family;
85
74
  font-size: 90%;
86
75
  box-shadow: none;
@@ -88,7 +77,27 @@
88
77
  }
89
78
  }
90
79
 
91
- .select2-results {
80
+ .select2-container .select2-choice .select2-arrow {
81
+ background-image: none;
82
+ background: transparent;
83
+ border: 0;
84
+
85
+ b {
86
+ padding-top: 7px;
87
+ display: block;
88
+ width: 100%;
89
+ height: 100%;
90
+ background: none;
91
+ font-family: FontAwesome;
92
+ font-weight: 200 !important;
93
+
94
+ &:before {
95
+ content: "\f0d7";
96
+ }
97
+ }
98
+ }
99
+
100
+ .select2-results {
92
101
  padding-left: 0 !important;
93
102
 
94
103
  li {
@@ -113,7 +122,7 @@
113
122
  padding: 5px;
114
123
  background-color: transparent;
115
124
  color: $color-body-text;
116
- text-align: center;
125
+ text-align: center;
117
126
  font-weight: $font-weight-bold;
118
127
  text-transform: uppercase;
119
128
  }
@@ -137,7 +146,7 @@
137
146
  @extend input[type="text"];
138
147
  padding: 6px 3px 3px 3px;
139
148
  box-shadow: none;
140
- background-image: none;
149
+ background-image: none !important;
141
150
 
142
151
  .select2-search-choice {
143
152
  @include border-radius($border-radius);
@@ -145,9 +154,9 @@
145
154
  background-image: none;
146
155
  background-color: $color-sel-bg;
147
156
  border: none;
148
- box-shadow: none;
149
- color: $color-1 !important;
150
- font-size: 85%;
157
+ box-shadow: none;
158
+ color: $color-1 !important;
159
+ font-size: 85%;
151
160
 
152
161
  &:hover {
153
162
  background-color: $color-sel-hover-bg;
@@ -173,4 +182,4 @@ label .select2-container {
173
182
  font-weight: normal;
174
183
  }
175
184
  }
176
- }
185
+ }
@@ -61,8 +61,11 @@ button, .button {
61
61
  background-color: $color-btn-bg;
62
62
  color: $color-btn-text;
63
63
  text-transform: uppercase;
64
- font-size: 85%;
65
- font-weight: 600;
64
+ font-weight: 600 !important;
65
+
66
+ &:before {
67
+ font-weight: normal !important;
68
+ }
66
69
 
67
70
  &:visited, &:active, &:focus { color: $color-btn-text }
68
71
 
@@ -179,7 +182,9 @@ fieldset {
179
182
  text-transform: uppercase;
180
183
  text-align: center;
181
184
  padding: 8px 15px;
185
+
182
186
  -webkit-font-smoothing: antialiased;
187
+ -moz-osx-font-smoothing: grayscale;
183
188
 
184
189
  i {
185
190
  color: $color-link;
@@ -1,22 +1,23 @@
1
1
  // Some fixes for fontwesome stylesheets
2
2
  [class^="icon-"], [class*=" icon-"] {
3
+ &:before {
4
+ padding-right: 5px;
5
+ }
6
+
3
7
  &.button, &.icon_link {
4
8
  width: auto;
5
9
 
6
10
  &:before {
7
- padding-right: 5px;
11
+ padding-top: 3px;
8
12
  }
9
13
  }
10
14
  }
11
15
 
12
- [class^="icon-"]:before, [class*=" icon-"]:before {
13
- -webkit-font-smoothing: antialiased;
14
- }
15
16
  .icon-email:before { @extend .icon-envelope:before }
16
17
  .icon-resume:before { @extend .icon-refresh:before }
17
18
 
18
- .icon-cancel:before,
19
+ .icon-cancel:before,
19
20
  .icon-void:before { @extend .icon-remove:before }
20
21
 
21
22
  .icon-capture:before { @extend .icon-ok:before }
22
- .icon-credit:before { @extend .icon-ok:before }
23
+ .icon-credit:before { @extend .icon-ok:before }
@@ -69,16 +69,15 @@
69
69
 
70
70
  .page-title {
71
71
  font-size: 20px;
72
+
72
73
  -webkit-font-smoothing: antialiased;
74
+ -moz-osx-font-smoothing: grayscale;
73
75
  }
74
76
  .page-actions {
75
77
  text-align: right;
76
78
  form {
77
79
  display: inline-block;
78
80
  }
79
- .button {
80
- font-size: 85%;
81
- }
82
81
  }
83
82
  }
84
83
 
@@ -26,6 +26,12 @@ table {
26
26
  }
27
27
  }
28
28
 
29
+ .handle {
30
+ display: block !important;
31
+ text-align: center;
32
+ padding-right: 0;
33
+ }
34
+
29
35
  &.actions {
30
36
  background-color: transparent;
31
37
  border: none !important;
@@ -126,6 +132,7 @@ table {
126
132
 
127
133
  tbody {
128
134
  tr {
135
+ &:first-child th,
129
136
  &:first-child td {
130
137
  border-top: 1px solid $color-border;
131
138
  }
@@ -8,7 +8,7 @@
8
8
  *= require responsive-tables
9
9
  *= require normalize
10
10
  *= require skeleton
11
- *= require jquery-ui.datepicker
11
+ *= require jquery.ui.datepicker
12
12
  *= require jquery.powertip
13
13
  *= require select2
14
14
 
@@ -17,6 +17,9 @@ module Spree
17
17
 
18
18
  def update
19
19
  if @order.update_attributes(params[:order])
20
+ if params[:guest_checkout] == "false"
21
+ @order.associate_user!(Spree.user_class.find_by_email(@order.email))
22
+ end
20
23
  while @order.next; end
21
24
 
22
25
  @order.shipments.map &:refresh_rates
@@ -46,11 +46,19 @@ module Spree
46
46
 
47
47
  def new
48
48
  @order = Order.create
49
+ @order.created_by = try_spree_current_user
50
+ @order.save
49
51
  redirect_to edit_admin_order_url(@order)
50
52
  end
51
53
 
52
54
  def edit
53
55
  @order.shipments.map &:refresh_rates
56
+ # Transition as far as we can go
57
+ while @order.next; end
58
+ # The payment step shows an error of 'No pending payments'
59
+ # Clearing the errors from the order object will stop this error
60
+ # appearing on the edit page where we don't want it to.
61
+ @order.errors.clear
54
62
  end
55
63
 
56
64
  def update
@@ -76,7 +76,7 @@ module Spree
76
76
 
77
77
  def load_data
78
78
  @amount = params[:amount] || load_order.total
79
- @payment_methods = PaymentMethod.available
79
+ @payment_methods = PaymentMethod.available(:back_end)
80
80
  if @payment and @payment.payment_method
81
81
  @payment_method = @payment.payment_method
82
82
  else
@@ -101,6 +101,7 @@ module Spree
101
101
  def load_order
102
102
  @order = Order.find_by_number!(params[:order_id])
103
103
  authorize! action, @order
104
+ @order
104
105
  end
105
106
 
106
107
  def load_payment
@@ -29,7 +29,7 @@ module Spree
29
29
 
30
30
  def destroy
31
31
  @product = Product.find_by_permalink!(params[:id])
32
- @product.delete
32
+ @product.destroy
33
33
 
34
34
  flash[:success] = Spree.t('notice_messages.product_deleted')
35
35
 
@@ -55,6 +55,10 @@ module Spree
55
55
  @variants = @product.variants
56
56
  @variants = [@product.master] if @variants.empty?
57
57
  @stock_locations = StockLocation.accessible_by(current_ability, :read)
58
+ if @stock_locations.empty?
59
+ flash[:error] = Spree.t(:stock_management_requires_a_stock_location)
60
+ redirect_to admin_stock_locations_path
61
+ end
58
62
  end
59
63
 
60
64
  protected
@@ -80,8 +84,10 @@ module Spree
80
84
  params[:q][:deleted_at_null] ||= "1"
81
85
 
82
86
  params[:q][:s] ||= "name asc"
83
-
84
- @search = super.ransack(params[:q])
87
+ @collection = super
88
+ @collection = @collection.with_deleted if params[:q].delete(:deleted_at_null).blank?
89
+ # @search needs to be defined as this is passed to search_form_for
90
+ @search = @collection.ransack(params[:q])
85
91
  @collection = @search.result.
86
92
  group_by_products_id.
87
93
  includes(product_includes).
@@ -1,7 +1,7 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class StockItemsController < Spree::Admin::BaseController
4
- before_filter :determine_backorderable
4
+ before_filter :determine_backorderable, only: :update
5
5
 
6
6
  def update
7
7
  stock_item.save
@@ -10,15 +10,38 @@ module Spree
10
10
  end
11
11
  end
12
12
 
13
- private
13
+ def create
14
+ variant = Variant.find(params[:variant_id])
15
+ stock_location = StockLocation.find(params[:stock_location_id])
16
+ stock_movement = stock_location.stock_movements.build(params[:stock_movement])
17
+ stock_movement.stock_item = stock_location.set_up_stock_item(variant)
18
+
19
+ if stock_movement.save
20
+ flash[:success] = flash_message_for(stock_movement, :successfully_created)
21
+ else
22
+ flash[:error] = Spree.t(:could_not_create_stock_movement)
23
+ end
14
24
 
15
- def stock_item
16
- @stock_item ||= StockItem.find(params[:id])
25
+ redirect_to :back
17
26
  end
18
27
 
19
- def determine_backorderable
20
- stock_item.backorderable = params[:stock_item].present? && params[:stock_item][:backorderable].present? ? true : false
28
+ def destroy
29
+ stock_item.destroy
30
+
31
+ respond_with(@stock_item) do |format|
32
+ format.html { redirect_to :back }
33
+ format.js
34
+ end
21
35
  end
36
+
37
+ private
38
+ def stock_item
39
+ @stock_item ||= StockItem.find(params[:id])
40
+ end
41
+
42
+ def determine_backorderable
43
+ stock_item.backorderable = params[:stock_item].present? && params[:stock_item][:backorderable].present?
44
+ end
22
45
  end
23
46
  end
24
47
  end
@@ -2,6 +2,18 @@ module Spree
2
2
  module Admin
3
3
  class StockLocationsController < ResourceController
4
4
 
5
+ new_action.before :set_country
6
+
7
+ private
8
+
9
+ def set_country
10
+ if Spree::Config[:default_country_id].present?
11
+ @stock_location.country = Spree::Country.find(Spree::Config[:default_country_id])
12
+ else
13
+ @stock_location.country = Spree::Country.find_by_iso('US')
14
+ end
15
+ end
16
+
5
17
  end
6
18
  end
7
19
  end
@@ -13,42 +13,16 @@ module Spree
13
13
  end
14
14
 
15
15
  def create
16
- if params[:stock_movement][:stock_location_id].present?
17
- variant = Variant.find(params[:stock_item].delete(:variant_id))
18
- location = StockLocation.find(params[:stock_movement].delete(:stock_location_id))
19
- @stock_movement = location.stock_movements.build(params[:stock_movement])
20
- @stock_movement.stock_item = location.stock_items.where(variant_id: variant).first_or_create
21
- @stock_movement.save ? flash[:success] = flash_message_for(@stock_movement, :successfully_created) : flash[:error] = Spree.t(:could_not_create_stock_movement)
22
- redirect_to :back
23
- else
24
- @stock_movement = stock_location.stock_movements.build(params[:stock_movement])
25
- @stock_movement.save
26
- flash[:success] = flash_message_for(@stock_movement, :successfully_created)
27
- redirect_to admin_stock_location_stock_movements_path(stock_location)
28
- end
16
+ @stock_movement = stock_location.stock_movements.build(params[:stock_movement])
17
+ @stock_movement.save
18
+ flash[:success] = flash_message_for(@stock_movement, :successfully_created)
19
+ redirect_to admin_stock_location_stock_movements_path(stock_location)
29
20
  end
30
21
 
31
22
  def edit
32
23
  @stock_movement = StockMovement.find(params[:id])
33
24
  end
34
25
 
35
- def update
36
- @stock_movement = StockMovement.find(params[:id])
37
- if @stock_movement.update_attributes(params[:stock_movement])
38
- flash[:success] = flash_message_for(@stock_movement, :successfully_updated)
39
- redirect_to admin_stock_location_stock_movements_path(stock_location)
40
- else
41
- render :edit
42
- end
43
- end
44
-
45
- def destroy
46
- stock_movement = StockMovement.find(params[:id])
47
- flash[:success] = flash_message_for(stock_movement, :successfully_removed)
48
- stock_movement.destroy
49
- redirect_to admin_stock_location_stock_movements_path(stock_location)
50
- end
51
-
52
26
  private
53
27
 
54
28
  def stock_location
@@ -57,4 +31,3 @@ module Spree
57
31
  end
58
32
  end
59
33
  end
60
-
@@ -31,7 +31,7 @@ module Spree
31
31
  destination_location,
32
32
  variants)
33
33
 
34
- flash[:success] = t(:stock_successfully_transferred)
34
+ flash[:success] = Spree.t(:stock_successfully_transferred)
35
35
  redirect_to admin_stock_transfer_path(stock_transfer)
36
36
  end
37
37