opensteam 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (265) hide show
  1. data/CHANGELOG +78 -0
  2. data/LICENSE +345 -0
  3. data/{README.txt → README.rdoc} +20 -17
  4. data/Rakefile +40 -0
  5. data/generators/opensteam/opensteam_generator.rb +95 -194
  6. data/generators/opensteam/templates/{controllers/administration → app/controllers/admin}/inventories_controller.rb +4 -4
  7. data/generators/opensteam/templates/app/controllers/admin/invoices_controller.rb +106 -0
  8. data/generators/opensteam/templates/app/controllers/admin/orders_controller.rb +113 -0
  9. data/generators/opensteam/templates/app/controllers/admin/search_controller.rb +17 -0
  10. data/generators/opensteam/templates/app/controllers/admin/shipments_controller.rb +106 -0
  11. data/generators/opensteam/templates/app/controllers/admin/users_controller.rb +99 -0
  12. data/generators/opensteam/templates/app/controllers/admin_controller.rb +40 -0
  13. data/generators/opensteam/templates/app/controllers/cart_controller.rb +94 -0
  14. data/generators/opensteam/templates/app/controllers/checkout_controller.rb +139 -0
  15. data/generators/opensteam/templates/app/controllers/profile/infos_controller.rb +52 -0
  16. data/generators/opensteam/templates/app/controllers/profile/orders_controller.rb +105 -0
  17. data/generators/opensteam/templates/app/controllers/profile_controller.rb +37 -0
  18. data/generators/opensteam/templates/app/controllers/searches_controller.rb +23 -0
  19. data/generators/opensteam/templates/app/controllers/user_sessions_controller.rb +38 -0
  20. data/generators/opensteam/templates/app/controllers/users_controller.rb +40 -0
  21. data/generators/opensteam/templates/{controllers → app/controllers}/webshop_controller.rb +35 -13
  22. data/generators/opensteam/templates/app/helpers/admin_helper.rb +40 -0
  23. data/generators/opensteam/templates/app/helpers/users_helper.rb +53 -0
  24. data/generators/opensteam/templates/app/helpers/webshop_helper.rb +91 -0
  25. data/generators/opensteam/templates/app/models/search.rb +36 -0
  26. data/generators/opensteam/templates/{views/administration → app/views/admin}/_address.html.erb +0 -0
  27. data/generators/opensteam/templates/app/views/admin/_nav.html.erb +5 -0
  28. data/generators/opensteam/templates/app/views/admin/catalog.html.erb +5 -0
  29. data/generators/opensteam/templates/app/views/admin/index.html.erb +21 -0
  30. data/generators/opensteam/templates/{views/administration → app/views/admin}/inventories/edit.html.erb +10 -9
  31. data/generators/opensteam/templates/{views/administration → app/views/admin}/inventories/index.html.erb +3 -3
  32. data/generators/opensteam/templates/{views/administration → app/views/admin}/inventories/new.html.erb +3 -3
  33. data/generators/opensteam/templates/app/views/admin/inventories/show.html.erb +46 -0
  34. data/generators/opensteam/templates/app/views/admin/invoices/_invoice.html.erb +12 -0
  35. data/generators/opensteam/templates/app/views/admin/invoices/_invoices.html.erb +11 -0
  36. data/generators/opensteam/templates/app/views/admin/invoices/index.html.erb +6 -0
  37. data/generators/opensteam/templates/app/views/admin/invoices/new.html.erb +54 -0
  38. data/generators/opensteam/templates/app/views/admin/invoices/show.html.erb +55 -0
  39. data/generators/opensteam/templates/app/views/admin/orders/_event.html.erb +5 -0
  40. data/generators/opensteam/templates/app/views/admin/orders/_order.html.erb +11 -0
  41. data/generators/opensteam/templates/app/views/admin/orders/_order_item.html.erb +10 -0
  42. data/generators/opensteam/templates/app/views/admin/orders/_orders.html.erb +19 -0
  43. data/generators/opensteam/templates/app/views/admin/orders/index.html.erb +14 -0
  44. data/generators/opensteam/templates/app/views/admin/orders/livesearch.rjs +6 -0
  45. data/generators/opensteam/templates/app/views/admin/orders/show.html.erb +58 -0
  46. data/generators/opensteam/templates/app/views/admin/products.html.erb +8 -0
  47. data/generators/opensteam/templates/app/views/admin/properties.html.erb +7 -0
  48. data/generators/opensteam/templates/app/views/admin/sales.html.erb +5 -0
  49. data/generators/opensteam/templates/app/views/admin/shipments/_shipment.erb +11 -0
  50. data/generators/opensteam/templates/app/views/admin/shipments/_shipments.html.erb +11 -0
  51. data/generators/opensteam/templates/app/views/admin/shipments/index.html.erb +6 -0
  52. data/generators/opensteam/templates/app/views/admin/shipments/new.html.erb +51 -0
  53. data/generators/opensteam/templates/app/views/admin/shipments/show.html.erb +55 -0
  54. data/generators/opensteam/templates/app/views/admin/users/_admins.html.erb +26 -0
  55. data/generators/opensteam/templates/app/views/admin/users/_admins_header.html.erb +10 -0
  56. data/generators/opensteam/templates/app/views/admin/users/_customer.html.erb +32 -0
  57. data/generators/opensteam/templates/app/views/admin/users/_customers.html.erb +29 -0
  58. data/generators/opensteam/templates/app/views/admin/users/_customers_header.html.erb +11 -0
  59. data/generators/opensteam/templates/app/views/admin/users/_user_fields.html.erb +9 -0
  60. data/generators/opensteam/templates/app/views/admin/users/_users.html.erb +29 -0
  61. data/generators/opensteam/templates/app/views/admin/users/_users_header.html.erb +11 -0
  62. data/generators/opensteam/templates/app/views/admin/users/edit.html.erb +6 -0
  63. data/generators/opensteam/templates/app/views/admin/users/index.html.erb +7 -0
  64. data/generators/opensteam/templates/app/views/admin/users/new.html.erb +6 -0
  65. data/generators/opensteam/templates/app/views/admin/users/show.html.erb +34 -0
  66. data/generators/opensteam/templates/app/views/admin/users.html.erb +4 -0
  67. data/generators/opensteam/templates/{views → app/views}/administration_mailer/order_admin.erb +0 -0
  68. data/generators/opensteam/templates/{views → app/views}/administration_mailer/order_customer.erb +0 -0
  69. data/generators/opensteam/templates/app/views/cart/_cart.html.erb +8 -0
  70. data/generators/opensteam/templates/{views/webshop → app/views/cart}/_cart_content.html.erb +7 -10
  71. data/generators/opensteam/templates/app/views/cart/index.html.erb +5 -0
  72. data/generators/opensteam/templates/app/views/cart/update.rjs +1 -0
  73. data/generators/opensteam/templates/app/views/checkout/intro.html.erb +18 -0
  74. data/generators/opensteam/templates/{views → app/views}/checkout/outro.html.erb +0 -1
  75. data/generators/opensteam/templates/{views → app/views}/checkout/payment.html.erb +0 -0
  76. data/generators/opensteam/templates/app/views/checkout/shipping.html.erb +45 -0
  77. data/generators/opensteam/templates/app/views/checkout/show_cart.html.erb +13 -0
  78. data/generators/opensteam/templates/{views → app/views}/checkout/update_cart_content.rjs +0 -0
  79. data/generators/opensteam/templates/{views → app/views}/common/_cart.html.erb +2 -2
  80. data/generators/opensteam/templates/{views → app/views}/common/_cart_content.html.erb +1 -1
  81. data/generators/opensteam/templates/app/views/common/_footer.html.erb +1 -0
  82. data/generators/opensteam/templates/app/views/common/_header.html.erb +4 -0
  83. data/generators/opensteam/templates/app/views/common/_header_flash.html.erb +3 -0
  84. data/generators/opensteam/templates/app/views/common/_signup_fields.html.erb +16 -0
  85. data/generators/opensteam/templates/app/views/common/_top_links.html.erb +10 -0
  86. data/generators/opensteam/templates/app/views/layouts/admin.html.erb +45 -0
  87. data/generators/opensteam/templates/app/views/layouts/profile.html.erb +45 -0
  88. data/generators/opensteam/templates/app/views/layouts/webshop.html.erb +51 -0
  89. data/generators/opensteam/templates/app/views/profile/_customer_sidebar.html.erb +12 -0
  90. data/generators/opensteam/templates/app/views/profile/index.html.erb +11 -0
  91. data/generators/opensteam/templates/app/views/profile/infos/_customer.html.erb +5 -0
  92. data/generators/opensteam/templates/app/views/profile/infos/edit.html.erb +25 -0
  93. data/generators/opensteam/templates/app/views/profile/infos/edit_password.html.erb +26 -0
  94. data/generators/opensteam/templates/app/views/profile/orders/_order.html.erb +11 -0
  95. data/generators/opensteam/templates/app/views/profile/orders/_order_item.html.erb +10 -0
  96. data/generators/opensteam/templates/app/views/profile/orders/_orders.html.erb +19 -0
  97. data/generators/opensteam/templates/app/views/profile/orders/index.html.erb +14 -0
  98. data/generators/opensteam/templates/app/views/profile/orders/show.html.erb +48 -0
  99. data/generators/opensteam/templates/app/views/searches/_search_bar.html.erb +5 -0
  100. data/generators/opensteam/templates/app/views/searches/new.html.erb +23 -0
  101. data/generators/opensteam/templates/app/views/searches/show.html.erb +1 -0
  102. data/generators/opensteam/templates/app/views/user_sessions/new.html.erb +14 -0
  103. data/generators/opensteam/templates/app/views/users/_user_bar.html.erb +5 -0
  104. data/generators/opensteam/templates/app/views/users/index.html.erb +27 -0
  105. data/generators/opensteam/templates/app/views/users/new.html.erb +7 -0
  106. data/generators/opensteam/templates/app/views/users/show.html.erb +5 -0
  107. data/generators/opensteam/templates/{views → app/views}/webshop/_inventory_content.html.erb +0 -0
  108. data/generators/opensteam/templates/app/views/webshop/_nav.html.erb +6 -0
  109. data/generators/opensteam/templates/{views → app/views}/webshop/add_inventory_to_cart.rjs +0 -0
  110. data/generators/opensteam/templates/{views → app/views}/webshop/add_to_cart_with_parameters.rjs +0 -0
  111. data/generators/opensteam/templates/{views → app/views}/webshop/del_item.rjs +0 -0
  112. data/generators/opensteam/templates/app/views/webshop/index.html.erb +11 -0
  113. data/generators/opensteam/templates/{views → app/views}/webshop/inventory.rjs +0 -0
  114. data/generators/opensteam/templates/{views → app/views}/webshop/show.html.erb +15 -15
  115. data/generators/opensteam/templates/config/initializers/init_states.rb +68 -0
  116. data/generators/opensteam/templates/{init → config/initializers}/opensteam.rb +6 -0
  117. data/generators/opensteam/templates/config/initializers/opensteam_model_tables.rb +57 -0
  118. data/generators/opensteam/templates/db/migrate/20080609095714_create_profiles.rb +14 -0
  119. data/generators/opensteam/templates/{migrations/create_sessions.rb → db/migrate/20080609095720_create_sessions.rb} +0 -0
  120. data/generators/opensteam/templates/db/migrate/20080609095721_create_users.rb +29 -0
  121. data/generators/opensteam/templates/{migrations/create_addresses.rb → db/migrate/20080609095723_create_addresses.rb} +0 -0
  122. data/generators/opensteam/templates/{migrations/create_customers.rb → db/migrate/20080609095724_create_customers.rb} +0 -0
  123. data/generators/opensteam/templates/db/migrate/20080609095725_create_dummy_users.rb +21 -0
  124. data/generators/opensteam/templates/{migrations/create_inventories.rb → db/migrate/20080609095726_create_inventories.rb} +0 -0
  125. data/generators/opensteam/templates/{migrations/create_inventories_properties.rb → db/migrate/20080609095727_create_inventories_properties.rb} +0 -0
  126. data/generators/opensteam/templates/{migrations/create_order_items.rb → db/migrate/20080609095728_create_order_items.rb} +5 -0
  127. data/generators/opensteam/templates/db/migrate/20080609095729_create_orders.rb +32 -0
  128. data/generators/opensteam/templates/{migrations/create_payment_types.rb → db/migrate/20080609095730_create_payment_types.rb} +0 -0
  129. data/generators/opensteam/templates/{migrations/create_properties.rb → db/migrate/20080609095731_create_properties.rb} +0 -0
  130. data/generators/opensteam/templates/db/migrate/20080623075613_create_states.rb +13 -0
  131. data/generators/opensteam/templates/db/migrate/20080624132807_create_searches.rb +20 -0
  132. data/generators/opensteam/templates/db/migrate/20080630114155_create_state_histories.rb +14 -0
  133. data/generators/opensteam/templates/db/migrate/20080714131513_create_invoices.rb +20 -0
  134. data/generators/opensteam/templates/db/migrate/20080714131650_create_shipments.rb +19 -0
  135. data/generators/opensteam/templates/lib/authenticated_system.rb +201 -0
  136. data/generators/opensteam/templates/lib/authentication/by_cookie_token.rb +90 -0
  137. data/generators/opensteam/templates/lib/authentication/by_password.rb +68 -0
  138. data/generators/opensteam/templates/lib/authentication.rb +46 -0
  139. data/generators/opensteam/templates/lib/states/invoice/finished.rb +6 -0
  140. data/generators/opensteam/templates/lib/states/invoice/payment_received.rb +8 -0
  141. data/generators/opensteam/templates/lib/states/invoice/pending.rb +6 -0
  142. data/generators/opensteam/templates/lib/states/invoice/waiting_for_payment.rb +5 -0
  143. data/generators/opensteam/templates/lib/states/order/finished.rb +6 -0
  144. data/generators/opensteam/templates/lib/states/order/pending.rb +19 -0
  145. data/generators/opensteam/templates/lib/states/order/processing.rb +11 -0
  146. data/generators/opensteam/templates/lib/states/shipment/finished.rb +6 -0
  147. data/generators/opensteam/templates/lib/states/shipment/pending.rb +5 -0
  148. data/generators/opensteam/templates/lib/tasks/opensteam.rake +114 -0
  149. data/generators/opensteam/templates/public/images/athmo_background.jpg +0 -0
  150. data/generators/opensteam/templates/public/images/bg.jpg +0 -0
  151. data/generators/opensteam/templates/public/images/cart_big.gif +0 -0
  152. data/generators/opensteam/templates/public/images/cross.png +0 -0
  153. data/generators/opensteam/templates/public/images/enter.gif +0 -0
  154. data/generators/opensteam/templates/public/images/menu_background.jpg +0 -0
  155. data/generators/opensteam/templates/public/images/opensteam_background.jpg +0 -0
  156. data/generators/opensteam/templates/public/images/opensteam_logo1.jpg +0 -0
  157. data/generators/opensteam/templates/public/images/opensteam_petstore_logo1.jpg +0 -0
  158. data/generators/opensteam/templates/public/images/opensteam_store_logo.jpg +0 -0
  159. data/generators/opensteam/templates/public/images/os_logo.gif +0 -0
  160. data/generators/opensteam/templates/public/images/slogan.png +0 -0
  161. data/generators/opensteam/templates/public/images/tick.png +0 -0
  162. data/generators/opensteam/templates/public/images/zoom.png +0 -0
  163. data/generators/opensteam/templates/public/index.html +19 -36
  164. data/generators/opensteam/templates/public/javascripts/opensteam.js +30 -0
  165. data/generators/opensteam/templates/public/stylesheets/opensteam_newdesign.css +188 -0
  166. data/generators/opensteam/templates/public/stylesheets/opensteam_white.css +168 -0
  167. data/generators/opensteam/templates/public/stylesheets/webshop.css +0 -1
  168. data/generators/opensteam/templates/tasks/opensteam.rake +1 -1
  169. data/generators/opensteam/templates/{fixtures → test/fixtures}/inventories.yml +0 -0
  170. data/generators/opensteam/templates/{fixtures → test/fixtures}/inventories_properties.yml +0 -0
  171. data/generators/opensteam/templates/{fixtures → test/fixtures}/product_animals.yml +0 -0
  172. data/generators/opensteam/templates/{fixtures → test/fixtures}/product_dog_foods.yml +0 -0
  173. data/generators/opensteam/templates/{fixtures → test/fixtures}/properties.yml +0 -0
  174. data/generators/opensteam_product/opensteam_product_generator.rb +25 -9
  175. data/generators/opensteam_product/templates/controllers/product_controller.rb +5 -4
  176. data/generators/opensteam_product/templates/migration.rb +2 -1
  177. data/generators/opensteam_product/templates/models/product.rb +1 -0
  178. data/generators/opensteam_product/templates/views/{administration → admin}/_attributes.html.erb +1 -1
  179. data/generators/opensteam_product/templates/views/{administration → admin}/_get_products.html.erb +0 -0
  180. data/generators/opensteam_product/templates/views/{administration → admin}/_inventories.html.erb +2 -2
  181. data/generators/opensteam_product/templates/views/admin/edit.html.erb +13 -0
  182. data/generators/opensteam_product/templates/views/{administration → admin}/index.html.erb +5 -5
  183. data/generators/opensteam_product/templates/views/admin/new.html.erb +16 -0
  184. data/generators/opensteam_product/templates/views/{administration → admin}/show.html.erb +2 -2
  185. data/generators/opensteam_property/opensteam_property_generator.rb +8 -8
  186. data/generators/opensteam_property/templates/controllers/property_controller.rb +6 -4
  187. data/generators/opensteam_property/templates/migration.rb +2 -1
  188. data/generators/opensteam_property/templates/models/property.rb +1 -0
  189. data/generators/opensteam_property/templates/views/{administration → admin}/edit.html.erb +3 -3
  190. data/generators/opensteam_property/templates/views/admin/index.html.erb +24 -0
  191. data/generators/opensteam_property/templates/views/{administration → admin}/new.html.erb +2 -2
  192. data/generators/opensteam_property/templates/views/admin/show.html.erb +10 -0
  193. data/lib/opensteam/base.rb +16 -0
  194. data/lib/opensteam/cart_base.rb +227 -0
  195. data/lib/opensteam/checkout.rb +30 -3
  196. data/lib/opensteam/config.rb +37 -0
  197. data/lib/opensteam/extension_base.rb +76 -0
  198. data/lib/opensteam/finder.rb +36 -5
  199. data/lib/opensteam/helper/configurable_table.rb +228 -0
  200. data/lib/opensteam/history.rb +56 -0
  201. data/lib/opensteam/initializer.rb +127 -0
  202. data/lib/opensteam/inventory_base.rb +24 -1
  203. data/lib/opensteam/invoice_base.rb +61 -0
  204. data/lib/opensteam/order_base.rb +105 -14
  205. data/lib/opensteam/product_base.rb +31 -3
  206. data/lib/opensteam/property_base.rb +16 -0
  207. data/lib/opensteam/shipment_base.rb +60 -0
  208. data/lib/opensteam/shopping_cart.rb +32 -14
  209. data/lib/opensteam/state_logic.rb +218 -0
  210. data/lib/opensteam/state_machine.rb +216 -0
  211. data/lib/opensteam/user_base.rb +115 -131
  212. data/lib/opensteam/version.rb +17 -1
  213. data/lib/opensteam.rb +30 -35
  214. metadata +245 -146
  215. data/History.txt +0 -0
  216. data/License.txt +0 -4
  217. data/Manifest.txt +0 -131
  218. data/Manifest.txt.bak +0 -132
  219. data/generators/opensteam/templates/controllers/administration/customers_controller.rb +0 -23
  220. data/generators/opensteam/templates/controllers/administration/orders_controller.rb +0 -61
  221. data/generators/opensteam/templates/controllers/administration_controller.rb +0 -80
  222. data/generators/opensteam/templates/controllers/checkout_controller.rb +0 -142
  223. data/generators/opensteam/templates/helpers/webshop_helper.rb +0 -29
  224. data/generators/opensteam/templates/migrations/create_dummy_users.rb +0 -16
  225. data/generators/opensteam/templates/migrations/create_orders.rb +0 -18
  226. data/generators/opensteam/templates/migrations/create_users.rb +0 -19
  227. data/generators/opensteam/templates/models/administration_mailer.rb +0 -18
  228. data/generators/opensteam/templates/models/inventories_property.rb +0 -10
  229. data/generators/opensteam/templates/models/inventory.rb +0 -57
  230. data/generators/opensteam/templates/public/images/rails.png +0 -0
  231. data/generators/opensteam/templates/views/administration/_nav.html.erb +0 -11
  232. data/generators/opensteam/templates/views/administration/_update_tree.html.erb +0 -18
  233. data/generators/opensteam/templates/views/administration/admin_info.html.erb +0 -12
  234. data/generators/opensteam/templates/views/administration/customers/index.html.erb +0 -27
  235. data/generators/opensteam/templates/views/administration/customers/show.html.erb +0 -27
  236. data/generators/opensteam/templates/views/administration/customers.html.erb +0 -44
  237. data/generators/opensteam/templates/views/administration/index.html.erb +0 -9
  238. data/generators/opensteam/templates/views/administration/inventories/show.html.erb +0 -45
  239. data/generators/opensteam/templates/views/administration/login.html.erb +0 -16
  240. data/generators/opensteam/templates/views/administration/order.html.erb +0 -22
  241. data/generators/opensteam/templates/views/administration/orders/_order_item.html.erb +0 -22
  242. data/generators/opensteam/templates/views/administration/orders/index.html.erb +0 -32
  243. data/generators/opensteam/templates/views/administration/orders/show.html.erb +0 -25
  244. data/generators/opensteam/templates/views/administration/orders.html.erb +0 -32
  245. data/generators/opensteam/templates/views/administration/products.html.erb +0 -7
  246. data/generators/opensteam/templates/views/administration/properties.html.erb +0 -7
  247. data/generators/opensteam/templates/views/administration/show_order_item.html.erb +0 -5
  248. data/generators/opensteam/templates/views/administration/signup.html.erb +0 -65
  249. data/generators/opensteam/templates/views/administration/tree.html.erb +0 -15
  250. data/generators/opensteam/templates/views/administration/update_products.html.erb +0 -5
  251. data/generators/opensteam/templates/views/administration/update_properties.html.erb +0 -5
  252. data/generators/opensteam/templates/views/administration/update_tree.rjs +0 -3
  253. data/generators/opensteam/templates/views/checkout/intro.html.erb +0 -5
  254. data/generators/opensteam/templates/views/checkout/shipping.html.erb +0 -39
  255. data/generators/opensteam/templates/views/checkout/show_cart.html.erb +0 -13
  256. data/generators/opensteam/templates/views/common/_header.html.erb +0 -15
  257. data/generators/opensteam/templates/views/layouts/administration.html.erb +0 -29
  258. data/generators/opensteam/templates/views/layouts/webshop.html.erb +0 -36
  259. data/generators/opensteam/templates/views/webshop/_cart.html.erb +0 -11
  260. data/generators/opensteam/templates/views/webshop/_header.html.erb +0 -15
  261. data/generators/opensteam/templates/views/webshop/index.html.erb +0 -12
  262. data/generators/opensteam_product/templates/views/administration/edit.html.erb +0 -13
  263. data/generators/opensteam_product/templates/views/administration/new.html.erb +0 -16
  264. data/generators/opensteam_property/templates/views/administration/index.html.erb +0 -24
  265. data/generators/opensteam_property/templates/views/administration/show.html.erb +0 -10
@@ -5,7 +5,7 @@
5
5
  :object => @product,
6
6
  :locals => { :f => f, :cart_details => @cart_details } ) %>
7
7
  <%% end %>
8
-
8
+
9
9
  <br />
10
10
 
11
11
  <span id="indicator" style="margin-top:0px; display:none"><%%= image_tag "indicator.gif" %>checking inventory...</span>
@@ -13,28 +13,28 @@
13
13
  <%%- if @inventory.empty? -%>
14
14
  <b>Please select a configuration</b>
15
15
  <%%- else -%>
16
- <%%= render :partial => "inventory_content", :collection => @inventory %>
16
+ <%%= render :partial => "<%= file_name %>/inventory_content", :collection => @inventory %>
17
17
  <%%- end -%>
18
18
  </div>
19
19
  <br />
20
20
  <br />
21
-
22
-
23
21
 
24
-
22
+
23
+
24
+
25
25
  <%%- unless @cart_details -%><%%= submit_tag "add to cart" %><%%- end -%>
26
-
26
+
27
27
  <%% end %>
28
-
29
- <%%= observe_form "show",
30
- :url => { :action => :inventory },
31
- :loading => "Element.show('indicator')",
32
- :complete => "Element.hide('indicator')"
28
+
29
+ <%%= observe_form "show",
30
+ :url => { :action => :inventory },
31
+ :loading => "Element.show('indicator')",
32
+ :complete => "Element.hide('indicator')"
33
33
  %>
34
-
35
-
36
-
37
- <%%= link_to 'Index', <%= file_name %>_index_path %>
34
+
35
+
36
+
37
+ <%%= link_to 'Index', shop_index_path %>
38
38
  </div>
39
39
 
40
40
 
@@ -0,0 +1,68 @@
1
+
2
+ if defined? RAILS_ROOT
3
+
4
+ Dir.glob("#{RAILS_ROOT}/lib/states/**/*.rb").collect { |f|
5
+ require f
6
+ }
7
+
8
+ end
9
+
10
+
11
+
12
+
13
+ Order.class_eval do
14
+ include OrderStates::Finished
15
+ include OrderStates::Pending
16
+ include OrderStates::Processing
17
+
18
+ named_scope :open, :conditions => ["orders.state is not ?", :finished]
19
+
20
+
21
+ initial_state :pending
22
+
23
+ observe do |record|
24
+ if record.shipments.all_finished? && record.invoices.all_finished? &&
25
+ record.order_items.all_invoiced? && record.order_items.all_shipped?
26
+
27
+ record.state = :finished unless record.state.to_sym == :finished
28
+
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+
35
+ # States for Opensteam::ShipmentBase::Shipment
36
+ Shipment.class_eval do
37
+ include ShipmentStates::Pending
38
+ include ShipmentStates::Finished
39
+
40
+ initial_state :pending
41
+
42
+ observe do |record|
43
+ notify :order
44
+ end
45
+
46
+ end
47
+
48
+ # States for Opensteam::InvoiceBase::Invoice
49
+ Invoice.class_eval do
50
+
51
+
52
+
53
+
54
+ include InvoiceStates::WaitingForPayment
55
+ include InvoiceStates::PaymentReceived
56
+ include InvoiceStates::Pending
57
+ include InvoiceStates::Finished
58
+
59
+ initial_state :pending
60
+
61
+ observe do |record|
62
+ notify :order
63
+ end
64
+
65
+
66
+ end
67
+
68
+
@@ -28,3 +28,9 @@ Inventory.define_property_accessors
28
28
 
29
29
 
30
30
 
31
+ ## Constants for restful_authenticated
32
+ REST_AUTH_SITE_KEY = '7de2207fa03b2d0c4405a096632f1be0076fad0f'
33
+ REST_AUTH_DIGEST_STRETCHES = 10
34
+
35
+
36
+
@@ -0,0 +1,57 @@
1
+ Order.class_eval do
2
+
3
+ include Opensteam::Helper::ConfigurableTable
4
+
5
+ configure_table :order do
6
+ default_sort_col :id
7
+ column :id, :name => "#"
8
+ column :order_items, :name => "OrderItems", :method => :size
9
+ column :customer, :name => "Customer", :method => :email
10
+ column :shipping_address, :name => "Shipping Address", :method => :to_s
11
+ column :payment_address, :name => "Payment Address", :method => :to_s
12
+ column :state, :name => "State"
13
+ column :created_at, :name => "Created"
14
+ column :updated_at, :name => "Updated"
15
+ end
16
+
17
+
18
+ end
19
+
20
+
21
+ Shipment.class_eval do
22
+
23
+ include Opensteam::Helper::ConfigurableTable
24
+
25
+ configure_table :shipment do
26
+ default_sort_col :id
27
+ column :id, :name => "#"
28
+ column :order_items, :name => "OrderItems", :method => :size
29
+ column :address, :name => "Address", :method => :to_s
30
+ column :state, :name => "State"
31
+ column :comment, :name => "Comment"
32
+ column :created_at, :name => "Created"
33
+ column :updated_at, :name => "Updated"
34
+ end
35
+
36
+
37
+
38
+ end
39
+
40
+ Invoice.class_eval do
41
+
42
+ include Opensteam::Helper::ConfigurableTable
43
+
44
+ configure_table :invoices do
45
+ default_sort_col :id
46
+ column :id, :name => "#"
47
+ column :order_items, :name => "OrderItems", :method => :size
48
+ column :address, :name => "Address", :method => :to_s
49
+ column :state, :name => "State"
50
+ column :comment, :name => "Comment"
51
+ column :price, :name => "Price"
52
+ column :created_at, :name => "Created"
53
+ column :updated_at, :name => "Updated"
54
+ end
55
+
56
+
57
+ end
@@ -0,0 +1,14 @@
1
+ class CreateProfiles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :profiles do |t|
4
+ t.string :name
5
+ t.text :description
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :profiles
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "users", :force => true do |t|
4
+ # t.column :login, :string, :limit => 40
5
+ t.column :email, :string, :limit => 100
6
+ t.column :crypted_password, :string, :limit => 40
7
+ t.column :salt, :string, :limit => 40
8
+ t.column :created_at, :datetime
9
+ t.column :updated_at, :datetime
10
+ t.column :remember_token, :string, :limit => 40
11
+ t.column :remember_token_expires_at, :datetime
12
+
13
+ # t.string :type, :default => "Customer"
14
+
15
+ t.references :profile
16
+ t.string :firstname, :limit => 100
17
+ t.string :lastname, :limit => 100
18
+
19
+
20
+
21
+
22
+ end
23
+ add_index :users, :email, :unique => true
24
+ end
25
+
26
+ def self.down
27
+ drop_table "users"
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ class CreateDummyUsers < ActiveRecord::Migration
2
+ def self.up
3
+ p = Opensteam::UserBase::Profile.create( :name => "Admin", :description => "Admin Profile" )
4
+
5
+ u = Opensteam::UserBase::User.create( :firstname => "admin",
6
+ :lastname => "admin",
7
+ :email => "admin@host.com",
8
+ :password => "opensteam",
9
+ :password_confirmation => "opensteam" )
10
+
11
+ u.profile = p
12
+
13
+ u.save
14
+
15
+ end
16
+
17
+ def self.down
18
+ Opensteam::UserBase::User.find_by_email("admin@host.com").destroy rescue nil
19
+ end
20
+
21
+ end
@@ -6,6 +6,11 @@ class CreateOrderItems < ActiveRecord::Migration
6
6
  t.string :itemid
7
7
  t.references :inventory
8
8
 
9
+
10
+ t.references :shipment
11
+ t.references :invoice
12
+
13
+
9
14
  t.timestamps
10
15
  end
11
16
  end
@@ -0,0 +1,32 @@
1
+ class CreateOrders < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :orders, :id => false, :force => true do |t|
4
+ t.string :id, :null => false
5
+ t.references :customer
6
+
7
+ t.references :payment_type
8
+
9
+ t.references :shipping_address
10
+ t.references :payment_address
11
+
12
+
13
+ #t.references :state
14
+ t.string :state
15
+
16
+ t.integer :workflow_id
17
+
18
+ #
19
+ #
20
+ # t.references :fulfillment_state
21
+ # t.references :payment_state
22
+
23
+ t.text :description
24
+
25
+ t.timestamps
26
+ end
27
+ end
28
+
29
+ def self.down
30
+ drop_table :orders
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ class CreateStates < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :states do |t|
4
+ t.string :type
5
+ t.timestamps
6
+ end
7
+
8
+ end
9
+
10
+ def self.down
11
+ drop_table :states
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ class CreateSearches < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :searches do |t|
4
+ t.string :keywords
5
+ t.string :properties
6
+ t.float :minimum_price
7
+ t.float :maximum_price
8
+ t.integer :minimum_storage
9
+ t.integer :maximum_storage
10
+
11
+ t.string :kind
12
+ t.references :customer
13
+ t.timestamps
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :searches
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ class CreateStateHistories < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :histories do |t|
4
+ t.references :receiver, :polymorphic => true
5
+ t.text :message
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :histories
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ class CreateInvoices < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :invoices do |t|
4
+ t.float :price
5
+ t.text :comment
6
+
7
+ t.references :customer
8
+ t.references :order
9
+ t.references :address
10
+
11
+ t.string :state
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :invoices
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ class CreateShipments < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :shipments do |t|
4
+ t.text :comment
5
+
6
+ t.string :state
7
+
8
+ t.references :order
9
+ t.references :address
10
+ t.references :customer
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ drop_table :shipments
18
+ end
19
+ end
@@ -0,0 +1,201 @@
1
+ # borrowed from the Restful Authentication Generator
2
+ # git://github.com/technoweenie/restful-authentication.git
3
+
4
+ module AuthenticatedSystem
5
+ protected
6
+ # Returns true or false if the user is logged in.
7
+ # Preloads @current_user with the user model if they're logged in.
8
+ def logged_in?
9
+ !!current_user
10
+ end
11
+
12
+
13
+ def is_admin?
14
+ return false unless logged_in?
15
+ current_user.is_admin?
16
+ end
17
+
18
+
19
+ def is_customer?
20
+ current_user.is_customer?
21
+ end
22
+
23
+ # Accesses the current user from the session.
24
+ # Future calls avoid the database because nil is not equal to false.
25
+ def current_user
26
+ @current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
27
+ end
28
+
29
+ # Store the given user id in the session.
30
+ def current_user=(new_user)
31
+ session[:user_id] = new_user ? new_user.id : nil
32
+ @current_user = new_user || false
33
+ end
34
+
35
+ # Check if the user is authorized
36
+ #
37
+ # Override this method in your controllers if you want to restrict access
38
+ # to only a few actions or if you want to check if the user
39
+ # has the correct rights.
40
+ #
41
+ # Example:
42
+ #
43
+ # # only allow nonbobs
44
+ # def authorized?
45
+ # current_user.login != "bob"
46
+ # end
47
+ #
48
+ def authorized?(action=nil, resource=nil, *args)
49
+ logged_in?
50
+ end
51
+
52
+ # Filter method to enforce a login requirement.
53
+ #
54
+ # To require logins for all actions, use this in your controllers:
55
+ #
56
+ # before_filter :login_required
57
+ #
58
+ # To require logins for specific actions, use this in your controllers:
59
+ #
60
+ # before_filter :login_required, :only => [ :edit, :update ]
61
+ #
62
+ # To skip this in a subclassed controller:
63
+ #
64
+ # skip_before_filter :login_required
65
+ #
66
+ def login_required
67
+ authorized? || access_denied
68
+ end
69
+
70
+ # Redirect as appropriate when an access request fails.
71
+ #
72
+ # The default action is to redirect to the login screen.
73
+ #
74
+ # Override this method in your controllers if you want to have special
75
+ # behavior in case the user is not authorized
76
+ # to access the requested action. For example, a popup window might
77
+ # simply close itself.
78
+ def access_denied
79
+ respond_to do |format|
80
+ format.html do
81
+ store_location
82
+ redirect_to new_user_session_path
83
+ end
84
+ # format.any doesn't work in rails version < http://dev.rubyonrails.org/changeset/8987
85
+ # you may want to change format.any to e.g. format.any(:js, :xml)
86
+ format.any do
87
+ request_http_basic_authentication 'Web Password'
88
+ end
89
+ end
90
+ end
91
+
92
+ # Store the URI of the current request in the session.
93
+ #
94
+ # We can return to this location by calling #redirect_back_or_default.
95
+ def store_location
96
+ session[:return_to] = request.request_uri
97
+ end
98
+
99
+ # Redirect to the URI stored by the most recent store_location call or
100
+ # to the passed default. Set an appropriately modified
101
+ # after_filter :store_location, :only => [:index, :new, :show, :edit]
102
+ # for any controller you want to be bounce-backable.
103
+ def redirect_back_or_default(default)
104
+ redirect_to(session[:return_to] || default)
105
+ session[:return_to] = nil
106
+ end
107
+
108
+ # Inclusion hook to make #current_user and #logged_in?
109
+ # available as ActionView helper methods.
110
+ def self.included(base)
111
+ base.send :helper_method, :current_user, :logged_in?, :authorized? if base.respond_to? :helper_method
112
+ end
113
+
114
+ #
115
+ # Login
116
+ #
117
+
118
+ # Called from #current_user. First attempt to login by the user id stored in the session.
119
+ def login_from_session
120
+ self.current_user = User.find_by_id(session[:user_id]) if session[:user_id]
121
+ end
122
+
123
+ # Called from #current_user. Now, attempt to login by basic authentication information.
124
+ def login_from_basic_auth
125
+ authenticate_with_http_basic do |login, password|
126
+ self.current_user = User.authenticate(login, password)
127
+ end
128
+ end
129
+
130
+ #
131
+ # Logout
132
+ #
133
+
134
+ # Called from #current_user. Finaly, attempt to login by an expiring token in the cookie.
135
+ # for the paranoid: we _should_ be storing user_token = hash(cookie_token, request IP)
136
+ def login_from_cookie
137
+ user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
138
+ if user && user.remember_token?
139
+ self.current_user = user
140
+ handle_remember_cookie! false # freshen cookie token (keeping date)
141
+ self.current_user
142
+ end
143
+ end
144
+
145
+ # This is ususally what you want; resetting the session willy-nilly wreaks
146
+ # havoc with forgery protection, and is only strictly necessary on login.
147
+ # However, **all session state variables should be unset here**.
148
+ def logout_keeping_session!
149
+ # Kill server-side auth cookie
150
+ @current_user.forget_me if @current_user.is_a? User
151
+ @current_user = false # not logged in, and don't do it for me
152
+ kill_remember_cookie! # Kill client-side auth cookie
153
+ session[:user_id] = nil # keeps the session but kill our variable
154
+ # explicitly kill any other session variables you set
155
+ end
156
+
157
+ # The session should only be reset at the tail end of a form POST --
158
+ # otherwise the request forgery protection fails. It's only really necessary
159
+ # when you cross quarantine (logged-out to logged-in).
160
+ def logout_killing_session!
161
+ logout_keeping_session!
162
+ reset_session
163
+ end
164
+
165
+ #
166
+ # Remember_me Tokens
167
+ #
168
+ # Cookies shouldn't be allowed to persist past their freshness date,
169
+ # and they should be changed at each login
170
+
171
+ # Cookies shouldn't be allowed to persist past their freshness date,
172
+ # and they should be changed at each login
173
+
174
+ def valid_remember_cookie?
175
+ return nil unless @current_user
176
+ (@current_user.remember_token?) &&
177
+ (cookies[:auth_token] == @current_user.remember_token)
178
+ end
179
+
180
+ # Refresh the cookie auth token if it exists, create it otherwise
181
+ def handle_remember_cookie! new_cookie_flag
182
+ return unless @current_user
183
+ case
184
+ when valid_remember_cookie? then @current_user.refresh_token # keeping same expiry date
185
+ when new_cookie_flag then @current_user.remember_me
186
+ else @current_user.forget_me
187
+ end
188
+ send_remember_cookie!
189
+ end
190
+
191
+ def kill_remember_cookie!
192
+ cookies.delete :auth_token
193
+ end
194
+
195
+ def send_remember_cookie!
196
+ cookies[:auth_token] = {
197
+ :value => @current_user.remember_token,
198
+ :expires => @current_user.remember_token_expires_at }
199
+ end
200
+
201
+ end