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
@@ -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
+