spree 0.4.1 → 0.5.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 (182) hide show
  1. data/CHANGELOG +35 -0
  2. data/CONTRIBUTORS +2 -1
  3. data/README.markdown +8 -52
  4. data/app/controllers/account_controller.rb +1 -1
  5. data/app/controllers/addresses_controller.rb +5 -1
  6. data/app/controllers/admin/inventory_settings_controller.rb +13 -0
  7. data/app/controllers/admin/option_types_controller.rb +1 -1
  8. data/app/controllers/admin/orders_controller.rb +14 -8
  9. data/app/controllers/admin/products_controller.rb +2 -0
  10. data/app/controllers/admin/variants_controller.rb +7 -0
  11. data/app/controllers/content_controller.rb +5 -0
  12. data/app/controllers/creditcard_payments_controller.rb +2 -2
  13. data/app/controllers/orders_controller.rb +18 -2
  14. data/app/helpers/admin/inventory_settings_helper.rb +5 -0
  15. data/app/helpers/admin/product_properties_helper.rb +10 -2
  16. data/app/helpers/products_helper.rb +2 -2
  17. data/app/models/address.rb +2 -2
  18. data/app/models/app_configuration.rb +1 -0
  19. data/app/models/creditcard_payment.rb +6 -14
  20. data/app/models/order.rb +6 -12
  21. data/app/models/order_filter.rb +1 -0
  22. data/app/models/product.rb +9 -0
  23. data/app/models/product_property.rb +1 -0
  24. data/app/models/property.rb +0 -1
  25. data/app/models/zone.rb +17 -3
  26. data/app/views/account/login.html.erb +2 -14
  27. data/app/views/admin/configurations/index.html.erb +4 -0
  28. data/app/views/admin/inventory_settings/edit.html.erb +18 -0
  29. data/app/views/admin/inventory_settings/show.html.erb +11 -0
  30. data/app/views/admin/orders/_address.html.erb +1 -1
  31. data/app/views/admin/orders/index.html.erb +5 -1
  32. data/app/views/admin/orders/show.html.erb +3 -3
  33. data/app/views/admin/product_properties/_product_property.html.erb +6 -3
  34. data/app/views/admin/products/_form.html.erb +9 -1
  35. data/app/views/admin/prototypes/select.rjs +3 -1
  36. data/app/views/admin/variants/_form.html.erb +6 -0
  37. data/app/views/admin/variants/index.html.erb +7 -1
  38. data/app/views/creditcard_payments/_form_credit_card.html.erb +1 -1
  39. data/app/views/creditcard_payments/new.html.erb +7 -2
  40. data/app/views/products/show.html.erb +8 -2
  41. data/app/views/shared/_login.html.erb +17 -0
  42. data/app/views/shared/_products.html.erb +1 -1
  43. data/app/views/users/_form.html.erb +1 -1
  44. data/app/views/users/new.html.erb +19 -8
  45. data/config/boot.rb +1 -1
  46. data/config/database.yml +7 -3
  47. data/config/environment.rb +16 -2
  48. data/config/routes.rb +4 -0
  49. data/db/migrate/20081016002224_remove_defunct_order_fields.rb +10 -0
  50. data/db/migrate/20081016162924_drop_category_id_from_products.rb +9 -0
  51. data/db/sample/addresses.yml +14 -0
  52. data/db/sample/orders.yml +0 -1
  53. data/lang/ui/de-DE.yml +2 -1
  54. data/lang/ui/en-US.yml +50 -25
  55. data/lang/ui/es-ES.yml +2 -1
  56. data/lang/ui/it-IT.yml +2 -1
  57. data/lang/ui/pl-PL.yml +1 -0
  58. data/lang/ui/pt-BR.yml +5 -2
  59. data/lib/authenticated_system.rb +1 -1
  60. data/lib/generators/extension/extension_generator.rb +1 -0
  61. data/lib/generators/extension/templates/extension.rb +4 -5
  62. data/lib/generators/extension/templates/tasks.rake +12 -0
  63. data/lib/generators/extension_migration/extension_migration_generator.rb +32 -0
  64. data/lib/generators/extension_migration/templates/migration.rb +7 -0
  65. data/lib/spree.rb +2 -2
  66. data/lib/spree/extension.rb +0 -7
  67. data/lib/spree/extension_loader.rb +0 -8
  68. data/lib/tasks/extensions.rake +47 -0
  69. data/public/javascripts/application.js +34 -0
  70. data/public/javascripts/spree-yui.js +2 -2
  71. data/public/stylesheets/spree.css +11 -1
  72. data/spec/fixtures/preferences.yml +14 -6
  73. data/spec/models/address_spec.rb +78 -0
  74. data/spec/models/country_spec.rb +29 -0
  75. data/spec/models/option_type_spec.rb +36 -0
  76. data/spec/models/option_value_spec.rb +39 -0
  77. data/spec/models/product_option_type_spec.rb +38 -0
  78. data/spec/models/product_property_spec.rb +36 -0
  79. data/spec/models/product_spec.rb +109 -32
  80. data/spec/models/property_spec.rb +38 -0
  81. data/spec/models/prototype_spec.rb +35 -0
  82. data/spec/models/state_spec.rb +28 -0
  83. data/spec/models/taxon_spec.rb +38 -0
  84. data/spec/models/taxonomy_spec.rb +37 -0
  85. data/spec/models/variant_spec.rb +73 -12
  86. data/spec/models/zone_spec.rb +35 -15
  87. data/spec/spec_helper.rb +15 -0
  88. data/spec/views/admin/configurations/index.html.erb_spec.rb +29 -0
  89. data/spec/views/admin/mail_settings/show.html.erb_spec.rb +3 -3
  90. data/spec/views/products/index.html.erb_spec.rb +46 -0
  91. data/spec/views/products/show.html.erb_spec.rb +46 -0
  92. data/vendor/extensions/flat_rate_shipping/README.markdown +3 -0
  93. data/vendor/extensions/flat_rate_shipping/Rakefile +120 -0
  94. data/vendor/extensions/flat_rate_shipping/flat_rate_shipping_extension.rb +17 -0
  95. data/vendor/extensions/flat_rate_shipping/lib/flat_rate_shipping_configuration.rb +7 -0
  96. data/vendor/extensions/flat_rate_shipping/lib/spree/flat_rate_shipping/calculator.rb +9 -0
  97. data/vendor/extensions/flat_rate_shipping/lib/spree/flat_rate_shipping/config.rb +22 -0
  98. data/vendor/extensions/flat_rate_shipping/lib/tasks/flat_rate_shipping_extension_tasks.rake +29 -0
  99. data/vendor/extensions/flat_rate_shipping/spec/spec.opts +6 -0
  100. data/vendor/extensions/flat_rate_shipping/spec/spec_helper.rb +37 -0
  101. data/vendor/extensions/localization/localization_extension.rb +1 -6
  102. data/vendor/extensions/payment_gateway/lib/gateway_config.rb +7 -0
  103. data/vendor/extensions/payment_gateway/lib/spree/gateway/config.rb +22 -0
  104. data/vendor/extensions/payment_gateway/lib/spree/payment_gateway.rb +27 -3
  105. data/vendor/extensions/payment_gateway/payment_gateway_extension.rb +0 -4
  106. data/vendor/extensions/shipping/README.markdown +3 -0
  107. data/vendor/extensions/shipping/Rakefile +120 -0
  108. data/vendor/extensions/shipping/app/controllers/admin/shipping_categories_controller.rb +17 -0
  109. data/vendor/extensions/shipping/app/controllers/admin/shipping_methods_controller.rb +21 -0
  110. data/vendor/extensions/shipping/app/controllers/shipments_controller.rb +84 -0
  111. data/vendor/extensions/shipping/app/helpers/admin/shipping_categories_helper.rb +2 -0
  112. data/vendor/extensions/shipping/app/helpers/admin/shipping_methods_helper.rb +2 -0
  113. data/vendor/extensions/shipping/app/helpers/shipments_helper.rb +20 -0
  114. data/vendor/extensions/shipping/app/models/shipment.rb +11 -0
  115. data/vendor/extensions/shipping/app/models/shipping_category.rb +3 -0
  116. data/vendor/extensions/shipping/app/models/shipping_method.rb +12 -0
  117. data/vendor/extensions/shipping/app/views/admin/shipping_categories/_form.html.erb +6 -0
  118. data/vendor/extensions/shipping/app/views/admin/shipping_categories/edit.html.erb +8 -0
  119. data/vendor/extensions/shipping/app/views/admin/shipping_categories/index.html.erb +24 -0
  120. data/vendor/extensions/shipping/app/views/admin/shipping_categories/new.html.erb +10 -0
  121. data/vendor/extensions/shipping/app/views/admin/shipping_methods/_form.html.erb +14 -0
  122. data/vendor/extensions/shipping/app/views/admin/shipping_methods/edit.html.erb +8 -0
  123. data/vendor/extensions/shipping/app/views/admin/shipping_methods/index.html.erb +28 -0
  124. data/vendor/extensions/shipping/app/views/admin/shipping_methods/new.html.erb +10 -0
  125. data/vendor/extensions/shipping/app/views/orders/fatal_shipping.html.erb +6 -0
  126. data/vendor/extensions/shipping/app/views/shipments/_form.html.erb +46 -0
  127. data/vendor/extensions/shipping/app/views/shipments/edit.html.erb +8 -0
  128. data/vendor/extensions/shipping/app/views/shipments/new.html.erb +8 -0
  129. data/vendor/extensions/shipping/db/migrate/20081003211336_create_shipping_methods.rb +14 -0
  130. data/vendor/extensions/shipping/db/migrate/20081003233427_create_shipping_categories.rb +15 -0
  131. data/vendor/extensions/shipping/db/migrate/20081015001711_create_shipments.rb +14 -0
  132. data/vendor/extensions/shipping/db/migrate/20081023134446_add_product_dimensions.rb +19 -0
  133. data/vendor/extensions/shipping/db/sample/shipping_categories.yml +2 -0
  134. data/vendor/extensions/shipping/db/sample/shipping_methods.yml +12 -0
  135. data/vendor/extensions/shipping/db/sample/zone_members.yml +8 -0
  136. data/vendor/extensions/shipping/db/sample/zones.yml +3 -0
  137. data/vendor/extensions/shipping/lang/en-US.yml +9 -0
  138. data/vendor/extensions/shipping/lib/spree/shipping_calculator.rb +37 -0
  139. data/vendor/extensions/shipping/lib/spree/shipping_error.rb +3 -0
  140. data/vendor/extensions/shipping/lib/tasks/shipping_extension_tasks.rake +29 -0
  141. data/vendor/extensions/shipping/shipping_extension.rb +39 -0
  142. data/vendor/extensions/shipping/spec/controllers/admin/shipping_categories_controller_spec.rb +10 -0
  143. data/vendor/extensions/shipping/spec/controllers/admin/shipping_methods_controller_spec.rb +10 -0
  144. data/vendor/extensions/shipping/spec/models/order_spec.rb +98 -0
  145. data/vendor/extensions/shipping/spec/models/shipment_spec.rb +26 -0
  146. data/vendor/extensions/shipping/spec/models/shipping_category_spec.rb +8 -0
  147. data/vendor/extensions/shipping/spec/models/shipping_method_spec.rb +53 -0
  148. data/vendor/extensions/shipping/spec/spec.opts +6 -0
  149. data/vendor/extensions/shipping/spec/spec_helper.rb +37 -0
  150. data/vendor/extensions/tax_calculator/lib/spree/sales_tax_calculator.rb +12 -4
  151. data/vendor/extensions/tax_calculator/spec/controllers/tax_calculator_spec.rb +0 -4
  152. data/vendor/extensions/tax_calculator/spec/models/sales_tax_calculator_spec.rb +14 -14
  153. data/vendor/extensions/tax_calculator/tax_calculator_extension.rb +0 -4
  154. data/vendor/plugins/resource_controller/README.rdoc +38 -6
  155. data/vendor/plugins/resource_controller/Rakefile +7 -20
  156. data/vendor/plugins/resource_controller/TODO +0 -1
  157. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/current_objects.rb +71 -69
  158. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/internal.rb +69 -65
  159. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/nested.rb +62 -57
  160. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/singleton_customizations.rb +50 -46
  161. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/urls.rb +73 -69
  162. data/vendor/plugins/resource_controller/resource_controller.gemspec +4 -3
  163. data/vendor/plugins/resource_controller/test/app/controllers/cms/personnel_controller.rb +2 -0
  164. data/vendor/plugins/resource_controller/test/app/controllers/cms/photos_controller.rb +6 -0
  165. data/vendor/plugins/resource_controller/test/app/models/personnel.rb +3 -0
  166. data/vendor/plugins/resource_controller/test/app/models/photo.rb +1 -0
  167. data/vendor/plugins/resource_controller/test/app/views/cms/photos/edit.rhtml +17 -0
  168. data/vendor/plugins/resource_controller/test/app/views/cms/photos/index.rhtml +20 -0
  169. data/vendor/plugins/resource_controller/test/app/views/cms/photos/new.rhtml +16 -0
  170. data/vendor/plugins/resource_controller/test/app/views/cms/photos/show.rhtml +8 -0
  171. data/vendor/plugins/resource_controller/test/config/database.yml +9 -0
  172. data/vendor/plugins/resource_controller/test/config/environment.rb +1 -18
  173. data/vendor/plugins/resource_controller/test/config/initializers/inflections.rb +14 -0
  174. data/vendor/plugins/resource_controller/test/config/routes.rb +3 -0
  175. data/vendor/plugins/resource_controller/test/db/migrate/013_create_personnel.rb +11 -0
  176. data/vendor/plugins/resource_controller/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  177. data/vendor/plugins/resource_controller/test/test/fixtures/personnel.yml +5 -0
  178. data/vendor/plugins/resource_controller/test/test/functional/cms/photos_controller_test.rb +43 -0
  179. metadata +136 -6
  180. data/app/models/spree/extension_meta.rb +0 -5
  181. data/app/models/variants.rb +0 -2
  182. data/vendor/plugins/resource_controller/lib/resource_controller/version.rb +0 -9
@@ -11,6 +11,7 @@ class OrderFilter < ActiveRecord::Base
11
11
  column :number, :string
12
12
  column :state, :string
13
13
  column :customer, :string
14
+ column :checkout, :string
14
15
 
15
16
  def validate
16
17
  date_pattern = /^(0[1-9]|1[012])[\/][0-9]{2}[\/](19|20)[0-9]{2}$/
@@ -48,6 +48,15 @@ class Product < ActiveRecord::Base
48
48
  @quantity = quantity
49
49
  end
50
50
 
51
+ # Pseduo attribute for SKU, similiar as on_hand above.
52
+ def sku
53
+ variant.sku if variant
54
+ end
55
+
56
+ def sku=(sku)
57
+ variant.sku = sku if variant
58
+ end
59
+
51
60
  def has_stock?
52
61
  variants.inject(false){ |tf, v| tf ||= v.in_stock }
53
62
  end
@@ -2,6 +2,7 @@ class ProductProperty < ActiveRecord::Base
2
2
  belongs_to :product
3
3
  belongs_to :property
4
4
 
5
+ validates_presence_of :property
5
6
  validates_presence_of :value
6
7
 
7
8
  # virtual attributes for use with AJAX completion stuff
@@ -1,5 +1,4 @@
1
1
  class Property < ActiveRecord::Base
2
- has_many :property_values
3
2
  has_and_belongs_to_many :prototypes
4
3
 
5
4
  validates_presence_of :name, :presentation
data/app/models/zone.rb CHANGED
@@ -14,8 +14,14 @@ class Zone < ActiveRecord::Base
14
14
  def member_name
15
15
  # does nothing - just here to satisfy text_field_with_auto_complete (which requires a model property)
16
16
  end
17
-
17
+
18
+ # alias to the new include? method
18
19
  def in_zone?(address)
20
+ $stderr.puts "Warning: calling deprecated method :in_zone? use :include? instead."
21
+ include?(address)
22
+ end
23
+
24
+ def include?(address)
19
25
  # NOTE: This is complicated by the fact that include? for HMP is broken in Rails 2.1 (so we use awkward index method)
20
26
  case self.type
21
27
  when "country"
@@ -24,14 +30,22 @@ class Zone < ActiveRecord::Base
24
30
  return members.index(address.state).respond_to?(:integer?)
25
31
  end
26
32
  members.each do |zone|
27
- return true if zone.in_zone?(address)
33
+ return true if zone.include?(address)
28
34
  end
29
35
  false
30
36
  end
31
37
 
32
38
  def self.match(address)
33
39
  zones = []
34
- Zone.all.each {|zone| zones << zone if zone.in_zone?(address)}
40
+ Zone.all.each {|zone| zones << zone if zone.include?(address)}
35
41
  zones
36
42
  end
43
+
44
+ # convenience method for returning the countries contained within a zone (different then the countries method which only
45
+ # returns the zones children and does not consider the grand children if the children themselves are zones)
46
+ def country_list
47
+ return [] if type == "state"
48
+ return countries if type == "country"
49
+ members.collect { |zone| zone.country_list }.flatten
50
+ end
37
51
  end
@@ -1,14 +1,2 @@
1
- <% form_tag do -%>
2
- <p><label for="email"><%= t("Email") %></label><br/>
3
- <%= text_field_tag 'email' %></p>
4
-
5
- <p><label for="password"><%= t("Password") %></label><br/>
6
- <%= password_field_tag 'password' %></p>
7
-
8
- <p>
9
- <%= check_box_tag 'remember_me' %>
10
- <label for="remember_me"><%= t("Remember me") %></label>
11
- </p>
12
-
13
- <p><%= submit_tag t("Log In") %> <%= t("or") %> <%= link_to t("Create a new account"), signup_path %> </p>
14
- <% end -%>
1
+ <%= render :partial => 'shared/login' %>
2
+ <%= t("or") %> <%= link_to t("Create a new account"), signup_path %> </p>
@@ -31,6 +31,10 @@
31
31
  <tr>
32
32
  <td><%= link_to t("Taxonomies"), admin_taxonomies_path %></td>
33
33
  <td><%= Globalite.localize(:taxonomies_setting_description) %></td>
34
+ </tr>
35
+ <tr>
36
+ <td><%= link_to t("Inventory Settings"), admin_inventory_settings_path %></td>
37
+ <td><%= Globalite.localize(:inventory_setting_description) %></td>
34
38
  </tr>
35
39
  <% @extension_links.each do |link_map| %>
36
40
  <tr>
@@ -0,0 +1,18 @@
1
+ <% form_tag(admin_inventory_settings_path, :method => :put) do -%>
2
+
3
+ <h2><%= t('Inventory Server Preferences') %></h2>
4
+
5
+ <div>
6
+ <p>
7
+ <%= check_box_tag('preferences[show_zero_stock_products]', "1", Spree::Config[:show_zero_stock_products]) %>
8
+ <strong><%= t('Show Out-of-Stock Products') %></strong>
9
+ <input name="preferences[show_zero_stock_products]" type="hidden" value="0" />
10
+ </p>
11
+ <p>
12
+ <%= check_box_tag('preferences[allow_backorders]', "1", Spree::Config[:allow_backorders]) %>
13
+ <strong><%= t('Allow Backorders') %></strong>
14
+ <input name="preferences[allow_backorders]" type="hidden" value="0" />
15
+ </p>
16
+ </div>
17
+ <%= submit_tag t('Save Preferences') %>
18
+ <% end -%>
@@ -0,0 +1,11 @@
1
+ <h2><%= t("Inventory Server Settings") %></h2>
2
+
3
+ <div id="inventory_settings">
4
+ <div id="show_zero_stock_products">
5
+ <h4>Products with a zero inventory will <%= show_not(Spree::Config[:show_zero_stock_products]) %> be displayed</h4>
6
+ </div>
7
+ <div id="allow_backorders">
8
+ <h4>Backordering is <%= show_not(Spree::Config[:allow_backorders]) %> allowed</h4>
9
+ </div>
10
+ <%= link_to t("Edit"), edit_admin_inventory_settings_path %>
11
+ </div>
@@ -23,7 +23,7 @@
23
23
  </tr>
24
24
  <tr>
25
25
  <td>
26
- <%=in_place_editor_field :address, :city %>, <%= @address.state.abbr %> <%=in_place_editor_field :address, :zipcode %>
26
+ <%=in_place_editor_field :address, :city %>, <%= @address.state.nil? ? in_place_editor_field(:address, :state_name) : @address.state.abbr %> <%=in_place_editor_field :address, :zipcode %>
27
27
  </td>
28
28
  </tr>
29
29
  <tr>
@@ -75,7 +75,7 @@
75
75
  <tr>
76
76
  <td><%= t("Status") %></td>
77
77
  <td>
78
- <%= f.select :state, %w{ authorized canceled captured paid pending_payment returned shipped }.collect {|status| status.titleize}, {:include_blank => true}, {:style => "width: 115px"}%>
78
+ <%= f.select :state, Order.state_machines['state'].states.collect {|status| status.titleize}, {:include_blank => true}, {:style => "width: 115px"}%>
79
79
  </td>
80
80
  </tr>
81
81
  <tr>
@@ -84,6 +84,10 @@
84
84
  <%= f.text_field :customer, :size=>13 %>
85
85
  </td>
86
86
  </tr>
87
+ <tr>
88
+ <td colspan="2"><%= t("Checkout Complete") %>&nbsp;<%= f.check_box :checkout, {:style => "vertical-align:middle;"}%>
89
+ </td>
90
+ </tr>
87
91
  </tbody>
88
92
  </table>
89
93
  <%=submit_tag t("Search") %>
@@ -6,7 +6,7 @@
6
6
 
7
7
  <%= render :partial => 'shared/order_details', :locals => {:order => @order} -%>
8
8
 
9
- <% if @order.ship_address %>
9
+ <% if @order.address || @order.creditcard_payment %>
10
10
  <table class="order-address">
11
11
  <tr>
12
12
  <th><%= t("Ship Address") %></th>
@@ -14,10 +14,10 @@
14
14
  </tr>
15
15
  <tr>
16
16
  <td width="50%">
17
- <%= render :partial => 'address', :locals => {:address => @order.ship_address} -%>
17
+ <%= render :partial => 'address', :locals => {:address => @order.address} if @order.address%>
18
18
  </td>
19
19
  <td width="50%">
20
- <%= render :partial => 'address', :locals => {:address => @order.bill_address} -%>
20
+ <%= render :partial => 'address', :locals => {:address => @order.creditcard_payment.address} if @order.creditcard_payment%>
21
21
  </td>
22
22
  </tr>
23
23
  </table>
@@ -1,10 +1,11 @@
1
+ <% number ||= 0 %>
1
2
  <tr class="product_property">
2
3
  <td>
3
4
  <%= text_field_with_auto_complete :product_property,
4
5
  :property_name,
5
6
  {:onkeypress => "return event.which == Event.KEY_RETURN ? false : true",
6
7
  :autocomplete => "off",
7
- :name => property_fu_name(product_property),
8
+ :name => property_fu_name(product_property, number),
8
9
  :value => product_property.property ? product_property.property.name : ""
9
10
  },
10
11
  {:url => filtered_admin_properties_url,
@@ -13,8 +14,10 @@
13
14
  } %>
14
15
  </td>
15
16
  <td>
16
- <input type="test" size="25" name="product[product_property_attributes][<%= product_property.id %>][value]"
17
- value="<%= product_property.value %>"/>
17
+ <%= text_field :product_property, :property_value, {
18
+ :name => property_fu_value(product_property, number),
19
+ :value => product_property.value
20
+ } %>
18
21
  </td>
19
22
  <td>
20
23
  <a href='#' onclick="$(this).up('.product_property').remove();"><%= t("Remove") %></a>
@@ -33,7 +33,9 @@
33
33
  <% if @product.variant %>
34
34
  <tr>
35
35
  <td><%=t("SKU")%>: </td>
36
- <td><input type="text" name="variant[<%= @product.variant.id %>][sku]" value="<%= @product.variant.sku %>"/></td>
36
+ <td>
37
+ <%= f.text_field :sku, :size => 16 %>
38
+ </td>
37
39
  </tr>
38
40
  <tr>
39
41
  <td><%=t("On Hand")%>: </td>
@@ -42,6 +44,12 @@
42
44
  </td>
43
45
  </tr>
44
46
  <% end %>
47
+ <tr>
48
+ <td nowrap><%=t("Shipping Category")%>: </td>
49
+ <td>
50
+ <%= collection_select(:product, :shipping_category_id, @shipping_categories, :id, :name, {:include_blank => true}, {"style" => "width:200px"}) %>
51
+ </td>
52
+ </tr>
45
53
  <tr>
46
54
  <td nowrap><%=t("Tax Category")%>: </td>
47
55
  <td>
@@ -1,5 +1,7 @@
1
+ number = 0
1
2
  @prototype.properties.each do |property|
2
3
  page.insert_html :bottom, 'product_properties',
3
4
  :partial => 'admin/product_properties/product_property',
4
- :locals => {:product_property => ProductProperty.new (:property => property)}
5
+ :locals => {:product_property => ProductProperty.new (:property => property), :number => number}
6
+ number += 1
5
7
  end
@@ -29,4 +29,10 @@
29
29
  <td><%= t("On Hand") %>: </td>
30
30
  <td><%= f.text_field :on_hand %></td>
31
31
  </tr>
32
+ <% @additional_fields.each do |field| %>
33
+ <tr>
34
+ <td><%= t(field.titleize) %>: </td>
35
+ <td><%= f.text_field field %></td>
36
+ </tr>
37
+ <% end %>
32
38
  </table>
@@ -1,12 +1,15 @@
1
1
  <%= render :partial => 'shared/product_sub_menu' %>
2
2
  <h1><%= t("Editing Product") %></h1>
3
3
  <%= render :partial => 'shared/product_tabs', :locals => {:current => "Variants"} %>
4
- <table class="basic-table">
4
+ <table class="full-table">
5
5
  <thead>
6
6
  <tr>
7
7
  <th><%= t("Options") %></th>
8
8
  <th><%= t("Price") %></th>
9
9
  <th><%= t("SKU") %></th>
10
+ <% @additional_fields.each do |field| %>
11
+ <th><%= field.titleize %></th>
12
+ <% end %>
10
13
  <th><%= t("On Hand") %></th>
11
14
  <th><%= t("Action") %></th>
12
15
  </tr>
@@ -19,6 +22,9 @@
19
22
  <td><%= variant_options variant %></td>
20
23
  <td><%= variant.price %>
21
24
  <td><%= variant.sku %></td>
25
+ <% @additional_fields.each do |field| %>
26
+ <td><%= variant[field] %></td>
27
+ <% end %>
22
28
  <td><%= variant.on_hand %></td>
23
29
  <td valign="top">
24
30
  <%= link_to_edit(variant) %>
@@ -8,7 +8,7 @@
8
8
  <tr>
9
9
  <!-- use this sample (visa) cc# for testing 4111111111111111 -->
10
10
  <td width="120"><%= t("Card Number") %></td>
11
- <td><%= f.text_field :creditcard_number, :maxlength => 17 -%></td>
11
+ <td><%= f.text_field :creditcard_number, :size=> 19 -%></td>
12
12
  </tr>
13
13
  <tr>
14
14
  <td><%= t("Expiration Month") %></td>
@@ -1,9 +1,9 @@
1
1
  <%=error_messages_for :payment_presenter %>
2
2
  <h1><%= t("Payment")%></h1>
3
3
  <% form_for(:payment_presenter, :url => order_creditcard_payment_url(@order)) do |f| %>
4
- <table cellpadding="5">
4
+ <table cellpadding="5" width="100%">
5
5
  <tr>
6
- <td valign="top">
6
+ <td valign="top" wdith="50%">
7
7
  <%= render :partial => 'form_credit_card', :locals => {:f => f} %>
8
8
  </td>
9
9
  <td>
@@ -11,7 +11,12 @@
11
11
  </td>
12
12
  </tr>
13
13
  </table>
14
+ <div align="right" style="font-size:120%;">
15
+ <br />
16
+ <%= Globalite.localize(:order_total_message) %> <strong><%= number_to_currency @order.total%></strong>
17
+ </div>
14
18
  <div align="right">
19
+ <br/>
15
20
  <%= submit_tag t('Continue') %>
16
21
  </div>
17
22
  <% end %>
@@ -33,7 +33,7 @@
33
33
  <% @product.variants.each do |v| %>
34
34
  <% next if v.option_values.empty? %>
35
35
  <li>
36
- <input type="radio" name="id" value="<%= v.id %>" <%= @product.variants.first == v ? 'checked="checked"' : '' %> <%= 'disabled' unless v.in_stock or Spree::Config[:allow_backorders] %> />
36
+ <input type="radio" name="id" value="<%= v.id %>" <%= @product.variants.first == v ? 'checked="checked"' : '' %> <%= 'disabled' unless v.in_stock or Spree::Config[:show_zero_stock_products] %> />
37
37
  <%= variant_options v %>
38
38
  <% if variant_price_diff v %>
39
39
  <span class="price-diff"><%= variant_price_diff v %></span>
@@ -49,7 +49,13 @@
49
49
  <% end%>
50
50
  <tr>
51
51
  <td>
52
- <%= submit_tag t('Add To Cart') %>
52
+ <%=
53
+ if @product.has_stock? || Spree::Config[:allow_backorders]
54
+ submit_tag t('Add To Cart')
55
+ else
56
+ content_tag('strong', 'Out of Stock')
57
+ end
58
+ %>
53
59
  </td>
54
60
  </tr>
55
61
  </table>
@@ -0,0 +1,17 @@
1
+ <% form_tag '/login' do %>
2
+ <table>
3
+ <tr>
4
+ <td><%= t("Email") %>: </td>
5
+ <td>
6
+ <%= text_field_tag 'email' %>
7
+ </td>
8
+ </tr>
9
+ <tr>
10
+ <td><%= t("Password") %>:</td>
11
+ <td>
12
+ <%= password_field_tag 'password' %>
13
+ </td>
14
+ </tr>
15
+ </table>
16
+ <p><%= submit_tag t("Log In") %>
17
+ <% end %>
@@ -1,7 +1,7 @@
1
1
  <div id="product-listing">
2
2
  <ul class="product-listing">
3
3
  <% products.each do |product| %>
4
- <% if Spree::Config[:allow_backorders] || product.has_stock? %>
4
+ <% if Spree::Config[:show_zero_stock_products] || product.has_stock? %>
5
5
  <li class="product preview" id="product_<%= product.id %>">
6
6
  <%= link_to small_image(product), product %>
7
7
  <%= link_to product.name, product %>
@@ -1,4 +1,4 @@
1
- <table>
1
+ <table id="user-form">
2
2
  <tr>
3
3
  <td><%= t("Email") %>: </td>
4
4
  <td>
@@ -1,9 +1,20 @@
1
1
  <%= error_messages_for :user %>
2
- <h1><%= t("New User") %></h1>
3
- <br/>
4
- <% form_for(@user) do |f| %>
5
- <%= render :partial => "form", :locals => { :f => f } %>
6
- <p>
7
- <%= submit_tag t("Create") %> or <%= link_to "Login to existing account", login_path %>
8
- </p>
9
- <% end %>
2
+ <table width="100%">
3
+ <tr>
4
+ <td width="50%"><h2><%= t("New Customer") %></h2></td>
5
+ <td><h2><%= t("Existing Customer") %></h2></td>
6
+ </tr>
7
+ <tr>
8
+ <td valign="top">
9
+ <% form_for(@user) do |f| %>
10
+ <%= render :partial => "form", :locals => { :f => f } %>
11
+ <p>
12
+ <%= submit_tag t("Create") %>
13
+ </p>
14
+ <% end %>
15
+ </td>
16
+ <td valign="top">
17
+ <%= render :partial => 'shared/login' %>
18
+ </td>
19
+ </tr>
20
+ </table>
data/config/boot.rb CHANGED
@@ -55,7 +55,7 @@ module Spree
55
55
  class Boot
56
56
  include Spree::RubyGemsLoader
57
57
  def run
58
- load_rails("2.1.0") # note: spree requires a specific rails version (change at your own risk)
58
+ load_rails("2.1.2") # note: spree requires a specific rails version (change at your own risk)
59
59
  load_initializer
60
60
  Spree::Initializer.run(:set_load_path)
61
61
  end
data/config/database.yml CHANGED
@@ -19,9 +19,13 @@ development:
19
19
  # database: db/development.sqlite3
20
20
 
21
21
  staging:
22
- adapter: sqlite3
23
- database: db/staging.sqlite3
24
-
22
+ #adapter: sqlite3
23
+ #database: db/staging.sqlite3
24
+ adapter: mysql
25
+ database: spree_dev
26
+ username: spree
27
+ password: spree
28
+ host: localhost
25
29
  test:
26
30
  adapter: mysql
27
31
  database: spree_test