opensteam 0.9.0 → 0.9.1

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 (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
@@ -0,0 +1,90 @@
1
+ # -*- coding: mule-utf-8 -*-
2
+
3
+ # borrowed from the Restful Authentication Generator
4
+ # git://github.com/technoweenie/restful-authentication.git
5
+
6
+ module Authentication
7
+ module ByCookieToken
8
+ # Stuff directives into including module
9
+ def self.included( recipient )
10
+ recipient.extend( ModelClassMethods )
11
+ recipient.class_eval do
12
+ include ModelInstanceMethods
13
+ end
14
+ end
15
+
16
+ #
17
+ # Class Methods
18
+ #
19
+ module ModelClassMethods
20
+ end # class methods
21
+
22
+ #
23
+ # Instance Methods
24
+ #
25
+ module ModelInstanceMethods
26
+ def remember_token?
27
+ (!remember_token.blank?) &&
28
+ remember_token_expires_at && (Time.now.utc < remember_token_expires_at.utc)
29
+ end
30
+
31
+ # These create and unset the fields required for remembering users between browser closes
32
+ def remember_me
33
+ # remember_me_for 2.weeks
34
+ remember_me_for 1.minutes
35
+ end
36
+
37
+ def remember_me_for(time)
38
+ remember_me_until time.from_now.utc
39
+ end
40
+
41
+ def remember_me_until(time)
42
+ self.remember_token_expires_at = time
43
+ self.remember_token = self.class.make_token
44
+ save(false)
45
+ end
46
+
47
+ # refresh token (keeping same expires_at) if it exists
48
+ def refresh_token
49
+ if remember_token?
50
+ self.remember_token = self.class.make_token
51
+ save(false)
52
+ end
53
+ end
54
+
55
+ #
56
+ # Deletes the server-side record of the authentication token. The
57
+ # client-side (browser cookie) and server-side (this remember_token) must
58
+ # always be deleted together.
59
+ #
60
+ def forget_me
61
+ self.remember_token_expires_at = nil
62
+ self.remember_token = nil
63
+ save(false)
64
+ end
65
+ end # instance methods
66
+ end
67
+
68
+
69
+ #
70
+ #
71
+ module ByCookieTokenController
72
+ # Stuff directives into including module
73
+ def self.included( recipient )
74
+ recipient.extend( ControllerClassMethods )
75
+ recipient.class_eval do
76
+ include ControllerInstanceMethods
77
+ end
78
+ end
79
+
80
+ #
81
+ # Class Methods
82
+ #
83
+ module ControllerClassMethods
84
+ end # class methods
85
+
86
+ module ControllerInstanceMethods
87
+ end # instance methods
88
+ end
89
+ end
90
+
@@ -0,0 +1,68 @@
1
+ # borrowed from the Restful Authentication Generator
2
+ # git://github.com/technoweenie/restful-authentication.git
3
+
4
+ module Authentication
5
+ module ByPassword
6
+
7
+ # Stuff directives into including module
8
+ def self.included( recipient )
9
+ recipient.extend( ModelClassMethods )
10
+ recipient.class_eval do
11
+ include ModelInstanceMethods
12
+
13
+ # Virtual attribute for the unencrypted password
14
+ attr_accessor :password
15
+ validates_presence_of :password, :if => :password_required?
16
+ validates_presence_of :password_confirmation, :if => :password_required?
17
+ validates_confirmation_of :password, :if => :password_required?
18
+ validates_length_of :password, :within => 6..40, :if => :password_required?
19
+ before_save :encrypt_password
20
+ end
21
+ end # #included directives
22
+
23
+ #
24
+ # Class Methods
25
+ #
26
+ module ModelClassMethods
27
+ # This provides a modest increased defense against a dictionary attack if
28
+ # your db were ever compromised, but will invalidate existing passwords.
29
+ # See the README and the file config/initializers/site_keys.rb
30
+ #
31
+ # It may not be obvious, but if you set REST_AUTH_SITE_KEY to nil and
32
+ # REST_AUTH_DIGEST_STRETCHES to 1 you'll have backwards compatibility with
33
+ # older versions of restful-authentication.
34
+ def password_digest(password, salt)
35
+ digest = REST_AUTH_SITE_KEY
36
+ REST_AUTH_DIGEST_STRETCHES.times do
37
+ digest = secure_digest(digest, salt, password, REST_AUTH_SITE_KEY)
38
+ end
39
+ digest
40
+ end
41
+ end # class methods
42
+
43
+ #
44
+ # Instance Methods
45
+ #
46
+ module ModelInstanceMethods
47
+
48
+ # Encrypts the password with the user salt
49
+ def encrypt(password)
50
+ self.class.password_digest(password, salt)
51
+ end
52
+
53
+ def authenticated?(password)
54
+ crypted_password == encrypt(password)
55
+ end
56
+
57
+ # before filter
58
+ def encrypt_password
59
+ return if password.blank?
60
+ self.salt = self.class.make_token if new_record?
61
+ self.crypted_password = encrypt(password)
62
+ end
63
+ def password_required?
64
+ crypted_password.blank? || !password.blank?
65
+ end
66
+ end # instance methods
67
+ end
68
+ end
@@ -0,0 +1,46 @@
1
+ # borrowed from the Restful Authentication Generator
2
+ # git://github.com/technoweenie/restful-authentication.git
3
+
4
+ module Authentication
5
+ unless defined? CONSTANTS_DEFINED
6
+ # Uncomment to suit
7
+ RE_LOGIN_OK = /\A\w[\w\.\-_@]+\z/ # ASCII, strict
8
+ # RE_LOGIN_OK = /\A[[:alnum:]][[:alnum:]\.\-_@]+\z/ # Unicode, strict
9
+ # RE_LOGIN_OK = /\A[^[:cntrl:]\\<>\/&]*\z/ # Unicode, permissive
10
+ MSG_LOGIN_BAD = "use only letters, numbers, and .-_@ please."
11
+
12
+ RE_NAME_OK = /\A[^[:cntrl:]\\<>\/&]*\z/ # Unicode, permissive
13
+ MSG_NAME_BAD = "avoid non-printing characters and \\&gt;&lt;&amp;/ please."
14
+
15
+ # This is purposefully imperfect -- it's just a check for bogus input. See
16
+ # http://www.regular-expressions.info/email.html
17
+ RE_EMAIL_NAME = '[\w\.%\+\-]+' # what you actually see in practice
18
+ #RE_EMAIL_NAME = '0-9A-Z!#\$%\&\'\*\+_/=\?^\-`\{|\}~\.' # technically allowed by RFC-2822
19
+ RE_DOMAIN_HEAD = '(?:[A-Z0-9\-]+\.)+'
20
+ RE_DOMAIN_TLD = '(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)'
21
+ RE_EMAIL_OK = /\A#{RE_EMAIL_NAME}@#{RE_DOMAIN_HEAD}#{RE_DOMAIN_TLD}\z/i
22
+ MSG_EMAIL_BAD = "should look like an email address."
23
+
24
+ CONSTANTS_DEFINED = 'yup' # sorry for the C idiom
25
+ end
26
+
27
+ def self.included( recipient )
28
+ recipient.extend( ModelClassMethods )
29
+ recipient.class_eval do
30
+ include ModelInstanceMethods
31
+ end
32
+ end
33
+
34
+ module ModelClassMethods
35
+ def secure_digest(*args)
36
+ Digest::SHA1.hexdigest(args.flatten.join('--'))
37
+ end
38
+ def make_token
39
+ secure_digest(Time.now, (1..10).map{ rand.to_s })
40
+ end
41
+ end # class methods
42
+
43
+ module ModelInstanceMethods
44
+ end # instance methods
45
+
46
+ end
@@ -0,0 +1,6 @@
1
+ module Opensteam::InvoiceBase::States::Finished
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,8 @@
1
+ module Opensteam::InvoiceBase::States::PaymentReceived
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+
6
+
7
+
8
+ end
@@ -0,0 +1,6 @@
1
+ module Opensteam::InvoiceBase::States::Pending
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,5 @@
1
+ module Opensteam::InvoiceBase::States::WaitingForPayment
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+ end
@@ -0,0 +1,6 @@
1
+ module Opensteam::OrderBase::States::Finished
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,19 @@
1
+ module Opensteam::OrderBase::States::Pending
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+ include ActionController::UrlWriter
6
+ include ActionView::Helpers::UrlHelper
7
+ include ActionController::UrlWriter
8
+
9
+
10
+ def view_link_to_create_shipment
11
+ { :controller => "admin/shipments", :action => 'new', :order_id => self.id }
12
+ end
13
+
14
+
15
+ def view_link_to_create_invoice
16
+ { :controller => "admin/invoices", :action => 'new', :order_id => self.id }
17
+ end
18
+
19
+ end
@@ -0,0 +1,11 @@
1
+ module Opensteam::OrderBase::States::Processing
2
+
3
+ include Opensteam::StateLogic::Mod
4
+
5
+
6
+
7
+ protected
8
+ def process!
9
+ puts "now in processing ..."
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Opensteam::ShipmentBase::States::Finished
2
+ include Opensteam::StateLogic::Mod
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,5 @@
1
+ module Opensteam::ShipmentBase::States::Pending
2
+ include Opensteam::StateLogic::Mod
3
+ protected
4
+
5
+ end
@@ -0,0 +1,114 @@
1
+ #
2
+ # To change this template, choose Tools | Templates
3
+ # and open the template in the editor.
4
+
5
+
6
+ require 'rake'
7
+ require 'rake/testtask'
8
+ require 'rake/rdoctask'
9
+ require 'fileutils'
10
+
11
+
12
+
13
+ RUBY_PATH = "c:\\ruby\\bin"
14
+
15
+
16
+
17
+ namespace :opensteam do
18
+
19
+ namespace :petstore do
20
+
21
+
22
+ task :create do
23
+
24
+
25
+ # begin
26
+ # require 'has_many_polymorphs'
27
+ # rescue LoadError
28
+ # puts '-' * 80
29
+ # puts
30
+ # puts "\tYour are missing the \'has_many_polymorphs' gem.\n\t1Please install it before proceeding"
31
+ # puts
32
+ # puts '-' * 80
33
+ # raise
34
+ # end
35
+
36
+
37
+ logger "welcome to the OpenSteam 'Petstore' sample application"
38
+
39
+ logger "creating opensteam petstore products"
40
+
41
+ system "ruby script/generate opensteam_product Animal name:string art:string type:string description:text picture:string"
42
+ system "ruby script/generate opensteam_product DogFood name:string description:text"
43
+
44
+ logger "creating opensteam petstore properties"
45
+ system "ruby script/generate opensteam_property Weight name:string"
46
+ system "ruby script/generate opensteam_property DogKind name:string"
47
+
48
+
49
+ %w(dog fish reptile).each do |f|
50
+ ff = File.open("app/models/#{f}.rb", 'w')
51
+ ff.puts "require 'animal.rb'\nclass #{f.capitalize} < Animal\nend\n"
52
+ ff.close
53
+ end
54
+ FileUtils.rm 'app/models/animal.rb', :force => true
55
+ ff = File.open('app/models/animal.rb', 'w' )
56
+ ff.puts "class Animal < ActiveRecord::Base\n opensteam :product\n\n def self.table_name() \"product_animals\" ; end\nend\n"
57
+ ff.close
58
+
59
+
60
+ logger "migrating"
61
+
62
+ Rake::Task["db:migrate"].invoke
63
+
64
+ logger "loading fixtures"
65
+
66
+ require 'active_record'
67
+ require 'active_record/fixtures'
68
+ ActiveRecord::Base.establish_connection( YAML.load_file("config/database.yml")["#{RAILS_ENV}"] )
69
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
70
+ Fixtures.create_fixtures('test/fixtures', File.basename(fixture_file, '.*'))
71
+ end
72
+
73
+
74
+
75
+ # incl = "require 'has_many_polymorphs'"
76
+ # sentinel = "Rails::Initializer.run do |config|"
77
+ # gsub_file "config/environment.rb", /(#{Regexp.escape(sentinel)})/mi do |match|
78
+ # "#{incl}\n\n#{match}"
79
+ # end
80
+
81
+
82
+ incl = <<ANIMAL_CONTR
83
+ if params[:animal][:type] && ( params[:animal][:type].constantize.superclass == Animal)
84
+ @animal = params[:animal][:type].classify.constantize.new( params[:animal] )
85
+ else
86
+ @animal = Animal.new(params[:animal])
87
+ end
88
+ ANIMAL_CONTR
89
+
90
+ sentinel = "@animal = Animal.new(params[:animal])"
91
+ gsub_file "app/controllers/admin/animals_controller.rb", /(#{Regexp.escape(sentinel)})/mi do |match|
92
+ "#{incl}\n\n"
93
+ end
94
+
95
+ logger "finished ... have fun !!"
96
+
97
+
98
+ end
99
+ end
100
+
101
+
102
+ end
103
+
104
+
105
+
106
+ def gsub_file(path, regexp, *args, &block)
107
+ content = File.read(path).gsub(regexp, *args, &block)
108
+ File.open(path, 'wb') { |file| file.write(content) }
109
+ end
110
+
111
+
112
+ def logger(str)
113
+ puts "\n\t*** #{str} ****\n"
114
+ end
@@ -3,7 +3,7 @@
3
3
  <html>
4
4
  <head>
5
5
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
- <title>Ruby on Rails: Welcome aboard</title>
6
+ <title>openSteam</title>
7
7
  <style type="text/css" media="screen">
8
8
  body {
9
9
  margin: 0;
@@ -30,7 +30,7 @@
30
30
 
31
31
  #page {
32
32
  background-color: #f0f0f0;
33
- width: 850px;
33
+ width: 750px;
34
34
  margin: 0;
35
35
  margin-left: auto;
36
36
  margin-right: auto;
@@ -42,7 +42,7 @@
42
42
  border: 3px solid #aaa;
43
43
  border-top: none;
44
44
  padding: 25px;
45
- width: 575px;
45
+ width: 500px;
46
46
  }
47
47
 
48
48
  #sidebar {
@@ -58,18 +58,10 @@
58
58
  #header, #about, #getting-started {
59
59
  padding-left: 75px;
60
60
  padding-right: 30px;
61
- }
62
-
63
- #header2 {
64
- padding-left: 150px;
65
- padding-right: 10px;
66
61
  }
67
62
 
68
63
 
69
64
  #header {
70
- background-image: url("images/opensteam_logo_web.jpg");
71
- background-repeat: no-repeat;
72
- background-position: top left;
73
65
  height: 64px;
74
66
  }
75
67
  #header h1, #header h2 {margin: 0}
@@ -219,10 +211,11 @@
219
211
  </form>
220
212
  </li>
221
213
  <li>
222
- <h3>OpenSteam</h3>
214
+ <h3>openSteam</h3>
223
215
  <ul class="links">
224
- <li><a href="http://www.opensteam.net">OpenSteam Wiki</a></li>
225
- <li><a href="http://www.diamonddogs.cc">DiamondDogs</a></li>
216
+ <li><a href="http://www.opensteam.net/">openSteam Homepage</a></li>
217
+ <li><a href="http://blog.opensteam.net/">openSteam weblog</a></li>
218
+ <li><a href="http://www.rubyforge.org/projects/opensteam/">@rubyforge</a></li>
226
219
  </ul>
227
220
  </li>
228
221
 
@@ -231,10 +224,7 @@
231
224
  <ul class="links">
232
225
  <li><a href="http://www.rubyonrails.org/">Ruby on Rails</a></li>
233
226
  <li><a href="http://weblog.rubyonrails.org/">Official weblog</a></li>
234
- <li><a href="http://lists.rubyonrails.org/">Mailing lists</a></li>
235
- <li><a href="http://wiki.rubyonrails.org/rails/pages/IRC">IRC channel</a></li>
236
227
  <li><a href="http://wiki.rubyonrails.org/">Wiki</a></li>
237
- <li><a href="http://dev.rubyonrails.org/">Bug tracker</a></li>
238
228
  </ul>
239
229
  </li>
240
230
 
@@ -250,15 +240,10 @@
250
240
  </div>
251
241
 
252
242
  <div id="content">
253
- <div id="header">
254
- <div id="header2">
255
- <h1>Welcome aboard</h1>
256
- <h2>You&rsquo;re riding Ruby on Rails with OpenSteam!</h2>
257
- </div>
258
- </div>
259
-
260
243
  <div id="about">
261
- <h3><br /><br /><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
244
+ <a href="/store"><img src="images/opensteam_logo1.jpg" border="0" /></a>
245
+ <img border="0" src="images/slogan.png" /><br /><br />
246
+ <a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a>
262
247
  <div id="about-content" style="display: none"></div>
263
248
  </div>
264
249
 
@@ -266,27 +251,25 @@
266
251
  <h1>Getting started</h1>
267
252
  <h2>Here&rsquo;s how to get rolling:</h2>
268
253
 
269
- <ol>
254
+ <ol>
270
255
  <li>
271
- <h2>Create your databases and edit <tt>config/database.yml</tt></h2>
272
- <p>Rails needs to know your login and password.</p>
273
- </li>
274
-
275
- <li>
276
- <h2>Use <tt>script/generate opensteam_product &lt;Product&gt;</tt> to create products</h2>
256
+ <h2>Use <tt>script/generate opensteam_product</tt> to create your products</h2>
277
257
  <p>To see all available options, run it without parameters.</p>
278
258
  </li>
279
-
280
259
  <li>
281
- <h2>Use <tt>script/generate opensteam_property &lt;Property&gt;<</tt> to create product-properties</h2>
260
+ <h2>Use <tt>script/generate opensteam_property</tt> to create your properties</h2>
282
261
  <p>To see all available options, run it without parameters.</p>
283
262
  </li>
284
263
 
285
264
  <li>
286
- <h2>Go to <tt>/administration</tt> to configure your products</h2>
287
- <p>Login: admin<br />Password: admin</p>
265
+ <h2>Set up a default route and remove or rename this file</h2>
266
+ <p>Routes are set up in config/routes.rb.</p>
288
267
  </li>
289
268
 
269
+ <li>
270
+ <h2>Create your database</h2>
271
+ <p>Run <tt>rake db:migrate</tt> to create your database. If you're not using SQLite (the default), edit <tt>config/database.yml</tt> with your username and password.</p>
272
+ </li>
290
273
  </ol>
291
274
  </div>
292
275
  </div>
@@ -0,0 +1,30 @@
1
+ function toggle_admin_display(name) {
2
+ var els = getElementsByClassName("sub_content_box") ;
3
+
4
+ for(var i=0;i< els.length ; i++)
5
+ {
6
+ els[i].style.display = "none" ;
7
+ }
8
+
9
+ var el = document.getElementById(name) ;
10
+ if( el.style.display == "none" )
11
+ {
12
+ el.style.display = "" ;
13
+ }
14
+ else
15
+ {
16
+ el.style.display = "none" ;
17
+ }
18
+ }
19
+
20
+
21
+ function getElementsByClassName(classname, node) {
22
+ if(!node) node = document.getElementsByTagName("body")[0];
23
+ var a = [];
24
+ var re = new RegExp('\\b' + classname + '\\b');
25
+ var els = node.getElementsByTagName("*");
26
+ for(var i=0,j=els.length; i<j; i++)
27
+ if(re.test(els[i].className))a.push(els[i]);
28
+ return a;
29
+ }
30
+