spree_core 1.0.7 → 1.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. data/app/assets/javascripts/admin/admin.js.erb +9 -18
  2. data/app/assets/javascripts/admin/calculator.js +7 -6
  3. data/app/assets/javascripts/admin/checkouts/edit.js +2 -2
  4. data/app/assets/javascripts/admin/image_settings.js +49 -0
  5. data/app/assets/javascripts/admin/orders/edit_form.js +14 -14
  6. data/app/assets/stylesheets/admin/admin.css.erb +36 -54
  7. data/app/assets/stylesheets/store/screen.css.scss +25 -12
  8. data/app/controllers/spree/admin/base_controller.rb +3 -3
  9. data/app/controllers/spree/admin/image_settings_controller.rb +71 -0
  10. data/app/controllers/spree/admin/images_controller.rb +22 -21
  11. data/app/controllers/spree/admin/mail_methods_controller.rb +1 -1
  12. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -2
  13. data/app/controllers/spree/admin/orders_controller.rb +13 -13
  14. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -1
  15. data/app/controllers/spree/admin/payments_controller.rb +1 -1
  16. data/app/controllers/spree/admin/product_properties_controller.rb +3 -4
  17. data/app/controllers/spree/admin/products_controller.rb +49 -47
  18. data/app/controllers/spree/admin/properties_controller.rb +1 -1
  19. data/app/controllers/spree/admin/prototypes_controller.rb +12 -6
  20. data/app/controllers/spree/admin/reports_controller.rb +15 -16
  21. data/app/controllers/spree/admin/resource_controller.rb +1 -1
  22. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  23. data/app/controllers/spree/admin/shipments_controller.rb +0 -3
  24. data/app/controllers/spree/admin/states_controller.rb +9 -9
  25. data/app/controllers/spree/admin/users_controller.rb +18 -42
  26. data/app/controllers/spree/admin/variants_controller.rb +22 -21
  27. data/app/controllers/spree/admin/zones_controller.rb +11 -11
  28. data/app/controllers/spree/content_controller.rb +1 -1
  29. data/app/controllers/spree/locale_controller.rb +2 -2
  30. data/app/controllers/spree/orders_controller.rb +4 -6
  31. data/app/controllers/spree/products_controller.rb +1 -1
  32. data/app/controllers/spree/states_controller.rb +4 -7
  33. data/app/helpers/spree/admin/base_helper.rb +4 -0
  34. data/app/helpers/spree/admin/navigation_helper.rb +4 -16
  35. data/app/helpers/spree/base_helper.rb +22 -3
  36. data/app/models/spree/activator.rb +4 -1
  37. data/app/models/spree/address.rb +45 -45
  38. data/app/models/spree/adjustment.rb +4 -4
  39. data/app/models/spree/app_configuration.rb +12 -0
  40. data/app/models/spree/calculator/default_tax.rb +1 -3
  41. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -2
  42. data/app/models/spree/calculator/flat_rate.rb +0 -3
  43. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  44. data/app/models/spree/calculator/per_item.rb +1 -6
  45. data/app/models/spree/calculator/price_sack.rb +0 -2
  46. data/app/models/spree/country.rb +1 -1
  47. data/app/models/spree/creditcard.rb +9 -10
  48. data/app/models/spree/gateway.rb +0 -2
  49. data/app/models/spree/image.rb +18 -2
  50. data/app/models/spree/inventory_unit.rb +4 -2
  51. data/app/models/spree/mail_method.rb +1 -6
  52. data/app/models/spree/option_type.rb +3 -1
  53. data/app/models/spree/order.rb +68 -62
  54. data/app/models/spree/payment.rb +1 -1
  55. data/app/models/spree/payment_method.rb +0 -6
  56. data/app/models/spree/product/scopes.rb +44 -44
  57. data/app/models/spree/product.rb +44 -26
  58. data/app/models/spree/product_property.rb +0 -2
  59. data/app/models/spree/property.rb +0 -16
  60. data/app/models/spree/prototype.rb +0 -1
  61. data/app/models/spree/return_authorization.rb +0 -2
  62. data/app/models/spree/shipment.rb +2 -3
  63. data/app/models/spree/shipping_category.rb +0 -2
  64. data/app/models/spree/shipping_method.rb +1 -2
  65. data/app/models/spree/shipping_rate.rb +9 -0
  66. data/app/models/spree/state.rb +10 -2
  67. data/app/models/spree/{state_event.rb → state_change.rb} +1 -4
  68. data/app/models/spree/tax_rate.rb +3 -3
  69. data/app/models/spree/taxon.rb +1 -6
  70. data/app/models/spree/taxonomy.rb +3 -6
  71. data/app/models/spree/user.rb +1 -0
  72. data/app/models/spree/variant.rb +3 -4
  73. data/app/models/spree/zone.rb +0 -10
  74. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +1 -1
  75. data/app/views/spree/admin/configurations/index.html.erb +4 -0
  76. data/app/views/spree/admin/image_settings/edit.html.erb +91 -0
  77. data/app/views/spree/admin/image_settings/show.html.erb +11 -0
  78. data/app/views/spree/admin/images/index.html.erb +3 -3
  79. data/app/views/spree/admin/mail_methods/_form.html.erb +1 -1
  80. data/app/views/spree/admin/mail_methods/index.html.erb +1 -1
  81. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +1 -1
  82. data/app/views/spree/admin/option_types/index.html.erb +1 -1
  83. data/app/views/spree/admin/option_types/new.js.erb +1 -1
  84. data/app/views/spree/admin/orders/_form.html.erb +3 -5
  85. data/app/views/spree/admin/orders/_line_item.html.erb +1 -1
  86. data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
  87. data/app/views/spree/admin/orders/history.html.erb +2 -2
  88. data/app/views/spree/admin/orders/index.html.erb +19 -19
  89. data/app/views/spree/admin/payment_methods/_form.html.erb +1 -1
  90. data/app/views/spree/admin/payment_methods/index.html.erb +1 -3
  91. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  92. data/app/views/spree/admin/product_properties/index.html.erb +1 -1
  93. data/app/views/spree/admin/products/_form.html.erb +30 -27
  94. data/app/views/spree/admin/products/index.html.erb +9 -9
  95. data/app/views/spree/admin/products/new.html.erb +28 -4
  96. data/app/views/spree/admin/products/new.js.erb +1 -1
  97. data/app/views/spree/admin/properties/index.html.erb +1 -1
  98. data/app/views/spree/admin/properties/new.js.erb +1 -1
  99. data/app/views/spree/admin/prototypes/index.html.erb +1 -1
  100. data/app/views/spree/admin/prototypes/new.js.erb +1 -1
  101. data/app/views/spree/admin/prototypes/show.html.erb +42 -0
  102. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  103. data/app/views/spree/admin/shared/_address_form.html.erb +1 -1
  104. data/app/views/spree/admin/shared/_calculator_fields.html.erb +2 -2
  105. data/app/views/spree/admin/shared/_head.html.erb +3 -3
  106. data/app/views/spree/admin/shared/_order_details.html.erb +1 -1
  107. data/app/views/spree/admin/shared/_order_tabs.html.erb +6 -6
  108. data/app/views/spree/admin/shared/_product_sub_menu.html.erb +0 -1
  109. data/app/views/spree/admin/shared/_report_criteria.html.erb +3 -3
  110. data/app/views/spree/admin/shared/_tabs.html.erb +1 -1
  111. data/app/views/spree/admin/shared/_update_order_state.js +5 -4
  112. data/app/views/spree/admin/shipments/index.html.erb +1 -1
  113. data/app/views/spree/admin/shipping_categories/index.html.erb +1 -1
  114. data/app/views/spree/admin/shipping_methods/index.html.erb +1 -1
  115. data/app/views/spree/admin/states/_state_list.html.erb +1 -1
  116. data/app/views/spree/admin/states/new.js.erb +1 -1
  117. data/app/views/spree/admin/tax_categories/index.html.erb +2 -2
  118. data/app/views/spree/admin/tax_rates/index.html.erb +2 -2
  119. data/app/views/spree/admin/taxonomies/_list.html.erb +1 -1
  120. data/app/views/spree/admin/trackers/_form.html.erb +1 -1
  121. data/app/views/spree/admin/trackers/index.html.erb +1 -1
  122. data/app/views/spree/admin/users/_form.html.erb +1 -16
  123. data/app/views/spree/admin/users/index.html.erb +3 -4
  124. data/app/views/spree/admin/variants/index.html.erb +2 -2
  125. data/app/views/spree/admin/variants/new.js.erb +1 -1
  126. data/app/views/spree/admin/zones/index.html.erb +1 -1
  127. data/app/views/spree/checkout/_address.html.erb +1 -1
  128. data/app/views/spree/checkout/edit.html.erb +1 -1
  129. data/app/views/spree/checkout/registration.html.erb +2 -2
  130. data/app/views/spree/order_mailer/confirm_email.text.erb +3 -3
  131. data/app/views/spree/orders/show.html.erb +2 -2
  132. data/app/views/spree/products/_cart_form.html.erb +1 -2
  133. data/app/views/spree/products/_image.html.erb +1 -1
  134. data/app/views/spree/products/show.html.erb +3 -3
  135. data/app/views/spree/shared/_filters.html.erb +26 -24
  136. data/app/views/spree/shared/_google_analytics.html.erb +26 -26
  137. data/app/views/spree/shared/_products.html.erb +2 -2
  138. data/app/views/spree/shared/_search.html.erb +1 -1
  139. data/app/views/spree/shared/_store_menu.html.erb +1 -1
  140. data/app/views/spree/states/index.js.erb +1 -1
  141. data/config/initializers/rails_3_1.rb +3 -3
  142. data/config/locales/en.yml +40 -35
  143. data/config/routes.rb +5 -13
  144. data/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb +4 -4
  145. data/db/migrate/20111007143030_namespace_top_level_models.rb +0 -3
  146. data/db/migrate/20120203001428_rename_state_events_to_state_changes.rb +9 -0
  147. data/db/migrate/20120315064358_migrate_images_from_products_to_variants.rb +35 -0
  148. data/lib/generators/spree/dummy/templates/rails/database.yml +48 -20
  149. data/lib/generators/spree/install/install_generator.rb +17 -1
  150. data/lib/generators/spree/install/templates/app/assets/javascripts/admin/all.js +0 -1
  151. data/lib/generators/spree/install/templates/app/assets/javascripts/store/all.js +0 -1
  152. data/lib/generators/spree/install/templates/app/assets/stylesheets/admin/all.css +0 -1
  153. data/lib/generators/spree/install/templates/app/assets/stylesheets/store/all.css +0 -1
  154. data/lib/generators/spree/sandbox/sandbox_generator.rb +9 -2
  155. data/lib/spree/core/calculated_adjustments.rb +29 -34
  156. data/lib/spree/core/controller_helpers.rb +36 -34
  157. data/lib/spree/core/custom_fixtures.rb +1 -1
  158. data/lib/spree/core/delegate_belongs_to.rb +22 -24
  159. data/lib/spree/core/engine.rb +3 -3
  160. data/lib/spree/core/environment_extension.rb +12 -15
  161. data/lib/spree/core/mail_settings.rb +1 -1
  162. data/lib/spree/core/permalinks.rb +24 -16
  163. data/lib/spree/core/preference_rescue.rb +1 -1
  164. data/lib/spree/core/respond_with.rb +13 -8
  165. data/lib/spree/core/responder.rb +1 -2
  166. data/lib/spree/core/search/base.rb +36 -19
  167. data/lib/spree/core/ssl_requirement.rb +18 -10
  168. data/lib/spree/core/testing_support/common_rake.rb +1 -1
  169. data/lib/spree/core/testing_support/factories/product_factory.rb +9 -9
  170. data/lib/spree/core/testing_support/factories/role_factory.rb +1 -1
  171. data/lib/spree/core/testing_support/factories/shipping_category_factory.rb +1 -1
  172. data/lib/spree/core/testing_support/factories/shipping_method_factory.rb +3 -3
  173. data/lib/spree/core/testing_support/factories/user_factory.rb +1 -1
  174. data/lib/spree/core/testing_support/factories/zone_factory.rb +4 -2
  175. data/lib/spree/core/validators/email.rb +23 -0
  176. data/lib/spree/core/version.rb +1 -1
  177. data/lib/spree/core.rb +2 -2
  178. data/lib/spree/product_filters.rb +10 -19
  179. data/lib/tasks/core.rake +1 -1
  180. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.css.erb +5 -5
  181. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +1 -1
  182. metadata +68 -140
  183. data/app/assets/images/noimage/large.png +0 -0
  184. data/app/controllers/spree/admin/product_groups_controller.rb +0 -49
  185. data/app/controllers/spree/admin/product_scopes_controller.rb +0 -39
  186. data/app/helpers/spree/admin/product_groups_helper.rb +0 -14
  187. data/app/helpers/spree/admin/product_properties_helper.rb +0 -24
  188. data/app/models/spree/product_group.rb +0 -200
  189. data/app/models/spree/product_scope.rb +0 -79
  190. data/app/views/spree/admin/banners/_gateway.html.erb +0 -14
  191. data/app/views/spree/admin/product_groups/_preview.html.erb +0 -33
  192. data/app/views/spree/admin/product_groups/_product_scope.html.erb +0 -24
  193. data/app/views/spree/admin/product_groups/edit.html.erb +0 -59
  194. data/app/views/spree/admin/product_groups/index.html.erb +0 -37
  195. data/app/views/spree/admin/product_groups/new.html.erb +0 -12
  196. data/app/views/spree/admin/product_groups/show.html.erb +0 -32
  197. data/app/views/spree/admin/product_scopes/create.js.erb +0 -6
  198. data/app/views/spree/admin/product_scopes/destroy.js.erb +0 -3
  199. data/app/views/spree/admin/product_scopes/new.html.erb +0 -1
  200. data/app/views/spree/admin/shared/_group_from_products_form.html.erb +0 -12
  201. data/db/migrate/20091012120519_product_groups_and_scopes.rb +0 -18
  202. data/db/migrate/20100126103714_create_products_product_groups.rb +0 -8
  203. data/db/migrate/20100306153445_fix_by_popularity.rb +0 -9
  204. data/db/migrate/20120523061241_convert_sales_tax_to_default_tax.rb +0 -9
  205. data/lib/spree/core/testing_support/factories/product_group_factory.rb +0 -5
  206. data/lib/spree/core/testing_support/factories/product_scope_factory.rb +0 -7
  207. data/lib/spree/core/theme_support/hook_listener.rb +0 -145
  208. data/lib/spree/core/theme_support.rb +0 -1
  209. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.css +0 -57
@@ -1,26 +1,54 @@
1
- login: &login
2
- <% if database == 'mysql' %>
1
+ <% case ENV['DB']
2
+ when 'sqlite' %>
3
+ development:
4
+ adapter: sqlite3
5
+ database: "db/spree_development.sqlite3"
6
+ test:
7
+ adapter: sqlite3
8
+ database: "db/spree_test.sqlite3"
9
+ production:
10
+ adapter: sqlite3
11
+ database: "db/spree_production.sqlite3"
12
+ <% when 'mysql' %>
13
+ development:
14
+ adapter: mysql2
15
+ database: spree_development
16
+ username:
17
+ encoding: utf8
18
+ test:
19
+ adapter: mysql2
20
+ database: spree_test
21
+ username:
22
+ encoding: utf8
23
+ production:
3
24
  adapter: mysql2
25
+ database: spree_production
26
+ username:
4
27
  encoding: utf8
5
- reconnect: false
6
- pool: 5
7
- username: root
8
- password:
9
- #socket: /tmp/mysql.sock
28
+ <% when 'postgres' %>
29
+ development:
30
+ adapter: postgresql
31
+ database: spree_test
32
+ username: postgres
33
+ min_messages: warning
34
+ test:
35
+ adapter: postgresql
36
+ database: spree_test
37
+ username: postgres
38
+ min_messages: warning
39
+ production:
40
+ adapter: postgresql
41
+ database: spree_production
42
+ username: postgres
43
+ min_messages: warning
10
44
  <% else %>
11
- adapter: sqlite3
12
- pool: 5
13
- timeout: 5000
14
- <% end %>
15
-
16
45
  development:
17
- <<: *login
18
- database: db/dummy_dev
19
-
46
+ adapter: sqlite3
47
+ database: "db/spree_development.sqlite3"
20
48
  test:
21
- <<: *login
22
- database: db/dummy_test
23
-
49
+ adapter: sqlite3
50
+ database: "db/spree_test.sqlite3"
24
51
  production:
25
- <<: *login
26
- database: db/dummy_prod
52
+ adapter: sqlite3
53
+ database: "db/spree_production.sqlite3"
54
+ <% end %>
@@ -114,6 +114,15 @@ Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
114
114
  end
115
115
  end
116
116
 
117
+ def create_database
118
+ say_status :creating, "database"
119
+ silence_stream(STDOUT) do
120
+ silence_stream(STDERR) do
121
+ silence_warnings { rake 'db:create' }
122
+ end
123
+ end
124
+ end
125
+
117
126
  def run_migrations
118
127
  if @run_migrations
119
128
  say_status :running, "migrations"
@@ -153,7 +162,14 @@ Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
153
162
 
154
163
  def notify_about_routes
155
164
  insert_into_file File.join('config', 'routes.rb'), :after => "Application.routes.draw do\n" do
156
- " # Mount Spree's routes\n mount Spree::Core::Engine, :at => '/'\n"
165
+ %Q{
166
+ # This line mounts Spree's routes at the root of your application.
167
+ # This means, any requests to URLs such as /products, will go to Spree::ProductsController.
168
+ # If you would like to change where this engine is mounted, simply change the :at option to something different.
169
+ #
170
+ # We ask that you don't use the :as option here, as Spree relies on it being the default of "spree"
171
+ mount Spree::Core::Engine, :at => '/'
172
+ }
157
173
  end
158
174
 
159
175
  unless options[:quiet]
@@ -7,7 +7,6 @@
7
7
  <% if options[:lib_name] == 'spree' %>
8
8
  //= require admin/spree_core
9
9
  //= require admin/spree_auth
10
- //= require admin/spree_api
11
10
  //= require admin/spree_promo
12
11
  <% else %>
13
12
  //= require admin/<%= options[:lib_name].gsub("/", "_") %>
@@ -7,7 +7,6 @@
7
7
  <% if options[:lib_name] == 'spree' %>
8
8
  //= require store/spree_core
9
9
  //= require store/spree_auth
10
- //= require store/spree_api
11
10
  //= require store/spree_promo
12
11
  <% else %>
13
12
  //= require store/<%= options[:lib_name].gsub("/", "_") %>
@@ -6,7 +6,6 @@
6
6
  <% if options[:lib_name] == 'spree' %>
7
7
  *= require admin/spree_core
8
8
  *= require admin/spree_auth
9
- *= require admin/spree_api
10
9
  *= require admin/spree_promo
11
10
  <% else %>
12
11
  *= require admin/<%= options[:lib_name].gsub("/", "_") %>
@@ -6,7 +6,6 @@
6
6
  <% if options[:lib_name] == 'spree' %>
7
7
  *= require store/spree_core
8
8
  *= require store/spree_auth
9
- *= require store/spree_api
10
9
  *= require store/spree_promo
11
10
  <% else %>
12
11
  *= require store/<%= options[:lib_name].gsub("/", "_") %>
@@ -4,14 +4,21 @@ module Spree
4
4
  class SandboxGenerator < Spree::DummyGenerator
5
5
  desc "Creates blank Rails application, installs Spree and all sample data"
6
6
 
7
- class_option :database, :default => ''
8
-
9
7
  def self.source_paths
10
8
  paths = self.superclass.source_paths
11
9
  paths.unshift File.expand_path('../templates', __FILE__)
12
10
  paths.flatten
13
11
  end
14
12
 
13
+ def drop_database
14
+ say "dropping database"
15
+ inside dummy_path do
16
+ quietly do
17
+ rake 'db:drop -f sandbox/Rakefile'
18
+ end
19
+ end
20
+ end
21
+
15
22
  protected
16
23
  def dummy_path
17
24
  'sandbox'
@@ -5,51 +5,46 @@ module Spree
5
5
  def calculated_adjustments
6
6
  has_one :calculator, :as => :calculable, :dependent => :destroy
7
7
  accepts_nested_attributes_for :calculator
8
- attr_accessible :calculator_attributes
8
+ attr_accessible :calculator_type, :calculator_attributes
9
9
  validates :calculator, :presence => true
10
10
 
11
11
  def self.calculators
12
12
  Rails.application.config.spree.calculators.send(self.to_s.tableize.gsub('/', '_').sub('spree_', ''))
13
13
  end
14
-
15
- include InstanceMethods
16
14
  end
17
15
  end
16
+
17
+ def calculator_type
18
+ calculator.class.to_s if calculator
19
+ end
18
20
 
19
- module InstanceMethods
20
- def calculator_type
21
- calculator.class.to_s if calculator
22
- end
23
-
24
- def calculator_type=(calculator_type)
25
- clazz = calculator_type.constantize if calculator_type
26
- self.calculator = clazz.new if clazz and not self.calculator.is_a? clazz
27
- end
28
-
29
- # Creates a new adjustment for the target object (which is any class that has_many :adjustments) and
30
- # sets amount based on the calculator as applied to the calculable argument (Order, LineItems[], Shipment, etc.)
31
- # By default the adjustment will not be considered mandatory
32
- def create_adjustment(label, target, calculable, mandatory=false)
33
- amount = compute_amount(calculable)
34
- return if amount == 0 && !mandatory
35
- target.adjustments.create({:amount => amount,
36
- :source => calculable,
37
- :originator => self,
38
- :label => label,
39
- :mandatory => mandatory}, :without_protection => true)
40
- end
21
+ def calculator_type=(calculator_type)
22
+ clazz = calculator_type.constantize if calculator_type
23
+ self.calculator = clazz.new if clazz and not self.calculator.is_a? clazz
24
+ end
41
25
 
42
- # Updates the amount of the adjustment using our Calculator and calling the +compute+ method with the +calculable+
43
- # referenced passed to the method.
44
- def update_adjustment(adjustment, calculable)
45
- adjustment.update_attribute_without_callbacks(:amount, compute_amount(calculable))
46
- end
26
+ # Creates a new adjustment for the target object (which is any class that has_many :adjustments) and
27
+ # sets amount based on the calculator as applied to the calculable argument (Order, LineItems[], Shipment, etc.)
28
+ # By default the adjustment will not be considered mandatory
29
+ def create_adjustment(label, target, calculable, mandatory=false)
30
+ amount = compute_amount(calculable)
31
+ return if amount == 0 && !mandatory
32
+ target.adjustments.create({ :amount => amount,
33
+ :source => calculable,
34
+ :originator => self,
35
+ :label => label,
36
+ :mandatory => mandatory}, :without_protection => true)
37
+ end
47
38
 
48
- # Calculate the amount to be used when creating an adjustment
49
- def compute_amount(calculable)
50
- self.calculator.compute(calculable)
51
- end
39
+ # Updates the amount of the adjustment using our Calculator and calling the +compute+ method with the +calculable+
40
+ # referenced passed to the method.
41
+ def update_adjustment(adjustment, calculable)
42
+ adjustment.update_attribute_without_callbacks(:amount, compute_amount(calculable))
43
+ end
52
44
 
45
+ # Calculate the amount to be used when creating an adjustment
46
+ def compute_amount(calculable)
47
+ self.calculator.compute(calculable)
53
48
  end
54
49
 
55
50
  def self.included(receiver)
@@ -2,8 +2,7 @@ module Spree
2
2
  module Core
3
3
  module ControllerHelpers
4
4
  def self.included(receiver)
5
- receiver.send :include, InstanceMethods
6
- receiver.send :layout, '/spree/layouts/spree_application'
5
+ receiver.send :layout, :get_layout
7
6
  receiver.send :helper, 'spree/hook'
8
7
  receiver.send :before_filter, 'instantiate_controller_and_action_names'
9
8
  receiver.send :before_filter, 'set_user_language'
@@ -12,35 +11,33 @@ module Spree
12
11
  receiver.send :helper_method, 'title='
13
12
  receiver.send :helper_method, 'accurate_title'
14
13
  receiver.send :helper_method, 'get_taxonomies'
15
- receiver.send :helper_method, 'current_gateway'
16
14
  receiver.send :helper_method, 'current_order'
17
15
  receiver.send :include, SslRequirement
18
16
  receiver.send :include, Spree::Core::CurrentOrder
19
17
  end
20
18
 
21
- module InstanceMethods
22
- def access_forbidden
23
- render :text => 'Access Forbidden', :layout => true, :status => 401
24
- end
19
+ def access_forbidden
20
+ render :text => 'Access Forbidden', :layout => true, :status => 401
21
+ end
22
+
23
+ # can be used in views as well as controllers.
24
+ # e.g. <% title = 'This is a custom title for this view' %>
25
+ attr_writer :title
25
26
 
26
- # can be used in views as well as controllers.
27
- # e.g. <% title = 'This is a custom title for this view' %>
28
- attr_writer :title
29
-
30
- def title
31
- title_string = @title.present? ? @title : accurate_title
32
- if title_string.present?
33
- if Spree::Config[:always_put_site_name_in_title]
34
- [default_title, title_string].join(' - ')
35
- else
36
- title_string
37
- end
27
+ def title
28
+ title_string = @title.present? ? @title : accurate_title
29
+ if title_string.present?
30
+ if Spree::Config[:always_put_site_name_in_title]
31
+ [default_title, title_string].join(' - ')
38
32
  else
39
- default_title
33
+ title_string
40
34
  end
35
+ else
36
+ default_title
41
37
  end
38
+ end
42
39
 
43
- protected
40
+ protected
44
41
 
45
42
  def default_title
46
43
  Spree::Config[:site_name]
@@ -53,7 +50,7 @@ module Spree
53
50
 
54
51
  def render_404(exception = nil)
55
52
  respond_to do |type|
56
- type.html { render :status => :not_found, :file => "#{::Rails.root}/public/404.html", :layout => nil}
53
+ type.html { render :status => :not_found, :file => "#{::Rails.root}/public/404", :formats => [:html], :layout => nil}
57
54
  type.all { render :status => :not_found, :nothing => true }
58
55
  end
59
56
  end
@@ -67,11 +64,10 @@ module Spree
67
64
  # add additional keys as appropriate. Override this method if you need additional data when
68
65
  # responding to a notification
69
66
  def default_notification_payload
70
- { :user => (respond_to?(:current_user) && current_user),
71
- :order => current_order(true) }
67
+ {:user => (respond_to?(:current_user) && current_user), :order => current_order}
72
68
  end
73
69
 
74
- private
70
+ private
75
71
 
76
72
  def redirect_back_or_default(default)
77
73
  redirect_to(session["user_return_to"] || default)
@@ -87,11 +83,6 @@ module Spree
87
83
  @taxonomies ||= Taxonomy.includes(:root => :children).joins(:root)
88
84
  end
89
85
 
90
- def current_gateway
91
- ActiveSupport::Deprecation.warn "current_gateway is deprecated and will be removed in Spree > 1.0"
92
- @current_gateway ||= Gateway.current
93
- end
94
-
95
86
  def associate_user
96
87
  return unless current_user and current_order
97
88
  current_order.associate_user!(current_user)
@@ -99,11 +90,22 @@ module Spree
99
90
  end
100
91
 
101
92
  def set_user_language
102
- locale = session[:locale] || Spree::Config[:default_locale] || Rails.application.config.i18n.default_locale
103
- locale = I18n.default_locale unless locale && I18n.available_locales.map(&:to_s).include?(locale)
104
- I18n.locale = locale
93
+ locale = session[:locale]
94
+ locale ||= Spree::Config[:default_locale] unless Spree::Config[:default_locale].blank?
95
+ locale ||= Rails.application.config.i18n.default_locale
96
+ locale ||= I18n.default_locale unless I18n.available_locales.include?(locale.to_sym)
97
+ I18n.locale = locale.to_sym
98
+ end
99
+
100
+ # Returns which layout to render.
101
+ #
102
+ # You can set the layout you want to render inside your Spree configuration with the +:layout+ option.
103
+ #
104
+ # Default layout is: +app/views/spree/layouts/spree_application+
105
+ #
106
+ def get_layout
107
+ layout ||= Spree::Config[:layout]
105
108
  end
106
- end
107
109
  end
108
110
  end
109
111
  end
@@ -30,7 +30,7 @@ module Spree
30
30
  connection,
31
31
  table_name,
32
32
  class_names[table_name.to_sym] || table_name.classify,
33
- File.join(fixtures_directory, path))
33
+ ::File.join(fixtures_directory, path))
34
34
  end
35
35
 
36
36
  all_loaded_fixtures.update(fixtures_map)
@@ -52,39 +52,37 @@ module DelegateBelongsTo
52
52
 
53
53
  protected
54
54
 
55
- def get_association_column_names(association, without_default_rejected_delegate_columns=true)
56
- begin
57
- association_klass = reflect_on_association(association).klass
58
- methods = association_klass.column_names
59
- methods.reject!{|x|default_rejected_delegate_columns.include?(x.to_s)} if without_default_rejected_delegate_columns
60
- return methods
61
- rescue
62
- return []
55
+ def get_association_column_names(association, without_default_rejected_delegate_columns=true)
56
+ begin
57
+ association_klass = reflect_on_association(association).klass
58
+ methods = association_klass.column_names
59
+ methods.reject!{|x|default_rejected_delegate_columns.include?(x.to_s)} if without_default_rejected_delegate_columns
60
+ return methods
61
+ rescue
62
+ return []
63
+ end
63
64
  end
64
- end
65
65
 
66
- ##
67
- # initialize_association :belongs_to, :contact
68
- def initialize_association(type, association, opts={})
69
- raise 'Illegal or unimplemented association type.' unless [:belongs_to].include?(type.to_s.to_sym)
70
- send type, association, opts if reflect_on_association(association).nil?
71
- end
66
+ ##
67
+ # initialize_association :belongs_to, :contact
68
+ def initialize_association(type, association, opts={})
69
+ raise 'Illegal or unimplemented association type.' unless [:belongs_to].include?(type.to_s.to_sym)
70
+ send type, association, opts if reflect_on_association(association).nil?
71
+ end
72
72
 
73
73
  private
74
74
 
75
- def class_def(name, method=nil, &blk)
76
- class_eval { method.nil? ? define_method(name, &blk) : define_method(name, method) }
77
- end
75
+ def class_def(name, method=nil, &blk)
76
+ class_eval { method.nil? ? define_method(name, &blk) : define_method(name, method) }
77
+ end
78
78
 
79
79
  end
80
80
 
81
- module InstanceMethods
82
- protected
83
- def delegator_for(association)
84
- send("#{association}=", self.class.reflect_on_association(association).klass.new) if send(association).nil?
85
- send(association)
86
- end
81
+ def delegator_for(association)
82
+ send("#{association}=", self.class.reflect_on_association(association).klass.new) if send(association).nil?
83
+ send(association)
87
84
  end
85
+ protected :delegator_for
88
86
 
89
87
  end
90
88
 
@@ -25,11 +25,11 @@ module Spree
25
25
 
26
26
  end
27
27
 
28
- # We need to reload the routes here due to how Spree sets them up
29
- # The different facets of Spree, (auth, promo, etc.) appends/prepends routes to Core
28
+ # We need to reload the routes here due to how Spree sets them up.
29
+ # The different facets of Spree (auth, promo, etc.) append/prepend routes to Core
30
30
  # *after* Core has been loaded.
31
31
  #
32
- # So we wait until after initialization is complete to do one final reload
32
+ # So we wait until after initialization is complete to do one final reload.
33
33
  # This then makes the appended/prepended routes available to the application.
34
34
  config.after_initialize do
35
35
  Rails.application.routes_reloader.reload!
@@ -3,26 +3,23 @@ module Spree
3
3
  module EnvironmentExtension
4
4
  extend ActiveSupport::Concern
5
5
 
6
- module InstanceMethods
6
+ def add_class(name)
7
+ self.instance_variable_set "@#{name}", Set.new
7
8
 
8
- def add_class(name)
9
- self.instance_variable_set "@#{name}", Set.new
10
- create_method( "#{name}=".to_sym ) { |val|
11
- instance_variable_set( "@" + name, val)
12
- }
9
+ create_method( "#{name}=".to_sym ) { |val|
10
+ instance_variable_set( "@" + name, val)
11
+ }
13
12
 
14
- create_method( name.to_sym ) {
15
- instance_variable_get( "@" + name )
16
- }
13
+ create_method(name.to_sym) do
14
+ instance_variable_get( "@" + name )
17
15
  end
16
+ end
18
17
 
19
- private
20
-
21
- def create_method( name, &block )
22
- self.class.send( :define_method, name, &block )
23
- end
18
+ private
24
19
 
25
- end
20
+ def create_method(name, &block)
21
+ self.class.send(:define_method, name, &block)
22
+ end
26
23
  end
27
24
  end
28
25
  end
@@ -6,6 +6,7 @@ module Spree
6
6
  # This makes it possible to configure the mail settings
7
7
  # through an admin interface instead of requiring changes to the Rails envrionment file.
8
8
  def self.init
9
+ ActionMailer::Base.default_url_options[:host] = Spree::Config[:site_url]
9
10
  return unless mail_method = Spree::MailMethod.current
10
11
  if mail_method.prefers_enable_mail_delivery?
11
12
  mail_server_settings = {
@@ -24,7 +25,6 @@ module Spree
24
25
 
25
26
  ActionMailer::Base.smtp_settings = mail_server_settings
26
27
  ActionMailer::Base.perform_deliveries = true
27
- ActionMailer::Base.default_url_options[:host] = Spree::Config[:site_url]
28
28
  else
29
29
  #logger.warn "NOTICE: Mail not enabled"
30
30
  ActionMailer::Base.perform_deliveries = false
@@ -11,10 +11,10 @@ module Spree
11
11
 
12
12
  module ClassMethods
13
13
  def make_permalink(options={})
14
- options[:field] ||= "permalink"
14
+ options[:field] ||= :permalink
15
15
  self.permalink_options = options
16
16
 
17
- validates_uniqueness_of permalink_options[:field]
17
+ validates permalink_options[:field], :uniqueness => true
18
18
 
19
19
  if self.table_exists? && self.column_names.include?(permalink_options[:field].to_s)
20
20
  before_validation(:on => :create) { save_permalink }
@@ -33,20 +33,29 @@ module Spree
33
33
  permalink_options[:field]
34
34
  end
35
35
 
36
+ def permalink_order
37
+ order = permalink_options[:order]
38
+
39
+ if order
40
+ "#{order} ASC,"
41
+ end
42
+ end
43
+
36
44
  end
37
45
 
38
- module InstanceMethods
39
- def save_permalink
40
- permalink_value = self.to_param
41
- field = self.class.permalink_field
42
- # Do other links exist with this permalink?
43
- other = self.class.first(
44
- :conditions => "#{field} LIKE '#{permalink_value}%'",
45
- :order => "LENGTH(#{field}) DESC, #{field} DESC"
46
- )
47
- if other
48
- # Find the number of that permalink and add one.
49
- if /-(\d+)$/.match(other.send(field))
46
+ def save_permalink
47
+ permalink_value = self.to_param
48
+ field = self.class.permalink_field
49
+ order = self.class.permalink_order
50
+ # Do other links exist with this permalink?
51
+ other = self.class.first(
52
+ :conditions => "#{field} LIKE '#{permalink_value}%'",
53
+ :order => "#{order} LENGTH(#{field}) DESC, #{field} DESC"
54
+ )
55
+ if other
56
+ # Find existence of that permalink or the number of that permalink and add one.
57
+ if ( permalink_value == other.send(field) || /-(\d+)$/.match(other.send(field)) )
58
+ if $1
50
59
  number = $1.to_i + 1
51
60
  # Otherwise default to suffixing it with a 1.
52
61
  else
@@ -55,9 +64,8 @@ module Spree
55
64
 
56
65
  permalink_value += "-#{number.to_s}"
57
66
  end
58
- write_attribute(field, permalink_value)
59
67
  end
60
-
68
+ write_attribute(field, permalink_value)
61
69
  end
62
70
  end
63
71
  end
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  class OldPrefs < ActiveRecord::Base
3
- set_table_name "spree_preferences"
3
+ self.table_name = "spree_preferences"
4
4
  belongs_to :owner, :polymorphic => true
5
5
  attr_accessor :owner_klass
6
6
  end
@@ -4,21 +4,26 @@ module ActionController
4
4
  raise "In order to use respond_with, first you need to declare the formats your " <<
5
5
  "controller responds to in the class level" if self.class.mimes_for_respond_to.empty?
6
6
 
7
- if response = retrieve_response_from_mimes(&block)
7
+ if collector = retrieve_collector_from_mimes(&block)
8
8
  options = resources.size == 1 ? {} : resources.extract_options!
9
- options.merge!(:default_response => response)
10
9
 
11
- # following statement is not present in rails code. The action name is needed for processing
12
- options.merge!(:action_name => action_name.to_sym)
13
-
14
- # if responder is not specified then pass in Spree::Responder
15
- (options.delete(:responder) || Spree::Responder).call(self, resources, options)
10
+ if defined_response = collector.response and Spree::BaseController.spree_responders.empty?
11
+ if action = options.delete(:action)
12
+ render :action => action
13
+ else
14
+ defined_response.call
15
+ end
16
+ else
17
+ # The action name is needed for processing
18
+ options.merge!(:action_name => action_name.to_sym)
19
+ # If responder is not specified then pass in Spree::Responder
20
+ (options.delete(:responder) || Spree::Responder).call(self, resources, options)
21
+ end
16
22
  end
17
23
  end
18
24
  end
19
25
  end
20
26
 
21
-
22
27
  module Spree
23
28
  module Core
24
29
  module RespondWith
@@ -9,8 +9,7 @@ module Spree
9
9
  class_name = controller.class.name.to_sym
10
10
  action_name = options.delete(:action_name)
11
11
 
12
- if result = Spree::BaseController.spree_responders[class_name].try(:[],action_name).try(:[], self.format.to_sym)
13
-
12
+ if result = Spree::BaseController.spree_responders[class_name].try(:[], action_name).try(:[], self.format.to_sym)
14
13
  self.on_success = handler(controller, result, :success)
15
14
  self.on_failure = handler(controller, result, :failure)
16
15
  end