dup_spree_core 1.3.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (918) hide show
  1. data/LICENSE +26 -0
  2. data/README.md +21 -0
  3. data/app/assets/images/admin/bg/spree_50.png +0 -0
  4. data/app/assets/images/admin/payment_banner.png +0 -0
  5. data/app/assets/images/admin/progress.gif +0 -0
  6. data/app/assets/images/credit_cards/amex_cid.gif +0 -0
  7. data/app/assets/images/credit_cards/credit_card.gif +0 -0
  8. data/app/assets/images/credit_cards/discover_cid.gif +0 -0
  9. data/app/assets/images/credit_cards/icons/american_express.png +0 -0
  10. data/app/assets/images/credit_cards/icons/cirrus.png +0 -0
  11. data/app/assets/images/credit_cards/icons/delta.png +0 -0
  12. data/app/assets/images/credit_cards/icons/dinersclub.png +0 -0
  13. data/app/assets/images/credit_cards/icons/directdebit.png +0 -0
  14. data/app/assets/images/credit_cards/icons/discover.png +0 -0
  15. data/app/assets/images/credit_cards/icons/egold.png +0 -0
  16. data/app/assets/images/credit_cards/icons/maestro.png +0 -0
  17. data/app/assets/images/credit_cards/icons/master.png +0 -0
  18. data/app/assets/images/credit_cards/icons/paypal.png +0 -0
  19. data/app/assets/images/credit_cards/icons/solo.png +0 -0
  20. data/app/assets/images/credit_cards/icons/switch.png +0 -0
  21. data/app/assets/images/credit_cards/icons/visa.png +0 -0
  22. data/app/assets/images/credit_cards/icons/visaelectron.png +0 -0
  23. data/app/assets/images/credit_cards/icons/westernunion.png +0 -0
  24. data/app/assets/images/credit_cards/icons/wirecard.png +0 -0
  25. data/app/assets/images/credit_cards/icons/worldpay.png +0 -0
  26. data/app/assets/images/credit_cards/master_cid.jpg +0 -0
  27. data/app/assets/images/credit_cards/visa_cid.gif +0 -0
  28. data/app/assets/images/favicon.ico +0 -0
  29. data/app/assets/images/icons/add-to-cart.png +0 -0
  30. data/app/assets/images/icons/checkout.png +0 -0
  31. data/app/assets/images/icons/delete.png +0 -0
  32. data/app/assets/images/icons/update.png +0 -0
  33. data/app/assets/images/noimage/large.png +0 -0
  34. data/app/assets/images/noimage/mini.png +0 -0
  35. data/app/assets/images/noimage/product.png +0 -0
  36. data/app/assets/images/noimage/small.png +0 -0
  37. data/app/assets/images/spinner.gif +0 -0
  38. data/app/assets/images/store/cart.png +0 -0
  39. data/app/assets/images/store/select_arrow.gif +0 -0
  40. data/app/assets/javascripts/admin/address_states.js +26 -0
  41. data/app/assets/javascripts/admin/admin.js.erb +280 -0
  42. data/app/assets/javascripts/admin/calculator.js +16 -0
  43. data/app/assets/javascripts/admin/checkouts/edit.js +90 -0
  44. data/app/assets/javascripts/admin/gateway.js +13 -0
  45. data/app/assets/javascripts/admin/handlebar_extensions.js +9 -0
  46. data/app/assets/javascripts/admin/image_settings.js.erb +62 -0
  47. data/app/assets/javascripts/admin/images/index.js.coffee +15 -0
  48. data/app/assets/javascripts/admin/images/new.js.coffee +7 -0
  49. data/app/assets/javascripts/admin/nested-attribute.js +23 -0
  50. data/app/assets/javascripts/admin/orders/edit.js +15 -0
  51. data/app/assets/javascripts/admin/orders/edit_form.js +16 -0
  52. data/app/assets/javascripts/admin/payments/new.js +9 -0
  53. data/app/assets/javascripts/admin/progress.coffee +27 -0
  54. data/app/assets/javascripts/admin/shipping_methods.js.coffee +10 -0
  55. data/app/assets/javascripts/admin/spree-select2.js.erb +22 -0
  56. data/app/assets/javascripts/admin/spree_core.js +19 -0
  57. data/app/assets/javascripts/admin/states.js +9 -0
  58. data/app/assets/javascripts/admin/taxon_autocomplete.js.erb +36 -0
  59. data/app/assets/javascripts/admin/taxonomy.js +205 -0
  60. data/app/assets/javascripts/admin/underscore-min.js +26 -0
  61. data/app/assets/javascripts/admin/variant_autocomplete.js.erb +36 -0
  62. data/app/assets/javascripts/admin/zone.js.coffee +39 -0
  63. data/app/assets/javascripts/store/cart.js.coffee +9 -0
  64. data/app/assets/javascripts/store/checkout.js.coffee +79 -0
  65. data/app/assets/javascripts/store/product.js.coffee +42 -0
  66. data/app/assets/javascripts/store/spree_core.js +4 -0
  67. data/app/assets/stylesheets/admin/components/_actions.scss +31 -0
  68. data/app/assets/stylesheets/admin/components/_date-picker.scss +154 -0
  69. data/app/assets/stylesheets/admin/components/_messages.scss +43 -0
  70. data/app/assets/stylesheets/admin/components/_navigation.scss +150 -0
  71. data/app/assets/stylesheets/admin/components/_pagination.scss +17 -0
  72. data/app/assets/stylesheets/admin/components/_product_autocomplete.scss +29 -0
  73. data/app/assets/stylesheets/admin/components/_progress.scss +35 -0
  74. data/app/assets/stylesheets/admin/components/_sidebar.scss +23 -0
  75. data/app/assets/stylesheets/admin/components/_states.scss +30 -0
  76. data/app/assets/stylesheets/admin/components/_table-filter.scss +14 -0
  77. data/app/assets/stylesheets/admin/globals/_functions.scss +25 -0
  78. data/app/assets/stylesheets/admin/globals/_mixins.scss +25 -0
  79. data/app/assets/stylesheets/admin/globals/_variables.scss +134 -0
  80. data/app/assets/stylesheets/admin/globals/_variables_override.scss +7 -0
  81. data/app/assets/stylesheets/admin/hacks/_ie.scss +73 -0
  82. data/app/assets/stylesheets/admin/hacks/_mozilla.scss +32 -0
  83. data/app/assets/stylesheets/admin/hacks/_opera.scss +17 -0
  84. data/app/assets/stylesheets/admin/plugins/_jstree.scss +132 -0
  85. data/app/assets/stylesheets/admin/plugins/_powertip.scss +86 -0
  86. data/app/assets/stylesheets/admin/plugins/_select2.scss +176 -0
  87. data/app/assets/stylesheets/admin/plugins/_token-input.scss +110 -0
  88. data/app/assets/stylesheets/admin/plugins/font-awesome.scss +303 -0
  89. data/app/assets/stylesheets/admin/sections/_edit_checkouts.scss +72 -0
  90. data/app/assets/stylesheets/admin/sections/_image_settings.scss +3 -0
  91. data/app/assets/stylesheets/admin/sections/_orders.scss +38 -0
  92. data/app/assets/stylesheets/admin/sections/_overview.scss +86 -0
  93. data/app/assets/stylesheets/admin/sections/_products.scss +26 -0
  94. data/app/assets/stylesheets/admin/sections/_promotions.scss +100 -0
  95. data/app/assets/stylesheets/admin/shared/_forms.scss +250 -0
  96. data/app/assets/stylesheets/admin/shared/_icons.scss +21 -0
  97. data/app/assets/stylesheets/admin/shared/_layout.scss +84 -0
  98. data/app/assets/stylesheets/admin/shared/_tables.scss +180 -0
  99. data/app/assets/stylesheets/admin/shared/_typography.scss +132 -0
  100. data/app/assets/stylesheets/admin/spree_admin.scss +38 -0
  101. data/app/assets/stylesheets/admin/spree_core.css +16 -0
  102. data/app/assets/stylesheets/store/screen.css.scss +1169 -0
  103. data/app/assets/stylesheets/store/spree_core.css +6 -0
  104. data/app/assets/stylesheets/store/variables.css.scss +60 -0
  105. data/app/controllers/spree/admin/adjustments_controller.rb +13 -0
  106. data/app/controllers/spree/admin/banners_controller.rb +14 -0
  107. data/app/controllers/spree/admin/base_controller.rb +74 -0
  108. data/app/controllers/spree/admin/countries_controller.rb +11 -0
  109. data/app/controllers/spree/admin/general_settings_controller.rb +34 -0
  110. data/app/controllers/spree/admin/image_settings_controller.rb +66 -0
  111. data/app/controllers/spree/admin/images_controller.rb +35 -0
  112. data/app/controllers/spree/admin/inventory_settings_controller.rb +13 -0
  113. data/app/controllers/spree/admin/inventory_units_controller.rb +6 -0
  114. data/app/controllers/spree/admin/line_items_controller.rb +56 -0
  115. data/app/controllers/spree/admin/mail_methods_controller.rb +32 -0
  116. data/app/controllers/spree/admin/option_types_controller.rb +46 -0
  117. data/app/controllers/spree/admin/option_values_controller.rb +11 -0
  118. data/app/controllers/spree/admin/orders/customer_details_controller.rb +51 -0
  119. data/app/controllers/spree/admin/orders_controller.rb +123 -0
  120. data/app/controllers/spree/admin/overview_controller.rb +17 -0
  121. data/app/controllers/spree/admin/payment_methods_controller.rb +56 -0
  122. data/app/controllers/spree/admin/payments_controller.rb +99 -0
  123. data/app/controllers/spree/admin/product_properties_controller.rb +30 -0
  124. data/app/controllers/spree/admin/products_controller.rb +105 -0
  125. data/app/controllers/spree/admin/properties_controller.rb +14 -0
  126. data/app/controllers/spree/admin/prototypes_controller.rb +29 -0
  127. data/app/controllers/spree/admin/reports_controller.rb +50 -0
  128. data/app/controllers/spree/admin/resource_controller.rb +250 -0
  129. data/app/controllers/spree/admin/return_authorizations_controller.rb +21 -0
  130. data/app/controllers/spree/admin/search_controller.rb +27 -0
  131. data/app/controllers/spree/admin/shipments_controller.rb +97 -0
  132. data/app/controllers/spree/admin/shipping_categories_controller.rb +6 -0
  133. data/app/controllers/spree/admin/shipping_methods_controller.rb +37 -0
  134. data/app/controllers/spree/admin/states_controller.rb +29 -0
  135. data/app/controllers/spree/admin/tax_categories_controller.rb +19 -0
  136. data/app/controllers/spree/admin/tax_rates_controller.rb +26 -0
  137. data/app/controllers/spree/admin/tax_settings_controller.rb +17 -0
  138. data/app/controllers/spree/admin/taxonomies_controller.rb +23 -0
  139. data/app/controllers/spree/admin/taxons_controller.rb +120 -0
  140. data/app/controllers/spree/admin/trackers_controller.rb +6 -0
  141. data/app/controllers/spree/admin/variants_controller.rb +63 -0
  142. data/app/controllers/spree/admin/zones_controller.rb +27 -0
  143. data/app/controllers/spree/base_controller.rb +8 -0
  144. data/app/controllers/spree/checkout_controller.rb +123 -0
  145. data/app/controllers/spree/content_controller.rb +23 -0
  146. data/app/controllers/spree/countries_controller.rb +12 -0
  147. data/app/controllers/spree/home_controller.rb +14 -0
  148. data/app/controllers/spree/locale_controller.rb +16 -0
  149. data/app/controllers/spree/orders_controller.rb +82 -0
  150. data/app/controllers/spree/products_controller.rb +53 -0
  151. data/app/controllers/spree/states_controller.rb +13 -0
  152. data/app/controllers/spree/store_controller.rb +11 -0
  153. data/app/controllers/spree/taxons_controller.rb +25 -0
  154. data/app/helpers/spree/admin/base_helper.rb +167 -0
  155. data/app/helpers/spree/admin/general_settings_helper.rb +13 -0
  156. data/app/helpers/spree/admin/inventory_settings_helper.rb +9 -0
  157. data/app/helpers/spree/admin/navigation_helper.rb +134 -0
  158. data/app/helpers/spree/admin/orders_helper.rb +19 -0
  159. data/app/helpers/spree/admin/payments_helper.rb +11 -0
  160. data/app/helpers/spree/admin/products_helper.rb +27 -0
  161. data/app/helpers/spree/admin/tables_helper.rb +15 -0
  162. data/app/helpers/spree/admin/taxons_helper.rb +9 -0
  163. data/app/helpers/spree/base_helper.rb +190 -0
  164. data/app/helpers/spree/checkout_helper.rb +31 -0
  165. data/app/helpers/spree/products_helper.rb +50 -0
  166. data/app/helpers/spree/taxons_helper.rb +19 -0
  167. data/app/mailers/spree/order_mailer.rb +21 -0
  168. data/app/mailers/spree/shipment_mailer.rb +13 -0
  169. data/app/mailers/spree/test_mailer.rb +10 -0
  170. data/app/models/spree.rb +5 -0
  171. data/app/models/spree/ability.rb +75 -0
  172. data/app/models/spree/activator.rb +29 -0
  173. data/app/models/spree/address.rb +124 -0
  174. data/app/models/spree/adjustment.rb +113 -0
  175. data/app/models/spree/alert.rb +14 -0
  176. data/app/models/spree/app_configuration.rb +94 -0
  177. data/app/models/spree/asset.rb +6 -0
  178. data/app/models/spree/billing_integration.rb +24 -0
  179. data/app/models/spree/calculator.rb +39 -0
  180. data/app/models/spree/calculator/default_tax.rb +51 -0
  181. data/app/models/spree/calculator/flat_percent_item_total.rb +20 -0
  182. data/app/models/spree/calculator/flat_rate.rb +18 -0
  183. data/app/models/spree/calculator/flexi_rate.rb +36 -0
  184. data/app/models/spree/calculator/per_item.rb +41 -0
  185. data/app/models/spree/calculator/price_sack.rb +36 -0
  186. data/app/models/spree/configuration.rb +5 -0
  187. data/app/models/spree/country.rb +26 -0
  188. data/app/models/spree/credit_card.rb +103 -0
  189. data/app/models/spree/gateway.rb +48 -0
  190. data/app/models/spree/gateway/bogus.rb +85 -0
  191. data/app/models/spree/gateway/bogus_simple.rb +26 -0
  192. data/app/models/spree/image.rb +51 -0
  193. data/app/models/spree/inventory_unit.rb +126 -0
  194. data/app/models/spree/legacy_user.rb +28 -0
  195. data/app/models/spree/line_item.rb +121 -0
  196. data/app/models/spree/log_entry.rb +5 -0
  197. data/app/models/spree/mail_method.rb +32 -0
  198. data/app/models/spree/option_type.rb +14 -0
  199. data/app/models/spree/option_value.rb +9 -0
  200. data/app/models/spree/order.rb +593 -0
  201. data/app/models/spree/order/checkout.rb +138 -0
  202. data/app/models/spree/order_updater.rb +134 -0
  203. data/app/models/spree/payment.rb +112 -0
  204. data/app/models/spree/payment/processing.rb +191 -0
  205. data/app/models/spree/payment_method.rb +55 -0
  206. data/app/models/spree/payment_method/check.rb +29 -0
  207. data/app/models/spree/preference.rb +65 -0
  208. data/app/models/spree/preferences/configuration.rb +71 -0
  209. data/app/models/spree/preferences/preferable.rb +137 -0
  210. data/app/models/spree/preferences/preferable_class_methods.rb +86 -0
  211. data/app/models/spree/preferences/store.rb +104 -0
  212. data/app/models/spree/price.rb +51 -0
  213. data/app/models/spree/product.rb +298 -0
  214. data/app/models/spree/product/scopes.rb +252 -0
  215. data/app/models/spree/product_option_type.rb +7 -0
  216. data/app/models/spree/product_property.rb +25 -0
  217. data/app/models/spree/product_scope/scopes.rb +47 -0
  218. data/app/models/spree/property.rb +22 -0
  219. data/app/models/spree/prototype.rb +10 -0
  220. data/app/models/spree/return_authorization.rb +94 -0
  221. data/app/models/spree/role.rb +7 -0
  222. data/app/models/spree/shipment.rb +173 -0
  223. data/app/models/spree/shipping_category.rb +9 -0
  224. data/app/models/spree/shipping_method.rb +67 -0
  225. data/app/models/spree/shipping_rate.rb +19 -0
  226. data/app/models/spree/state.rb +31 -0
  227. data/app/models/spree/state_change.rb +15 -0
  228. data/app/models/spree/tax_category.rb +26 -0
  229. data/app/models/spree/tax_rate.rb +81 -0
  230. data/app/models/spree/taxon.rb +62 -0
  231. data/app/models/spree/taxonomy.rb +25 -0
  232. data/app/models/spree/tokenized_permission.rb +6 -0
  233. data/app/models/spree/tracker.rb +10 -0
  234. data/app/models/spree/variant.rb +227 -0
  235. data/app/models/spree/variant/scopes.rb +38 -0
  236. data/app/models/spree/zone.rb +115 -0
  237. data/app/models/spree/zone_member.rb +13 -0
  238. data/app/views/spree/address/_form.html.erb +75 -0
  239. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +26 -0
  240. data/app/views/spree/admin/adjustments/_form.html.erb +16 -0
  241. data/app/views/spree/admin/adjustments/edit.html.erb +22 -0
  242. data/app/views/spree/admin/adjustments/index.html.erb +14 -0
  243. data/app/views/spree/admin/adjustments/new.html.erb +23 -0
  244. data/app/views/spree/admin/banners/_gateway.html.erb +16 -0
  245. data/app/views/spree/admin/countries/_form.html.erb +22 -0
  246. data/app/views/spree/admin/countries/edit.html.erb +21 -0
  247. data/app/views/spree/admin/countries/index.html.erb +33 -0
  248. data/app/views/spree/admin/general_settings/edit.html.erb +84 -0
  249. data/app/views/spree/admin/image_settings/edit.html.erb +118 -0
  250. data/app/views/spree/admin/images/_form.html.erb +18 -0
  251. data/app/views/spree/admin/images/edit.html.erb +28 -0
  252. data/app/views/spree/admin/images/index.html.erb +81 -0
  253. data/app/views/spree/admin/images/new.html.erb +15 -0
  254. data/app/views/spree/admin/inventory_settings/edit.html.erb +25 -0
  255. data/app/views/spree/admin/inventory_settings/show.html.erb +19 -0
  256. data/app/views/spree/admin/inventory_units/adjust.html.erb +33 -0
  257. data/app/views/spree/admin/line_items/create.js.erb +1 -0
  258. data/app/views/spree/admin/line_items/destroy.js.erb +1 -0
  259. data/app/views/spree/admin/mail_methods/_form.html.erb +91 -0
  260. data/app/views/spree/admin/mail_methods/edit.html.erb +18 -0
  261. data/app/views/spree/admin/mail_methods/index.html.erb +41 -0
  262. data/app/views/spree/admin/mail_methods/new.html.erb +21 -0
  263. data/app/views/spree/admin/option_types/_form.html.erb +17 -0
  264. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +9 -0
  265. data/app/views/spree/admin/option_types/edit.html.erb +50 -0
  266. data/app/views/spree/admin/option_types/index.html.erb +40 -0
  267. data/app/views/spree/admin/option_types/new.html.erb +11 -0
  268. data/app/views/spree/admin/option_types/new.js.erb +2 -0
  269. data/app/views/spree/admin/orders/_add_product.html.erb +26 -0
  270. data/app/views/spree/admin/orders/_form.html.erb +67 -0
  271. data/app/views/spree/admin/orders/_line_item.html.erb +9 -0
  272. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +19 -0
  273. data/app/views/spree/admin/orders/customer_details/_form.html.erb +66 -0
  274. data/app/views/spree/admin/orders/customer_details/edit.html.erb +29 -0
  275. data/app/views/spree/admin/orders/edit.html.erb +24 -0
  276. data/app/views/spree/admin/orders/index.html.erb +132 -0
  277. data/app/views/spree/admin/orders/new.html.erb +30 -0
  278. data/app/views/spree/admin/orders/show.html.erb +35 -0
  279. data/app/views/spree/admin/payment_methods/_form.html.erb +53 -0
  280. data/app/views/spree/admin/payment_methods/edit.html.erb +23 -0
  281. data/app/views/spree/admin/payment_methods/index.html.erb +45 -0
  282. data/app/views/spree/admin/payment_methods/new.html.erb +22 -0
  283. data/app/views/spree/admin/payments/_bill_address_form.html.erb +9 -0
  284. data/app/views/spree/admin/payments/_form.html.erb +28 -0
  285. data/app/views/spree/admin/payments/_list.html.erb +26 -0
  286. data/app/views/spree/admin/payments/credit.html.erb +18 -0
  287. data/app/views/spree/admin/payments/index.html.erb +23 -0
  288. data/app/views/spree/admin/payments/new.html.erb +26 -0
  289. data/app/views/spree/admin/payments/show.html.erb +18 -0
  290. data/app/views/spree/admin/payments/source_forms/_check.html.erb +0 -0
  291. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +50 -0
  292. data/app/views/spree/admin/payments/source_views/_check.html.erb +0 -0
  293. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +29 -0
  294. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +13 -0
  295. data/app/views/spree/admin/product_properties/index.html.erb +59 -0
  296. data/app/views/spree/admin/products/_form.html.erb +154 -0
  297. data/app/views/spree/admin/products/_properties_form.erb +10 -0
  298. data/app/views/spree/admin/products/edit.html.erb +15 -0
  299. data/app/views/spree/admin/products/index.html.erb +104 -0
  300. data/app/views/spree/admin/products/new.html.erb +80 -0
  301. data/app/views/spree/admin/products/new.js.erb +7 -0
  302. data/app/views/spree/admin/properties/_form.html.erb +16 -0
  303. data/app/views/spree/admin/properties/edit.html.erb +18 -0
  304. data/app/views/spree/admin/properties/filtered.html.erb +1 -0
  305. data/app/views/spree/admin/properties/index.html.erb +41 -0
  306. data/app/views/spree/admin/properties/new.html.erb +13 -0
  307. data/app/views/spree/admin/properties/new.js.erb +2 -0
  308. data/app/views/spree/admin/prototypes/_form.html.erb +25 -0
  309. data/app/views/spree/admin/prototypes/_prototypes.html.erb +25 -0
  310. data/app/views/spree/admin/prototypes/available.js.erb +2 -0
  311. data/app/views/spree/admin/prototypes/edit.html.erb +20 -0
  312. data/app/views/spree/admin/prototypes/index.html.erb +40 -0
  313. data/app/views/spree/admin/prototypes/new.html.erb +11 -0
  314. data/app/views/spree/admin/prototypes/new.js.erb +5 -0
  315. data/app/views/spree/admin/prototypes/select.js.erb +4 -0
  316. data/app/views/spree/admin/prototypes/show.html.erb +42 -0
  317. data/app/views/spree/admin/reports/index.html.erb +21 -0
  318. data/app/views/spree/admin/reports/sales_total.html.erb +37 -0
  319. data/app/views/spree/admin/return_authorizations/_form.html.erb +72 -0
  320. data/app/views/spree/admin/return_authorizations/edit.html.erb +26 -0
  321. data/app/views/spree/admin/return_authorizations/index.html.erb +52 -0
  322. data/app/views/spree/admin/return_authorizations/new.html.erb +15 -0
  323. data/app/views/spree/admin/search/users.rabl +30 -0
  324. data/app/views/spree/admin/shared/_address.html.erb +6 -0
  325. data/app/views/spree/admin/shared/_address_form.html.erb +65 -0
  326. data/app/views/spree/admin/shared/_alert.html.erb +5 -0
  327. data/app/views/spree/admin/shared/_calculator_fields.html.erb +22 -0
  328. data/app/views/spree/admin/shared/_configuration_menu.html.erb +25 -0
  329. data/app/views/spree/admin/shared/_destroy.js.erb +16 -0
  330. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +5 -0
  331. data/app/views/spree/admin/shared/_head.html.erb +25 -0
  332. data/app/views/spree/admin/shared/_new_resource_links.html.erb +5 -0
  333. data/app/views/spree/admin/shared/_order_details.html.erb +51 -0
  334. data/app/views/spree/admin/shared/_order_tabs.html.erb +71 -0
  335. data/app/views/spree/admin/shared/_product_sub_menu.html.erb +8 -0
  336. data/app/views/spree/admin/shared/_product_tabs.html.erb +27 -0
  337. data/app/views/spree/admin/shared/_report_criteria.html.erb +17 -0
  338. data/app/views/spree/admin/shared/_routes.html.erb +7 -0
  339. data/app/views/spree/admin/shared/_show_resource_links.html.erb +5 -0
  340. data/app/views/spree/admin/shared/_tabs.html.erb +5 -0
  341. data/app/views/spree/admin/shared/_translations.html.erb +33 -0
  342. data/app/views/spree/admin/shared/_update_order_state.js +7 -0
  343. data/app/views/spree/admin/shipments/_form.html.erb +71 -0
  344. data/app/views/spree/admin/shipments/edit.html.erb +43 -0
  345. data/app/views/spree/admin/shipments/index.html.erb +45 -0
  346. data/app/views/spree/admin/shipments/new.html.erb +22 -0
  347. data/app/views/spree/admin/shipping_categories/_form.html.erb +6 -0
  348. data/app/views/spree/admin/shipping_categories/edit.html.erb +20 -0
  349. data/app/views/spree/admin/shipping_categories/index.html.erb +35 -0
  350. data/app/views/spree/admin/shipping_categories/new.html.erb +20 -0
  351. data/app/views/spree/admin/shipping_methods/_form.html.erb +50 -0
  352. data/app/views/spree/admin/shipping_methods/edit.html.erb +29 -0
  353. data/app/views/spree/admin/shipping_methods/index.html.erb +45 -0
  354. data/app/views/spree/admin/shipping_methods/new.html.erb +29 -0
  355. data/app/views/spree/admin/states/_form.html.erb +14 -0
  356. data/app/views/spree/admin/states/_state_list.html.erb +31 -0
  357. data/app/views/spree/admin/states/edit.html.erb +20 -0
  358. data/app/views/spree/admin/states/index.html.erb +24 -0
  359. data/app/views/spree/admin/states/new.html.erb +15 -0
  360. data/app/views/spree/admin/states/new.js.erb +2 -0
  361. data/app/views/spree/admin/tax_categories/_form.html.erb +24 -0
  362. data/app/views/spree/admin/tax_categories/edit.html.erb +18 -0
  363. data/app/views/spree/admin/tax_categories/index.html.erb +48 -0
  364. data/app/views/spree/admin/tax_categories/new.html.erb +19 -0
  365. data/app/views/spree/admin/tax_categories/show.html.erb +1 -0
  366. data/app/views/spree/admin/tax_rates/_form.html.erb +41 -0
  367. data/app/views/spree/admin/tax_rates/edit.html.erb +21 -0
  368. data/app/views/spree/admin/tax_rates/index.html.erb +59 -0
  369. data/app/views/spree/admin/tax_rates/new.html.erb +25 -0
  370. data/app/views/spree/admin/tax_settings/edit.html.erb +17 -0
  371. data/app/views/spree/admin/taxonomies/_form.html.erb +7 -0
  372. data/app/views/spree/admin/taxonomies/_js_head.html.erb +8 -0
  373. data/app/views/spree/admin/taxonomies/_list.html.erb +26 -0
  374. data/app/views/spree/admin/taxonomies/_taxon.html.erb +12 -0
  375. data/app/views/spree/admin/taxonomies/edit.erb +62 -0
  376. data/app/views/spree/admin/taxonomies/get_children.json.erb +9 -0
  377. data/app/views/spree/admin/taxonomies/index.html.erb +15 -0
  378. data/app/views/spree/admin/taxonomies/new.html.erb +22 -0
  379. data/app/views/spree/admin/taxons/_form.html.erb +27 -0
  380. data/app/views/spree/admin/taxons/_taxon_table.html.erb +23 -0
  381. data/app/views/spree/admin/taxons/edit.html.erb +19 -0
  382. data/app/views/spree/admin/taxons/search.rabl +5 -0
  383. data/app/views/spree/admin/trackers/_form.html.erb +34 -0
  384. data/app/views/spree/admin/trackers/edit.html.erb +20 -0
  385. data/app/views/spree/admin/trackers/index.html.erb +48 -0
  386. data/app/views/spree/admin/trackers/new.html.erb +20 -0
  387. data/app/views/spree/admin/variants/_autocomplete.js.erb +30 -0
  388. data/app/views/spree/admin/variants/_form.html.erb +61 -0
  389. data/app/views/spree/admin/variants/edit.html.erb +13 -0
  390. data/app/views/spree/admin/variants/index.html.erb +78 -0
  391. data/app/views/spree/admin/variants/new.html.erb +9 -0
  392. data/app/views/spree/admin/variants/new.js.erb +3 -0
  393. data/app/views/spree/admin/variants/search.rabl +13 -0
  394. data/app/views/spree/admin/zones/_country_member.html.erb +5 -0
  395. data/app/views/spree/admin/zones/_form.html.erb +34 -0
  396. data/app/views/spree/admin/zones/_member_type.html.erb +19 -0
  397. data/app/views/spree/admin/zones/_state_member.html.erb +5 -0
  398. data/app/views/spree/admin/zones/edit.html.erb +23 -0
  399. data/app/views/spree/admin/zones/index.html.erb +51 -0
  400. data/app/views/spree/admin/zones/new.html.erb +21 -0
  401. data/app/views/spree/checkout/_address.html.erb +25 -0
  402. data/app/views/spree/checkout/_confirm.html.erb +12 -0
  403. data/app/views/spree/checkout/_delivery.html.erb +27 -0
  404. data/app/views/spree/checkout/_payment.html.erb +32 -0
  405. data/app/views/spree/checkout/_summary.html.erb +33 -0
  406. data/app/views/spree/checkout/edit.html.erb +33 -0
  407. data/app/views/spree/checkout/payment/_check.html.erb +0 -0
  408. data/app/views/spree/checkout/payment/_gateway.html.erb +29 -0
  409. data/app/views/spree/checkout/registration.html.erb +20 -0
  410. data/app/views/spree/content/cvv.html.erb +13 -0
  411. data/app/views/spree/countries/index.js.erb +1 -0
  412. data/app/views/spree/home/index.html.erb +10 -0
  413. data/app/views/spree/layouts/admin.html.erb +132 -0
  414. data/app/views/spree/layouts/spree_application.html.erb +36 -0
  415. data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
  416. data/app/views/spree/order_mailer/confirm_email.text.erb +20 -0
  417. data/app/views/spree/orders/_adjustments.html.erb +14 -0
  418. data/app/views/spree/orders/_form.html.erb +18 -0
  419. data/app/views/spree/orders/_line_item.html.erb +31 -0
  420. data/app/views/spree/orders/edit.html.erb +48 -0
  421. data/app/views/spree/orders/new.html.erb +9 -0
  422. data/app/views/spree/orders/show.html.erb +22 -0
  423. data/app/views/spree/products/_cart_form.html.erb +53 -0
  424. data/app/views/spree/products/_image.html.erb +5 -0
  425. data/app/views/spree/products/_properties.html.erb +15 -0
  426. data/app/views/spree/products/_taxons.html.erb +14 -0
  427. data/app/views/spree/products/_thumbnails.html.erb +19 -0
  428. data/app/views/spree/products/index.html.erb +27 -0
  429. data/app/views/spree/products/show.html.erb +45 -0
  430. data/app/views/spree/shared/_error_messages.html.erb +11 -0
  431. data/app/views/spree/shared/_filters.html.erb +28 -0
  432. data/app/views/spree/shared/_footer.html.erb +6 -0
  433. data/app/views/spree/shared/_google_analytics.html.erb +39 -0
  434. data/app/views/spree/shared/_head.html.erb +13 -0
  435. data/app/views/spree/shared/_header.html.erb +5 -0
  436. data/app/views/spree/shared/_main_nav_bar.html.erb +6 -0
  437. data/app/views/spree/shared/_nav_bar.html.erb +7 -0
  438. data/app/views/spree/shared/_order_details.html.erb +121 -0
  439. data/app/views/spree/shared/_products.html.erb +30 -0
  440. data/app/views/spree/shared/_search.html.erb +9 -0
  441. data/app/views/spree/shared/_sidebar.html.erb +3 -0
  442. data/app/views/spree/shared/_taxonomies.html.erb +6 -0
  443. data/app/views/spree/shared/unauthorized.html.erb +0 -0
  444. data/app/views/spree/shipment_mailer/shipped_email.text.erb +15 -0
  445. data/app/views/spree/states/index.js.erb +1 -0
  446. data/app/views/spree/taxons/_taxon.html.erb +4 -0
  447. data/app/views/spree/taxons/show.html.erb +19 -0
  448. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  449. data/config/initializers/check_for_orphaned_preferences.rb +6 -0
  450. data/config/initializers/deprecation_checker.rb +7 -0
  451. data/config/initializers/form_builder.rb +15 -0
  452. data/config/initializers/rails_5868.rb +8 -0
  453. data/config/initializers/spree.rb +6 -0
  454. data/config/initializers/user_class_extensions.rb +25 -0
  455. data/config/locales/en.yml +1129 -0
  456. data/config/routes.rb +195 -0
  457. data/db/default/spree/countries.yml +1589 -0
  458. data/db/default/spree/roles.yml +5 -0
  459. data/db/default/spree/states.yml +256 -0
  460. data/db/default/spree/zone_members.yml +169 -0
  461. data/db/default/spree/zones.yml +13 -0
  462. data/db/migrate/20120831092320_spree_one_two.rb +481 -0
  463. data/db/migrate/20120905145253_add_tax_rate_label.rb +5 -0
  464. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +5 -0
  465. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
  466. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +5 -0
  467. data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
  468. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
  469. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +11 -0
  470. data/db/migrate/20121031162139_split_prices_from_variants.rb +30 -0
  471. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
  472. data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
  473. data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
  474. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
  475. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
  476. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +5 -0
  477. data/db/seeds.rb +5 -0
  478. data/lib/generators/spree/custom_user/custom_user_generator.rb +56 -0
  479. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +28 -0
  480. data/lib/generators/spree/custom_user/templates/initializer.rb.tt +1 -0
  481. data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -0
  482. data/lib/generators/spree/dummy/dummy_generator.rb +107 -0
  483. data/lib/generators/spree/dummy/templates/initializers/custom_user.rb +1 -0
  484. data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
  485. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  486. data/lib/generators/spree/dummy/templates/rails/database.yml +54 -0
  487. data/lib/generators/spree/dummy/templates/rails/routes.rb +3 -0
  488. data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
  489. data/lib/generators/spree/install/install_generator.rb +194 -0
  490. data/lib/generators/spree/install/templates/app/assets/javascripts/admin/all.js +15 -0
  491. data/lib/generators/spree/install/templates/app/assets/javascripts/store/all.js +15 -0
  492. data/lib/generators/spree/install/templates/app/assets/stylesheets/admin/all.css +14 -0
  493. data/lib/generators/spree/install/templates/app/assets/stylesheets/store/all.css +14 -0
  494. data/lib/generators/spree/install/templates/config/initializers/spree.rb +14 -0
  495. data/lib/spree/core.rb +110 -0
  496. data/lib/spree/core/action_callbacks.rb +26 -0
  497. data/lib/spree/core/calculated_adjustments.rb +55 -0
  498. data/lib/spree/core/controller_helpers/auth.rb +65 -0
  499. data/lib/spree/core/controller_helpers/common.rb +90 -0
  500. data/lib/spree/core/controller_helpers/order.rb +71 -0
  501. data/lib/spree/core/controller_helpers/respond_with.rb +70 -0
  502. data/lib/spree/core/custom_fixtures.rb +70 -0
  503. data/lib/spree/core/delegate_belongs_to.rb +89 -0
  504. data/lib/spree/core/engine.rb +97 -0
  505. data/lib/spree/core/environment.rb +14 -0
  506. data/lib/spree/core/environment/calculators.rb +12 -0
  507. data/lib/spree/core/environment_extension.rb +25 -0
  508. data/lib/spree/core/ext/active_record.rb +15 -0
  509. data/lib/spree/core/gateway_error.rb +5 -0
  510. data/lib/spree/core/mail_interceptor.rb +25 -0
  511. data/lib/spree/core/mail_settings.rb +37 -0
  512. data/lib/spree/core/middleware/redirect_legacy_product_url.rb +18 -0
  513. data/lib/spree/core/middleware/seo_assist.rb +51 -0
  514. data/lib/spree/core/permalinks.rb +59 -0
  515. data/lib/spree/core/preference_rescue.rb +25 -0
  516. data/lib/spree/core/responder.rb +45 -0
  517. data/lib/spree/core/s3_support.rb +25 -0
  518. data/lib/spree/core/scopes.rb +65 -0
  519. data/lib/spree/core/search/base.rb +72 -0
  520. data/lib/spree/core/ssl_requirement.rb +113 -0
  521. data/lib/spree/core/store_helpers.rb +13 -0
  522. data/lib/spree/core/testing_support/authorization_helpers.rb +30 -0
  523. data/lib/spree/core/testing_support/common_rake.rb +25 -0
  524. data/lib/spree/core/testing_support/controller_requests.rb +67 -0
  525. data/lib/spree/core/testing_support/factories.rb +11 -0
  526. data/lib/spree/core/testing_support/factories/activator_factory.rb +8 -0
  527. data/lib/spree/core/testing_support/factories/address_factory.rb +22 -0
  528. data/lib/spree/core/testing_support/factories/adjustment_factory.rb +16 -0
  529. data/lib/spree/core/testing_support/factories/calculator_factory.rb +9 -0
  530. data/lib/spree/core/testing_support/factories/configuration_factory.rb +6 -0
  531. data/lib/spree/core/testing_support/factories/country_factory.rb +9 -0
  532. data/lib/spree/core/testing_support/factories/credit_card_factory.rb +13 -0
  533. data/lib/spree/core/testing_support/factories/inventory_unit_factory.rb +9 -0
  534. data/lib/spree/core/testing_support/factories/line_item_factory.rb +10 -0
  535. data/lib/spree/core/testing_support/factories/mail_method_factory.rb +6 -0
  536. data/lib/spree/core/testing_support/factories/options_factory.rb +12 -0
  537. data/lib/spree/core/testing_support/factories/order_factory.rb +32 -0
  538. data/lib/spree/core/testing_support/factories/payment_factory.rb +34 -0
  539. data/lib/spree/core/testing_support/factories/payment_method_factory.rb +18 -0
  540. data/lib/spree/core/testing_support/factories/price_factory.rb +8 -0
  541. data/lib/spree/core/testing_support/factories/product_factory.rb +36 -0
  542. data/lib/spree/core/testing_support/factories/product_option_type_factory.rb +6 -0
  543. data/lib/spree/core/testing_support/factories/product_property_factory.rb +6 -0
  544. data/lib/spree/core/testing_support/factories/property_factory.rb +6 -0
  545. data/lib/spree/core/testing_support/factories/prototype_factory.rb +6 -0
  546. data/lib/spree/core/testing_support/factories/return_authorization_factory.rb +10 -0
  547. data/lib/spree/core/testing_support/factories/role_factory.rb +11 -0
  548. data/lib/spree/core/testing_support/factories/shipment_factory.rb +11 -0
  549. data/lib/spree/core/testing_support/factories/shipping_category_factory.rb +7 -0
  550. data/lib/spree/core/testing_support/factories/shipping_method_factory.rb +23 -0
  551. data/lib/spree/core/testing_support/factories/state_factory.rb +13 -0
  552. data/lib/spree/core/testing_support/factories/tax_category_factory.rb +16 -0
  553. data/lib/spree/core/testing_support/factories/tax_rate_factory.rb +7 -0
  554. data/lib/spree/core/testing_support/factories/taxon_factory.rb +7 -0
  555. data/lib/spree/core/testing_support/factories/taxonomy_factory.rb +5 -0
  556. data/lib/spree/core/testing_support/factories/tracker_factory.rb +7 -0
  557. data/lib/spree/core/testing_support/factories/user_factory.rb +17 -0
  558. data/lib/spree/core/testing_support/factories/variant_factory.rb +16 -0
  559. data/lib/spree/core/testing_support/factories/zone_factory.rb +17 -0
  560. data/lib/spree/core/testing_support/fixtures.rb +4 -0
  561. data/lib/spree/core/testing_support/flash.rb +29 -0
  562. data/lib/spree/core/testing_support/preferences.rb +26 -0
  563. data/lib/spree/core/token_resource.rb +27 -0
  564. data/lib/spree/core/url_helpers.rb +9 -0
  565. data/lib/spree/core/user_banners.rb +25 -0
  566. data/lib/spree/core/validators/email.rb +23 -0
  567. data/lib/spree/core/version.rb +5 -0
  568. data/lib/spree/money.rb +27 -0
  569. data/lib/spree/product_filters.rb +197 -0
  570. data/lib/spree/scopes/dynamic.rb +33 -0
  571. data/lib/spree_core.rb +1 -0
  572. data/lib/tasks/core.rake +113 -0
  573. data/lib/tasks/rake_util.rb +19 -0
  574. data/lib/tasks/taxon.rake +14 -0
  575. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
  576. data/vendor/assets/fonts/fontawesome-webfont.svg +255 -0
  577. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  578. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  579. data/vendor/assets/images/datepicker/cal.gif +0 -0
  580. data/vendor/assets/images/flags/ad.png +0 -0
  581. data/vendor/assets/images/flags/ae.png +0 -0
  582. data/vendor/assets/images/flags/af.png +0 -0
  583. data/vendor/assets/images/flags/ag.png +0 -0
  584. data/vendor/assets/images/flags/ai.png +0 -0
  585. data/vendor/assets/images/flags/al.png +0 -0
  586. data/vendor/assets/images/flags/am.png +0 -0
  587. data/vendor/assets/images/flags/an.png +0 -0
  588. data/vendor/assets/images/flags/ao.png +0 -0
  589. data/vendor/assets/images/flags/ar.png +0 -0
  590. data/vendor/assets/images/flags/as.png +0 -0
  591. data/vendor/assets/images/flags/at.png +0 -0
  592. data/vendor/assets/images/flags/au.png +0 -0
  593. data/vendor/assets/images/flags/aw.png +0 -0
  594. data/vendor/assets/images/flags/ax.png +0 -0
  595. data/vendor/assets/images/flags/az.png +0 -0
  596. data/vendor/assets/images/flags/ba.png +0 -0
  597. data/vendor/assets/images/flags/bb.png +0 -0
  598. data/vendor/assets/images/flags/bd.png +0 -0
  599. data/vendor/assets/images/flags/be.png +0 -0
  600. data/vendor/assets/images/flags/bf.png +0 -0
  601. data/vendor/assets/images/flags/bg.png +0 -0
  602. data/vendor/assets/images/flags/bh.png +0 -0
  603. data/vendor/assets/images/flags/bi.png +0 -0
  604. data/vendor/assets/images/flags/bj.png +0 -0
  605. data/vendor/assets/images/flags/bm.png +0 -0
  606. data/vendor/assets/images/flags/bn.png +0 -0
  607. data/vendor/assets/images/flags/bo.png +0 -0
  608. data/vendor/assets/images/flags/br.png +0 -0
  609. data/vendor/assets/images/flags/bs.png +0 -0
  610. data/vendor/assets/images/flags/bt.png +0 -0
  611. data/vendor/assets/images/flags/bv.png +0 -0
  612. data/vendor/assets/images/flags/bw.png +0 -0
  613. data/vendor/assets/images/flags/by.png +0 -0
  614. data/vendor/assets/images/flags/bz.png +0 -0
  615. data/vendor/assets/images/flags/ca.png +0 -0
  616. data/vendor/assets/images/flags/catalonia.png +0 -0
  617. data/vendor/assets/images/flags/cc.png +0 -0
  618. data/vendor/assets/images/flags/cd.png +0 -0
  619. data/vendor/assets/images/flags/cf.png +0 -0
  620. data/vendor/assets/images/flags/cg.png +0 -0
  621. data/vendor/assets/images/flags/ch.png +0 -0
  622. data/vendor/assets/images/flags/ci.png +0 -0
  623. data/vendor/assets/images/flags/ck.png +0 -0
  624. data/vendor/assets/images/flags/cl.png +0 -0
  625. data/vendor/assets/images/flags/cm.png +0 -0
  626. data/vendor/assets/images/flags/cn.png +0 -0
  627. data/vendor/assets/images/flags/co.png +0 -0
  628. data/vendor/assets/images/flags/cr.png +0 -0
  629. data/vendor/assets/images/flags/cs.png +0 -0
  630. data/vendor/assets/images/flags/cu.png +0 -0
  631. data/vendor/assets/images/flags/cv.png +0 -0
  632. data/vendor/assets/images/flags/cx.png +0 -0
  633. data/vendor/assets/images/flags/cy.png +0 -0
  634. data/vendor/assets/images/flags/cz.png +0 -0
  635. data/vendor/assets/images/flags/de.png +0 -0
  636. data/vendor/assets/images/flags/dj.png +0 -0
  637. data/vendor/assets/images/flags/dk.png +0 -0
  638. data/vendor/assets/images/flags/dm.png +0 -0
  639. data/vendor/assets/images/flags/do.png +0 -0
  640. data/vendor/assets/images/flags/dz.png +0 -0
  641. data/vendor/assets/images/flags/ec.png +0 -0
  642. data/vendor/assets/images/flags/ee.png +0 -0
  643. data/vendor/assets/images/flags/eg.png +0 -0
  644. data/vendor/assets/images/flags/eh.png +0 -0
  645. data/vendor/assets/images/flags/england.png +0 -0
  646. data/vendor/assets/images/flags/er.png +0 -0
  647. data/vendor/assets/images/flags/es.png +0 -0
  648. data/vendor/assets/images/flags/et.png +0 -0
  649. data/vendor/assets/images/flags/europeanunion.png +0 -0
  650. data/vendor/assets/images/flags/fam.png +0 -0
  651. data/vendor/assets/images/flags/fi.png +0 -0
  652. data/vendor/assets/images/flags/fj.png +0 -0
  653. data/vendor/assets/images/flags/fk.png +0 -0
  654. data/vendor/assets/images/flags/fm.png +0 -0
  655. data/vendor/assets/images/flags/fo.png +0 -0
  656. data/vendor/assets/images/flags/fr.png +0 -0
  657. data/vendor/assets/images/flags/ga.png +0 -0
  658. data/vendor/assets/images/flags/gb.png +0 -0
  659. data/vendor/assets/images/flags/gd.png +0 -0
  660. data/vendor/assets/images/flags/ge.png +0 -0
  661. data/vendor/assets/images/flags/gf.png +0 -0
  662. data/vendor/assets/images/flags/gh.png +0 -0
  663. data/vendor/assets/images/flags/gi.png +0 -0
  664. data/vendor/assets/images/flags/gl.png +0 -0
  665. data/vendor/assets/images/flags/gm.png +0 -0
  666. data/vendor/assets/images/flags/gn.png +0 -0
  667. data/vendor/assets/images/flags/gp.png +0 -0
  668. data/vendor/assets/images/flags/gq.png +0 -0
  669. data/vendor/assets/images/flags/gr.png +0 -0
  670. data/vendor/assets/images/flags/gs.png +0 -0
  671. data/vendor/assets/images/flags/gt.png +0 -0
  672. data/vendor/assets/images/flags/gu.png +0 -0
  673. data/vendor/assets/images/flags/gw.png +0 -0
  674. data/vendor/assets/images/flags/gy.png +0 -0
  675. data/vendor/assets/images/flags/hk.png +0 -0
  676. data/vendor/assets/images/flags/hm.png +0 -0
  677. data/vendor/assets/images/flags/hn.png +0 -0
  678. data/vendor/assets/images/flags/hr.png +0 -0
  679. data/vendor/assets/images/flags/ht.png +0 -0
  680. data/vendor/assets/images/flags/hu.png +0 -0
  681. data/vendor/assets/images/flags/id.png +0 -0
  682. data/vendor/assets/images/flags/ie.png +0 -0
  683. data/vendor/assets/images/flags/il.png +0 -0
  684. data/vendor/assets/images/flags/in.png +0 -0
  685. data/vendor/assets/images/flags/io.png +0 -0
  686. data/vendor/assets/images/flags/iq.png +0 -0
  687. data/vendor/assets/images/flags/ir.png +0 -0
  688. data/vendor/assets/images/flags/is.png +0 -0
  689. data/vendor/assets/images/flags/it.png +0 -0
  690. data/vendor/assets/images/flags/ja.png +0 -0
  691. data/vendor/assets/images/flags/jm.png +0 -0
  692. data/vendor/assets/images/flags/jo.png +0 -0
  693. data/vendor/assets/images/flags/ke.png +0 -0
  694. data/vendor/assets/images/flags/kg.png +0 -0
  695. data/vendor/assets/images/flags/kh.png +0 -0
  696. data/vendor/assets/images/flags/ki.png +0 -0
  697. data/vendor/assets/images/flags/km.png +0 -0
  698. data/vendor/assets/images/flags/kn.png +0 -0
  699. data/vendor/assets/images/flags/kp.png +0 -0
  700. data/vendor/assets/images/flags/kr.png +0 -0
  701. data/vendor/assets/images/flags/kw.png +0 -0
  702. data/vendor/assets/images/flags/ky.png +0 -0
  703. data/vendor/assets/images/flags/kz.png +0 -0
  704. data/vendor/assets/images/flags/la.png +0 -0
  705. data/vendor/assets/images/flags/lb.png +0 -0
  706. data/vendor/assets/images/flags/lc.png +0 -0
  707. data/vendor/assets/images/flags/li.png +0 -0
  708. data/vendor/assets/images/flags/lk.png +0 -0
  709. data/vendor/assets/images/flags/lr.png +0 -0
  710. data/vendor/assets/images/flags/ls.png +0 -0
  711. data/vendor/assets/images/flags/lt.png +0 -0
  712. data/vendor/assets/images/flags/lu.png +0 -0
  713. data/vendor/assets/images/flags/lv.png +0 -0
  714. data/vendor/assets/images/flags/ly.png +0 -0
  715. data/vendor/assets/images/flags/ma.png +0 -0
  716. data/vendor/assets/images/flags/mc.png +0 -0
  717. data/vendor/assets/images/flags/md.png +0 -0
  718. data/vendor/assets/images/flags/me.png +0 -0
  719. data/vendor/assets/images/flags/mg.png +0 -0
  720. data/vendor/assets/images/flags/mh.png +0 -0
  721. data/vendor/assets/images/flags/mk.png +0 -0
  722. data/vendor/assets/images/flags/ml.png +0 -0
  723. data/vendor/assets/images/flags/mm.png +0 -0
  724. data/vendor/assets/images/flags/mn.png +0 -0
  725. data/vendor/assets/images/flags/mo.png +0 -0
  726. data/vendor/assets/images/flags/mp.png +0 -0
  727. data/vendor/assets/images/flags/mq.png +0 -0
  728. data/vendor/assets/images/flags/mr.png +0 -0
  729. data/vendor/assets/images/flags/ms.png +0 -0
  730. data/vendor/assets/images/flags/mt.png +0 -0
  731. data/vendor/assets/images/flags/mu.png +0 -0
  732. data/vendor/assets/images/flags/mv.png +0 -0
  733. data/vendor/assets/images/flags/mw.png +0 -0
  734. data/vendor/assets/images/flags/mx.png +0 -0
  735. data/vendor/assets/images/flags/my.png +0 -0
  736. data/vendor/assets/images/flags/mz.png +0 -0
  737. data/vendor/assets/images/flags/na.png +0 -0
  738. data/vendor/assets/images/flags/nc.png +0 -0
  739. data/vendor/assets/images/flags/ne.png +0 -0
  740. data/vendor/assets/images/flags/nf.png +0 -0
  741. data/vendor/assets/images/flags/ng.png +0 -0
  742. data/vendor/assets/images/flags/ni.png +0 -0
  743. data/vendor/assets/images/flags/nl.png +0 -0
  744. data/vendor/assets/images/flags/no.png +0 -0
  745. data/vendor/assets/images/flags/np.png +0 -0
  746. data/vendor/assets/images/flags/nr.png +0 -0
  747. data/vendor/assets/images/flags/nu.png +0 -0
  748. data/vendor/assets/images/flags/nz.png +0 -0
  749. data/vendor/assets/images/flags/om.png +0 -0
  750. data/vendor/assets/images/flags/pa.png +0 -0
  751. data/vendor/assets/images/flags/pe.png +0 -0
  752. data/vendor/assets/images/flags/pf.png +0 -0
  753. data/vendor/assets/images/flags/pg.png +0 -0
  754. data/vendor/assets/images/flags/ph.png +0 -0
  755. data/vendor/assets/images/flags/pk.png +0 -0
  756. data/vendor/assets/images/flags/pl.png +0 -0
  757. data/vendor/assets/images/flags/pm.png +0 -0
  758. data/vendor/assets/images/flags/pn.png +0 -0
  759. data/vendor/assets/images/flags/pr.png +0 -0
  760. data/vendor/assets/images/flags/ps.png +0 -0
  761. data/vendor/assets/images/flags/pt.png +0 -0
  762. data/vendor/assets/images/flags/pw.png +0 -0
  763. data/vendor/assets/images/flags/py.png +0 -0
  764. data/vendor/assets/images/flags/qa.png +0 -0
  765. data/vendor/assets/images/flags/re.png +0 -0
  766. data/vendor/assets/images/flags/ro.png +0 -0
  767. data/vendor/assets/images/flags/rs.png +0 -0
  768. data/vendor/assets/images/flags/ru.png +0 -0
  769. data/vendor/assets/images/flags/rw.png +0 -0
  770. data/vendor/assets/images/flags/sa.png +0 -0
  771. data/vendor/assets/images/flags/sb.png +0 -0
  772. data/vendor/assets/images/flags/sc.png +0 -0
  773. data/vendor/assets/images/flags/scotland.png +0 -0
  774. data/vendor/assets/images/flags/sd.png +0 -0
  775. data/vendor/assets/images/flags/se.png +0 -0
  776. data/vendor/assets/images/flags/sg.png +0 -0
  777. data/vendor/assets/images/flags/sh.png +0 -0
  778. data/vendor/assets/images/flags/si.png +0 -0
  779. data/vendor/assets/images/flags/sj.png +0 -0
  780. data/vendor/assets/images/flags/sk.png +0 -0
  781. data/vendor/assets/images/flags/sl.png +0 -0
  782. data/vendor/assets/images/flags/sm.png +0 -0
  783. data/vendor/assets/images/flags/sn.png +0 -0
  784. data/vendor/assets/images/flags/so.png +0 -0
  785. data/vendor/assets/images/flags/sr.png +0 -0
  786. data/vendor/assets/images/flags/st.png +0 -0
  787. data/vendor/assets/images/flags/sv.png +0 -0
  788. data/vendor/assets/images/flags/sy.png +0 -0
  789. data/vendor/assets/images/flags/sz.png +0 -0
  790. data/vendor/assets/images/flags/tc.png +0 -0
  791. data/vendor/assets/images/flags/td.png +0 -0
  792. data/vendor/assets/images/flags/tf.png +0 -0
  793. data/vendor/assets/images/flags/tg.png +0 -0
  794. data/vendor/assets/images/flags/th.png +0 -0
  795. data/vendor/assets/images/flags/tj.png +0 -0
  796. data/vendor/assets/images/flags/tk.png +0 -0
  797. data/vendor/assets/images/flags/tl.png +0 -0
  798. data/vendor/assets/images/flags/tm.png +0 -0
  799. data/vendor/assets/images/flags/tn.png +0 -0
  800. data/vendor/assets/images/flags/to.png +0 -0
  801. data/vendor/assets/images/flags/tr.png +0 -0
  802. data/vendor/assets/images/flags/tt.png +0 -0
  803. data/vendor/assets/images/flags/tv.png +0 -0
  804. data/vendor/assets/images/flags/tw.png +0 -0
  805. data/vendor/assets/images/flags/tz.png +0 -0
  806. data/vendor/assets/images/flags/ua.png +0 -0
  807. data/vendor/assets/images/flags/ug.png +0 -0
  808. data/vendor/assets/images/flags/um.png +0 -0
  809. data/vendor/assets/images/flags/us.png +0 -0
  810. data/vendor/assets/images/flags/uy.png +0 -0
  811. data/vendor/assets/images/flags/uz.png +0 -0
  812. data/vendor/assets/images/flags/va.png +0 -0
  813. data/vendor/assets/images/flags/vc.png +0 -0
  814. data/vendor/assets/images/flags/ve.png +0 -0
  815. data/vendor/assets/images/flags/vg.png +0 -0
  816. data/vendor/assets/images/flags/vi.png +0 -0
  817. data/vendor/assets/images/flags/vn.png +0 -0
  818. data/vendor/assets/images/flags/vu.png +0 -0
  819. data/vendor/assets/images/flags/wales.png +0 -0
  820. data/vendor/assets/images/flags/wf.png +0 -0
  821. data/vendor/assets/images/flags/ws.png +0 -0
  822. data/vendor/assets/images/flags/ye.png +0 -0
  823. data/vendor/assets/images/flags/yt.png +0 -0
  824. data/vendor/assets/images/flags/za.png +0 -0
  825. data/vendor/assets/images/flags/zm.png +0 -0
  826. data/vendor/assets/images/flags/zw.png +0 -0
  827. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  828. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  829. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  830. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  831. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  832. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  833. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  834. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  835. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  836. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  837. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  838. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  839. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  840. data/vendor/assets/images/jquery.formalize/button.png +0 -0
  841. data/vendor/assets/images/jquery.formalize/select_arrow.gif +0 -0
  842. data/vendor/assets/javascripts/css_browser_selector_dev.js +156 -0
  843. data/vendor/assets/javascripts/equalize.js +41 -0
  844. data/vendor/assets/javascripts/handlebars.js +1920 -0
  845. data/vendor/assets/javascripts/jquery.adaptivemenu.js +60 -0
  846. data/vendor/assets/javascripts/jquery.alerts/images/help.gif +0 -0
  847. data/vendor/assets/javascripts/jquery.alerts/images/important.gif +0 -0
  848. data/vendor/assets/javascripts/jquery.alerts/images/info.gif +0 -0
  849. data/vendor/assets/javascripts/jquery.alerts/images/title.gif +0 -0
  850. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.css.erb +57 -0
  851. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.js +235 -0
  852. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.spree.css +29 -0
  853. data/vendor/assets/javascripts/jquery.cookie.js +41 -0
  854. data/vendor/assets/javascripts/jquery.delayedobserver.js +35 -0
  855. data/vendor/assets/javascripts/jquery.formalize.min.js +1 -0
  856. data/vendor/assets/javascripts/jquery.horizontalNav.js +141 -0
  857. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4544 -0
  858. data/vendor/assets/javascripts/jquery.jstree/themes/apple/bg.jpg +0 -0
  859. data/vendor/assets/javascripts/jquery.jstree/themes/apple/d.png +0 -0
  860. data/vendor/assets/javascripts/jquery.jstree/themes/apple/dot_for_ie.gif +0 -0
  861. data/vendor/assets/javascripts/jquery.jstree/themes/apple/style.css +61 -0
  862. data/vendor/assets/javascripts/jquery.jstree/themes/apple/throbber.gif +0 -0
  863. data/vendor/assets/javascripts/jquery.powertip.js +796 -0
  864. data/vendor/assets/javascripts/jquery.tokeninput.js +860 -0
  865. data/vendor/assets/javascripts/jquery.vAlign.js +11 -0
  866. data/vendor/assets/javascripts/jquery.validate/additional-methods.min.js +28 -0
  867. data/vendor/assets/javascripts/jquery.validate/jquery.validate.min.js +51 -0
  868. data/vendor/assets/javascripts/jquery.validate/localization/messages_ar.js +24 -0
  869. data/vendor/assets/javascripts/jquery.validate/localization/messages_bg.js +23 -0
  870. data/vendor/assets/javascripts/jquery.validate/localization/messages_ca.js +23 -0
  871. data/vendor/assets/javascripts/jquery.validate/localization/messages_cn.js +23 -0
  872. data/vendor/assets/javascripts/jquery.validate/localization/messages_cs.js +23 -0
  873. data/vendor/assets/javascripts/jquery.validate/localization/messages_da.js +20 -0
  874. data/vendor/assets/javascripts/jquery.validate/localization/messages_de.js +21 -0
  875. data/vendor/assets/javascripts/jquery.validate/localization/messages_el.js +24 -0
  876. data/vendor/assets/javascripts/jquery.validate/localization/messages_es.js +23 -0
  877. data/vendor/assets/javascripts/jquery.validate/localization/messages_fa.js +23 -0
  878. data/vendor/assets/javascripts/jquery.validate/localization/messages_fi.js +21 -0
  879. data/vendor/assets/javascripts/jquery.validate/localization/messages_fr.js +23 -0
  880. data/vendor/assets/javascripts/jquery.validate/localization/messages_ge.js +23 -0
  881. data/vendor/assets/javascripts/jquery.validate/localization/messages_he.js +23 -0
  882. data/vendor/assets/javascripts/jquery.validate/localization/messages_hu.js +21 -0
  883. data/vendor/assets/javascripts/jquery.validate/localization/messages_it.js +23 -0
  884. data/vendor/assets/javascripts/jquery.validate/localization/messages_ja.js +23 -0
  885. data/vendor/assets/javascripts/jquery.validate/localization/messages_kk.js +23 -0
  886. data/vendor/assets/javascripts/jquery.validate/localization/messages_lt.js +23 -0
  887. data/vendor/assets/javascripts/jquery.validate/localization/messages_lv.js +23 -0
  888. data/vendor/assets/javascripts/jquery.validate/localization/messages_nl.js +23 -0
  889. data/vendor/assets/javascripts/jquery.validate/localization/messages_no.js +23 -0
  890. data/vendor/assets/javascripts/jquery.validate/localization/messages_pl.js +23 -0
  891. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptbr.js +30 -0
  892. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptpt.js +23 -0
  893. data/vendor/assets/javascripts/jquery.validate/localization/messages_ro.js +23 -0
  894. data/vendor/assets/javascripts/jquery.validate/localization/messages_ru.js +23 -0
  895. data/vendor/assets/javascripts/jquery.validate/localization/messages_se.js +23 -0
  896. data/vendor/assets/javascripts/jquery.validate/localization/messages_si.js +23 -0
  897. data/vendor/assets/javascripts/jquery.validate/localization/messages_sk.js +21 -0
  898. data/vendor/assets/javascripts/jquery.validate/localization/messages_sr.js +23 -0
  899. data/vendor/assets/javascripts/jquery.validate/localization/messages_th.js +23 -0
  900. data/vendor/assets/javascripts/jquery.validate/localization/messages_tr.js +24 -0
  901. data/vendor/assets/javascripts/jquery.validate/localization/messages_tw.js +24 -0
  902. data/vendor/assets/javascripts/jquery.validate/localization/messages_ua.js +24 -0
  903. data/vendor/assets/javascripts/jquery.validate/localization/messages_vi.js +23 -0
  904. data/vendor/assets/javascripts/jquery.validate/localization/methods_de.js +12 -0
  905. data/vendor/assets/javascripts/jquery.validate/localization/methods_nl.js +9 -0
  906. data/vendor/assets/javascripts/jquery.validate/localization/methods_pt.js +9 -0
  907. data/vendor/assets/javascripts/modernizr.js +4 -0
  908. data/vendor/assets/javascripts/responsive-tables.js +42 -0
  909. data/vendor/assets/javascripts/spin.js +319 -0
  910. data/vendor/assets/javascripts/trunk8.js +233 -0
  911. data/vendor/assets/stylesheets/font-awesome-ie7.css +645 -0
  912. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +357 -0
  913. data/vendor/assets/stylesheets/jquery.formalize.css.erb +364 -0
  914. data/vendor/assets/stylesheets/jquery.powertip.css +85 -0
  915. data/vendor/assets/stylesheets/normalize.css +375 -0
  916. data/vendor/assets/stylesheets/responsive-tables.css +21 -0
  917. data/vendor/assets/stylesheets/skeleton.css +242 -0
  918. metadata +1251 -0
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :prototype, :class => Spree::Prototype do
3
+ name 'Baseball Cap'
4
+ properties { [FactoryGirl.create(:property)] }
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ FactoryGirl.define do
2
+ factory :return_authorization, :class => Spree::ReturnAuthorization do
3
+ number '100'
4
+ amount 100.00
5
+ #order { FactoryGirl.create(:order) }
6
+ order { FactoryGirl.create(:order_with_inventory_unit_shipped) }
7
+ reason 'no particular reason'
8
+ state 'received'
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ sequence(:role_sequence) { |n| "Role ##{n}" }
3
+
4
+ factory :role, :class => Spree::Role do
5
+ name { FactoryGirl.generate :role_sequence }
6
+ end
7
+
8
+ factory :admin_role, :parent => :role do
9
+ name 'admin'
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :shipment, :class => Spree::Shipment do
3
+ order { FactoryGirl.create(:order) }
4
+ shipping_method { FactoryGirl.create(:shipping_method) }
5
+ tracking 'U10000'
6
+ number '100'
7
+ cost 100.00
8
+ address { FactoryGirl.create(:address) }
9
+ state 'pending'
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ sequence(:shipping_category_sequence) { |n| "ShippingCategory ##{n}" }
3
+
4
+ factory :shipping_category, :class => Spree::ShippingCategory do
5
+ name { FactoryGirl.generate :shipping_category_sequence }
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ FactoryGirl.define do
2
+ factory :shipping_method, :class => Spree::ShippingMethod do
3
+ zone { |a| Spree::Zone.find_by_name('GlobalZone') || a.association(:global_zone) }
4
+ name 'UPS Ground'
5
+ calculator { FactoryGirl.build(:calculator) }
6
+ end
7
+
8
+ factory :free_shipping_method, :class => Spree::ShippingMethod do
9
+ zone { |a| Spree::Zone.find_by_name('GlobalZone') || a.association(:global_zone) }
10
+ name 'UPS Ground'
11
+ calculator { FactoryGirl.build(:no_amount_calculator) }
12
+ end
13
+
14
+ factory :shipping_method_with_category, :class => Spree::ShippingMethod do
15
+ zone { |a| Spree::Zone.find_by_name('GlobalZone') || a.association(:global_zone) }
16
+ name 'UPS Ground'
17
+ match_none nil
18
+ match_one nil
19
+ match_all nil
20
+ association(:shipping_category, :factory => :shipping_category)
21
+ calculator { FactoryGirl.build(:calculator) }
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ FactoryGirl.define do
2
+ factory :state, :class => Spree::State do
3
+ name 'Alabama'
4
+ abbr 'AL'
5
+ country do |country|
6
+ if usa = Spree::Country.find_by_numcode(840)
7
+ country = usa
8
+ else
9
+ country.association(:country)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ FactoryGirl.define do
2
+ factory :tax_category, :class => Spree::TaxCategory do
3
+ name { "TaxCategory - #{rand(999999)}" }
4
+ description { Faker::Lorem.sentence }
5
+ end
6
+
7
+ factory :tax_category_with_rates, :parent => :tax_category do
8
+ after_create do |tax_category|
9
+ tax_category.tax_rates.create!({
10
+ :amount => 0.05,
11
+ :calculator => Spree::Calculator::DefaultTax.new,
12
+ :zone => Spree::Zone.find_by_name('GlobalZone') || FactoryGirl.create(:global_zone)
13
+ }, :without_protection => true)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :tax_rate, :class => Spree::TaxRate do
3
+ zone { FactoryGirl.create(:zone) }
4
+ amount 100.00
5
+ tax_category { FactoryGirl.create(:tax_category) }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :taxon, :class => Spree::Taxon do
3
+ name 'Ruby on Rails'
4
+ taxonomy { FactoryGirl.create(:taxonomy) }
5
+ parent_id nil
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :taxonomy, :class => Spree::Taxonomy do
3
+ name 'Brand'
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :tracker, :class => Spree::Tracker do
3
+ environment { Rails.env }
4
+ analytics_id 'A100'
5
+ active true
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ FactoryGirl.define do
2
+ sequence :user_authentication_token do |n|
3
+ "xxxx#{Time.now.to_i}#{rand(1000)}#{n}xxxxxxxxxxxxx"
4
+ end
5
+
6
+ factory :user, :class => Spree.user_class do
7
+ email { Faker::Internet.email }
8
+ login { email }
9
+ password 'secret'
10
+ password_confirmation 'secret'
11
+ authentication_token { FactoryGirl.generate(:user_authentication_token) } if Spree.user_class.attribute_method? :authentication_token
12
+ end
13
+
14
+ factory :admin_user, :parent => :user do
15
+ spree_roles { [Spree::Role.find_by_name('admin') || FactoryGirl.create(:role, :name => 'admin')] }
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ FactoryGirl.define do
2
+ factory :variant, :class => Spree::Variant do
3
+ price 19.99
4
+ cost_price 17.00
5
+ sku { Faker::Lorem.sentence }
6
+ weight { BigDecimal.new("#{rand(200)}.#{rand(99)}") }
7
+ height { BigDecimal.new("#{rand(200)}.#{rand(99)}") }
8
+ width { BigDecimal.new("#{rand(200)}.#{rand(99)}") }
9
+ depth { BigDecimal.new("#{rand(200)}.#{rand(99)}") }
10
+ on_hand 5
11
+
12
+ # associations:
13
+ product { |p| p.association(:product) }
14
+ option_values { [FactoryGirl.create(:option_value)] }
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ FactoryGirl.define do
2
+ factory :global_zone, :class => Spree::Zone do
3
+ name 'GlobalZone'
4
+ description { Faker::Lorem.sentence }
5
+ zone_members do |proxy|
6
+ zone = proxy.instance_eval { @instance }
7
+ Spree::Country.all.map do |c|
8
+ zone_member = Spree::ZoneMember.create(:zoneable => c, :zone => zone)
9
+ end
10
+ end
11
+ end
12
+
13
+ factory :zone, :class => Spree::Zone do
14
+ name { Faker::Lorem.sentence }
15
+ description { Faker::Lorem.sentence }
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ require 'active_record/fixtures'
2
+
3
+ fixtures_dir = File.expand_path('../../../../../db/default', __FILE__)
4
+ ActiveRecord::Fixtures.create_fixtures(fixtures_dir, ['spree/countries', 'spree/zones', 'spree/zone_members', 'spree/states', 'spree/roles'])
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Core
3
+ module TestingSupport
4
+ module Flash
5
+ def assert_flash_success(flash)
6
+ flash = convert_flash(flash)
7
+
8
+ within("[class='flash success']") do
9
+ page.should have_content(flash)
10
+ end
11
+ end
12
+
13
+ def assert_successful_update_message(resource)
14
+ flash = I18n.t(:successfully_updated, :resource => I18n.t(resource))
15
+ assert_flash_success(flash)
16
+ end
17
+
18
+ private
19
+
20
+ def convert_flash(flash)
21
+ if flash.is_a?(Symbol)
22
+ flash = I18n.t(flash)
23
+ end
24
+ flash
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ module Spree
2
+ module Core
3
+ module TestingSupport
4
+ module Preferences
5
+ # Resets all preferences to default values, you can
6
+ # pass a block to override the defaults with a block
7
+ #
8
+ # reset_spree_preferences do |config|
9
+ # config.site_name = "my fancy pants store"
10
+ # end
11
+ #
12
+ def reset_spree_preferences
13
+ Spree::Preferences::Store.instance.persistence = false
14
+ config = Rails.application.config.spree.preferences
15
+ config.reset
16
+ yield(config) if block_given?
17
+ end
18
+
19
+ def assert_preference_unset(preference)
20
+ find("#preferences_#{preference}")['checked'].should be_false
21
+ Spree::Config[preference].should be_false
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Core
3
+ module TokenResource
4
+ module ClassMethods
5
+ def token_resource
6
+ has_one :tokenized_permission, :as => :permissable
7
+ delegate :token, :to => :tokenized_permission, :allow_nil => true
8
+ after_create :create_token
9
+ end
10
+ end
11
+
12
+ def create_token
13
+ permission = build_tokenized_permission
14
+ permission.token = token = ::SecureRandom::hex(8)
15
+ permission.save!
16
+ token
17
+ end
18
+
19
+ def self.included(receiver)
20
+ receiver.extend ClassMethods
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ ActiveRecord::Base.class_eval { include Spree::Core::TokenResource }
27
+
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module Core
3
+ module UrlHelpers
4
+ def spree
5
+ Spree::Core::Engine.routes.url_helpers
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ # Utility methods for dealing with user banners and saving
2
+ # an array of dismissed banners per user
3
+ # use symbols as banner id
4
+ module Spree
5
+ module Core
6
+ module UserBanners
7
+ def self.included(base)
8
+ base.preference :dismissed_banners, :string, :default => ''
9
+ end
10
+
11
+ def dismissed_banner_ids
12
+ dismissed = self.preferred_dismissed_banners
13
+ dismissed.split(',').map(&:to_sym)
14
+ end
15
+
16
+ def dismiss_banner(banner_id)
17
+ self.preferred_dismissed_banners = dismissed_banner_ids.push(banner_id.to_sym).uniq.join(',')
18
+ end
19
+
20
+ def dismissed_banner?(banner_id)
21
+ dismissed_banner_ids.include? banner_id.to_sym
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ # Borrowed from http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/
2
+ # Mentioned in tweet here: https://twitter.com/_sohara/status/177120126083141633
3
+ require 'mail'
4
+ class EmailValidator < ActiveModel::EachValidator
5
+ def validate_each(record,attribute,value)
6
+ begin
7
+ m = Mail::Address.new(value)
8
+ # We must check that value contains a domain and that value is an email address
9
+ r = m.domain && m.address == value
10
+ t = m.__send__(:tree)
11
+ # We need to dig into treetop
12
+ # A valid domain must have dot_atom_text elements size > 1
13
+ # user@localhost is excluded
14
+ # treetop must respond to domain
15
+ # We exclude valid email values like <user@localhost.com>
16
+ # Hence we use m.__send__(tree).domain
17
+ r &&= (t.domain.dot_atom_text.elements.size > 1)
18
+ rescue Exception => e
19
+ r = false
20
+ end
21
+ record.errors[attribute] << (options[:message] || "is invalid") unless r
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Spree
2
+ def self.version
3
+ "1.3.0.rc1"
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'money'
2
+
3
+ module Spree
4
+ class Money
5
+ attr_reader :money
6
+
7
+ def initialize(amount, options={})
8
+ @money = ::Money.parse([amount, (options[:currency] || Spree::Config[:currency])].join)
9
+ @options = {}
10
+ @options[:with_currency] = true if Spree::Config[:display_currency]
11
+ @options[:symbol_position] = Spree::Config[:currency_symbol_position].to_sym
12
+ @options[:no_cents] = true if Spree::Config[:hide_cents]
13
+ @options.merge!(options)
14
+ # Must be a symbol because the Money gem doesn't do the conversion
15
+ @options[:symbol_position] = @options[:symbol_position].to_sym
16
+
17
+ end
18
+
19
+ def to_s
20
+ @money.format(@options)
21
+ end
22
+
23
+ def ==(obj)
24
+ @money == obj.money
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,197 @@
1
+ module Spree
2
+ # THIS FILE SHOULD BE OVER-RIDDEN IN YOUR SITE EXTENSION!
3
+ # the exact code probably won't be useful, though you're welcome to modify and reuse
4
+ # the current contents are mainly for testing and documentation
5
+
6
+ # To override this file...
7
+ # 1) Make a copy of it in your sites local /lib/spree folder
8
+ # 2) Add it to the config load path, or require it in an initializer, e.g...
9
+ #
10
+ # # config/initializers/spree.rb
11
+ # require 'spree/product_filters'
12
+ #
13
+
14
+ # set up some basic filters for use with products
15
+ #
16
+ # Each filter has two parts
17
+ # * a parametrized named scope which expects a list of labels
18
+ # * an object which describes/defines the filter
19
+ #
20
+ # The filter description has three components
21
+ # * a name, for displaying on pages
22
+ # * a named scope which will 'execute' the filter
23
+ # * a mapping of presentation labels to the relevant condition (in the context of the named scope)
24
+ # * an optional list of labels and values (for use with object selection - see taxons examples below)
25
+ #
26
+ # The named scopes here have a suffix '_any', following SearchLogic's convention for a
27
+ # scope which returns results which match any of the inputs. This is purely a convention,
28
+ # but might be a useful reminder.
29
+ #
30
+ # When creating a form, the name of the checkbox group for a filter F should be
31
+ # the name of F's scope with [] appended, eg "price_range_any[]", and for
32
+ # each label you should have a checkbox with the label as its value. On submission,
33
+ # Rails will send the action a hash containing (among other things) an array named
34
+ # after the scope whose values are the active labels.
35
+ #
36
+ # SearchLogic will then convert this array to a call to the named scope with the array
37
+ # contents, and the named scope will build a query with the disjunction of the conditions
38
+ # relating to the labels, all relative to the scope's context.
39
+ #
40
+ # The details of how/when filters are used is a detail for specific models (eg products
41
+ # or taxons), eg see the taxon model/controller.
42
+
43
+ # See specific filters below for concrete examples.
44
+
45
+ # This module is included by Taxon. In development mode that inclusion does not
46
+ # happen until Taxon class is loaded. Ensure that Taxon class is loaded before
47
+ # you try something like Product.price_range_any
48
+ module ProductFilters
49
+ # Example: filtering by price
50
+ # The named scope just maps incoming labels onto their conditions, and builds the conjunction
51
+ # 'price' is in the base scope's context (ie, "select foo from products where ...") so
52
+ # we can access the field right away
53
+ # The filter identifies which scope to use, then sets the conditions for each price range
54
+ #
55
+ # If user checks off three different price ranges then the argument passed to
56
+ # below scope would be something like ["$10 - $15", "$15 - $18", "$18 - $20"]
57
+ #
58
+ Spree::Product.add_search_scope :price_range_any do |*opts|
59
+ conds = opts.map {|o| Spree::ProductFilters.price_filter[:conds][o]}.reject {|c| c.nil?}
60
+ scope = conds.shift
61
+ conds.each do |new_scope|
62
+ scope = scope.or(new_scope)
63
+ end
64
+ Spree::Product.joins(:master => :default_price).where(scope)
65
+ end
66
+
67
+ def ProductFilters.format_price(amount)
68
+ Spree::Money.new(amount)
69
+ end
70
+
71
+ def ProductFilters.price_filter
72
+ v = Spree::Price.arel_table
73
+ conds = [ [ I18n.t(:under_price, :price => format_price(10)) , v[:amount].lteq(10)],
74
+ [ "#{format_price(10)} - #{format_price(15)}" , v[:amount].in(10..15)],
75
+ [ "#{format_price(15)} - #{format_price(18)}" , v[:amount].in(15..18)],
76
+ [ "#{format_price(18)} - #{format_price(20)}" , v[:amount].in(18..20)],
77
+ [ I18n.t(:or_over_price, :price => format_price(20)) , v[:amount].gteq(20)]]
78
+ { :name => I18n.t(:price_range),
79
+ :scope => :price_range_any,
80
+ :conds => Hash[*conds.flatten],
81
+ :labels => conds.map {|k,v| [k,k]}
82
+ }
83
+ end
84
+
85
+
86
+ # Example: filtering by possible brands
87
+ #
88
+ # First, we define the scope. Two interesting points here: (a) we run our conditions
89
+ # in the scope where the info for the 'brand' property has been loaded; and (b)
90
+ # because we may want to filter by other properties too, we give this part of the
91
+ # query a unique name (which must be used in the associated conditions too).
92
+ #
93
+ # Secondly, the filter. Instead of a static list of values, we pull out all existing
94
+ # brands from the db, and then build conditions which test for string equality on
95
+ # the (uniquely named) field "p_brand.value". There's also a test for brand info
96
+ # being blank: note that this relies on with_property doing a left outer join
97
+ # rather than an inner join.
98
+ if Spree::Property.table_exists?
99
+ Spree::Product.add_search_scope :brand_any do |*opts|
100
+ conds = opts.map {|o| ProductFilters.brand_filter[:conds][o]}.reject {|c| c.nil?}
101
+ scope = conds.shift
102
+ conds.each do |new_scope|
103
+ scope = scope.or(new_scope)
104
+ end
105
+ Spree::Product.with_property("brand").where(scope)
106
+ end
107
+
108
+ def ProductFilters.brand_filter
109
+ brand_property = Spree::Property.find_by_name("brand")
110
+ brands = Spree::ProductProperty.where(:property_id => brand_property).pluck(:value).uniq
111
+ pp = Spree::ProductProperty.arel_table
112
+ conds = Hash[*brands.map { |b| [b, pp[:value].eq(b)] }.flatten]
113
+ { :name => "Brands",
114
+ :scope => :brand_any,
115
+ :conds => conds,
116
+ :labels => (brands.sort).map { |k| [k, k] }
117
+ }
118
+ end
119
+ end
120
+
121
+ # Example: a parameterized filter
122
+ # The filter above may show brands which aren't applicable to the current taxon,
123
+ # so this one only shows the brands that are relevant to a particular taxon and
124
+ # its descendants.
125
+ #
126
+ # We don't have to give a new scope since the conditions here are a subset of the
127
+ # more general filter, so decoding will still work - as long as the filters on a
128
+ # page all have unique names (ie, you can't use the two brand filters together
129
+ # if they use the same scope). To be safe, the code uses a copy of the scope.
130
+ #
131
+ # HOWEVER: what happens if we want a more precise scope? we can't pass
132
+ # parametrized scope names to SearchLogic, only atomic names, so couldn't ask
133
+ # for taxon T's customized filter to be used. BUT: we can arrange for the form
134
+ # to pass back a hash instead of an array, where the key acts as the (taxon)
135
+ # parameter and value is its label array, and then get a modified named scope
136
+ # to get its conditions from a particular filter.
137
+ #
138
+ # The brand-finding code can be simplified if a few more named scopes were added to
139
+ # the product properties model.
140
+ if Spree::Property.table_exists?
141
+ Spree::Product.add_search_scope :selective_brand_any do |*opts|
142
+ Spree::Product.brand_any(*opts)
143
+ end
144
+
145
+ def ProductFilters.selective_brand_filter(taxon = nil)
146
+ taxon ||= Spree::Taxonomy.first.root
147
+ brand_property = Spree::Property.find_by_name("brand")
148
+ scope = Spree::ProductProperty.where(:property_id => brand_property).
149
+ joins(:product => :taxons).
150
+ where("#{Spree::Taxon.table_name}.id" => [taxon] + taxon.descendants).
151
+ scoped
152
+ brands = scope.pluck(:value).uniq
153
+ {
154
+ :name => "Applicable Brands",
155
+ :scope => :selective_brand_any,
156
+ :labels => brands.sort.map { |k| [k,k] }
157
+ }
158
+ end
159
+ end
160
+
161
+ # Provide filtering on the immediate children of a taxon
162
+ #
163
+ # This doesn't fit the pattern of the examples above, so there's a few changes.
164
+ # Firstly, it uses an existing scope which was not built for filtering - and so
165
+ # has no need of a conditions mapping, and secondly, it has a mapping of name
166
+ # to the argument type expected by the other scope.
167
+ #
168
+ # This technique is useful for filtering on objects (by passing ids) or with a
169
+ # scope that can be used directly (eg. testing only ever on a single property).
170
+ #
171
+ # This scope selects products in any of the active taxons or their children.
172
+ #
173
+ def ProductFilters.taxons_below(taxon)
174
+ return Spree::ProductFilters.all_taxons if taxon.nil?
175
+ { :name => "Taxons under " + taxon.name,
176
+ :scope => :taxons_id_in_tree_any,
177
+ :labels => taxon.children.sort_by(&:position).map {|t| [t.name, t.id]},
178
+ :conds => nil
179
+ }
180
+ end
181
+
182
+ # Filtering by the list of all taxons
183
+ #
184
+ # Similar idea as above, but we don't want the descendants' products, hence
185
+ # it uses one of the auto-generated scopes from SearchLogic.
186
+ #
187
+ # idea: expand the format to allow nesting of labels?
188
+ def ProductFilters.all_taxons
189
+ taxons = Spree::Taxonomy.all.map {|t| [t.root] + t.root.descendants }.flatten
190
+ { :name => "All taxons",
191
+ :scope => :taxons_id_equals_any,
192
+ :labels => taxons.sort_by(&:name).map {|t| [t.name, t.id]},
193
+ :conds => nil # not needed
194
+ }
195
+ end
196
+ end
197
+ end