puffer 0.0.32 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/.gitignore +7 -0
  2. data/Gemfile +1 -26
  3. data/Gemfile.lock +66 -64
  4. data/README.md +34 -23
  5. data/Rakefile +1 -11
  6. data/VERSION +1 -1
  7. data/app/assets/javascripts/puffer/application.js +6 -1
  8. data/app/assets/javascripts/puffer/associations.js +18 -0
  9. data/app/assets/javascripts/puffer/puffer.js +7 -0
  10. data/app/assets/javascripts/puffer/right-calendar-src.js +19 -3
  11. data/app/assets/javascripts/puffer/right-dnd-src.js +591 -0
  12. data/app/assets/javascripts/puffer/right-in-edit-src.js +373 -0
  13. data/app/assets/javascripts/puffer/right-keys-src.js +87 -0
  14. data/app/assets/javascripts/puffer/{paginator.js → right-paginator-src.js} +0 -0
  15. data/app/assets/javascripts/puffer/right-slider-src.js +29 -32
  16. data/app/assets/javascripts/puffer/right-sortable-src.js +430 -0
  17. data/app/assets/javascripts/puffer/right-src.js +358 -99
  18. data/app/assets/stylesheets/puffer/puffer.css +29 -4
  19. data/app/components/base/form.html.erb +8 -14
  20. data/app/components/base_component.rb +1 -1
  21. data/app/components/boolean/form.html.erb +5 -3
  22. data/app/components/boolean/index.html.erb +6 -2
  23. data/app/components/boolean_component.rb +2 -2
  24. data/app/components/date_time/filter.html.erb +9 -0
  25. data/app/components/date_time/form.html.erb +8 -4
  26. data/app/components/date_time_component.rb +21 -5
  27. data/app/components/file/form.html.erb +8 -4
  28. data/app/components/hidden/form.html.erb +3 -1
  29. data/app/components/nested_attributes_many/form.html.erb +47 -0
  30. data/app/components/nested_attributes_many_component.rb +7 -0
  31. data/app/components/nested_attributes_one/form.html.erb +48 -0
  32. data/app/components/nested_attributes_one_component.rb +7 -0
  33. data/app/components/password/form.html.erb +8 -4
  34. data/app/components/password_component.rb +1 -1
  35. data/app/components/references_many/index.html.erb +1 -1
  36. data/app/components/references_one/choose.html.erb +1 -1
  37. data/app/components/references_one/form.html.erb +10 -9
  38. data/app/components/references_one_component.rb +0 -1
  39. data/app/components/render_component.rb +13 -0
  40. data/app/components/select/filter.html.erb +4 -2
  41. data/app/components/select/form.html.erb +8 -4
  42. data/app/components/text/form.html.erb +8 -4
  43. data/app/controllers/admin/sessions_controller.rb +1 -21
  44. data/app/controllers/puffer/base.rb +10 -3
  45. data/app/controllers/puffer/dashboard_base.rb +7 -1
  46. data/app/controllers/puffer/{sessions_base.rb → sessions/base.rb} +10 -7
  47. data/app/controllers/puffer/sessions/clearance.rb +29 -0
  48. data/app/controllers/puffer/{sessions_devise_base.rb → sessions/devise.rb} +1 -1
  49. data/app/controllers/puffer/sessions/simple.rb +28 -0
  50. data/app/controllers/puffer/tree_base.rb +1 -1
  51. data/app/models/puffer_user.rb +3 -0
  52. data/app/views/layouts/puffer.html.erb +3 -3
  53. data/app/views/puffer/base/_edit.html.erb +15 -0
  54. data/app/views/puffer/base/_index.html.erb +26 -0
  55. data/app/views/puffer/base/_show.html.erb +13 -0
  56. data/app/views/puffer/base/_table.html.erb +1 -1
  57. data/app/views/puffer/base/edit.html.erb +1 -15
  58. data/app/views/puffer/base/edit.js.erb +1 -0
  59. data/app/views/puffer/base/index.html.erb +1 -20
  60. data/app/views/puffer/base/index.js.erb +1 -0
  61. data/app/views/puffer/base/new.html.erb +1 -1
  62. data/app/views/puffer/base/show.html.erb +1 -22
  63. data/app/views/puffer/base/show.js.erb +1 -0
  64. data/app/views/puffer/base/update.js.erb +1 -0
  65. data/app/views/puffer/sessions/base/new.html.erb +11 -0
  66. data/app/views/puffer/tree_base/_record.html.erb +1 -1
  67. data/lib/puffer/component.rb +14 -47
  68. data/lib/puffer/controller/auth.rb +13 -9
  69. data/lib/puffer/controller/config.rb +18 -0
  70. data/lib/puffer/controller/mutate.rb +8 -8
  71. data/lib/puffer/engine.rb +5 -0
  72. data/lib/puffer/field.rb +5 -11
  73. data/lib/puffer/filters.rb +86 -56
  74. data/lib/puffer/helpers/component_helper.rb +24 -0
  75. data/lib/puffer/helpers/puffer_helper.rb +65 -0
  76. data/lib/puffer/helpers/puffer_tree_helper.rb +19 -0
  77. data/lib/puffer/orm_adapter/active_record.rb +40 -11
  78. data/lib/puffer/orm_adapter/base.rb +9 -0
  79. data/lib/puffer/orm_adapter/mongoid.rb +32 -9
  80. data/lib/puffer/resource/node.rb +2 -2
  81. data/lib/puffer/resource/routing.rb +30 -16
  82. data/lib/puffer/resource.rb +20 -20
  83. data/lib/puffer/version.rb +3 -0
  84. data/lib/puffer.rb +26 -5
  85. data/puffer.gemspec +34 -296
  86. data/spec/app/components/base_component_spec.rb +1 -1
  87. data/spec/app/components/boolean_component_spec.rb +2 -0
  88. data/spec/app/components/date_time_component_spec.rb +1 -0
  89. data/spec/app/components/file_component_spec.rb +1 -0
  90. data/spec/app/components/hidden_component_spec.rb +1 -0
  91. data/spec/app/components/password_component_spec.rb +2 -0
  92. data/spec/app/components/select_component_spec.rb +1 -0
  93. data/spec/app/components/string_component_spec.rb +1 -0
  94. data/spec/app/components/text_component_spec.rb +1 -0
  95. data/spec/dummy/app/controllers/admin/news_controller.rb +2 -0
  96. data/spec/dummy/app/controllers/admin/profiles_controller.rb +1 -1
  97. data/spec/dummy/app/controllers/admin/users_controller.rb +2 -0
  98. data/spec/dummy/app/controllers/orms/active_record_orm_primals_controller.rb +8 -0
  99. data/spec/dummy/app/helpers/news_helper.rb +7 -0
  100. data/spec/dummy/app/models/active_record_orm/has_many_reference.rb +5 -0
  101. data/spec/dummy/app/models/active_record_orm/has_one_reference.rb +5 -0
  102. data/spec/dummy/app/models/active_record_orm/primal.rb +4 -0
  103. data/spec/dummy/config/environments/development.rb +1 -1
  104. data/spec/dummy/db/migrate/20111120144025_create_active_record_orm_has_one_references.rb +10 -0
  105. data/spec/dummy/db/migrate/20111122203304_create_active_record_orm_has_many_references.rb +10 -0
  106. data/spec/dummy/db/schema.rb +15 -1
  107. data/spec/helpers/puffer_helper_spec.rb +1 -1
  108. data/spec/lib/fields_spec.rb +0 -9
  109. data/spec/lib/filters_spec.rb +4 -8
  110. data/spec/lib/orm_adapter/base_shared.rb +22 -0
  111. data/spec/spec_helper.rb +1 -1
  112. metadata +89 -60
  113. data/app/components/string/form.html.erb +0 -5
  114. data/app/helpers/puffer_helper.rb +0 -51
  115. data/app/helpers/puffer_tree_helper.rb +0 -15
  116. data/app/views/puffer/sessions_base/new.html.erb +0 -11
  117. data/lib/puffer/extensions/form.rb +0 -16
@@ -0,0 +1,28 @@
1
+ class Puffer::Sessions::Simple < Puffer::Sessions::Base
2
+
3
+ setup do
4
+ model_name :puffer_user
5
+ end
6
+
7
+ def new
8
+ @record = resource.new_member
9
+ end
10
+
11
+ def create
12
+ p resource.attributes_key
13
+ @record = resource.adapter.find_first(:conditions => {:email => resource.attributes[:email]})
14
+ if @record && @record.authenticate(resource.attributes[:password])
15
+ session[:puffer_user_id] = @record.id
16
+ redirect_back_or admin_root_url
17
+ else
18
+ @record = resource.new_member :email => resource.attributes[:email]
19
+ render 'new'
20
+ end
21
+ end
22
+
23
+ def destroy
24
+ session.delete(:puffer_user_id)
25
+ redirect_to new_admin_session_url
26
+ end
27
+
28
+ end
@@ -2,7 +2,7 @@ module Puffer
2
2
  class TreeBase < Puffer::Base
3
3
  unloadable
4
4
 
5
- helper :puffer_tree
5
+ helper 'puffer/helpers/puffer_tree'
6
6
 
7
7
  define_fieldset :tree, :fallbacks => :index
8
8
 
@@ -12,4 +12,7 @@ elsif defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.table_exists
12
12
  class PufferUser < ActiveRecord::Base
13
13
  include Puffer::PufferUser
14
14
  end
15
+ else
16
+ class PufferUser
17
+ end
15
18
  end
@@ -39,8 +39,8 @@
39
39
  <dt><%= f.label :puffer_search %></dt>
40
40
  <dd><%= f.text_field :puffer_search %></dd>
41
41
 
42
- <% index_fields.columns.each do |field| %>
43
- <%= field.render controller, :filter, :form => f %>
42
+ <% filter_fields.columns.each do |field| %>
43
+ <%= field.render :filter, controller, puffer_filters %>
44
44
  <% end %>
45
45
 
46
46
  <dd><%= submit_tag 'Search', :name => nil %></dd>
@@ -56,7 +56,7 @@
56
56
  </div>
57
57
  </div>
58
58
  <div class="column">
59
- <div class="content">
59
+ <div class="content" id="content">
60
60
  <%= yield %>
61
61
  </div>
62
62
  </div>
@@ -0,0 +1,15 @@
1
+ <% @title = "Edit #{resource.human}" %>
2
+ <h1><%= @title %></h1>
3
+ <%= form_for record, :url => resource.member_path do |f| %>
4
+ <ul class="form">
5
+ <% update_fields.each do |field| -%>
6
+ <li><%= field.render :update, controller, record %></li>
7
+ <% end -%>
8
+ </ul>
9
+
10
+ <div class="buttons">
11
+ <%= f.submit t('puffer.save') %>
12
+ <%= f.submit t('puffer.save_and_exit') %>
13
+ <%= link_to 'cancel', (request.referer || resource.collectin_path) %>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,26 @@
1
+ <% @title = resource.human %>
2
+ <h1><%= @title %></h1>
3
+
4
+
5
+ <% if records.present? %>
6
+ <div class="paginator"></div>
7
+
8
+ <%= render :layout => 'table', :locals => {:table_fields => index_fields} do |record| %>
9
+ <%= link_to 'show', resource.member_path(record), :data => {'new-dialog-uri' => resource.member_path(record)} if configuration.show %>
10
+ <%= link_to 'edit', resource.edit_path(record) if update_fields.present? %>
11
+ <% _members.each do |member| %>
12
+ <%= link_to member.label, resource.member_path(record, :action => member.action) if member.display? %>
13
+ <% end %>
14
+ <%= link_to 'destroy', resource.member_path(record), :confirm => "Are you sure?", :method => :delete if configuration.destroy %>
15
+ <% end %>
16
+
17
+ <div class="paginator"></div>
18
+
19
+ <%= javascript_tag do %>
20
+ $$('.paginator').each(function(element) {
21
+ new Paginator({total: <%= records.num_pages %>, current: <%= params[:page] || 1 %>, link: {'href': '<%= resource.collection_path(:page => '%{page}', Puffer::Filters.model_name.param_key => puffer_filters.query).html_safe %>'}}).insertTo(element, 'instead');
22
+ });
23
+ <% end %>
24
+ <% else %>
25
+ <p>Sorry, but there is no records in <%= resource.human %></p>
26
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% @title = "Show #{resource.human}" %>
2
+ <h1><%= @title %></h1>
3
+
4
+ <ul class="show_entry">
5
+ <% show_fields.each do |field| -%>
6
+ <li>
7
+ <h2><%= field.human %></h2>
8
+ <div>
9
+ <%= field.render :show, controller, record %>
10
+ </div>
11
+ </li>
12
+ <% end if show_fields && record -%>
13
+ </ul>
@@ -13,7 +13,7 @@
13
13
  <% records.each do |record| -%>
14
14
  <tr>
15
15
  <% table_fields.each do |field| -%>
16
- <td><%= field.render controller, :index, :record => record %></td>
16
+ <td><%= field.render :index, controller, record %></td>
17
17
  <% end -%>
18
18
  <td class="actions">
19
19
  <%= yield record %>
@@ -1,15 +1 @@
1
- <% @title = "Edit #{resource.human}" %>
2
- <h1><%= @title %></h1>
3
- <%= form_for record, :url => resource.member_path do |f| %>
4
- <ul class="form">
5
- <% update_fields.each do |field| -%>
6
- <li><%= field.render controller, :update, :form => f, :record => f.object %></li>
7
- <% end -%>
8
- </ul>
9
-
10
- <div class="buttons">
11
- <%= f.submit t('puffer.save') %>
12
- <%= f.submit t('puffer.save_and_exit') %>
13
- <%= link_to 'cancel', (request.referer || resource.collectin_path) %>
14
- </div>
15
- <% end %>
1
+ <%= render 'edit' %>
@@ -0,0 +1 @@
1
+ <%= render 'edit' %>
@@ -1,20 +1 @@
1
- <% @title = resource.human %>
2
- <h1><%= @title %></h1>
3
-
4
-
5
- <% if records.present? %>
6
- <div class="rui-paginator" data-paginator="{total: <%= records.num_pages %>, current: <%= params[:page] || 1 %>, link: {href: '<%= resource.collection_path(:page => '%{page}') %>'}}"></div>
7
-
8
- <%= render :layout => 'table', :locals => {:table_fields => index_fields} do |record| %>
9
- <%= link_to 'edit', resource.edit_path(record) if update_fields.present? %>
10
- <% _members.each do |member| %>
11
- <%= link_to member.label, resource.member_path(record, :action => member.action) if member.display? %>
12
- <% end %>
13
- <%= link_to 'destroy', resource.member_path(record), :confirm => "Are you sure?", :method => :delete if configuration.destroy %>
14
- <% end %>
15
-
16
- <div class="rui-paginator" data-paginator="{total: <%= records.num_pages %>, current: <%= params[:page] || 1 %>, link: {href: '<%= resource.collection_path(:page => '%{page}') %>'}}"></div>
17
- <% else %>
18
- <p>Sorry, but there is no records in <%= resource.human %></p>
19
- <% end %>
20
-
1
+ <%= render 'index' %>
@@ -0,0 +1 @@
1
+ $('content').update('<%= j render 'index' %>');
@@ -3,7 +3,7 @@
3
3
  <%= form_for record, :url => resource.collection_path do |f| %>
4
4
  <ul class="form">
5
5
  <% create_fields.each do |field| -%>
6
- <li><%= field.render controller, :create, :form => f, :record => f.object %></li>
6
+ <li><%= field.render :create, controller, record %></li>
7
7
  <% end -%>
8
8
  </ul>
9
9
 
@@ -1,22 +1 @@
1
- <% @title = "Show #{resource.human}" %>
2
- <h1><%= @title %></h1>
3
- <ul class="show_entry">
4
- <% if resource.children.present? %>
5
- <li>
6
- <h2>Associations</h2>
7
- <% resource.children.each do |child| %>
8
- <%= link_to child.human, child.collection_path %>
9
- <% end %>
10
- </li>
11
- <% end %>
12
-
13
- <% show_fields.each do |field| -%>
14
- <li>
15
- <h2><%= field.human %></h2>
16
- <div>
17
- <%= render_field field, record %>
18
- </div>
19
- </li>
20
- <% end if show_fields && record -%>
21
- </ul>
22
-
1
+ <%= render 'show' %>
@@ -0,0 +1 @@
1
+ <%= render 'show' %>
@@ -0,0 +1 @@
1
+ <%= render 'edit' %>
@@ -0,0 +1,11 @@
1
+ <%= form_for record, :url => admin_session_path(:return_to => params[:return_to]), :method => :post do |f| %>
2
+ <ul class="form">
3
+ <% create_fields.each do |field| -%>
4
+ <li><%= field.render :create, controller, record %></li>
5
+ <% end -%>
6
+ </ul>
7
+
8
+ <div class="buttons">
9
+ <%= f.submit 'Login' %>
10
+ </div>
11
+ <% end %>
@@ -12,7 +12,7 @@
12
12
  <% end %>
13
13
  <span class="handle">⇅</span>
14
14
  <% tree_fields.each do |field| -%>
15
- <span><%= field.render controller, :tree, :record => record %></span>
15
+ <span><%= field.render :tree, controller, record %></span>
16
16
  <% end -%>
17
17
  </dt>
18
18
  <dd class="column">
@@ -14,29 +14,7 @@ module Puffer
14
14
 
15
15
  abstract!
16
16
 
17
- module ComponentHelper
18
- def component_wrap name = :span, options = {}, &block
19
- content_tag name, options.merge(:id => component_id), &block
20
- end
21
-
22
- def clean_content_for name, *args, &block
23
- @view_flow.set name, ''
24
- content_for name, *args, &block
25
- end
26
-
27
- def paginate(scope, options = {}, &block)
28
- paginator = Kaminari::Helpers::Paginator.new parent_controller.view_context, options.reverse_merge(:current_page => scope.current_page, :num_pages => scope.num_pages, :per_page => scope.limit_value, :param_name => Kaminari.config.param_name, :remote => false)
29
- paginator.to_s
30
- end
31
- end
32
-
33
17
  module ClassMethods
34
- def render_component parent_controller, field, context, *args
35
- klass = "#{field.type}_component".camelize.constantize rescue StringComponent
36
- component = klass.new field
37
- component.process parent_controller, context, *args
38
- end
39
-
40
18
  def controller_path
41
19
  @controller_path ||= name.sub(/Component$/, '').underscore unless anonymous?
42
20
  end
@@ -45,40 +23,37 @@ module Puffer
45
23
  extend ClassMethods
46
24
 
47
25
  include AbstractController::Rendering
48
- include AbstractController::Helpers
49
26
  include AbstractController::Translation
50
27
  include AbstractController::Logger
51
28
  include AbstractController::Layouts
29
+ include ActionController::Helpers
52
30
 
53
31
  include ActionController::RequestForgeryProtection
54
32
  include ActionController::UrlFor
55
33
  include Rails.application.routes.url_helpers
56
34
 
57
- helper ComponentHelper, PufferHelper
35
+ helper 'puffer/helpers/component', 'puffer/helpers/puffer'
58
36
 
59
- attr_accessor :parent_controller, :field, :opts, :identifer, :resource
37
+ attr_reader :parent_controller, :field, :identifer, :record, :records, :resource, :opts
60
38
  delegate :env, :request, :params, :session, :_members, :_collections, :to => :parent_controller
61
- helper_method :params, :session, :resource, :_members, :_collections, :parent_controller, :field, :opts, :identifer, :component_id, :event_url, :event_path, :record, :records
39
+ helper_method :params, :session, :_members, :_collections, :parent_controller, :field, :identifer, :component_id, :event_url, :event_path, :record, :records, :resource, :opts
62
40
 
63
41
  def initialize field
64
42
  super()
65
43
  @field = field
66
44
  end
67
45
 
68
- def process parent_controller, context, *args
46
+ def process context, parent_controller, record, options = {}
69
47
  @parent_controller = parent_controller
70
- super context, *args
71
- end
72
-
73
- def send_action method_name, *args
74
- @opts = args.extract_options!
75
- if @opts[:record]
76
- @resource = Puffer::Resource.new(params.merge(:member => @opts[:record]), parent_controller)
77
- else
78
- @resource = parent_controller.resource
79
- end
48
+ @record = record
49
+ @opts = options
80
50
  @identifer = params[:identifer] || generate_identifer
81
- send method_name, *args
51
+
52
+ resource_params = params
53
+ resource_params.merge!(:id => record.id) if record && record.respond_to?(:id)
54
+ @resource = Puffer::Resource.new(resource_params, parent_controller)
55
+
56
+ super context
82
57
  end
83
58
 
84
59
  def render *args, &block
@@ -101,7 +76,7 @@ module Puffer
101
76
  end
102
77
 
103
78
  def method_for_action action_name
104
- fallback_action(action_name) || super
79
+ super fallback_action(action_name)
105
80
  end
106
81
 
107
82
  def fallback_action action_name
@@ -120,14 +95,6 @@ module Puffer
120
95
  {:action => :event, :event => name, :field => field.to_s, :fieldset => field.field_set.name, :identifer => identifer}
121
96
  end
122
97
 
123
- def record
124
- @record || instance_variable_get("@#{resource.name.singularize}")
125
- end
126
-
127
- def records
128
- @records || instance_variable_get("@#{resource.name.pluralize}")
129
- end
130
-
131
98
  def component_id
132
99
  "component_#{identifer}"
133
100
  end
@@ -35,15 +35,7 @@ module Puffer
35
35
  # method, or you should properly redefine +has_puffer_access?+ See
36
36
  # +has_puffer_access?+ source and docs.
37
37
  def current_puffer_user
38
- @current_puffer_user ||= super rescue (PufferUser.find(session[:puffer_user_id]) if session[:puffer_user_id])
39
- end
40
-
41
- # Used in before_filter to prevent unauthorized access
42
- def require_puffer_user
43
- unless has_puffer_access?(puffer_namespace)
44
- redirect_to new_admin_session_url(:return_to => request.fullpath)
45
- return false
46
- end
38
+ @current_puffer_user ||= super rescue (::Admin::SessionsController.model.to_adapter.find_first(:conditions => {:_id => session[:puffer_user_id]}) if session[:puffer_user_id])
47
39
  end
48
40
 
49
41
  # This method is also part of auth system and it can be redefined at the
@@ -63,6 +55,18 @@ module Puffer
63
55
  super rescue (current_puffer_user && current_puffer_user.has_role?(namespace))
64
56
  end
65
57
 
58
+ # Used in before_filter to prevent unauthorized access
59
+ def require_puffer_user
60
+ unless has_puffer_access?(puffer_namespace)
61
+ redirect_to new_admin_session_url(:return_to => request.fullpath)
62
+ return false
63
+ end
64
+ end
65
+
66
+ def redirect_back_or default
67
+ redirect_to(params[:return_to].presence || default)
68
+ end
69
+
66
70
  end
67
71
 
68
72
  end
@@ -1,12 +1,30 @@
1
+ # Every puffer controller can be configured
2
+ # Something like:
3
+ #
4
+ # setup do
5
+ # group :posting
6
+ # model_name 'article'
7
+ # end
8
+ #
1
9
  module Puffer
2
10
  module Controller
3
11
  module Config
4
12
  extend ActiveSupport::Concern
5
13
 
6
14
  included do
15
+ # Configuration options with default values:
16
+ # group - interface group name, displays as tab in interface header
7
17
  puffer_class_attribute :group, :default
18
+ # model_name - obviosly - model name for controller
8
19
  puffer_class_attribute :model_name
20
+ # destroy - records destruction allowed?
9
21
  puffer_class_attribute :destroy, true
22
+ # destroy - records show method allowed?
23
+ puffer_class_attribute :show, false
24
+ # scope - default scope name for all queries
25
+ puffer_class_attribute :scope
26
+ # order - default order option. Is a string with field name and direction. Ex: 'email', 'first_name asc', 'title desc'
27
+ puffer_class_attribute :order
10
28
 
11
29
  helper_method :configuration
12
30
  end
@@ -4,9 +4,9 @@ module Puffer
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- layout 'puffer'
8
- helper :puffer
9
- delegate :puffer_filters_class, :model, :model_name, :to => 'self.class'
7
+ helper 'puffer/helpers/puffer'
8
+
9
+ delegate :model, :model_name, :to => 'self.class'
10
10
  helper_method :puffer_filters, :puffer_namespace, :resource, :record, :records
11
11
  end
12
12
 
@@ -18,7 +18,11 @@ module Puffer
18
18
  end
19
19
 
20
20
  def puffer_filters
21
- @puffer_filters ||= puffer_filters_class.new params[puffer_filters_class.model_name.param_key]
21
+ @puffer_filters ||= begin
22
+ filters = params[Puffer::Filters.model_name.param_key] || {}
23
+ filters = {:puffer_order => configuration.order}.merge(filters) if configuration.order.present?
24
+ Puffer::Filters.new filter_fields, filters
25
+ end
22
26
  end
23
27
 
24
28
  def puffer_namespace
@@ -45,10 +49,6 @@ module Puffer
45
49
  true
46
50
  end
47
51
 
48
- def puffer_filters_class
49
- @puffer_filters_class ||= Puffer::Filters.controller_filters(self)
50
- end
51
-
52
52
  def model_name
53
53
  @model_name ||= (configuration.model_name || controller_name.singularize).to_s
54
54
  end
data/lib/puffer/engine.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  module Puffer
2
2
  class Engine < Rails::Engine
3
3
  config.autoload_paths << File.join(root, 'lib')
4
+
5
+ initializer 'puffer_components.set_configs', :after => 'action_controller.set_configs' do |app|
6
+ Puffer::Component::Base.helpers_path = app.config.helpers_paths
7
+ Puffer::Component::Base.helper :all
8
+ end
4
9
  end
5
10
  end
data/lib/puffer/field.rb CHANGED
@@ -36,10 +36,6 @@ module Puffer
36
36
  @human ||= model && model.human_attribute_name(name)
37
37
  end
38
38
 
39
- def order
40
- @order ||= options[:order] || query_column
41
- end
42
-
43
39
  def type
44
40
  @type ||= options[:type] || custom_type || column_type || :string
45
41
  end
@@ -49,7 +45,7 @@ module Puffer
49
45
  end
50
46
 
51
47
  def reflection
52
- @reflection ||= model && model.reflect_on_association(name.to_sym)
48
+ @reflection ||= model && model.to_adapter.reflection(name)
53
49
  end
54
50
 
55
51
  def input_options
@@ -64,8 +60,9 @@ module Puffer
64
60
  @component ||= component_class.new self
65
61
  end
66
62
 
67
- def render controller, context, *args
68
- component.process controller, context, *args
63
+ def render context, controller, *record_and_options
64
+ options = record_and_options.extract_options!
65
+ component.process context, controller, record_and_options.first, options
69
66
  end
70
67
 
71
68
  def model
@@ -85,12 +82,9 @@ module Puffer
85
82
  end
86
83
 
87
84
  def column_type
85
+ reflection.macro if reflection
88
86
  column[:type] if column
89
87
  end
90
88
 
91
- def query_column
92
- "#{model.table_name}.#{name}" if column
93
- end
94
-
95
89
  end
96
90
  end