inline_forms 0.9.6 → 0.9.7

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.6
1
+ 0.9.7
@@ -22,6 +22,27 @@
22
22
  #
23
23
  class InlineFormsController < ApplicationController
24
24
  before_filter :getKlass
25
+
26
+ def self.cancan_enabled?
27
+ begin
28
+ ::Ability && true
29
+ rescue NameError
30
+ false
31
+ end
32
+ end
33
+
34
+ def cancan_enabled?
35
+ self.class.cancan_enabled?
36
+ end
37
+
38
+ def cancan_disabled?
39
+ ! self.class.cancan_enabled?
40
+ end
41
+
42
+ helper_method :cancan_disabled?, :cancan_enabled?
43
+
44
+ load_and_authorize_resource if cancan_enabled?
45
+
25
46
  include InlineFormsHelper
26
47
 
27
48
  # shows a list of all objects from class @Klass, using will_paginate
@@ -31,11 +52,12 @@ class InlineFormsController < ApplicationController
31
52
  def index
32
53
  update_span = params[:update]
33
54
  @parent_class = params[:parent_class]
34
- if @parent_class.nil?
35
- @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC'
55
+ @parent_id = params[:parent_id]
56
+ @parent_class.nil? ? conditions = [] : conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
57
+ if cancan_enabled?
58
+ @objects = @Klass.accessible_by(current_ability).paginate :page => params[:page], :order => 'created_at DESC', :conditions => conditions
36
59
  else
37
- @parent_id = params[:parent_id]
38
- @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC', :conditions => [ "#{@parent_class.foreign_key} = ?", @parent_id ]
60
+ @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC', :conditions => conditions
39
61
  end
40
62
 
41
63
  respond_to do |format|
@@ -99,12 +121,14 @@ class InlineFormsController < ApplicationController
99
121
  flash.now[:error] = "Failed to create #{object.class.to_s.underscore}."
100
122
  end
101
123
  @parent_class = params[:parent_class]
102
- if @parent_class.nil?
103
- @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC'
124
+ @parent_id = params[:parent_id]
125
+ @parent_class.nil? ? conditions = [] : conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
126
+ if cancan_enabled?
127
+ @objects = @Klass.accessible_by(current_ability).paginate :page => params[:page], :order => 'created_at DESC', :conditions => conditions
104
128
  else
105
- @parent_id = params[:parent_id]
106
- @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC', :conditions => [ "#{@parent_class.foreign_key} = ?", @parent_id ]
129
+ @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC', :conditions => conditions
107
130
  end
131
+
108
132
  respond_to do |format|
109
133
  # found this here: http://www.ruby-forum.com/topic/211467
110
134
  format.js { render(:update) {|page| page.replace_html @update_span, :partial => 'inline_forms/list'}
@@ -190,9 +214,11 @@ class InlineFormsController < ApplicationController
190
214
  # redirect_to(@Klass.constantizes_url)
191
215
  # end
192
216
 
217
+
193
218
  private
194
219
  # Get the class from the controller name.
195
220
  def getKlass #:doc:
196
221
  @Klass = self.controller_name.classify.constantize
197
222
  end
223
+
198
224
  end
@@ -15,7 +15,11 @@ end
15
15
 
16
16
  def check_list_edit(object, attribute)
17
17
  object.send(attribute).build if object.send(attribute).empty?
18
- values = object.send(attribute).first.class.name.constantize.find(:all) # TODO bring order
18
+ if cancan_enabled?
19
+ values = object.send(attribute).first.class.name.constantize.accessible_by(current_ability) # TODO bring order!
20
+ else
21
+ values = object.send(attribute).first.class.name.constantize.all # TODO bring order!
22
+ end
19
23
  out = '<div class="edit_form_checklist">'
20
24
  out << '<ul>'
21
25
  values.each do | item |
@@ -34,6 +38,6 @@ end
34
38
 
35
39
  def check_list_update(object, attribute)
36
40
  params[attribute] ||= {}
37
- object.send(attribute.singularize + '_ids=', params[attribute].keys)
41
+ object.send(attribute.to_s.singularize + '_ids=', params[attribute].keys)
38
42
  end
39
43
 
@@ -8,7 +8,11 @@ end
8
8
 
9
9
  def dropdown_edit(object, attribute)
10
10
  object.send('build_' + attribute.to_s) unless object.send(attribute)
11
- values = object.send(attribute).class.name.constantize.find(:all) # TODO bring order!
11
+ if cancan_enabled?
12
+ values = object.send(attribute).class.name.constantize.accessible_by(current_ability) # TODO bring order!
13
+ else
14
+ values = object.send(attribute).class.name.constantize.all # TODO bring order!
15
+ end
12
16
  # the leading underscore is to avoid name conflicts, like 'email' and 'email_type' will result in 'email' and 'email[email_type_id]' in the form!
13
17
  collection_select( ('_' + object.class.to_s.underscore).to_sym, attribute.to_s.foreign_key.to_sym, values, 'id', '_presentation', :selected => object.send(attribute).id)
14
18
  end
@@ -1,5 +1,4 @@
1
1
  module InlineFormsHelper
2
-
3
2
  # load form elements. Each element goes into a separate file
4
3
  # and defines a _show, _edit and _update method.
5
4
  #
@@ -27,6 +26,7 @@ module InlineFormsHelper
27
26
  spaces = attribute_value.length > 40 ? 0 : 40 - attribute_value.length
28
27
  attribute_value << "&nbsp;".html_safe * spaces
29
28
  css_class_id = "#{object.class.to_s.underscore}_#{object.id}_#{attribute}"
29
+ if cancan_disabled? || ( can? :update, object )
30
30
  link_to attribute_value,
31
31
  send( 'edit_' + object.class.to_s.underscore + '_path',
32
32
  object,
@@ -34,6 +34,9 @@ module InlineFormsHelper
34
34
  :form_element => calling_method.sub(/_[a-z]+$/,''),
35
35
  :update => css_class_id ),
36
36
  :remote => true
37
+ else
38
+ attribute_value
39
+ end
37
40
  end
38
41
 
39
42
  # link to inline image edit
@@ -48,6 +51,16 @@ module InlineFormsHelper
48
51
  :remote => true
49
52
  end
50
53
 
54
+ def link_to_new_record(text, model, path_to_new, update_span, parent_class, parent_id)
55
+ out = ""
56
+ out << "<li class='new_record_link'>"
57
+ out << (link_to text, send(path_to_new, :update => update_span, :parent_class => parent_class, :parent_id => parent_id ), :remote => true)
58
+ out << "</li>"
59
+ ""
60
+ raw out if cancan_disabled? || ( can? :create, model.constantize )
61
+ end
62
+
63
+
51
64
  # get the values for an attribute
52
65
  #
53
66
  # values should be a Hash { integer => string, ... }
@@ -43,13 +43,7 @@ they are @object. We need this magic here to rewrite all the @variables to varia
43
43
  <ul id="<%= update_span -%>" class="inline_forms_list">
44
44
  <% end %>
45
45
  <!-- # link to new -->
46
- <li class="new_record_link">
47
- <%= link_to "Add a new #{human_readable_class}",
48
- send(path_to_new, :update => update_span,
49
- :parent_class => parent_class,
50
- :parent_id => parent_id ),
51
- :remote => true -%>
52
- </li>
46
+ <%= link_to_new_record("Add a new #{human_readable_class}", objects.first.class.name, path_to_new, update_span, parent_class, parent_id) -%>
53
47
  <!-- # list of objects -->
54
48
  <% for object in objects %>
55
49
  <% if parent_class.nil? %>
data/inline_forms.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{inline_forms}
8
- s.version = "0.9.6"
8
+ s.version = "0.9.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ace Suares"]
12
- s.date = %q{2011-04-30}
12
+ s.date = %q{2011-05-25}
13
13
  s.description = %q{Inline Forms aims to ease the setup of forms that provide inline editing. The field list can be specified in the model.}
14
14
  s.email = %q{ace@suares.an}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inline_forms
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 53
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 6
10
- version: 0.9.6
9
+ - 7
10
+ version: 0.9.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ace Suares
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-30 00:00:00 -04:00
18
+ date: 2011-05-25 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency