spree_backend 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
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