opensteam / opensteam

e-commerce framework for ruby-on-rails

opensteam / CHANGELOG
100755 334 lines (170 sloc) 14.889 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
* EDGE *
 
* refactored the opensteam_category plugin as a Rails Engine (Rails.2.3 Engine Support)
 
* removed old view templates
 
 
* 1.0.1 *
 
* updated README.rdoc
 
* added some scriptaculous magic for the flash-message in the admin-backend
 
* added a "comming_soon" action to the admin_controller
 
* refactored admin/catalog/product form:
- form_for -> remote_form_for
- javascript linkt to save form using prototypes 'request()' method
- show LoadMask over form during ajax-call
 
* bugfixes in 'parse_ext_params': support for sti-products
 
* added stylesheet + images for Ext.GridFilter
 
* added javascript-files for Ext.GridFilter
 
* added products controller for frontend
 
* added opensteam_controller for frontend (instead of a webshop controller)
 
* added 'opensteam_shop_controller' to opensteam configuration, to hold the main-shop controller
 
* refactored the "product" implementation:
  due to complications when using mutliple product-tables (no unique product id, problems with rest-routes, polymorphic rest-routes
  doesn't work), we implemented one product base model (sti).
 
* added a "property-groups" model, to group properties (default: based on sti_name)
 
* refactored "inventory" implementation to work with unique product-id and property-groups
 
* refactored admin-backend views + controller to work with new product-properties-inventories implementation
 
* refactored opensteam_category plugin: now associating category with a product, rather than inventories
 
* added a require_dependency 'opensteam/models' statement to Opensteam::UserBase::UserLogic
 
* refactored the opensteam/lib directory structure
 
* added a 'inject_dependencies' method to ActiveSupport::Dependencies ( borrowed from http://blog.evanweaver.com/articles/2007/03/28/dependency-injection-for-rails-models/ ),
  to make plugins work, which extend the Opensteam Product model
 
 
* 0.9.4 *
 
* implemented new Opensteam::Initializer (inherits from Rails::Initializer) -> moved old init-stuff and extensions into new Initializer and Configuration.
 
* changed the "require all models on startup" method to "require_dependency all models at startup" (used to determine the product and property classes) -> 'require_dependency doesnt cause the very strange "Stack Level too deep" bug on some systems.
 
* added sort-method for symbols in initializers/_opensteam.rb (for ruby1.8.7)
 
* fixed bug in quicksteams_controller.rb: if current_user has no associated quicksteams, set position of new quicksteam to 1 (otherwise nil-exception)
 
* added lib/opensteam/extension.rb to provide an opensteam-extension/plugin mechanism (see the opensteam_category plugin in vendor/plugins for more information on how to build a plugin)
 
* added the "filter" method as association-extension method to the "inventories" association for products. (otherwise "filter" is always called on the model and not on the association-proxy)
 
* implemented/refactored lib/opensteam/helpers/filter.rb: building dynamic conditions- and sorting-hash based on Model.configured_grid (see lib/opensteam/helpers/grid.rb for more information)
and based on model associations (using reflect_on_association).
Model.filter and Model.order_by now return named_scopes (in order to chain multiple filters, orders)
 
* implemented/refactored lib/opensteam/helpers/grid.rb: implements methods to configure grid columns (used for ExtJS grid, filter-entries, sorting, etc)
 
* implemented remote-proxy for ExtJS GridPanel (for Orders, Shipments, Invoices, Users, Products)
 
* heavy refactoring of Admin-Backend views (ExtJS: GridPanel, TabbedContent), controller (filters)
 
* added "admin_nav_item" helper to render navigation items in the admin-backend (AdminHelper)
 
* added "add_controller_paths" method to Opensteam::Initializer, to add all controller-subdirectories to the controller_paths
 
* added "load_controller" method to Opensteam::Initializer, to load all controller-files in controller_paths (to make the "subcontroller" method work)
 
* added opensteam/backend/base for backend-controller
 
* implemented "AdminController::Base#subcontroller" method to get all sub-controller for a (namespaced) controller
 
* added plugins in 'generators/opensteam/templates/vendor/plugins' as git submodules
 
* removed "checkout as guest" method from checkout_controller.rb. Didn't work with new User-Model and user-roles. Customer must be logged_in or register to check out. Implement guest-checkout later. (special logic for User-Model)
 
* now using the "echoe" gem to create packages. Updated Rakefile. Added Manifest.
 
* heavy refactoring of generated rails application (generators/opensteam/templates)
 
* renamed 'profile' namespace/routes to 'account' (Controller + Views + Routes)
 
* moved user login/signup to account controller
 
* updated test cases for new rails app
 
* updated restful_authentication plugin (http://github.com/technoweenie/restful-authentication/tree/master)
 
* added role_requirement plugin (http://github.com/timcharper/role_requirement/tree/master)
 
* added aasm plugin (used for authentication state machine) (http://github.com/rubyist/aasm/tree/master)
 
* updated generators not to "m.template" files in vendor/plugins. Just copy them.
 
* moved opensteam specific models into own namespace Opensteam::Models. Meant to be a replacement for actual model in rails-application
 
* updated docu
 
* added timestamp of InitOpensteamConfig migration file. must be the last migration file.
 
* added "include RoleRequirementSystem' to application.rb (opensteam_generator.rb)
 
* added rspec test-cases and stories (rake spec)
 
* added Admin::Mailer::OrderMailer (order_confirmation, order_paymetn_confirmationm, order_shipment_confirmation)
 
* added Admin::System::Mailer, Model to configure Mailer (activate/deactivate)
 
* added Admin::System::Mailer Views + Controller
 
* added opensteam_extensions (included alias_method_chain for ActionMailer::Base#deliver!, to check if mailer/method is active.)
 
* moved moved model Opensteam::OrderBase::Order from gem-lib to Admin::Sales::Order into RAILS_APP.
 
* moved Opensteam::OrderBase::Order Logic into Opensteam::OrderBase module. Is included into Admin::Sales::Order (or any other Order Model)
 
* adapted all Order specific Views/Controller to work with the new namespace (Admin::Sales::**)
TODO: maybe move Admin:: to Opensteam::, and make Admin:: an alias
 
* removed all config_table_helper calls from views
 
* changed opensteam_model_tables to model_filters (used to include FilterEntry::Filter Module and to define filter_keys)
 
* Backend Views: moved all "headline" and "header_buttons" partials into helper (render_header_buttons, render_headline)
 
* removed dhtmlx javascript combobox in admin/filters/_filter_entries.html.erb. Implemented Ext-JS ComboBox instead.
 
* implemented pagination links (WillPaginate) in admin/filters/filter.html.erb. (Ajax Pagination, per_page dropdown, total records)
 
* added RemoteLinkRenderer Class to initializer/opensteam (used for ajax-pagination)
 
* refactored filter-form to post pagination parameters
 
* refactored AdminController and Admin::Sales::Orders Controller to work with pagination (params[:page], params[:per_page])
 
* removed unnecessary psd files
 
* removed some unnecessary images
 
* changed images path in ext-js css files (ext-all.css)
 
* added rake task opensteam:dummydata:create to create test data (orders)
 
* new backend layout
 
* implemented Category plugin for Opensteam Products. Categories are associated to inventories (though only products are visible).
  Built as a plugin. Used acts_as_tree (http://github.com/rails/acts_as_tree/tree/master) and the ext-js tree control (http://extjs.com/)
  TODO: move migration files to plugin directory, validations for category-model, ancestor/sibling/children cache, maybe acts_as_nested_set
  
* refactored controller and view directory structure/namespace (to match navigation of the admin-backend):
  Admin::Sales::Orders, ::Invoices, ::Shipments
  Admin::Catalog::Categories, ::Products, ::Properties
  Admin::Config::TaxGroups, ::TaxZones, ::ShippingRates
  TODO: same for profile/account namespace, same for models (move models back into rails-app and model-logic into modules)
  
* refactored filter-methods, FilterEntry. Moved filter-logic into filtered model. filter is not stored based on controller, not based on model.
  TODO: remove 'configured_filter', due to join-table-condition support in Edge-Rails
  
* removed config_table_helper in some views. Using ext-js grid control instead. (TODO: remove all)
 
* removed sort-logic in controller (like OrdersController, InvoicesController, ..). Sorting is done through ext-js grid control.
 
* added plugins: will_paginate, rspec-rails, acts_as_tree
 
* added ext-js library and stylesheets
 
* added dhtmlx combo-box library and stylesheets (TODO: remove and change to ext-js)
 
* moved some session-logic into a session-based model ProfileSession (filter specific stuff).
  TODO: user_management
  
* updated generators
 
* bugfixes
 
 
 
*0.9.3*
 
* added a ContainerModel to hold the basic ShoppingCart Logic (add/update/delete items, increment/decrement), STI
 
* moved Cart from session to database (into Container)
 
* moved OrderBase into Container (same logic as ShoppingCart)
 
* added a Tax-System (TaxZones, TaxGroups, Calculation, etc), MVC
 
* implemented ActiveMerchant Integration. (CreditCard Payment)
 
* added PaymentTypes and a Payment Base Class to simplify future integration of payment-methods
 
* added ShippingRate calculation (ShippingRates, Zones, ShippingRateGroups), MVC
 
* added shipping-rates, taxes, netto_price calculation, payment_type to OrderBase (Container)
 
* refactored Checkout-Process and OrderBase-Model in order to work with payment_type, shipping-rate and taxes
 
* added PDF-Export for Invoices (using the prawn-gem and prawnto-plugin http://www.cracklabs.com/prawnto )
 
* removed state-logic from InvoiceBase (not needed)
 
* added payment_process initializers (CreditCardPayment)
 
* added Configuration Model (Backend), to hold simple key-value pairs
 
* added units tests for Container::Base (Order, Cart), Payment, ProductBase and Order
 
* refactored the "set_properties=" method in ProductBase. Now "building" the inventory-objects instead of creating.
 
* refactored the _attributes partial for products in order to work with the new "set_properties=" method.
 
* InventoryBase: added a named_scope called :by_properties (replaces the exists_by_properties extension-method fpr the inventories-association in ProductBase):
  Now: Single SQL-Query instead of fetching every single property.
 
* fixed bug in StateMachine caused by inheritance: declared 'observers' and 'inialstate' as class_inheritable_accessor
 
* StateLogic: changed state-name from .downcase to .underscore
 
* deleted unnecessary partials (TODO: more to delete!)
 
* renamed cart_controller to carts_controller (ActiveRecord Model, recources!)
 
* added a "init_opensteam_config" migration file, to create admin-uses and load fixtures (zones, tax_zones, shipping_rates, configuration)
 
* added verification_value to credit_card_payment partials
 
* deleted lib/cart_base.rb (not needed anymore, now Opensteam::Cart < Opensteam::Container::Base)
 
 
 
*0.9.2*
 
 
* fixed bug in product-controller (generators): missing "::" between "Admin" namespace and ProductController
 
* implemented filter methods for configurable tables in admin-backend (Opensteam::Helpers::ConfigTableHelper)
 
* added partials for "filters"
 
* updated views + controller in admin-backend for filter + sortable table (TODO: check if the POST to index for filter is neccessary, REST )
 
* removed uuid for Order-ids due to association problems (e.g. no order_items for an order after checkout ) (TODO: implement!)
 
* deleted unnecessary controllers + views (administration namespace)
 
* updated invoice controller + views (to work like shipments)
 
* updated simple workflow (to work with invoices)
 
* changed the find_tables-method in Opensteam::Finder from AR::B.connection.select_all("TABLES LIKE ..") to AR::B.connection.tables.include?(..), ( sqlite3 compatibility)
 
* updated Rakefile (simple gemspec)
 
* updated README.rdoc
 
* added CHANGELOG
 
 
 
*0.9.1*
 
* added Opensteam::InvoiceBase::Invoice and Opensteam::ShipmentBase::Shipment models to simplify/clarify order-processing
 
* added Opensteam::StateLogic Module to provide basic methods for state-modules (override all instance_methods of a state-module and call 'fire_event' instead)
 
* added Opensteam::StateMachine Module to implement a state-pattern for the Order, Invoice and Shipment-Models (change_state, execute method (event) in current state-module)
 
* added state-modules (pending, finished, etc) in RAILS_ROOT/lib/states/order|invoice|shipment
 
* added Opensteam::Initializer to handle all require, after_initialize and logging methods
 
* deleted initialize methods from lib/opensteam.rb
 
* added observer-methods (in Opensteam::StateMachine) to be called after state-changing, to allow a simple state workflow
 
* implemented a simple state-workflow in RAILS_ROOT/config/initializers/init_states for orders. (Set order to finished if all invoices and shipments for all OrderItems are finished )
 
* removed the STI column in the users-table (Opensteam::UserBase::User) in favor of profiles
 
* added profiles-table (Opensteam::UserBase::Profiles) to provide a profile-driven user-management (a user has now an association to a profile)
 
* changed the Authentication Module and controller filter to work with the new pprofile user management
 
* fixed bugs in the Shopping Controller and Views (TODO: refactor, DRY)
 
* changed the admin-backend controller namespace (Module) from "administration" to "admin"
 
* changed the routes to work with the new admin-controller-namespace
 
* added views + controller for users in the admin backend to crud users (admins, customers)
 
* added a controller-namespace called "profile" (for customer specific content -> frontend)
 
* added views + controller called "info" to the "profile"-namespace, to allow customers to view/edit their profile data (incl. password-change)
 
* added views + controller called "orders" to the "profile"-namespace, to allow customers to view their orders (pending, finished, etc)
 
* added a helper method to render sortable and searchable tables (for the admin-backend) (TODO: DRY)
 
* added views + controller for orders, invoices and shipments in the admin-backend
 
* added a search controller + views
 
* associated searches to the logged_in customer (TODO: add views for previous searches)
 
* added a 'histories' table (Opensteam::History) to provide logging functionality (currently for state-changes on orders, invoices and shipments) (TODO: customer login, searches, etc )
 
* associated :histories to :orders, :invoices and :shipments
 
* refactored the layout-files
 
* bugfixes
 
 
 
 
*0.9.0*
 
* First Public Release *