inline_forms 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -31,23 +31,7 @@ class InlineFormsController < ApplicationController
31
31
  end
32
32
  end
33
33
 
34
- # :show shows one field (attribute) from a record (object). It inludes the link to 'edit'
35
- #
36
- # GET /examples/1?field=name&form_element=text
37
- #
38
- # def show
39
- # @object = @Klass.constantize.find(params[:id])
40
- # @field = params[:field]
41
- # @form_element = params[:form_element]
42
- # if @form_element == "associated"
43
- # @sub_id = params[:sub_id]
44
- # if @sub_id.to_i > 0
45
- # @associated_record_id = @object.send(@field.singularize + "_ids").index(@sub_id.to_i)
46
- # @associated_record = @object.send(@field)[@associated_record_id]
47
- # end
48
- # end
49
- # render :inline => '<%= send("#{@form_element}_show", @object, @field, @values) %>'
50
- # end
34
+
51
35
 
52
36
  # :new prepares a new object, updates the entire list of objects and replaces it with a new
53
37
  # empty form. After pressing OK or Cancel, the list of objects is retrieved in the same way as :index
@@ -119,7 +103,29 @@ class InlineFormsController < ApplicationController
119
103
  format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send("#{@form_element.to_s}_show", @object, @field, @values) %>' }
120
104
  }
121
105
  end
122
-
106
+ end
107
+
108
+ # :show shows one field (attribute) from a record (object). It inludes the link to 'edit'
109
+ #
110
+ # GET /examples/1?field=name&form_element=text
111
+ #
112
+ def show
113
+ @object = @Klass.find(params[:id])
114
+ @field = params[:field]
115
+ @form_element = params[:form_element]
116
+ if @form_element == "associated"
117
+ @sub_id = params[:sub_id]
118
+ if @sub_id.to_i > 0
119
+ @associated_record_id = @object.send(@field.singularize + "_ids").index(@sub_id.to_i)
120
+ @associated_record = @object.send(@field)[@associated_record_id]
121
+ end
122
+ end
123
+ @update_span = params[:update]
124
+ respond_to do |format|
125
+ # found this here: http://www.ruby-forum.com/topic/211467
126
+ format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send("#{@form_element}_show", @object, @field, @values) %>' }
127
+ }
128
+ end
123
129
  end
124
130
 
125
131
  # :destroy is not implemented
@@ -27,27 +27,25 @@ module InlineFormsHelper
27
27
  when :new
28
28
  attributes.each do | name, attribute, form_element, values |
29
29
  #css_class_id = form_element == :associated ? "subform_#{attribute.to_s}_#{object.id}" : "field_#{attribute.to_s}_#{object.id}"
30
- css_class_id = "field_#{attribute.to_s}_#{object.id}"
31
- name_cell = content_tag :td, :valign=>'top' do
32
- content_tag :div, :class=> "field_name field_#{attribute.to_s} form_element_#{form_element.to_s}" do
33
- h(name)
30
+ if not form_element.to_sym == :associated
31
+ css_class_id = "field_#{attribute.to_s}_#{object.id}"
32
+ name_cell = content_tag :td, :valign=>'top' do
33
+ content_tag :div, :class=> "field_name field_#{attribute.to_s} form_element_#{form_element.to_s}" do
34
+ h(name)
35
+ end
34
36
  end
35
- end
36
- value_cell = content_tag :td, :valign=>'top' do
37
- content_tag :div, :class=> "field_value field_#{attribute.to_s} form_element_#{form_element.to_s}" do
38
- content_tag :span, :id => css_class_id do
39
- if not form_element == :associated
37
+ value_cell = content_tag :td, :valign=>'top' do
38
+ content_tag :div, :class=> "field_value field_#{attribute.to_s} form_element_#{form_element.to_s}" do
39
+ content_tag :span, :id => css_class_id do
40
40
  send("#{form_element.to_s}_edit", object, attribute, values)
41
- else
42
- #send("#{form_element.to_s}_show", object, attribute, values)
43
41
  end
44
42
  end
45
43
  end
44
+ out += content_tag :tr, name_cell + value_cell
46
45
  end
47
- out += content_tag :tr, name_cell + value_cell
48
46
  end
49
- return content_tag :table, raw(out), :cellspacing => 0, :cellpadding => 0
50
47
  end
48
+ return content_tag :table, raw(out), :cellspacing => 0, :cellpadding => 0
51
49
  end
52
50
  # display a list of objects
53
51
  def inline_form_display_list(objects, tag=:li)
@@ -71,7 +69,7 @@ module InlineFormsHelper
71
69
  end
72
70
  def dropdown_edit(object, attribute, values)
73
71
  object.send('build_' + attribute.to_s) unless object.send(attribute)
74
- values = object.send(attribute).class.name.constantize.find(:all, :order => 'name ASC')
72
+ values = object.send(attribute).class.name.constantize.find(:all) # TODO bring order!
75
73
  # 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!
76
74
  collection_select( ('_' + object.class.to_s.downcase).to_sym, attribute.to_s.foreign_key.to_sym, values, 'id', 'presentation', :selected => object.send(attribute).id)
77
75
  end
@@ -160,7 +158,7 @@ module InlineFormsHelper
160
158
  end
161
159
  def checklist_edit(object, attribute, values)
162
160
  object.send(attribute).build if object.send(attribute).empty?
163
- values = object.send(attribute).first.class.name.constantize.find(:all, :order => "name ASC")
161
+ values = object.send(attribute).first.class.name.constantize.find(:all) # TODO bring order
164
162
  out = '<div class="edit_form_checklist">'
165
163
  out << '<ul>'
166
164
  values.each do | item |
@@ -188,14 +186,13 @@ module InlineFormsHelper
188
186
  # if it's not a new record (sub_id > 0) then just update the list-element
189
187
  out << '<li>'
190
188
  out << link_to( @associated_record.title,
191
- :url => { :action => 'edit',
192
- :id => object.id,
189
+ send('edit_' + @Klass.to_s.underscore + '_path', object,
193
190
  :field => attribute,
194
191
  :sub_id => @sub_id,
195
192
  :form_element => this_method.reverse.sub(/.*_/,'').reverse,
196
- :values => values },
193
+ :values => values,
194
+ :update => "field_#{attribute.singularize}_#{@sub_id.to_s}" ),
197
195
  :method => :get,
198
- :update => "field_#{attribute.singularize}_#{@sub_id.to_s}",
199
196
  :remote => true )
200
197
  out << '</li>'
201
198
  else
@@ -206,15 +203,14 @@ module InlineFormsHelper
206
203
  object.send(attribute.pluralize).each do |m|
207
204
  out << "<span id='field_#{attribute.singularize}_#{m.id.to_s}'>"
208
205
  out << '<li>'
209
- out << link_to( m.title,
210
- :url => { :action => 'edit',
211
- :id => object.id,
206
+ out << link_to( m.title, send('edit_' + @Klass.to_s.underscore + '_path',
207
+ object,
212
208
  :field => attribute,
213
209
  :sub_id => m.id,
214
210
  :form_element => this_method.sub(/_[a-z]+$/,''),
215
- :values => values },
211
+ :values => values,
212
+ :update => "field_#{attribute.singularize}_#{m.id.to_s}" ),
216
213
  :method => :get,
217
- :update => "field_#{attribute.singularize}_#{m.id.to_s}",
218
214
  :remote => true )
219
215
  out << '</li>'
220
216
  out << '</span>'
@@ -222,23 +218,22 @@ module InlineFormsHelper
222
218
  end
223
219
  # add a 'new' link for creating a new record
224
220
  out << '<li>'
225
- out << link_to( 'new',
226
- :url => { :action => 'edit',
227
- :id => object.id,
221
+ out << link_to( 'new', send('edit_' + @Klass.to_s.underscore + '_path',
222
+ object,
228
223
  :field => attribute,
229
224
  :sub_id => 0,
230
225
  :form_element => this_method.sub(/_[a-z]+$/,''),
231
- :values => values },
226
+ :values => values,
227
+ :update => "list_#{attribute}_#{object.id.to_s}" ),
232
228
  :method => :get,
233
- :update => "list_#{attribute}_#{object.id.to_s}",
234
229
  :remote => true )
235
230
  out << '</li>'
236
231
  out << '</ul>' if @sub_id.nil?
237
232
  end
238
- out
233
+ raw(out)
239
234
  end
240
235
  def associated_edit(object, attribute, values)
241
- # @sub_id is the id of the assoicated record
236
+ # @sub_id is the id of the associated record
242
237
  if @sub_id.to_i > 0
243
238
  # only if @sub_id > 0, means we have a associated record
244
239
  @associated_record_id = object.send(attribute.singularize + "_ids").index(@sub_id.to_i)
@@ -248,9 +243,9 @@ module InlineFormsHelper
248
243
  # but if @sub_id = 0, then we are dealing with a new associated record
249
244
  # in that case, we .new a record, and the update_span is the whole <ul>
250
245
  @associated_record = attribute.singularize.capitalize.constantize.new
251
- @update_span = "list_#{attribute}_#{object.id.to_s}"
246
+ @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
252
247
  end
253
- render :partial => "subform"
248
+ render :partial => "inline_forms/subform"
254
249
  end
255
250
  def associated_update(object, attribute, values)
256
251
  return if object.id.nil?
@@ -262,10 +257,10 @@ module InlineFormsHelper
262
257
  else
263
258
  # create a new associated record
264
259
  @associated_record = object.send(attribute.to_sym).new
265
- @update_span = 'list_#{attribute}_#{object.id.to_s}'
260
+ @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
266
261
  end
267
262
  # process the sub_form fields (attributes). These are declared in the model!
268
- @associated_record.field_list.each do | @subform_description, @subform_field, @subform_element |
263
+ @associated_record.inline_forms_field_list.each do | @subform_description, @subform_field, @subform_element |
269
264
  # have no fear
270
265
  send("#{@subform_element}_update", @associated_record, @subform_field, nil)
271
266
  end
@@ -4,20 +4,23 @@
4
4
  :form_element => @form_element,
5
5
  :values => @values,
6
6
  :sub_id => @sub_id ),
7
- :method => :put,
7
+ :method => :put, # this is going to the update method!
8
8
  :multipart => true,
9
9
  :class => "edit_form",
10
10
  :remote => true do -%>
11
11
  <div class="edit_form_field">
12
12
  <%= send("#{@form_element.to_s}_edit", @object, @field, @values) %>
13
13
  </div>
14
- <%= link_to "nee", send(@Klass.to_s.underscore.pluralize + '_path', :update => @update_span || "field_#{@field}_#{@object.id.to_s}",
15
- :field => @field,
16
- :form_element => @form_element,
17
- :values => @values,
18
- :sub_id => @sub_id ),
19
- :method => :get,
20
- :class => "edit_form_cancel" %>
14
+ <%= link_to( send( @Klass.to_s.underscore + '_path', :update => @update_span || "field_#{@field}_#{@object.id.to_s}",
15
+ :field => @field,
16
+ :form_element => @form_element,
17
+ :values => @values,
18
+ :sub_id => @sub_id ),
19
+ :method => :get, # this is going to the show method!
20
+ :class => "edit_form_cancel",
21
+ :remote => true ) do %>
22
+ <input type="button" name="cancel" value="cancel" />
23
+ <% end %>
21
24
  <%= submit_tag "ok", :class => "edit_form_submit"-%>
22
25
  <div style="clear: both;"></div>
23
26
  <% end -%>
@@ -3,8 +3,10 @@
3
3
  <div class="edit_form_field">
4
4
  <%= inline_form_display(@object, @object.respond_to?(:inline_forms_field_list) ? @object.inline_forms_field_list : [ '', :name, :text ], :new) %>
5
5
  </div>
6
- <%= link_to "nee", send(@Klass.to_s.underscore.pluralize + '_path',:update => @update_span), :remote => true,
7
- :class => "edit_form_cancel" %>
6
+ <%= link_to( send(@Klass.to_s.underscore.pluralize + '_path',:update => @update_span || 'inline_form_list'), :remote => true,
7
+ :class => "edit_form_cancel" ) do %>
8
+ <input type="button" name="cancel" value="cancel" />
9
+ <% end %>
8
10
  <%= submit_tag "ok", :class => "edit_form_submit"-%>
9
11
  <div style="clear: both;"></div>
10
12
  <% end -%>
@@ -1,5 +1,5 @@
1
1
  <table cellpadding="0" cellspacing="0" class="subform">
2
- <% @associated_record.field_list.each do | @subform_description, @subform_field, @subform_element, @values | %>
2
+ <% @associated_record.inline_forms_field_list.each do | @subform_description, @subform_field, @subform_element, @values | %>
3
3
  <tr>
4
4
  <td valign="top">
5
5
  <div class="subform_field-name">
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{inline_forms}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
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"]
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: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ace Suares