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,106 @@
1
+ class Admin::ShipmentsController < AdminController
2
+
3
+
4
+ include Opensteam::Helper::ConfigurableTableController
5
+
6
+ def sort
7
+ if params[:sort]
8
+ if params[:order_id]
9
+ @customer = Order.find( params[:order_id] )
10
+ conditions = { :order_id => params[:order_id] }
11
+ end
12
+ @results = sort_model( Shipment, @sort_column, conditions )
13
+ @shipments = @results
14
+ end
15
+
16
+ respond_to do |respond|
17
+ respond.html { render :action => :sort }
18
+ respond.js { render :partial => "shipment", :collection => @results, :layout => false }
19
+ end
20
+
21
+ end
22
+
23
+
24
+ def index
25
+ @shipments ||= Opensteam::ShipmentBase::Shipment.find( :all )
26
+ @order = Opensteam::OrderBase::Order.find( params[:order_id] ) if params[:order_id]
27
+
28
+ respond_to do |format|
29
+ format.html # index.html.erb
30
+ format.xml { render :xml => @shipments }
31
+ format.js { render :partial => "shipments", :layout => false }
32
+ end
33
+ end
34
+
35
+
36
+ def show
37
+ @order = Opensteam::OrderBase::Order.find( params[:order_id] )
38
+ @shipment ||= Opensteam::ShipmentBase::Shipment.find( params[:id] )
39
+
40
+ respond_to do |format|
41
+ format.html # show.html.erb
42
+ format.xml { render :xml => @shipments }
43
+ end
44
+ end
45
+
46
+
47
+ def new
48
+ @order = Opensteam::OrderBase::Order.find( params[:order_id] )
49
+ @shipment = @order.shipments.new
50
+
51
+ if @order.order_items.all_shipped?
52
+ flash[:error] = "Cannot create shipment : All order items have been shipped!!"
53
+ redirect_to admin_order_path( @order )
54
+ end
55
+
56
+ end
57
+
58
+
59
+
60
+ def create
61
+ @order = Opensteam::OrderBase::Order.find( params[:order_id] )
62
+ @shipment = @order.shipments.new( params[:shipment] )
63
+ @address = @shipment.address
64
+
65
+ @order_items = @order.order_items.select { |o|
66
+ params[:order_items].keys.include?( o.id.to_s ) && params[:order_items][ o.id.to_s ] == "1"
67
+ }
68
+
69
+ @shipment.order_items << @order_items
70
+
71
+ ret = @address.update_attributes( params[:address] ) &&
72
+ @shipment.save
73
+
74
+
75
+
76
+ respond_to do |format|
77
+ if ret
78
+ flash[:notice] = 'Shipment was successfully created.'
79
+ format.html { redirect_to( admin_order_path( @order ) ) }
80
+ format.xml { render :xml => @shipment, :status => :created, :location => @shipment }
81
+ else
82
+ format.html { render :action => "new" }
83
+ format.xml { render :xml => @shipment.errors, :status => :unprocessable_entity }
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ def update
90
+ @shipment = Opensteam::ShipmentBase::Shipment.find( params[:id] )
91
+
92
+ respond_to do |format|
93
+ if @shipment.update_attributes( params[:shipment] )
94
+ format.html { redirect_to( admin_order_path( @shipment.order ) ) }
95
+ format.xml { head :ok }
96
+ else
97
+ format.html { render :action => "show" }
98
+ format.xml { render :xml => @shipment.errors, :status => :unprocessable_entity }
99
+ end
100
+ end
101
+
102
+
103
+ end
104
+
105
+
106
+ end
@@ -0,0 +1,99 @@
1
+ class Admin::UsersController < AdminController
2
+
3
+
4
+ def index
5
+ if params[:type]
6
+ @users = Opensteam::UserBase::User.by_profile( params[:type] )
7
+ else
8
+ @users = Opensteam::UserBase::User.all
9
+ end
10
+
11
+ respond_to do |format|
12
+ format.html
13
+ format.xml { render :xml => @users.to_xml( :root => params[:type] || "users" ) }
14
+ end
15
+ end
16
+
17
+ def show
18
+ @user = Opensteam::UserBase::User.find( params[:id] )
19
+
20
+ respond_to do |format|
21
+ format.html
22
+ format.xml { render :xml => @user.to_xml( :root => @user.profile.name ) }
23
+ end
24
+
25
+ end
26
+
27
+
28
+
29
+
30
+ def edit
31
+ @user = Opensteam::UserBase::User.find( params[:id] )
32
+ @profiles = Opensteam::UserBase::Profile.all
33
+
34
+
35
+
36
+ end
37
+
38
+
39
+
40
+
41
+
42
+ def update
43
+ @user = Opensteam::UserBase::User.find( params[:id] )
44
+
45
+ if params[:type]
46
+ @profile = Opensteam::UserBase::Profile.find_or_create_by_name( :name => params[:type].classify )
47
+ end
48
+
49
+
50
+ respond_to do |format|
51
+ ret = @user.update_attributes( params[:user] )
52
+ @user.profile = @profile if @profile
53
+ ret = ret && @user.save if @profile
54
+
55
+ if ret
56
+ flash[:notice] = 'User was successfully updated.'
57
+ format.html { redirect_to( admin_user_path( @user ) ) }
58
+ format.xml { head :ok }
59
+ else
60
+ format.html { render :action => "edit" }
61
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+
68
+ def new
69
+ @user = Opensteam::UserBase::User.new
70
+ @profiles = Opensteam::UserBase::Profile.all
71
+ end
72
+
73
+
74
+ def create
75
+ @user = Opensteam::UserBase::User.new( params[:user] )
76
+
77
+ if params[:type]
78
+ @profile = Opensteam::UserBase::Profile.find_or_create_by_name( :name => params[:type].classify )
79
+ end
80
+
81
+ respond_to do |format|
82
+
83
+ ret = @user.save
84
+ @user.profile = @profile if @profile
85
+ ret = ret && @user.save if @profile
86
+
87
+ if ret
88
+ flash[:notice] = "User succesfully created"
89
+ format.html { redirect_to :action => "show" }
90
+ format.xml
91
+ else
92
+ format.html { render :action => "new" }
93
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ end
@@ -0,0 +1,40 @@
1
+
2
+ class AdminController < ApplicationController
3
+ include Opensteam::Finder
4
+
5
+ layout 'admin'
6
+ helper :all
7
+
8
+ # filter
9
+ before_filter :authorized?
10
+
11
+
12
+ def index
13
+ @extensions = []
14
+ # @extensions = Opensteam::ExtensionBase::Extension.active
15
+ end
16
+
17
+ # show product classes
18
+ def products
19
+ @products = AdminController.find_product_tables #AdministrationController.find_products.collect(&:class).uniq
20
+ end
21
+
22
+ # show property classes
23
+ def properties
24
+ @properties = AdminController.find_property_tables #AdministrationController.find_properties.collect(&:class).uniq
25
+ end
26
+
27
+
28
+
29
+ private
30
+ def authorized?
31
+ unless logged_in? && is_admin?
32
+ redirect_to login_path
33
+ return false
34
+ end
35
+ return true
36
+ end
37
+
38
+
39
+ end
40
+
@@ -0,0 +1,94 @@
1
+ ## TEMPLATE ##
2
+ class CartController < ApplicationController
3
+
4
+ layout '<%= file_name %>'
5
+
6
+ include Opensteam::CartBase::Helper
7
+
8
+
9
+ def index
10
+ end
11
+
12
+
13
+ def show
14
+ @inventory = [ Opensteam::InventoryBase::Inventory.find( @cart.items[ params[:id].to_i ].yamlid ) ]
15
+ @product = @inventory.first.product
16
+ @product.selected_inventory = @inventory.first
17
+ @properties = @product.selected_inventory.properties.to_h2 { |x| x.class.to_s.tableize }
18
+ @cart_details = true
19
+
20
+ render :template => "<%= file_name %>/show" # => "<%= file_name %>/show"
21
+ end
22
+
23
+
24
+ def create
25
+ params[:product] = frmt params[:product]
26
+
27
+ if params[:product][:properties] && params[:product][:properties].index("")
28
+ flash[:error] = "Please select a #{params[:product][:properties].index("").humanize}"
29
+ return
30
+ end
31
+
32
+ product = Opensteam::Find.find_product_with_inventory( params[:product] )
33
+
34
+ if product.is_available?
35
+ unless @cart.add product.selected_inventories.last.id
36
+ render :update do |page| page.alert "sorry, there are only #{product.selected_inventories.last.storage} available!" end
37
+ end
38
+ else
39
+ render :update do |page| page.alert "Sorry, this product is currently not available!" end
40
+ end
41
+
42
+ end
43
+
44
+
45
+ def update
46
+ if params[:quantity]
47
+ params[:quantity].each { |key,value| @cart.set_quantity(key,value) }
48
+ if session[:active_order]
49
+ redirect_to :action => 'show_cart'
50
+ return
51
+ end
52
+ else
53
+ ci = @cart.get( :cart_item_id => params[:id] )
54
+ if params[:incr]
55
+ unless ci.incr
56
+ render :update do |page| page.alert "Sorry, there are only #{ci.quantity} available!" end
57
+ return
58
+ end
59
+ elsif params[:decr]
60
+ ( ci.quantity - 1 ) == 0 ? @cart.items.delete_at( params[:id].to_i ) : ci.decr
61
+ end
62
+
63
+ if ( session[:active_order] )
64
+ render :template => "checkout/update_cart_content.rjs"
65
+ return
66
+ end
67
+ end
68
+
69
+ respond_to do |format|
70
+ format.html { params[:redirect] || redirect_to_index }
71
+ format.js { render :template => "cart/update.rjs" }
72
+ end
73
+
74
+
75
+ end
76
+
77
+ def destroy
78
+ if params[:id]
79
+ @cart.del( :cart_item_id => params[:id] )
80
+ @current_item = params[:id]
81
+ else
82
+ empty_cart
83
+ end
84
+
85
+ respond_to do |format|
86
+ format.html { redirect_to opensteam_index_path }
87
+ format.js { render :action => "update.rjs" }
88
+ end
89
+ end
90
+
91
+
92
+
93
+
94
+ end
@@ -0,0 +1,139 @@
1
+ # CheckoutController
2
+ #
3
+ # Controller to handle the checkout-process
4
+ #
5
+ ## TEMPLATE ##
6
+ require 'opensteam/shopping_cart'
7
+ require 'opensteam/checkout'
8
+
9
+
10
+ class CheckoutController < ApplicationController
11
+ layout "<%= file_name %>"
12
+ include Opensteam::Checkout
13
+ include Opensteam::ShoppingCart
14
+
15
+
16
+ before_filter :check_admin
17
+
18
+ # initialize checkout-flow
19
+ #
20
+ def initialize
21
+ create_checkout_flow do |c|
22
+ c.on :start, :intro
23
+ c.on :finish, :controller => "<%= file_name %>", :action => "index"
24
+ end
25
+ end
26
+
27
+
28
+ # checkout intro
29
+ #
30
+ # dummy page
31
+ def intro
32
+ @cart = get_cart
33
+ order = Opensteam::OrderBase::Order.create
34
+ session[:active_order] = order.id
35
+ if logged_in?
36
+ redirect_to :action => :place_order
37
+ return
38
+ end
39
+ session[:return_to] = url_for :controller => 'checkout', :action => 'show_cart'
40
+
41
+ end
42
+
43
+
44
+
45
+
46
+ # checkout outro
47
+ #
48
+ # dummy page
49
+ def outro
50
+ session[:cart] = nil
51
+ @cart = get_cart
52
+ session[:active_order] = nil
53
+ end
54
+
55
+
56
+
57
+
58
+ # checkout shipping
59
+ # [POST] + [GET]
60
+ def shipping
61
+ @order = Opensteam::OrderBase::Order.find( session[:active_order] )
62
+ @cart = get_cart
63
+
64
+
65
+
66
+ @customer = logged_in? ? current_user : Opensteam::UserBase::User.new
67
+ @shipping_address = Opensteam::UserBase::Address.new
68
+ @payment_address = Opensteam::UserBase::Address.new
69
+
70
+ #saving the form
71
+ if request.post?
72
+
73
+ if logged_in?
74
+ @customer = current_user
75
+ unless @customer.update_attributes( params[:order][:customer] )
76
+ render :action => :shipping
77
+ end
78
+ params[:order].delete :customer
79
+ @order.real_customer = @customer
80
+ end
81
+
82
+ if @order.update_attributes( params[:order] )
83
+ @order.customer.addresses << [ @order.shipping_address, @order.payment_address ]
84
+
85
+ self.current_user = @order.customer
86
+
87
+
88
+ redirect_to :action => :outro
89
+ else
90
+ @customer = @order.customer
91
+ @payment_address = @order.payment_address
92
+ @shipping_address = @order.shipping_address
93
+ render :action => :shipping
94
+ end
95
+
96
+ end
97
+
98
+ end
99
+
100
+
101
+ # show cart
102
+ # [GET]
103
+ #
104
+ # show the shopping cart again
105
+ def show_cart
106
+ @cart = get_cart
107
+ end
108
+
109
+
110
+ # place order
111
+ # [POST]
112
+ #
113
+ def place_order
114
+ # if request.post?
115
+
116
+ @order = Opensteam::OrderBase::Order.find( session[:active_order] )
117
+ @order.copy_from_cart( get_cart )
118
+ @order.save
119
+ session[:active_order] = @order.id
120
+
121
+ redirect_to :action => :shipping
122
+ # end
123
+ end
124
+
125
+ private
126
+
127
+ def check_admin
128
+ if( logged_in? && is_admin? )
129
+ flash[:error] = "Checkout not allowed for Admin User #{current_user.email}"
130
+ redirect_to shop_index_path
131
+ return false
132
+ end
133
+ true
134
+ end
135
+
136
+
137
+
138
+
139
+ end
@@ -0,0 +1,52 @@
1
+ class Profile::InfosController < ProfileController
2
+
3
+ def index
4
+ end
5
+
6
+
7
+ def edit
8
+ end
9
+
10
+
11
+ def update
12
+ puts "updating...."
13
+ respond_to do |format|
14
+ if @customer.update_attributes( params[:customer] )
15
+ format.html { redirect_to profile_index_path }
16
+ format.xml { head :ok }
17
+ else
18
+ format.html { render :action => "edit" }
19
+ format.xml { render :xml => @customer.errors, :status => :unprocessable_entity }
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ def edit_password
26
+
27
+ end
28
+
29
+ def change_password
30
+ user = Opensteam::UserBase::User.authenticate( @customer.email, params[:customer][:old_password] )
31
+
32
+ if user
33
+ params[:customer].delete( :old_password )
34
+ if @customer.update_attributes( params[:customer] )
35
+ flash[:message] = "Successfully changed password!"
36
+ redirect_to :action => 'index', :controller => 'profile'
37
+ else
38
+ flash[:error] = "An error occured while trying to change your password..."
39
+ render :action => 'edit_password'
40
+ end
41
+ else
42
+ @customer.errors.add( :old_password, "Incorrect Old Password!")
43
+ flash[:error] = "Incorrect Old Password"
44
+ render :action => 'edit_password'
45
+ end
46
+
47
+ end
48
+
49
+
50
+
51
+ end
52
+
@@ -0,0 +1,105 @@
1
+ class Profile::OrdersController < ProfileController
2
+
3
+ include Opensteam::Helper::ConfigurableTableController
4
+ include AuthenticatedSystem
5
+
6
+ def livesearch
7
+ if params[:livesearch]
8
+
9
+ @result = @customer.orders
10
+ @result = @result.select { |s|
11
+
12
+ Order.configured_table.columns.collect { |c|
13
+ seek = s.__send__( c.id )
14
+ seek = seek.__send__( c.method ) if c.method
15
+ seek.to_s.include?( params[:livesearch] )
16
+ }.any?
17
+ }
18
+ render :partial => 'order', :collection => @result, :layout => false
19
+ end
20
+
21
+ end
22
+
23
+
24
+
25
+ def sort
26
+ if params[:sort]
27
+ @results = sort_model( @customer.orders, @sort_column )
28
+ @orders = @results
29
+ end
30
+
31
+ respond_to do |respond|
32
+ respond.html { render :action => :sort }
33
+ respond.js { render :partial => "order", :collection => @results, :layout => false }
34
+ end
35
+
36
+ end
37
+
38
+
39
+ def sort_model( collection, column, conditions = nil )
40
+ finder_args = {}
41
+ finder_args[:conditions] = conditions if conditions
42
+
43
+ if column.order_ruby?
44
+ result = collection.find( :all, finder_args )
45
+ result.sort!(&column.order)
46
+ else
47
+ finder_args[:order] = column.order
48
+ result = collection.find(:all, finder_args )
49
+ end
50
+ toggle_sorted("Orders" )
51
+ result.reverse! if sorted?( "Orders" )
52
+ result
53
+ end
54
+
55
+
56
+
57
+
58
+ def index
59
+ if params[:state]
60
+ if ( params[:state].collect(&:to_sym) - Order.available_states.collect(&:name).collect(&:to_sym) ).empty?
61
+ @orders = params[:state].collect { |s| @customer.orders.scoped :conditions => { :state => s } }.flatten
62
+ else
63
+ @orders = []
64
+ end
65
+ else
66
+ @orders = @customer.orders
67
+ end
68
+
69
+ respond_to do |format|
70
+ format.html # index.html.erb
71
+ format.xml { render :xml => @orders.to_xml( :root => 'orders' ) }
72
+ format.js { render :partial => "orders", :layout => false }
73
+ end
74
+ end
75
+
76
+
77
+ def show
78
+ @order ||= Opensteam::OrderBase::Order.find( params[:id] )
79
+
80
+ respond_to do |format|
81
+ format.html # show.html.erb
82
+ format.xml { render :xml => @order }
83
+ end
84
+ end
85
+
86
+
87
+
88
+ def update
89
+ @order = Opensteam::OrderBase::Order.find( params[:id] )
90
+
91
+ respond_to do |format|
92
+ if @order.update_attributes( params[:order] )
93
+ format.html { redirect_to admin_order_path( @order ) }
94
+ format.xml { head :ok }
95
+ else
96
+ format.html { render :action => "show" }
97
+ format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
98
+ end
99
+ end
100
+
101
+
102
+ end
103
+
104
+
105
+ end
@@ -0,0 +1,37 @@
1
+
2
+ class ProfileController < ApplicationController
3
+ include Opensteam::Finder
4
+
5
+ include AuthenticatedSystem
6
+ layout 'profile'
7
+
8
+ helper :all
9
+
10
+ # filter
11
+ before_filter :authorized?
12
+
13
+
14
+
15
+ def index
16
+ end
17
+
18
+
19
+
20
+ private
21
+ def authorized?
22
+
23
+ logger.info "checkking if authoprized..."
24
+
25
+ unless( logged_in? && is_customer? )
26
+ access_denied
27
+ return false
28
+ end
29
+ #logger.info current_user.email
30
+ @customer = current_user
31
+ true
32
+ end
33
+
34
+
35
+
36
+ end
37
+
@@ -0,0 +1,23 @@
1
+ #TEMPLATE#
2
+ class SearchesController < ApplicationController
3
+ def new
4
+ @search = Search.new
5
+ end
6
+
7
+ def create
8
+ @search = Search.new(params[:search])
9
+ if @search.save
10
+ flash[:notice] = "Successfully created search."
11
+ redirect_to @search
12
+ else
13
+ render :action => 'new'
14
+ end
15
+ end
16
+
17
+ def show
18
+ @search = Search.find(params[:id])
19
+ @products = ( @search.products || [] ) rescue []
20
+ flash[:notice] = @products.empty? ? "No products found!!" : "Search results:"
21
+ render :template => "<%= file_name %>/index"
22
+ end
23
+ end