spree 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of spree might be problematic. Click here for more details.

Files changed (181) hide show
  1. data/CHANGELOG +30 -0
  2. data/CONTRIBUTORS +38 -20
  3. data/app/controllers/admin/creditcard_payments_controller.rb +10 -3
  4. data/app/controllers/admin/orders_controller.rb +17 -16
  5. data/app/controllers/admin/products_controller.rb +12 -14
  6. data/app/controllers/admin/reports_controller.rb +12 -14
  7. data/app/controllers/admin/users_controller.rb +10 -5
  8. data/app/controllers/admin/zones_controller.rb +4 -1
  9. data/app/controllers/application.rb +0 -1
  10. data/app/controllers/checkout_controller.rb +96 -0
  11. data/app/controllers/content_controller.rb +11 -1
  12. data/app/controllers/orders_controller.rb +12 -33
  13. data/app/controllers/products_controller.rb +12 -7
  14. data/app/controllers/spree/base_controller.rb +1 -1
  15. data/app/controllers/states_controller.rb +14 -2
  16. data/app/controllers/taxons_controller.rb +6 -2
  17. data/app/controllers/users_controller.rb +9 -6
  18. data/app/helpers/application_helper.rb +1 -11
  19. data/app/helpers/products_helper.rb +3 -1
  20. data/app/helpers/spree/base_helper.rb +0 -26
  21. data/app/models/address.rb +3 -3
  22. data/app/models/app_configuration.rb +1 -0
  23. data/app/models/country.rb +4 -0
  24. data/app/models/creditcard.rb +6 -1
  25. data/app/models/creditcard_payment.rb +1 -1
  26. data/app/models/inventory_unit.rb +4 -1
  27. data/app/models/order.rb +37 -21
  28. data/app/models/product.rb +19 -8
  29. data/{vendor/extensions/shipping/app → app}/models/shipment.rb +20 -4
  30. data/{vendor/extensions/shipping/app → app}/models/shipping_category.rb +0 -0
  31. data/{vendor/extensions/shipping/app → app}/models/shipping_method.rb +6 -4
  32. data/app/models/state.rb +5 -0
  33. data/app/models/user.rb +4 -2
  34. data/app/models/variant.rb +19 -1
  35. data/app/presenters/checkout_presenter.rb +58 -0
  36. data/app/views/admin/creditcard_payments/edit.html.erb +1 -1
  37. data/app/views/admin/option_types/available.html.erb +1 -1
  38. data/app/views/admin/orders/index.html.erb +28 -18
  39. data/app/views/admin/orders/show.html.erb +1 -1
  40. data/app/views/admin/payments/index.html.erb +1 -1
  41. data/app/views/admin/products/_images.html.erb +1 -1
  42. data/app/views/admin/products/index.html.erb +17 -13
  43. data/app/views/admin/users/index.html.erb +8 -8
  44. data/app/views/admin/zones/index.html.erb +5 -2
  45. data/app/views/checkout/_form.html.erb +165 -0
  46. data/app/views/{creditcards → checkout}/cvv.html.erb +1 -1
  47. data/app/views/checkout/new.html.erb +6 -0
  48. data/app/views/layouts/admin.html.erb +2 -3
  49. data/app/views/layouts/application.html.erb +1 -1
  50. data/app/views/orders/_form.html.erb +6 -4
  51. data/app/views/orders/_google_order.html.erb +24 -0
  52. data/app/views/orders/_line_item.html.erb +2 -1
  53. data/app/views/orders/show.html.erb +4 -1
  54. data/app/views/products/index.html.erb +2 -1
  55. data/app/views/products/show.html.erb +4 -4
  56. data/app/views/shared/_footer.html.erb +12 -1
  57. data/app/views/shared/_login.html.erb +1 -1
  58. data/app/views/shared/_order_details.html.erb +8 -9
  59. data/app/views/shared/_products.html.erb +1 -1
  60. data/app/views/shared/_report_criteria.html.erb +28 -28
  61. data/app/views/states/index.js.erb +10 -1
  62. data/config/environment.rb +10 -4
  63. data/config/initializers/searchlogic.rb +6 -0
  64. data/config/locales/de.yml +14 -0
  65. data/config/locales/en-GB.yml +20 -6
  66. data/config/locales/en-US.yml +20 -4
  67. data/config/locales/es.yml +14 -0
  68. data/config/locales/fr-FR.yml +463 -0
  69. data/config/locales/fr-FR_rails.yml +115 -0
  70. data/config/locales/it.yml +14 -0
  71. data/config/locales/nb-NO.yml +457 -0
  72. data/config/locales/nb-NO_rails.yml +105 -0
  73. data/config/locales/pl.yml +14 -0
  74. data/config/locales/pt-BR.yml +14 -0
  75. data/config/locales/pt-PT.yml +14 -0
  76. data/config/locales/ru-RU.yml +458 -0
  77. data/config/locales/ru-RU_rails.yml +154 -0
  78. data/config/routes.rb +11 -4
  79. data/db/migrate/20090204200045_add_order_permalink.rb +13 -0
  80. data/db/migrate/20090225231119_add_more_needed_keys_items_and_conf.rb +19 -0
  81. data/db/migrate/20090302221152_give_all_users_user_role.rb +13 -0
  82. data/db/sample/orders.yml +1 -1
  83. data/lib/generators/instance/instance_generator.rb +1 -1
  84. data/lib/spree.rb +1 -1
  85. data/lib/spree/setup.rb +1 -1
  86. data/lib/tasks/database.rake +5 -2
  87. data/lib/tasks/release.rake +1 -1
  88. data/lib/tasks/upgrade.rake +11 -0
  89. data/public/assets/products/1009/mini/sean.jpg +0 -0
  90. data/public/assets/products/1009/original/sean.jpg +0 -0
  91. data/public/assets/products/1009/product/sean.jpg +0 -0
  92. data/public/assets/products/1009/small/sean.jpg +0 -0
  93. data/public/images/ajax_loader.gif +0 -0
  94. data/public/javascripts/checkout.js +284 -0
  95. data/public/javascripts/jquery-1.3.2.min.js +19 -0
  96. data/public/javascripts/jquery.validate.pack.js +15 -0
  97. data/public/stylesheets/checkout.css +25 -0
  98. data/public/stylesheets/spree-admin.css +6 -2
  99. data/public/stylesheets/spree.css +419 -432
  100. data/spec/controllers/countries_controller_spec.rb +3 -2
  101. data/spec/controllers/orders_controller_spec.rb +7 -5
  102. data/spec/controllers/states_controller_spec.rb +4 -2
  103. data/spec/models/creditcard_payment_spec.rb +6 -2
  104. data/spec/models/order_spec.rb +164 -157
  105. data/spec/models/product_spec.rb +2 -2
  106. data/vendor/extensions/payment_gateway/db/migrate/20090218091936_create_protx_gateway.rb +18 -0
  107. data/vendor/extensions/payment_gateway/lib/spree/payment_gateway.rb +7 -5
  108. data/vendor/extensions/shipping/app/controllers/admin/shipments_controller.rb +6 -5
  109. data/vendor/extensions/shipping/app/views/admin/shipments/index.html.erb +1 -1
  110. data/vendor/extensions/shipping/config/locales/nb-NO.yml +25 -0
  111. data/vendor/extensions/shipping/config/locales/ru-RU.yml +25 -0
  112. data/vendor/extensions/shipping/db/sample/shipping_methods.yml +5 -1
  113. data/vendor/extensions/shipping/db/sample/zone_members.yml +9 -1
  114. data/vendor/extensions/shipping/db/sample/zones.yml +4 -1
  115. data/vendor/extensions/shipping/lib/spree/shipping_calculator.rb +0 -16
  116. data/vendor/extensions/shipping/shipping_extension.rb +0 -15
  117. data/vendor/extensions/shipping/spec/models/shipping_method_spec.rb +16 -10
  118. data/vendor/extensions/shipping/spec/models/shipping_order_spec.rb +3 -17
  119. data/vendor/extensions/tax_calculator/config/locales/nb-NO.yml +30 -0
  120. data/vendor/extensions/tax_calculator/spec/models/{order_spec.rb → order_tax_calc_spec.rb} +2 -2
  121. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/.specification +3 -5
  122. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/LICENSE +0 -0
  123. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/README +9 -2
  124. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/Rakefile +0 -0
  125. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/lib/active_presenter.rb +0 -0
  126. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/lib/active_presenter/base.rb +38 -8
  127. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/lib/active_presenter/version.rb +1 -1
  128. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/lib/tasks/doc.rake +0 -0
  129. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/lib/tasks/gem.rake +0 -0
  130. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/test/base_test.rb +66 -30
  131. data/vendor/gems/{active_presenter-0.0.4 → active_presenter-0.0.6}/test/test_helper.rb +36 -0
  132. data/vendor/plugins/attribute_fu/lib/attribute_fu/associated_form_helper.rb +12 -4
  133. data/vendor/plugins/find_by_param/MIT-LICENSE +1 -1
  134. data/vendor/plugins/find_by_param/{README → README.markdown} +7 -1
  135. data/vendor/plugins/find_by_param/init.rb +0 -1
  136. data/vendor/plugins/find_by_param/lib/find_by_param.rb +23 -87
  137. data/vendor/plugins/find_by_param/test/find_by_param_test.rb +22 -8
  138. data/vendor/plugins/find_by_param/test/test_helper.rb +0 -1
  139. metadata +65 -193
  140. data/app/controllers/creditcards_controller.rb +0 -73
  141. data/app/models/order_filter.rb +0 -28
  142. data/app/models/user_filter.rb +0 -6
  143. data/app/views/creditcards/_form_credit_card.html.erb +0 -30
  144. data/app/views/creditcards/new.html.erb +0 -25
  145. data/app/views/shared/_paginate.html.erb +0 -34
  146. data/lib/plugins/paginating_find/CHANGELOG +0 -120
  147. data/lib/plugins/paginating_find/README +0 -89
  148. data/lib/plugins/paginating_find/init.rb +0 -2
  149. data/lib/plugins/paginating_find/lib/paginating_find.rb +0 -138
  150. data/lib/plugins/paginating_find/lib/paging_enumerator.rb +0 -158
  151. data/lib/plugins/paginating_find/lib/paging_helper.rb +0 -47
  152. data/lib/plugins/paginating_find/test_app/Rakefile +0 -10
  153. data/lib/plugins/paginating_find/test_app/app/controllers/application.rb +0 -2
  154. data/lib/plugins/paginating_find/test_app/config/boot.rb +0 -44
  155. data/lib/plugins/paginating_find/test_app/config/database.yml +0 -6
  156. data/lib/plugins/paginating_find/test_app/config/environment.rb +0 -53
  157. data/lib/plugins/paginating_find/test_app/config/environments/test.rb +0 -19
  158. data/lib/plugins/paginating_find/test_app/config/routes.rb +0 -22
  159. data/lib/plugins/paginating_find/test_app/script/breakpointer +0 -3
  160. data/lib/plugins/paginating_find/test_app/script/console +0 -3
  161. data/lib/plugins/paginating_find/test_app/test/fixtures/articles.yml +0 -19
  162. data/lib/plugins/paginating_find/test_app/test/fixtures/authors.yml +0 -7
  163. data/lib/plugins/paginating_find/test_app/test/fixtures/edits.yml +0 -11
  164. data/lib/plugins/paginating_find/test_app/test/fixtures/models.rb +0 -18
  165. data/lib/plugins/paginating_find/test_app/test/test_helper.rb +0 -33
  166. data/lib/plugins/paginating_find/test_app/test/unit/abstract_test.rb +0 -7
  167. data/lib/plugins/paginating_find/test_app/test/unit/group_test.rb +0 -40
  168. data/lib/plugins/paginating_find/test_app/test/unit/paginating_find_test.rb +0 -194
  169. data/lib/plugins/paginating_find/test_app/test/unit/paging_enumerator_test.rb +0 -143
  170. data/public/assets/products/1012/mini/bt.jpg +0 -0
  171. data/public/assets/products/1012/original/bt.jpg +0 -0
  172. data/public/assets/products/1012/product/bt.jpg +0 -0
  173. data/public/assets/products/1012/small/bt.jpg +0 -0
  174. data/spec/views/products/index.html.erb_spec.rb +0 -46
  175. data/spec/views/products/show.html.erb_spec.rb +0 -46
  176. data/vendor/extensions/shipping/app/controllers/shipments_controller.rb +0 -96
  177. data/vendor/extensions/shipping/app/helpers/shipments_helper.rb +0 -20
  178. data/vendor/extensions/shipping/app/views/orders/fatal_shipping.html.erb +0 -6
  179. data/vendor/extensions/shipping/app/views/shipments/_form.html.erb +0 -46
  180. data/vendor/extensions/shipping/app/views/shipments/edit.html.erb +0 -57
  181. data/vendor/extensions/shipping/app/views/shipments/new.html.erb +0 -10
@@ -1,96 +0,0 @@
1
- class ShipmentsController < Spree::BaseController
2
- before_filter :login_required
3
- before_filter :load_data, :except => :country_changed
4
- before_filter :load_shipping_methods, :only => :edit
5
- before_filter :prevent_orphaned_shipments, :only => [:new, :create]
6
-
7
- resource_controller
8
-
9
- belongs_to :order
10
- actions :new, :create
11
-
12
- # override r_c defaults so we can handle special presenter logic
13
- def create
14
- build_object
15
- load_object
16
- state_check("shipment")
17
- unless @shipment_presenter.valid?
18
- render :action => "new" and return
19
- end
20
- @shipment = @order.shipments.new(:address => @shipment_presenter.address)
21
- # choose first shipping method just as a starting point (user can change in next step)
22
- @shipment.shipping_method = @shipment.shipping_methods.first
23
- @shipment.save
24
- @order.next!
25
- redirect_to edit_order_shipment_url(@order, @shipment)
26
- end
27
-
28
- # override r_c defaults so we can handle special presenter logic
29
- def update
30
- if params[:method_id]
31
- state_check("shipping_method")
32
- shipping_method = ShippingMethod.find(params[:method_id])
33
- @shipment.update_attribute(:shipping_method, shipping_method)
34
- calculator = @shipment.shipping_method.shipping_calculator.constantize.new
35
- @order.update_attribute(:ship_amount, calculator.calculate_shipping(@shipment))
36
- @order.next!
37
- end
38
- redirect_to checkout_order_url(@order)
39
- end
40
-
41
- def country_changed
42
- country_id = params[:shipment_presenter][:address_country_id]
43
- @states = State.find_all_by_country_id(country_id, :order => 'name')
44
- render :partial => "shared/states", :locals => {:presenter_type => "shipment"}
45
- end
46
-
47
- private
48
- def build_object
49
- @object ||= end_of_association_chain.send parent? ? :build : :new, object_params
50
- if params[:shipment_presenter]
51
- @shipment_presenter = ShipmentPresenter.new(params[:shipment_presenter])
52
- else
53
- @shipment_presenter = ShipmentPresenter.new(:address => Address.new(:country_id => @selected_country_id))
54
- end
55
- end
56
-
57
- def load_data
58
- load_object
59
- @selected_country_id = params[:shipment_presenter][:address_country_id].to_i if params.has_key?('shipment_presenter')
60
- @selected_country_id ||= Spree::Config[:default_country_id]
61
- @states = State.find_all_by_country_id(@selected_country_id, :order => 'name')
62
- @countries = @order.shipping_countries
63
- end
64
-
65
- def state_check(state)
66
- if @order.checkout_complete
67
- # if order has already completed user shouldn't be able to edit shipping information
68
- redirect_to checkout_order_url(@order) and return
69
- else
70
- # reset the state to the appropriate value (in case user has hit back button from some other state)
71
- @order.update_attribute("state", state) unless @order.state == state
72
- end
73
- end
74
-
75
- def prevent_orphaned_shipments
76
- # right now we assume only one shipment and we're going to clear out any existing (abandoned) shipments
77
- # in case user has edited cart in the meantime (or perhaps they have started the checkout process over)
78
- @order.shipments.clear
79
- end
80
-
81
- def load_shipping_methods
82
- @shipping_methods = @shipment.shipping_methods
83
- # check that the rate for each method is available - if we encounter an error, we can inform the user gracefully
84
- # (instead of having the next view just crash when asked the rate)
85
- begin
86
- @shipping_methods.each do |shipping_method|
87
- rate = shipping_method.calculate_shipping(@shipment)
88
- end
89
- rescue Spree::ShippingError => se
90
- # We cannot recover from this error (for now.) Send back to the previous step (and alert the user)
91
- flash[:error] = se.message
92
- redirect_to fatal_shipping_order_url(@order)
93
- end
94
- end
95
-
96
- end
@@ -1,20 +0,0 @@
1
- module ShipmentsHelper
2
- # Creates a radio button to represent a choice of shipping method. The choice will be disabled if for some
3
- # reason the rate is nil (perhaps the web service didn't return a quote for that method for some reason.)
4
- def shipping_radio(shipping_method, shipment)
5
- cost = shipping_method.calculate_shipping(shipment)
6
- checked = @shipment.shipping_method == shipping_method || @default_method == shipping_method
7
- if cost
8
- radio = "<input type='radio' name='method_id' value='#{shipping_method.id}' #{"checked='true'" if checked} onclick='calculate_order_total(this);'/>"
9
- radio += shipping_method.name
10
- radio += "&nbsp; (Cost: #{number_to_currency(cost)})"
11
- else
12
- radio = "<input type='radio' name='method_id' disabled='true' onclick='calculate_order_total(this);'/>"
13
- radio += "<span class='disabled'>#{shipping_method.name}</span>"
14
- end
15
-
16
- radio += "<script type=""text/javascript"">shipping_costs.set('#{shipping_method.id}',#{cost});</script>"
17
-
18
- radio
19
- end
20
- end
@@ -1,6 +0,0 @@
1
- <!-- NOTE: Hopefull this page is never seen. Its suggested that you customize it for each application anyways so we're
2
- not bothering with translation (the flash error message will be translated.)_ -->
3
- <p>
4
- We are experiencing technical difficulties obtaining a shipping quote from one or more carriers. Your order has been
5
- saved and we hope to resolve the issue shortly. We appologize for the inconvenience.
6
- </p>
@@ -1,46 +0,0 @@
1
- <table class="order-summary" style="width:100%;">
2
- <tr>
3
- <th><%= t('item_description') %></th>
4
- <th><%= t('price') %></th>
5
- <th><%= t('qty') %></th>
6
- <th width="250" align="right"><%= t('total') %></th>
7
- </tr>
8
- <% @order.line_items.each do |item| %>
9
- <tr >
10
- <td width="300"><%=item.variant.product.name-%> <%= "(" + variant_options(item.variant) + ")" unless item.variant .option_values.empty? %></td>
11
- <td valign="top"><%= number_to_currency item.price -%></td>
12
- <td valign="top"><%=item.quantity-%></td>
13
- <td valign="top" align="right"><%= number_to_currency (item.price * item.quantity)-%></td>
14
- </tr>
15
- <% end %>
16
- <tr id="subtotal-row">
17
- <td colspan="3" align="right"><b><%= t('subtotal') %>:</b></td>
18
- <td align="right"><%= number_to_currency @order.item_total -%></td>
19
- </tr>
20
- <tr>
21
- <td colspan="3" align="right"><b><%= t('tax') %>:</b></td>
22
- <td align="right"><%= number_to_currency @order.tax_amount -%></td>
23
- </tr>
24
- <tr><th colspan="4"/></tr>
25
- <tr>
26
- <th colspan="4"><%= t('select_preferred_shipping_option') %></th>
27
- </tr>
28
- <tr>
29
- <td class="simple-radios">
30
- <% @shipping_methods.each do |shipping_method| %>
31
- <li>
32
- <%= shipping_radio(shipping_method, @order) %>
33
- </li>
34
- <% end%>
35
- </td>
36
- </tr>
37
- <tr>
38
- <td colspan="3" align="right"><b><%= t('order_total') %>:</b></td>
39
- <td id="order_total_cell" align="right"><%= number_to_currency(@order.total + @default_method.calculate_shipping(@order))%></td>
40
- </tr>
41
- </table>
42
- <script type="text/javascript">
43
- var order_total_without_shipping = <%= @order.total %>;
44
- </script>
45
-
46
-
@@ -1,57 +0,0 @@
1
- <div id="shipment">
2
- <%= error_messages_for :shipment %>
3
- <h1><%= t("shipment") %></h1>
4
- <% form_for :shipment, :url => object_url, :html => { :method => :put } do |f| %>
5
- <table class="order-summary" style="width:100%;">
6
- <tr>
7
- <th><%= t('item_description') %></th>
8
- <th><%= t('price') %></th>
9
- <th><%= t('qty') %></th>
10
- <th width="250" align="right"><%= t('total') %></th>
11
- </tr>
12
- <% @order.line_items.each do |item| %>
13
- <tr >
14
- <td width="300"><%=item.variant.product.name-%>
15
- <%= "(" + variant_options(item.variant) + ")" unless item.variant .option_values.empty? %>
16
- </td>
17
- <td valign="top"><%= number_to_currency item.price -%></td>
18
- <td valign="top"><%=item.quantity-%></td>
19
- <td valign="top" align="right"><%= number_to_currency (item.price * item.quantity)-%></td>
20
- </tr>
21
- <% end %>
22
- <tr id="subtotal-row">
23
- <td colspan="3" align="right"><b><%= t('subtotal') %>:</b></td>
24
- <td align="right"><%= number_to_currency @order.item_total -%></td>
25
- </tr>
26
- <tr>
27
- <td colspan="3" align="right"><b><%= t('tax') %>:</b></td>
28
- <td align="right"><%= number_to_currency @order.tax_amount -%></td>
29
- </tr>
30
- <tr><th colspan="4"/></tr>
31
- <tr>
32
- <th colspan="4"><%= t('select_preferred_shipping_option') %></th>
33
- </tr>
34
- <tr>
35
- <td class="simple-radios">
36
- <% @shipping_methods.each do |shipping_method| %>
37
- <li>
38
- <%= shipping_radio(shipping_method, @shipment) %>
39
- </li>
40
- <% end%>
41
- </td>
42
- </tr>
43
- <tr>
44
- <td colspan="3" align="right"><b><%= t('order_total') %>:</b></td>
45
- <td id="order_total_cell" align="right">
46
- <%= number_to_currency(@order.item_total + @shipment.shipping_method.calculate_shipping(@shipment))%>
47
- </td>
48
- </tr>
49
- </table>
50
- <script type="text/javascript">
51
- var order_total_without_shipping = <%= @order.total %>;
52
- </script>
53
- <div align="right">
54
- <%= submit_tag t('continue') %>
55
- </div>
56
- <% end %>
57
- </div>
@@ -1,10 +0,0 @@
1
- <div id="shipment">
2
- <%=error_messages_for :shipment_presenter%>
3
- <h1><%= t("shipping_address")%></h1>
4
- <% form_for :shipment_presenter, :url => collection_url do |f| %>
5
- <%= render :partial => 'shared/form_address', :locals => {:f => f, :presenter_type => "shipment"} %>
6
- <div align="right">
7
- <%= submit_tag t('continue') %>
8
- </div>
9
- <% end %>
10
- </div>