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,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