inline_forms 1.1.13 → 1.1.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/Gemfile.lock +1 -64
  2. data/{app → lib/app}/assets/images/close.png +0 -0
  3. data/{app → lib/app}/assets/images/glass_plate.gif +0 -0
  4. data/{app → lib/app}/assets/images/trash.png +0 -0
  5. data/{app → lib/app}/assets/images/ui-bg_diagonals-medium_20_d34d17_40x40.png +0 -0
  6. data/{app → lib/app}/assets/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
  7. data/{app → lib/app}/assets/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  8. data/{app → lib/app}/assets/images/ui-bg_gloss-wave_45_817865_500x100.png +0 -0
  9. data/{app → lib/app}/assets/images/ui-bg_gloss-wave_60_fece2f_500x100.png +0 -0
  10. data/{app → lib/app}/assets/images/ui-bg_gloss-wave_70_ffdd57_500x100.png +0 -0
  11. data/{app → lib/app}/assets/images/ui-bg_gloss-wave_90_fff9e5_500x100.png +0 -0
  12. data/{app → lib/app}/assets/images/ui-bg_highlight-soft_100_feeebd_1x100.png +0 -0
  13. data/{app → lib/app}/assets/images/ui-bg_inset-soft_30_ffffff_1x100.png +0 -0
  14. data/{app → lib/app}/assets/images/ui-icons_3d3d3d_256x240.png +0 -0
  15. data/{app → lib/app}/assets/images/ui-icons_bd7b00_256x240.png +0 -0
  16. data/{app → lib/app}/assets/images/ui-icons_d19405_256x240.png +0 -0
  17. data/{app → lib/app}/assets/images/ui-icons_eb990f_256x240.png +0 -0
  18. data/{app → lib/app}/assets/images/ui-icons_ed9f26_256x240.png +0 -0
  19. data/{app → lib/app}/assets/images/ui-icons_fadc7a_256x240.png +0 -0
  20. data/{app → lib/app}/assets/images/ui-icons_ffe180_256x240.png +0 -0
  21. data/{app → lib/app}/assets/javascripts/ckeditor/config.js +0 -0
  22. data/{app → lib/app}/assets/stylesheets/application.css +0 -0
  23. data/{app → lib/app}/assets/stylesheets/devise.css +0 -0
  24. data/{app → lib/app}/assets/stylesheets/inline_forms.css +0 -0
  25. data/{app → lib/app}/assets/stylesheets/jquery-ui-sunny.css +0 -0
  26. data/lib/app/controllers/inline_forms_controller.rb +219 -0
  27. data/{app → lib/app}/helpers/form_elements/check_box.rb +0 -0
  28. data/{app → lib/app}/helpers/form_elements/check_list.rb +0 -0
  29. data/{app → lib/app}/helpers/form_elements/date.rb +0 -0
  30. data/{app → lib/app}/helpers/form_elements/datetime.rb +0 -0
  31. data/{app → lib/app}/helpers/form_elements/dropdown.rb +0 -0
  32. data/{app → lib/app}/helpers/form_elements/dropdown_with_integers.rb +0 -0
  33. data/{app → lib/app}/helpers/form_elements/dropdown_with_values.rb +0 -0
  34. data/{app → lib/app}/helpers/form_elements/file_field.rb +0 -0
  35. data/{app → lib/app}/helpers/form_elements/geo_code_curacao.rb +0 -0
  36. data/{app → lib/app}/helpers/form_elements/image_field.rb +0 -0
  37. data/{app → lib/app}/helpers/form_elements/info.rb +0 -0
  38. data/{app → lib/app}/helpers/form_elements/infoadmin.rb +0 -0
  39. data/{app → lib/app}/helpers/form_elements/question_list.rb +0 -0
  40. data/{app → lib/app}/helpers/form_elements/scale_with_integers.rb +0 -0
  41. data/{app → lib/app}/helpers/form_elements/scale_with_values.rb +0 -0
  42. data/{app → lib/app}/helpers/form_elements/slider_with_values.rb +0 -0
  43. data/{app → lib/app}/helpers/form_elements/text_area.rb +0 -0
  44. data/{app → lib/app}/helpers/form_elements/text_field.rb +0 -0
  45. data/{app → lib/app}/helpers/inline_forms_helper.rb +8 -3
  46. data/{app → lib/app}/models/geo_code_curacao.rb +0 -0
  47. data/{app → lib/app}/views/devise/confirmations/new.html.erb +0 -0
  48. data/{app → lib/app}/views/devise/mailer/confirmation_instructions.html.erb +0 -0
  49. data/{app → lib/app}/views/devise/mailer/reset_password_instructions.html.erb +0 -0
  50. data/{app → lib/app}/views/devise/mailer/unlock_instructions.html.erb +0 -0
  51. data/{app → lib/app}/views/devise/passwords/edit.html.erb +0 -0
  52. data/{app → lib/app}/views/devise/passwords/new.html.erb +0 -0
  53. data/{app → lib/app}/views/devise/registrations/edit.html.erb +0 -0
  54. data/{app → lib/app}/views/devise/registrations/new.html.erb +0 -0
  55. data/{app → lib/app}/views/devise/sessions/new.html.erb +0 -0
  56. data/{app → lib/app}/views/devise/shared/_links.erb +0 -0
  57. data/{app → lib/app}/views/devise/unlocks/new.html.erb +0 -0
  58. data/{app → lib/app}/views/inline_forms/_close.html.erb +0 -0
  59. data/{app → lib/app}/views/inline_forms/_edit.html.erb +0 -0
  60. data/{app → lib/app}/views/inline_forms/_header.html.erb +0 -0
  61. data/{app → lib/app}/views/inline_forms/_list.html.erb +2 -2
  62. data/{app → lib/app}/views/inline_forms/_new.html.erb +0 -0
  63. data/{app → lib/app}/views/inline_forms/_show.html.erb +0 -0
  64. data/{app → lib/app}/views/inline_forms/_show_undo.html.erb +0 -0
  65. data/{app → lib/app}/views/inline_forms/close.js.erb +0 -0
  66. data/{app → lib/app}/views/inline_forms/edit.js.erb +0 -0
  67. data/{app → lib/app}/views/inline_forms/list.js.erb +0 -0
  68. data/{app → lib/app}/views/inline_forms/new.js.erb +0 -0
  69. data/{app → lib/app}/views/inline_forms/show.js.erb +0 -0
  70. data/{app → lib/app}/views/inline_forms/show_element.js.erb +0 -0
  71. data/{app → lib/app}/views/inline_forms/show_undo.js.erb +0 -0
  72. data/{app → lib/app}/views/inline_forms/update.js.erb +0 -0
  73. data/{app → lib/app}/views/layouts/devise.html.erb +0 -0
  74. data/{app → lib/app}/views/layouts/inline_forms.html.erb +0 -0
  75. data/lib/generators/inline_forms/inline_forms_generator.rb +2 -2
  76. data/lib/inline_forms.rb +26 -3
  77. data/lib/inline_forms/version.rb +1 -1
  78. metadata +76 -76
  79. data/app/controllers/inline_forms_controller.rb +0 -221
data/Gemfile.lock CHANGED
@@ -1,23 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- inline_forms (1.0.10)
5
- capistrano
6
- carrierwave
7
- jquery-rails
8
- mysql2
9
- paper_trail
10
- rails (~> 3.1.0)
11
- rake
12
- remotipart (~> 1.0)
13
- tabs_on_rails
4
+ inline_forms (1.1.13)
14
5
 
15
6
  GEM
16
7
  remote: http://rubygems.org/
17
8
  specs:
18
- actionmailer (3.1.1)
19
- actionpack (= 3.1.1)
20
- mail (~> 2.3.0)
21
9
  actionpack (3.1.1)
22
10
  activemodel (= 3.1.1)
23
11
  activesupport (= 3.1.1)
@@ -33,57 +21,20 @@ GEM
33
21
  activesupport (= 3.1.1)
34
22
  builder (~> 3.0.0)
35
23
  i18n (~> 0.6)
36
- activerecord (3.1.1)
37
- activemodel (= 3.1.1)
38
- activesupport (= 3.1.1)
39
- arel (~> 2.2.1)
40
- tzinfo (~> 0.3.29)
41
- activeresource (3.1.1)
42
- activemodel (= 3.1.1)
43
- activesupport (= 3.1.1)
44
24
  activesupport (3.1.1)
45
25
  multi_json (~> 1.0)
46
- arel (2.2.1)
47
26
  builder (3.0.0)
48
- capistrano (2.9.0)
49
- highline
50
- net-scp (>= 1.0.0)
51
- net-sftp (>= 2.0.0)
52
- net-ssh (>= 2.0.14)
53
- net-ssh-gateway (>= 1.1.0)
54
- carrierwave (0.5.7)
55
- activesupport (~> 3.0)
56
27
  diff-lcs (1.1.3)
57
28
  erubis (2.7.0)
58
29
  git (1.2.5)
59
- highline (1.6.2)
60
30
  hike (1.2.1)
61
31
  i18n (0.6.0)
62
32
  jeweler (1.5.2)
63
33
  bundler (~> 1.0.0)
64
34
  git (>= 1.2.5)
65
35
  rake
66
- jquery-rails (1.0.14)
67
- railties (~> 3.0)
68
- thor (~> 0.14)
69
36
  json (1.6.1)
70
- mail (2.3.0)
71
- i18n (>= 0.4.0)
72
- mime-types (~> 1.16)
73
- treetop (~> 1.4.8)
74
- mime-types (1.16)
75
37
  multi_json (1.0.3)
76
- mysql2 (0.3.7)
77
- net-scp (1.0.4)
78
- net-ssh (>= 1.99.1)
79
- net-sftp (2.0.5)
80
- net-ssh (>= 2.0.9)
81
- net-ssh (2.2.1)
82
- net-ssh-gateway (1.1.0)
83
- net-ssh (>= 1.99.1)
84
- paper_trail (2.4.0)
85
- rails (~> 3)
86
- polyglot (0.3.2)
87
38
  rack (1.3.4)
88
39
  rack-cache (1.1)
89
40
  rack (>= 0.4)
@@ -93,14 +44,6 @@ GEM
93
44
  rack
94
45
  rack-test (0.6.1)
95
46
  rack (>= 1.0)
96
- rails (3.1.1)
97
- actionmailer (= 3.1.1)
98
- actionpack (= 3.1.1)
99
- activerecord (= 3.1.1)
100
- activeresource (= 3.1.1)
101
- activesupport (= 3.1.1)
102
- bundler (~> 1.0)
103
- railties (= 3.1.1)
104
47
  railties (3.1.1)
105
48
  actionpack (= 3.1.1)
106
49
  activesupport (= 3.1.1)
@@ -112,7 +55,6 @@ GEM
112
55
  rcov (0.9.10)
113
56
  rdoc (3.10)
114
57
  json (~> 1.4)
115
- remotipart (1.0)
116
58
  rspec (2.6.0)
117
59
  rspec-core (~> 2.6.0)
118
60
  rspec-expectations (~> 2.6.0)
@@ -131,13 +73,8 @@ GEM
131
73
  hike (~> 1.2)
132
74
  rack (~> 1.0)
133
75
  tilt (~> 1.1, != 1.3.0)
134
- tabs_on_rails (2.0.2)
135
76
  thor (0.14.6)
136
77
  tilt (1.3.3)
137
- treetop (1.4.10)
138
- polyglot
139
- polyglot (>= 0.3.1)
140
- tzinfo (0.3.30)
141
78
 
142
79
  PLATFORMS
143
80
  ruby
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,219 @@
1
+ # == Generic controller for the inline_forms plugin.
2
+ # === Usage
3
+ # If you have an Example class, make an ExampleController
4
+ # that is a subclass of InlineFormsController
5
+ # class ExampleController < InlineFormsController
6
+ # end
7
+ # That's it! It'll work. But please read about the InlineForms::InlineFormsGenerator first!
8
+ #
9
+ # You can override the methods in your ExampleController
10
+ # def index
11
+ # @objects=@Klass.all
12
+ # end
13
+ #
14
+ #
15
+ # @objects holds the objects (in this case Examples)
16
+ # and @Klass will be set to Example by the getKlass before filter.
17
+ #
18
+ # === How it works
19
+ # The getKlass before_filter extracts the class and puts it in @Klass
20
+ #
21
+ # @Klass is used in the InlineFormsHelper
22
+ #
23
+ class InlineFormsController < ApplicationController
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
+
46
+ # :index shows a list of all objects from class @Klass, using will_paginate,
47
+ # including a link to 'new', that allows you to create a new record.
48
+ def index
49
+ @update_span = params[:update]
50
+ @parent_class = params[:parent_class]
51
+ @parent_id = params[:parent_id]
52
+ @ul_needed = params[:ul_needed]
53
+ @PER_PAGE = 5 unless @parent_class.nil?
54
+ # if the parent_class is not nill, we are in associated list and we don't search there.
55
+ # also, make sure the Model that you want to do a search on has a :name attribute. TODO
56
+ if @parent_class.nil?
57
+ conditions = [ @Klass.order_by_clause.to_s + " like ?", "%#{params[:search]}%" ]
58
+ else
59
+ conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
60
+ end
61
+ # if we are using cancan, then make sure to select only accessible records
62
+ if cancan_enabled?
63
+ @objects = @Klass.accessible_by(current_ability).order(@Klass.order_by_clause).paginate(
64
+ :page => params[:page],
65
+ :per_page => @PER_PAGE || 12,
66
+ :conditions => conditions )
67
+ else
68
+ @objects = @Klass.order(@Klass.order_by_clause).paginate(
69
+ :page => params[:page],
70
+ :per_page => @PER_PAGE || 12,
71
+ :conditions => conditions )
72
+ end
73
+ respond_to do |format|
74
+ format.html { render 'inline_forms/_list', :layout => 'inline_forms' } unless @Klass.not_accessible_through_html?
75
+ format.js { render :list }
76
+ end
77
+ end
78
+
79
+ # :new prepares a new object, updates the list of objects and replaces it with
80
+ # an empty form. After pressing OK or Cancel, the list of objects is retrieved
81
+ # in the same way as :index
82
+ def new
83
+ @object = @Klass.new
84
+ @update_span = params[:update]
85
+ @parent_class = params[:parent_class]
86
+ unless @parent_class.nil?
87
+ @parent_id = params[:parent_id]
88
+ @object[@parent_class.foreign_key] = @parent_id
89
+ end
90
+ respond_to do |format|
91
+ format.js { }
92
+ end
93
+ end
94
+
95
+ # :edit presents a form to edit one specific attribute from an object
96
+ def edit
97
+ @object = @Klass.find(params[:id])
98
+ @attribute = params[:attribute]
99
+ @form_element = params[:form_element]
100
+ @sub_id = params[:sub_id]
101
+ @update_span = params[:update]
102
+ respond_to do |format|
103
+ format.js { }
104
+ end
105
+ end
106
+
107
+ # :create creates the object made with :new.
108
+ # It then presents the list of objects.
109
+ def create
110
+ object = @Klass.new
111
+ @update_span = params[:update]
112
+ attributes = object.inline_forms_attribute_list
113
+ attributes.each do | attribute, name, form_element |
114
+ send("#{form_element.to_s}_update", object, attribute) unless form_element == :associated
115
+ end
116
+ @parent_class = params[:parent_class]
117
+ @parent_id = params[:parent_id]
118
+ @PER_PAGE = 5 unless @parent_class.nil?
119
+ # for the logic behind the :conditions see the #index method.
120
+ @parent_class.nil? ? conditions = [ @Klass.order_by_clause.to_s + " like ?", "%#{params[:search]}%" ] : conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
121
+ object[@parent_class.foreign_key] = @parent_id unless @parent_class.nil?
122
+ if object.save
123
+ flash.now[:success] = "Successfully created #{object.class.to_s.underscore}."
124
+ if cancan_enabled?
125
+ @objects = @Klass.accessible_by(current_ability).order(@Klass.order_by_clause).paginate :page => params[:page], :per_page => @PER_PAGE || 12, :conditions => conditions
126
+ else
127
+ @objects = @Klass.order(@Klass.order_by_clause).paginate :page => params[:page], :per_page => @PER_PAGE || 12, :conditions => conditions
128
+ end
129
+ respond_to do |format|
130
+ format.js { render :list }
131
+ end
132
+ else
133
+ flash.now[:error] = "Failed to create #{object.class.to_s.underscore}.".html_safe
134
+ object.errors.each do |e|
135
+ flash.now[:error] << '<br />'.html_safe + e[0].to_s + ": " + e[1]
136
+ end
137
+ respond_to do |format|
138
+ @object = object
139
+ format.js { render :new}
140
+ end
141
+ end
142
+ end
143
+
144
+ # :update updates a specific attribute from an object.
145
+ def update
146
+ @object = @Klass.find(params[:id])
147
+ @attribute = params[:attribute]
148
+ @form_element = params[:form_element]
149
+ @sub_id = params[:sub_id]
150
+ @update_span = params[:update]
151
+ send("#{@form_element.to_s}_update", @object, @attribute)
152
+ @object.save
153
+ #puts "Requested #{request.format}"
154
+ respond_to do |format|
155
+ format.js { }
156
+ end
157
+ end
158
+
159
+ # :show shows one attribute (attribute) from a record (object).
160
+ # It includes the link to 'edit'
161
+ def show
162
+ @object = @Klass.find(params[:id])
163
+ @attribute = params[:attribute]
164
+ @form_element = params[:form_element]
165
+ close = params[:close] || false
166
+ if @form_element == "associated"
167
+ @sub_id = params[:sub_id]
168
+ if @sub_id.to_i > 0
169
+ @associated_record_id = @object.send(@attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
170
+ @associated_record = @object.send(@attribute)[@associated_record_id]
171
+ end
172
+ end
173
+ @update_span = params[:update]
174
+ if @attribute.nil?
175
+ respond_to do |format|
176
+ @attributes = @object.inline_forms_attribute_list
177
+ if close
178
+ format.js { render :close }
179
+ else
180
+ format.js { }
181
+ end
182
+ end
183
+ else
184
+ respond_to do |format|
185
+ format.js { render :show_element }
186
+ end
187
+ end
188
+ end
189
+
190
+ # :destroy destroys the record, but also shows an undo link (with paper_trail)
191
+ def destroy
192
+ @update_span = params[:update]
193
+ @object = @Klass.find(params[:id])
194
+ @object.destroy
195
+ respond_to do |format|
196
+ format.js { render :show_undo }
197
+ end
198
+ end
199
+
200
+ # :revert works like undo.
201
+ # Thanks Ryan Bates: http://railscasts.com/episodes/255-undo-with-paper-trail
202
+ def revert
203
+ @update_span = params[:update]
204
+ @version = Version.find(params[:id])
205
+ @version.reify.save!
206
+ @object = @Klass.find(@version.item_id)
207
+ respond_to do |format|
208
+ format.js { render :close }
209
+ end
210
+ end
211
+
212
+ private
213
+ # Get the class from the controller name.
214
+ # CountryController < InlineFormsController, so what class are we?
215
+ def getKlass #:doc:
216
+ @Klass = self.controller_name.classify.constantize
217
+ end
218
+
219
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -39,6 +39,7 @@ module InlineFormsHelper
39
39
  end
40
40
  end
41
41
 
42
+ # undo link
42
43
  def link_to_undo_destroy(msg, object, update_span )
43
44
  link_to("undo", revert_version_path(object.versions.scoped.last), :method => :post)
44
45
  end
@@ -64,6 +65,7 @@ module InlineFormsHelper
64
65
  end
65
66
  end
66
67
 
68
+ # link to new record
67
69
  def link_to_new_record(text, model, path_to_new, update_span, parent_class, parent_id)
68
70
  out = ""
69
71
  out << "<li class='new_record_link'>"
@@ -117,14 +119,17 @@ module InlineFormsHelper
117
119
 
118
120
  end
119
121
 
120
- # make the current method and the calling method available
121
- # http://www.ruby-forum.com/topic/75258
122
- # supposedly, this is fixed in 1.9
123
122
  module Kernel
124
123
  private
124
+ # make the current method available
125
+ # http://www.ruby-forum.com/topic/75258
126
+ # supposedly, this is fixed in 1.9
125
127
  def this_method
126
128
  caller[0] =~ /`([^']*)'/ and $1
127
129
  end
130
+ # make the calling method available
131
+ # http://www.ruby-forum.com/topic/75258
132
+ # supposedly, this is fixed in 1.9
128
133
  def calling_method
129
134
  caller[1] =~ /`([^']*)'/ and $1
130
135
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -52,7 +52,7 @@ they are @object. We need this magic here to rewrite all the @variables to varia
52
52
 
53
53
  <% end %>
54
54
 
55
- <%= "<ul id=\"#{update_span}\" class=\"inline_forms_list\">" if ul_needed -%>
55
+ <%= raw "<ul id=\"#{update_span}\" class=\"inline_forms_list\">" if ul_needed -%>
56
56
  <!-- # link to new -->
57
57
  <%= link_to_new_record("Add a new #{human_readable_class}", model_name, path_to_new, update_span, parent_class, parent_id) -%>
58
58
  <!-- # list of objects -->
@@ -79,4 +79,4 @@ they are @object. We need this magic here to rewrite all the @variables to varia
79
79
  <%= will_paginate objects, :ajax => true, :params => {:controller => attribute, :action => :index, :id => nil, :parent_class => parent_class, :parent_id => parent_id, :update => "#{parent_class.to_s.underscore}_#{parent_id}_#{attribute}", :ul_needed => true } -%>
80
80
  <% end %>
81
81
  </li>
82
- <%= "</ul>" if ul_needed -%>
82
+ <%= raw "</ul>" if ul_needed -%>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,7 +6,7 @@ module InlineForms
6
6
  #
7
7
  # Read more about the possible types below.
8
8
  #
9
- # = Overriding Rails::Generators::GeneratedAttribute
9
+ # == Overriding Rails::Generators::GeneratedAttribute
10
10
  # When using a generator in the form
11
11
  # rails g example_generator Modelname attribute:type attribute:type ...
12
12
  # an array with attributes and types is created for use in the generator.
@@ -15,7 +15,7 @@ module InlineForms
15
15
  # This attribute_type maps column types to form attribute helpers like text_field.
16
16
  # We override it here to make our own.
17
17
  #
18
- class InlineFormsGenerator < Rails::Generators::NamedBase
18
+ class Generator < Rails::Generators::NamedBase
19
19
  Rails::Generators::GeneratedAttribute.class_eval do #:doc:
20
20
  # Deducts the column_type for migrations from the type.
21
21
  #
data/lib/inline_forms.rb CHANGED
@@ -130,11 +130,34 @@ module InlineForms
130
130
  :habtm => :no_migration,
131
131
  }
132
132
 
133
+ # load form elements. Each element goes into a separate file
134
+ # and defines a _show, _edit and _update method.
135
+ #
136
+
133
137
  # Declare as a Rails::Engine, see http://www.ruby-forum.com/topic/211017#927932
134
138
  class Engine < Rails::Engine
135
- # initializer 'inline_forms.helper' do |app|
136
- # ActionView::Base.send :include, InlineFormsHelper
137
- # end
139
+ paths["app"] << "lib/app"
140
+ paths["app/controllers"] << "lib/app/controllers"
141
+ paths["app/helpers"] << "lib/app/helpers"
142
+ paths["app/models"] << "lib/app/models"
143
+ paths["app/views"] << "lib/app/views"
144
+ paths["app/assets"] << "lib/app/assets"
138
145
  end
146
+
139
147
  end
140
148
 
149
+ # make the current method and the calling method available
150
+ # http://www.ruby-forum.com/topic/75258
151
+ # supposedly, this is fixed in 1.9
152
+ module Kernel
153
+ private
154
+ def this_method
155
+ caller[0] =~ /`([^']*)'/ and $1
156
+ end
157
+ def calling_method
158
+ caller[1] =~ /`([^']*)'/ and $1
159
+ end
160
+ end
161
+
162
+
163
+
@@ -1,3 +1,3 @@
1
1
  module InlineForms
2
- VERSION = "1.1.13"
2
+ VERSION = "1.1.15"
3
3
  end
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: 9
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 13
10
- version: 1.1.13
9
+ - 15
10
+ version: 1.1.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ace Suares
@@ -108,81 +108,81 @@ files:
108
108
  - LICENSE.txt
109
109
  - README.rdoc
110
110
  - Rakefile
111
- - app/assets/images/close.png
112
- - app/assets/images/glass_plate.gif
113
- - app/assets/images/trash.png
114
- - app/assets/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
115
- - app/assets/images/ui-bg_flat_30_cccccc_40x100.png
116
- - app/assets/images/ui-bg_flat_50_5c5c5c_40x100.png
117
- - app/assets/images/ui-bg_gloss-wave_45_817865_500x100.png
118
- - app/assets/images/ui-bg_gloss-wave_60_fece2f_500x100.png
119
- - app/assets/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
120
- - app/assets/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
121
- - app/assets/images/ui-bg_highlight-soft_100_feeebd_1x100.png
122
- - app/assets/images/ui-bg_inset-soft_30_ffffff_1x100.png
123
- - app/assets/images/ui-icons_3d3d3d_256x240.png
124
- - app/assets/images/ui-icons_bd7b00_256x240.png
125
- - app/assets/images/ui-icons_d19405_256x240.png
126
- - app/assets/images/ui-icons_eb990f_256x240.png
127
- - app/assets/images/ui-icons_ed9f26_256x240.png
128
- - app/assets/images/ui-icons_fadc7a_256x240.png
129
- - app/assets/images/ui-icons_ffe180_256x240.png
130
- - app/assets/javascripts/ckeditor/config.js
131
- - app/assets/stylesheets/application.css
132
- - app/assets/stylesheets/devise.css
133
- - app/assets/stylesheets/inline_forms.css
134
- - app/assets/stylesheets/jquery-ui-sunny.css
135
- - app/controllers/inline_forms_controller.rb
136
- - app/helpers/form_elements/check_box.rb
137
- - app/helpers/form_elements/check_list.rb
138
- - app/helpers/form_elements/date.rb
139
- - app/helpers/form_elements/datetime.rb
140
- - app/helpers/form_elements/dropdown.rb
141
- - app/helpers/form_elements/dropdown_with_integers.rb
142
- - app/helpers/form_elements/dropdown_with_values.rb
143
- - app/helpers/form_elements/file_field.rb
144
- - app/helpers/form_elements/geo_code_curacao.rb
145
- - app/helpers/form_elements/image_field.rb
146
- - app/helpers/form_elements/info.rb
147
- - app/helpers/form_elements/infoadmin.rb
148
- - app/helpers/form_elements/question_list.rb
149
- - app/helpers/form_elements/scale_with_integers.rb
150
- - app/helpers/form_elements/scale_with_values.rb
151
- - app/helpers/form_elements/slider_with_values.rb
152
- - app/helpers/form_elements/text_area.rb
153
- - app/helpers/form_elements/text_field.rb
154
- - app/helpers/inline_forms_helper.rb
155
- - app/models/geo_code_curacao.rb
156
- - app/views/devise/confirmations/new.html.erb
157
- - app/views/devise/mailer/confirmation_instructions.html.erb
158
- - app/views/devise/mailer/reset_password_instructions.html.erb
159
- - app/views/devise/mailer/unlock_instructions.html.erb
160
- - app/views/devise/passwords/edit.html.erb
161
- - app/views/devise/passwords/new.html.erb
162
- - app/views/devise/registrations/edit.html.erb
163
- - app/views/devise/registrations/new.html.erb
164
- - app/views/devise/sessions/new.html.erb
165
- - app/views/devise/shared/_links.erb
166
- - app/views/devise/unlocks/new.html.erb
167
- - app/views/inline_forms/_close.html.erb
168
- - app/views/inline_forms/_edit.html.erb
169
- - app/views/inline_forms/_header.html.erb
170
- - app/views/inline_forms/_list.html.erb
171
- - app/views/inline_forms/_new.html.erb
172
- - app/views/inline_forms/_show.html.erb
173
- - app/views/inline_forms/_show_undo.html.erb
174
- - app/views/inline_forms/close.js.erb
175
- - app/views/inline_forms/edit.js.erb
176
- - app/views/inline_forms/list.js.erb
177
- - app/views/inline_forms/new.js.erb
178
- - app/views/inline_forms/show.js.erb
179
- - app/views/inline_forms/show_element.js.erb
180
- - app/views/inline_forms/show_undo.js.erb
181
- - app/views/inline_forms/update.js.erb
182
- - app/views/layouts/devise.html.erb
183
- - app/views/layouts/inline_forms.html.erb
184
111
  - bin/inline_forms
185
112
  - inline_forms.gemspec
113
+ - lib/app/assets/images/close.png
114
+ - lib/app/assets/images/glass_plate.gif
115
+ - lib/app/assets/images/trash.png
116
+ - lib/app/assets/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
117
+ - lib/app/assets/images/ui-bg_flat_30_cccccc_40x100.png
118
+ - lib/app/assets/images/ui-bg_flat_50_5c5c5c_40x100.png
119
+ - lib/app/assets/images/ui-bg_gloss-wave_45_817865_500x100.png
120
+ - lib/app/assets/images/ui-bg_gloss-wave_60_fece2f_500x100.png
121
+ - lib/app/assets/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
122
+ - lib/app/assets/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
123
+ - lib/app/assets/images/ui-bg_highlight-soft_100_feeebd_1x100.png
124
+ - lib/app/assets/images/ui-bg_inset-soft_30_ffffff_1x100.png
125
+ - lib/app/assets/images/ui-icons_3d3d3d_256x240.png
126
+ - lib/app/assets/images/ui-icons_bd7b00_256x240.png
127
+ - lib/app/assets/images/ui-icons_d19405_256x240.png
128
+ - lib/app/assets/images/ui-icons_eb990f_256x240.png
129
+ - lib/app/assets/images/ui-icons_ed9f26_256x240.png
130
+ - lib/app/assets/images/ui-icons_fadc7a_256x240.png
131
+ - lib/app/assets/images/ui-icons_ffe180_256x240.png
132
+ - lib/app/assets/javascripts/ckeditor/config.js
133
+ - lib/app/assets/stylesheets/application.css
134
+ - lib/app/assets/stylesheets/devise.css
135
+ - lib/app/assets/stylesheets/inline_forms.css
136
+ - lib/app/assets/stylesheets/jquery-ui-sunny.css
137
+ - lib/app/controllers/inline_forms_controller.rb
138
+ - lib/app/helpers/form_elements/check_box.rb
139
+ - lib/app/helpers/form_elements/check_list.rb
140
+ - lib/app/helpers/form_elements/date.rb
141
+ - lib/app/helpers/form_elements/datetime.rb
142
+ - lib/app/helpers/form_elements/dropdown.rb
143
+ - lib/app/helpers/form_elements/dropdown_with_integers.rb
144
+ - lib/app/helpers/form_elements/dropdown_with_values.rb
145
+ - lib/app/helpers/form_elements/file_field.rb
146
+ - lib/app/helpers/form_elements/geo_code_curacao.rb
147
+ - lib/app/helpers/form_elements/image_field.rb
148
+ - lib/app/helpers/form_elements/info.rb
149
+ - lib/app/helpers/form_elements/infoadmin.rb
150
+ - lib/app/helpers/form_elements/question_list.rb
151
+ - lib/app/helpers/form_elements/scale_with_integers.rb
152
+ - lib/app/helpers/form_elements/scale_with_values.rb
153
+ - lib/app/helpers/form_elements/slider_with_values.rb
154
+ - lib/app/helpers/form_elements/text_area.rb
155
+ - lib/app/helpers/form_elements/text_field.rb
156
+ - lib/app/helpers/inline_forms_helper.rb
157
+ - lib/app/models/geo_code_curacao.rb
158
+ - lib/app/views/devise/confirmations/new.html.erb
159
+ - lib/app/views/devise/mailer/confirmation_instructions.html.erb
160
+ - lib/app/views/devise/mailer/reset_password_instructions.html.erb
161
+ - lib/app/views/devise/mailer/unlock_instructions.html.erb
162
+ - lib/app/views/devise/passwords/edit.html.erb
163
+ - lib/app/views/devise/passwords/new.html.erb
164
+ - lib/app/views/devise/registrations/edit.html.erb
165
+ - lib/app/views/devise/registrations/new.html.erb
166
+ - lib/app/views/devise/sessions/new.html.erb
167
+ - lib/app/views/devise/shared/_links.erb
168
+ - lib/app/views/devise/unlocks/new.html.erb
169
+ - lib/app/views/inline_forms/_close.html.erb
170
+ - lib/app/views/inline_forms/_edit.html.erb
171
+ - lib/app/views/inline_forms/_header.html.erb
172
+ - lib/app/views/inline_forms/_list.html.erb
173
+ - lib/app/views/inline_forms/_new.html.erb
174
+ - lib/app/views/inline_forms/_show.html.erb
175
+ - lib/app/views/inline_forms/_show_undo.html.erb
176
+ - lib/app/views/inline_forms/close.js.erb
177
+ - lib/app/views/inline_forms/edit.js.erb
178
+ - lib/app/views/inline_forms/list.js.erb
179
+ - lib/app/views/inline_forms/new.js.erb
180
+ - lib/app/views/inline_forms/show.js.erb
181
+ - lib/app/views/inline_forms/show_element.js.erb
182
+ - lib/app/views/inline_forms/show_undo.js.erb
183
+ - lib/app/views/inline_forms/update.js.erb
184
+ - lib/app/views/layouts/devise.html.erb
185
+ - lib/app/views/layouts/inline_forms.html.erb
186
186
  - lib/generators/inline_forms/USAGE
187
187
  - lib/generators/inline_forms/inline_forms_generator.rb
188
188
  - lib/generators/inline_forms/templates/_inline_forms_tabs.html.erb
@@ -1,221 +0,0 @@
1
- # == Generic controller for the inline_forms plugin.
2
- # === Usage
3
- # If you have an Example class, make an ExampleController
4
- # that is a subclass of InlineFormsController
5
- # class ExampleController < InlineFormsController
6
- # end
7
- # That's it! It'll work. But please read about the InlineForms::InlineFormsGenerator first!
8
- #
9
- # You can override the methods in your ExampleController
10
- # def index
11
- # @objects=@Klass.all
12
- # end
13
- #
14
- #
15
- # @objects holds the objects (in this case Examples)
16
- # and @Klass will be set to Example by the getKlass before filter.
17
- #
18
- # === How it works
19
- # The getKlass before_filter extracts the class and puts it in @Klass
20
- #
21
- # @Klass is used in the InlineFormsHelper
22
- #
23
- class InlineFormsController < ApplicationController
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
-
46
- include InlineFormsHelper
47
-
48
- # :index shows a list of all objects from class @Klass, using will_paginate,
49
- # including a link to 'new', that allows you to create a new record.
50
- def index
51
- @update_span = params[:update]
52
- @parent_class = params[:parent_class]
53
- @parent_id = params[:parent_id]
54
- @ul_needed = params[:ul_needed]
55
- @PER_PAGE = 5 unless @parent_class.nil?
56
- # if the parent_class is not nill, we are in associated list and we don't search there.
57
- # also, make sure the Model that you want to do a search on has a :name attribute. TODO
58
- if @parent_class.nil?
59
- conditions = [ @Klass.order_by_clause.to_s + " like ?", "%#{params[:search]}%" ]
60
- else
61
- conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
62
- end
63
- # if we are using cancan, then make sure to select only accessible records
64
- if cancan_enabled?
65
- @objects = @Klass.accessible_by(current_ability).order(@Klass.order_by_clause).paginate(
66
- :page => params[:page],
67
- :per_page => @PER_PAGE || 12,
68
- :conditions => conditions )
69
- else
70
- @objects = @Klass.order(@Klass.order_by_clause).paginate(
71
- :page => params[:page],
72
- :per_page => @PER_PAGE || 12,
73
- :conditions => conditions )
74
- end
75
- respond_to do |format|
76
- format.html { render 'inline_forms/_list', :layout => 'inline_forms' } unless @Klass.not_accessible_through_html?
77
- format.js { render :list }
78
- end
79
- end
80
-
81
- # :new prepares a new object, updates the list of objects and replaces it with
82
- # an empty form. After pressing OK or Cancel, the list of objects is retrieved
83
- # in the same way as :index
84
- def new
85
- @object = @Klass.new
86
- @update_span = params[:update]
87
- @parent_class = params[:parent_class]
88
- unless @parent_class.nil?
89
- @parent_id = params[:parent_id]
90
- @object[@parent_class.foreign_key] = @parent_id
91
- end
92
- respond_to do |format|
93
- format.js { }
94
- end
95
- end
96
-
97
- # :edit presents a form to edit one specific attribute from an object
98
- def edit
99
- @object = @Klass.find(params[:id])
100
- @attribute = params[:attribute]
101
- @form_element = params[:form_element]
102
- @sub_id = params[:sub_id]
103
- @update_span = params[:update]
104
- respond_to do |format|
105
- format.js { }
106
- end
107
- end
108
-
109
- # :create creates the object made with :new.
110
- # It then presents the list of objects.
111
- def create
112
- object = @Klass.new
113
- @update_span = params[:update]
114
- attributes = object.inline_forms_attribute_list
115
- attributes.each do | attribute, name, form_element |
116
- send("#{form_element.to_s}_update", object, attribute) unless form_element == :associated
117
- end
118
- @parent_class = params[:parent_class]
119
- @parent_id = params[:parent_id]
120
- @PER_PAGE = 5 unless @parent_class.nil?
121
- # for the logic behind the :conditions see the #index method.
122
- @parent_class.nil? ? conditions = [ @Klass.order_by_clause.to_s + " like ?", "%#{params[:search]}%" ] : conditions = [ "#{@parent_class.foreign_key} = ?", @parent_id ]
123
- object[@parent_class.foreign_key] = @parent_id unless @parent_class.nil?
124
- if object.save
125
- flash.now[:success] = "Successfully created #{object.class.to_s.underscore}."
126
- if cancan_enabled?
127
- @objects = @Klass.accessible_by(current_ability).order(@Klass.order_by_clause).paginate :page => params[:page], :per_page => @PER_PAGE || 12, :conditions => conditions
128
- else
129
- @objects = @Klass.order(@Klass.order_by_clause).paginate :page => params[:page], :per_page => @PER_PAGE || 12, :conditions => conditions
130
- end
131
- respond_to do |format|
132
- format.js { render :list }
133
- end
134
- else
135
- flash.now[:error] = "Failed to create #{object.class.to_s.underscore}.".html_safe
136
- object.errors.each do |e|
137
- flash.now[:error] << '<br />'.html_safe + e[0].to_s + ": " + e[1]
138
- end
139
- respond_to do |format|
140
- @object = object
141
- format.js { render :new}
142
- end
143
- end
144
- end
145
-
146
- # :update updates a specific attribute from an object.
147
- def update
148
- @object = @Klass.find(params[:id])
149
- @attribute = params[:attribute]
150
- @form_element = params[:form_element]
151
- @sub_id = params[:sub_id]
152
- @update_span = params[:update]
153
- send("#{@form_element.to_s}_update", @object, @attribute)
154
- @object.save
155
- #puts "Requested #{request.format}"
156
- respond_to do |format|
157
- format.js { }
158
- end
159
- end
160
-
161
- # :show shows one attribute (attribute) from a record (object).
162
- # It includes the link to 'edit'
163
- def show
164
- @object = @Klass.find(params[:id])
165
- @attribute = params[:attribute]
166
- @form_element = params[:form_element]
167
- close = params[:close] || false
168
- if @form_element == "associated"
169
- @sub_id = params[:sub_id]
170
- if @sub_id.to_i > 0
171
- @associated_record_id = @object.send(@attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
172
- @associated_record = @object.send(@attribute)[@associated_record_id]
173
- end
174
- end
175
- @update_span = params[:update]
176
- if @attribute.nil?
177
- respond_to do |format|
178
- @attributes = @object.inline_forms_attribute_list
179
- if close
180
- format.js { render :close }
181
- else
182
- format.js { }
183
- end
184
- end
185
- else
186
- respond_to do |format|
187
- format.js { render :show_element }
188
- end
189
- end
190
- end
191
-
192
- # :destroy destroys the record, but also shows an undo link (with paper_trail)
193
- def destroy
194
- @update_span = params[:update]
195
- @object = @Klass.find(params[:id])
196
- @object.destroy
197
- respond_to do |format|
198
- format.js { render :show_undo }
199
- end
200
- end
201
-
202
- # :revert works like undo.
203
- # Thanks Ryan Bates: http://railscasts.com/episodes/255-undo-with-paper-trail
204
- def revert
205
- @update_span = params[:update]
206
- @version = Version.find(params[:id])
207
- @version.reify.save!
208
- @object = @Klass.find(@version.item_id)
209
- respond_to do |format|
210
- format.js { render :close }
211
- end
212
- end
213
-
214
- private
215
- # Get the class from the controller name.
216
- # CountryController < InlineFormsController, so what class are we?
217
- def getKlass #:doc:
218
- @Klass = self.controller_name.classify.constantize
219
- end
220
-
221
- end