opensteam 0.9.1 → 0.9.2

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 (40) hide show
  1. data/CHANGELOG +12 -1
  2. data/generators/opensteam/opensteam_generator.rb +5 -0
  3. data/generators/opensteam/templates/app/controllers/admin/invoices_controller.rb +31 -25
  4. data/generators/opensteam/templates/app/controllers/admin/orders_controller.rb +22 -69
  5. data/generators/opensteam/templates/app/controllers/admin/shipments_controller.rb +29 -26
  6. data/generators/opensteam/templates/app/controllers/admin/users_controller.rb +28 -13
  7. data/generators/opensteam/templates/app/controllers/admin_controller.rb +39 -1
  8. data/generators/opensteam/templates/app/controllers/profile/orders_controller.rb +20 -59
  9. data/generators/opensteam/templates/app/helpers/webshop_helper.rb +3 -0
  10. data/generators/opensteam/templates/app/models/filter_entry.rb +17 -0
  11. data/generators/opensteam/templates/app/views/admin/filters/_filter.html.erb +14 -0
  12. data/generators/opensteam/templates/app/views/admin/filters/_filter_entry.html.erb +6 -0
  13. data/generators/opensteam/templates/app/views/admin/filters/_filter_fields.html.erb +8 -0
  14. data/generators/opensteam/templates/app/views/admin/invoices/_invoices.html.erb +9 -9
  15. data/generators/opensteam/templates/app/views/admin/invoices/index.html.erb +5 -1
  16. data/generators/opensteam/templates/app/views/admin/orders/_orders.html.erb +15 -16
  17. data/generators/opensteam/templates/app/views/admin/orders/show.html.erb +9 -8
  18. data/generators/opensteam/templates/app/views/admin/shipments/_shipments.html.erb +11 -11
  19. data/generators/opensteam/templates/app/views/admin/shipments/index.html.erb +3 -0
  20. data/generators/opensteam/templates/app/views/admin/users/edit.html.erb +3 -1
  21. data/generators/opensteam/templates/app/views/admin/users/index.html.erb +18 -6
  22. data/generators/opensteam/templates/app/views/admin/users/new.html.erb +2 -0
  23. data/generators/opensteam/templates/app/views/layouts/admin.html.erb +4 -0
  24. data/generators/opensteam/templates/app/views/profile/orders/_orders.html.erb +9 -19
  25. data/generators/opensteam/templates/config/initializers/opensteam_model_tables.rb +80 -41
  26. data/generators/opensteam/templates/db/migrate/20080609095728_create_order_items.rb +1 -0
  27. data/generators/opensteam/templates/db/migrate/20080609095729_create_orders.rb +2 -2
  28. data/generators/opensteam/templates/db/migrate/20080804152615_create_filter_entries.rb +16 -0
  29. data/generators/opensteam/templates/public/stylesheets/opensteam_white.css +25 -25
  30. data/generators/opensteam_product/templates/controllers/product_controller.rb +1 -1
  31. data/lib/opensteam/extension_base.rb +1 -0
  32. data/lib/opensteam/helpers/config_table_helper.rb +139 -0
  33. data/lib/opensteam/initializer.rb +3 -3
  34. data/lib/opensteam/invoice_base.rb +4 -0
  35. data/lib/opensteam/order_base.rb +5 -3
  36. data/lib/opensteam/shipment_base.rb +6 -0
  37. data/lib/opensteam/user_base.rb +1 -0
  38. data/lib/opensteam/version.rb +1 -1
  39. metadata +8 -3
  40. data/lib/opensteam/helper/configurable_table.rb +0 -228
@@ -1,6 +1,9 @@
1
1
  # Methods added to this helper will be available to all templates in the application.
2
2
  ## TEMPLATE ##
3
3
  module <%= file_name.classify %>Helper
4
+
5
+ include Opensteam::Helpers::ConfigTableHelper::HelperMethods
6
+
4
7
 
5
8
  # return first partial-file that exist in *a
6
9
  def existing_partial( *a )
@@ -0,0 +1,17 @@
1
+ class FilterEntry < ActiveRecord::Base
2
+
3
+ validates_inclusion_of :op, :in => %w( LIKE = > < )
4
+
5
+ def to_sql
6
+ m = model.classify.constantize.osteam_configtable[ key.downcase ] rescue nil
7
+ m ? "(" << Array(m.sql).collect { |s| "#{s} #{op} :#{key.downcase}" }.join(" OR ") << ")" : "#{key.tableize} #{op} :#{key.downcase}"
8
+ end
9
+
10
+
11
+ def to_val
12
+ op =~ /LIKE/ ? { key.downcase.to_sym => "%#{val}%" } : { key.downcase.to_sym => "#{val}" }
13
+ end
14
+
15
+
16
+
17
+ end
@@ -0,0 +1,14 @@
1
+ <%= link_to_function "add filter" do |page|
2
+ page.insert_html :bottom, :filter_fields, :partial => "admin/filters/filter_fields", :object => FilterEntry.new, :locals => { :model => model }
3
+ end %>
4
+
5
+ <div id="<%= id %>" >
6
+ <ul>
7
+ <%= render :partial => "admin/filters/filter_entry", :collection => @filter_entries %>
8
+ </ul>
9
+ <% form_tag( { :controller => "admin/#{model.tableize}", :action => 'index' } ) do %>
10
+ <div id="filter_fields"></div>
11
+ <br />
12
+ <%= submit_tag "find" %>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,6 @@
1
+ <%- form_tag :action => 'delete_filter', :id => filter_entry.id, :model => filter_entry.model do -%>
2
+ <li>
3
+ <%=h filter_entry.key %> <%=h filter_entry.op %> <%= filter_entry.val %> <%= submit_tag_with_image( "delete_filter", "cross.png", { :alt => "delete filter?" } ) -%>
4
+ </li>
5
+ <%- end -%>
6
+
@@ -0,0 +1,8 @@
1
+ <% fields_for "filter[]", filter_fields do |filter| %>
2
+ <%= filter.hidden_field :id %>
3
+ <%= hidden_field_tag "filter[][model]", model %>
4
+
5
+ <%= filter.select :key, model.classify.constantize.osteam_configtable.columns.collect(&:id) %> -
6
+ <%= filter.select :op, ["LIKE", "=", ">", "<" ] %> -
7
+ <%= filter.text_field :val, :size => 5 %><br />
8
+ <% end %>
@@ -1,11 +1,11 @@
1
- <% render_configured_table :invoice do %>
2
- <%= render_configured_table_header :invoice do |column|
3
- url = { :controller =>"admin/invoices", :action => 'sort', :sort => column.id, :model => 'Invoice' }
1
+ <% osteam_sort_table Opensteam::InvoiceBase::Invoice do |t| %>
2
+ <%= t.table_header do |column|
3
+ url = { :controller => "admin/invoices", :action => 'index', :sort => column.id }
4
4
  url[:order_id] = @order.id if @order
5
- link_to_remote( column.name,
6
- :url => url,
7
- :update => id )
8
- end %>
9
5
 
10
- <%= render_configured_table_content( :partial => "admin/invoices/invoice", :collection => invoices, :id => id ) %>
11
- <% end %>
6
+ link_to_remote( column.name, :url => url, :update => id, :method => 'get' )
7
+ end %>
8
+ <tbody id="<%= id %>">
9
+ <%= render :partial => "admin/invoices/invoice", :collection => invoices, :id => id %>
10
+ </tbody>
11
+ <% end %>
@@ -1,6 +1,10 @@
1
1
  <h2> Invoices </h2>
2
2
  <br />
3
3
  <div id="invoices_content_div">
4
- <%= render :partial => "invocies", :object => @invoices, :locals => { :id => "invoices_content_table1" } %>
4
+ <%= render :partial => "invoices", :object => @invoices, :locals => { :id => "invoices_content_table1" } %>
5
5
  </div>
6
6
 
7
+ <% content_for( :admin_sidebar2 ) do %>
8
+ <%= render :partial => "admin/filters/filter", :locals => { :id => "invoice_filter", :model => "Invoice" } %>
9
+ <% end %>
10
+
@@ -1,19 +1,18 @@
1
1
 
2
- <%= text_field_tag( :livesearch ) %>
3
- <% render_configured_table :order do %>
4
- <%= render_configured_table_header :order do |column|
5
- url = { :controller =>"admin/orders", :action => 'sort', :sort => column.id, :model => 'Order' }
6
- link_to_remote( column.name,
7
- :url => url,
8
- :update => id )
9
- end %>
10
-
11
- <%= render_configured_table_content( :partial => "admin/orders/order", :collection => orders, :id => id ) %>
2
+
3
+ <% osteam_sort_table Opensteam::OrderBase::Order do |t| %>
4
+ <%= t.table_header do |column|
5
+ url = { :controller => "admin/orders", :action => 'index', :sort => column.id }
6
+ url[:customer_id] = @customer.id if @customer
7
+
8
+ link_to_remote( column.name, :url => url, :update => id, :method => 'get' )
9
+ end %>
10
+ <tbody id="<%= id %>">
11
+ <%= render :partial => "admin/orders/order", :collection => orders, :id => id %>
12
+ </tbody>
12
13
  <% end %>
13
14
 
14
- <%= observe_field :livesearch,
15
- :url => { :action => :livesearch, :controller => 'admin/orders', :update_id => id },
16
- :update => id,
17
- :frequency => 2,
18
- :with => :livesearch
19
- %>
15
+
16
+ <% content_for( :admin_sidebar2 ) do %>
17
+ <%= render :partial => "admin/filters/filter", :locals => { :id => "users_filter", :model => "Order" } %>
18
+ <% end %>
@@ -11,6 +11,12 @@
11
11
  <h2>Order # <%= @order.id %></h2>
12
12
  <h3>State: <%= @order.state %></h3>
13
13
 
14
+ <% @order.events.select { |s| s =~ /^view_link_to_/ }.each do |o| %>
15
+ <% o =~ /^view_link_to_(.+)$/ %>
16
+ <%= link_to $1 ? $1.humanize : o , @order.__send__( o ) %>
17
+ <% end %>
18
+
19
+
14
20
  <div id="order_customer" class="sub_content_box">
15
21
  <h3>Customer <%= link_to "show", admin_user_path( @order.customer ) %></h3>
16
22
  <%= render :partial => "profile/infos/customer", :object => @order.customer %>
@@ -19,14 +25,8 @@
19
25
  <div id="order_shipments" class="sub_content_box" style="display:none;">
20
26
  <h3>Shipments</h3>
21
27
 
22
-
23
- <% @order.events.select { |s| s =~ /^view_link_to_/ }.each do |o| %>
24
- <% o =~ /^view_link_to_(.+)$/ %>
25
- <%= link_to $1 ? $1.humanize : o , @order.__send__( o ) %>
26
- <% end %>
27
-
28
28
  <%# unless @order.finished? %>
29
- <%# = link_to "Create Shipment", :controller => 'shipments', :action => 'new', :order_id => @order.id %>
29
+ <%# = link_to "Create Shipment", :controller => 'shipments', :action => 'new', :order_id => @order.id %>
30
30
  <%# end %>
31
31
  <%= render :partial => "admin/shipments/shipments", :object => @order.shipments,
32
32
  :locals => { :id => "order_shipments_table" } %>
@@ -34,7 +34,8 @@
34
34
 
35
35
  <div id="order_invoices" class="sub_content_box" style="display:none;">
36
36
  <h3>Invoices</h3>
37
- <%= render :partial => "admin/invoices/invoices", :object => @order.invoices %>
37
+ <%= render :partial => "admin/invoices/invoices", :object => @order.invoices,
38
+ :locals => { :id => "order_invoices_table" } %>
38
39
  </div>
39
40
 
40
41
  <div id="order_order_items" class="sub_content_box" style="display:none;">
@@ -1,11 +1,11 @@
1
- <% render_configured_table :shipment do %>
2
- <%= render_configured_table_header :shipment do |column|
3
- url = { :controller =>"admin/shipments", :action => 'sort', :sort => column.id, :model => 'Shipment' }
4
- url[:order_id] = @order.id if @order
5
- link_to_remote( column.name,
6
- :url => url,
7
- :update => id )
8
- end %>
9
-
10
- <%= render_configured_table_content( :partial => "admin/shipments/shipment", :collection => shipments, :id => id ) %>
11
- <% end %>
1
+ <% osteam_sort_table Opensteam::ShipmentBase::Shipment do |t| %>
2
+ <%= t.table_header do |column|
3
+ url = { :controller => "admin/shipments", :action => 'index', :sort => column.id }
4
+ url[:order_id] = @order.id if @order
5
+
6
+ link_to_remote( column.name, :url => url, :update => id, :method => 'get' )
7
+ end %>
8
+ <tbody id="<%= id %>">
9
+ <%= render :partial => "admin/shipments/shipment", :collection => shipments, :id => id %>
10
+ </tbody>
11
+ <% end %>
@@ -4,3 +4,6 @@
4
4
  <%= render :partial => "shipments", :object => @shipments, :locals => { :id => "new_order" } %>
5
5
  </div>
6
6
 
7
+ <% content_for( :admin_sidebar2 ) do %>
8
+ <%= render :partial => "admin/filters/filter", :locals => { :id => "shipment_filter", :model => "Shipment" } %>
9
+ <% end %>
@@ -1,6 +1,8 @@
1
1
  <h3>Edit <%= params[:type] ? params[:type].humanize : "User" %></h3>
2
2
 
3
3
  <% form_for :user, @user, :url => { :controller => 'admin/users', :action => 'update', :type => params[:type] }, :html => { :method => 'put' } do |f| %>
4
- <%= render :partial => "common/signup_fields", :locals => { :f => f } %>
4
+
5
+ <%= select_tag :type, options_for_select( @profiles.collect { |s| [s.name, s.id] }, @user.profile_id ) %>
6
+ <%= render :partial => "common/signup_fields", :locals => { :f => f } %>
5
7
 
6
8
  <% end %>
@@ -1,7 +1,19 @@
1
1
  <h3><%= params[:type] ? params[:type].humanize : "Users" %></h3>
2
- <br />
3
- <br />
4
- <table>
5
- <%= render :partial => "admin/users/#{ params[:type] ? params[:type] + 's_header' : 'users_header' }" %>
6
- <%= render :partial => "admin/users/#{ params[:type] ? params[:type] + 's' : 'users' }", :collection => @users %>
7
- </table>
2
+
3
+
4
+ <%= link_to "New #{params[:type] ? params[:type].classify : 'User'} ", new_admin_user_path %>
5
+
6
+ <% osteam_sort_table Opensteam::UserBase::User do |t| %>
7
+ <%= t.table_header do |column|
8
+ url = { :controller => "admin/users", :action => 'index', :sort => column.id }
9
+ url[:type] = params[:type] if params[:type]
10
+ link_to_remote( column.name, :url => url, :update => "users_table1", :method => :get )
11
+ end %>
12
+ <tbody id="users_table1">
13
+ <%= render :partial => "admin/users/#{ params[:type] ? params[:type] + 's' : 'users' }", :collection => @users, :id => :users_tyble1 %>
14
+ </tbody>
15
+ <% end %>
16
+
17
+ <% content_for(:admin_sidebar) do %>
18
+ <%= render :partial => "admin/filters/filter", :locals => { :id => "users_filter", :model => "User" } %>
19
+ <% end %>
@@ -2,5 +2,7 @@
2
2
 
3
3
  <% form_for :user, @user, :url => { :controller => 'admin/users', :action => 'create', :type => params[:type] } do |f| %>
4
4
  <%= render :partial => "common/signup_fields", :locals => { :f => f } %>
5
+ <%= select_tag :type, options_for_select( @profiles.collect { |s| [s.name, s.id] }, @user.profile_id ) %>
6
+
5
7
 
6
8
  <% end %>
@@ -33,6 +33,10 @@
33
33
  <div id="content">
34
34
  <%= yield %>
35
35
  </div>
36
+
37
+ <div id="sidebar2">
38
+ <%= yield(:admin_sidebar2) || "" %>
39
+ </div>
36
40
  </div>
37
41
 
38
42
  <div id="footer">
@@ -1,19 +1,9 @@
1
-
2
- <%= text_field_tag( :livesearch ) %>
3
- <% render_configured_table :order do %>
4
- <%= render_configured_table_header :order do |column|
5
- url = { :controller =>"profile/orders", :action => 'sort', :sort => column.id, :model => 'Order' }
6
- link_to_remote( column.name,
7
- :url => url,
8
- :update => id )
9
- end %>
10
-
11
- <%= render_configured_table_content( :partial => "profile/orders/order", :collection => orders, :id => id ) %>
12
- <% end %>
13
-
14
- <%= observe_field :livesearch,
15
- :url => { :action => :livesearch, :controller => 'profile/orders', :update_id => id },
16
- :update => id,
17
- :frequency => 2,
18
- :with => :livesearch
19
- %>
1
+ <% osteam_sort_table Opensteam::OrderBase::Order do |t| %>
2
+ <%= t.table_header do |column|
3
+ url = { :controller => "profile/orders", :action => 'index', :sort => column.id }
4
+ link_to_remote( column.name, :url => url, :update => id, :method => 'get' )
5
+ end %>
6
+ <tbody id="<%= id %>">
7
+ <%= render :partial => "profile/orders/order", :collection => orders, :id => id %>
8
+ </tbody>
9
+ <% end %>
@@ -1,57 +1,96 @@
1
- Order.class_eval do
2
-
3
- include Opensteam::Helper::ConfigurableTable
4
-
5
- configure_table :order do
6
- default_sort_col :id
7
- column :id, :name => "#"
1
+ require 'opensteam/helpers/config_table_helper'
2
+ require 'opensteam/user_base'
3
+
4
+
5
+ Opensteam::OrderBase::Order.send( :include, Opensteam::Helpers::ConfigTableHelper )
6
+
7
+
8
+ Opensteam::OrderBase::Order.class_eval do
9
+ opensteam_filter :order do
10
+ include_associations [:customer, :shipping_address, :payment_address, :order_items ]
11
+
12
+ default_order_column :id
13
+
14
+ column :id, :name => "#", :order => "orders.id"
8
15
  column :order_items, :name => "OrderItems", :method => :size
9
- column :customer, :name => "Customer", :method => :email
10
- column :shipping_address, :name => "Shipping Address", :method => :to_s
16
+ column :customer, :name => "Customer", :order => "users.email"
17
+ column :shipping_address, :name => "Shipping Address", :method => :to_s, :sql => ["addresses.street", "addresses.city" ]
11
18
  column :payment_address, :name => "Payment Address", :method => :to_s
12
- column :state, :name => "State"
13
- column :created_at, :name => "Created"
14
- column :updated_at, :name => "Updated"
19
+ column :state, :name => "State", :order => "orders.state"
20
+ column :created_at, :name => "Created", :order => "orders.created_at"
21
+ column :updated_at, :name => "Updated", :order => "orders.updated_at"
22
+
15
23
  end
16
24
 
17
25
 
26
+
18
27
  end
19
28
 
29
+ Opensteam::UserBase::User.send( :include, Opensteam::Helpers::ConfigTableHelper )
20
30
 
21
- Shipment.class_eval do
22
-
23
- include Opensteam::Helper::ConfigurableTable
24
-
25
- configure_table :shipment do
26
- default_sort_col :id
27
- column :id, :name => "#"
31
+
32
+ Opensteam::UserBase::User.class_eval do
33
+ opensteam_filter :user do
34
+ include_associations [ :orders, :profile ]
35
+
36
+ default_order_column :id
37
+
38
+ column :id, :name => "#", :order => "users.id"
39
+ column :profile, :name => "Profile", :order => "profiles.name"
40
+ column :email, :name => "Email", :order => "users.email"
41
+ column :firstname, :name => "Firstname", :order => "users.firstname"
42
+ column :lastname, :name => "Lastname", :order => "users.lastname"
43
+ column :orders, :name => "Orders", :method => :size, :sql => "count(orders)"
44
+ column :created_at, :name => "Created", :order => "users.created_at"
45
+ column :updated_at, :name => "Updated", :order => "users.updated_at"
46
+
47
+ end
48
+ end
49
+
50
+
51
+ Opensteam::ShipmentBase::Shipment.send( :include, Opensteam::Helpers::ConfigTableHelper )
52
+
53
+ Opensteam::ShipmentBase::Shipment.class_eval do
54
+ opensteam_filter :shipment do
55
+ include_associations [ :order, :order_items, :address ]
56
+
57
+ default_order_column :id
58
+
59
+ column :id, :name => "#", :order => "shipments.id"
28
60
  column :order_items, :name => "OrderItems", :method => :size
29
- column :address, :name => "Address", :method => :to_s
30
- column :state, :name => "State"
31
- column :comment, :name => "Comment"
32
- column :created_at, :name => "Created"
33
- column :updated_at, :name => "Updated"
61
+ column :address, :name => "Address", :method => :to_s, :sql => ["addresses.street", "addresses.city" ]
62
+ column :state, :name => "State", :order => "shipments.state"
63
+ column :comment, :name => "Comment", :order => "shipments.comment"
64
+ column :created_at, :name => "Created", :order => "shipments.created_at"
65
+ column :updated_at, :name => "Updated", :order => "shipments.updated_at"
66
+
34
67
  end
35
-
36
-
37
-
38
68
  end
39
69
 
40
- Invoice.class_eval do
41
-
42
- include Opensteam::Helper::ConfigurableTable
43
-
44
- configure_table :invoices do
45
- default_sort_col :id
46
- column :id, :name => "#"
70
+
71
+ Opensteam::InvoiceBase::Invoice.send( :include, Opensteam::Helpers::ConfigTableHelper )
72
+
73
+ Opensteam::InvoiceBase::Invoice.class_eval do
74
+ opensteam_filter :invoice do
75
+ include_associations [ :order, :order_items, :address ]
76
+
77
+ default_order_column :id
78
+
79
+ column :id, :name => "#", :order => "invoices.id"
47
80
  column :order_items, :name => "OrderItems", :method => :size
48
- column :address, :name => "Address", :method => :to_s
49
- column :state, :name => "State"
50
- column :comment, :name => "Comment"
51
- column :price, :name => "Price"
52
- column :created_at, :name => "Created"
53
- column :updated_at, :name => "Updated"
81
+ column :address, :name => "Address", :method => :to_s, :sql => ["addresses.street", "addresses.city" ]
82
+ column :state, :name => "State", :order => "invoices.state"
83
+ column :comment, :name => "Comment", :order => "invoices.comment"
84
+ column :price, :name => "Price", :order => "invoices.price"
85
+ column :created_at, :name => "Created", :order => "invoices.created_at"
86
+ column :updated_at, :name => "Updated", :order => "invoices.updated_at"
87
+
54
88
  end
89
+ end
90
+
91
+
92
+
93
+
55
94
 
56
95
 
57
- end
96
+
@@ -2,6 +2,7 @@ class CreateOrderItems < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :order_items do |t|
4
4
  t.references :order
5
+
5
6
  t.integer :quantity
6
7
  t.string :itemid
7
8
  t.references :inventory
@@ -1,7 +1,7 @@
1
1
  class CreateOrders < ActiveRecord::Migration
2
2
  def self.up
3
- create_table :orders, :id => false, :force => true do |t|
4
- t.string :id, :null => false
3
+ create_table :orders, :force => true do |t|
4
+ # t.string :id, :null => false
5
5
  t.references :customer
6
6
 
7
7
  t.references :payment_type