inline_forms 0.2.4 → 0.2.6

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.2.4
1
+ 0.2.6
@@ -16,7 +16,7 @@ class InlineFormsController < ApplicationController
16
16
  # if the request is an XhttpRequest. There is not much use permitting the actions outside of
17
17
  # the XhttpRequest context (except action => :index). Of course, this is not a security measure.
18
18
  before_filter :getKlass
19
- before_filter :must_be_xhr_request, :except => :index
19
+ #before_filter :must_be_xhr_request, :except => :index
20
20
  include InlineFormsHelper # this might also be included in you application_controller with helper :all but it's not needed
21
21
  layout false
22
22
  # :index shows a list of all objects from class Klass, with all attribute values linked to the 'edit' action.
@@ -26,10 +26,15 @@ class InlineFormsController < ApplicationController
26
26
  # GET /examples
27
27
  #
28
28
  def index
29
- # nolayout = params[:layout] == 'false' || false
30
29
  @objects = @Klass.all
31
- # render( :layout => nolayout || 'inline_forms' )
32
- render 'inline_forms/inline_forms'
30
+ update_span = params[:update]
31
+ respond_to do |format|
32
+ # found this here: http://www.ruby-forum.com/topic/211467
33
+ format.html { render 'inline_forms/index', :layout => 'inline_forms' }
34
+ format.js { render(:update) {|page| page.replace_html update_span, :partial => 'inline_forms/index' }
35
+ }
36
+ end
37
+
33
38
  end
34
39
 
35
40
  # :show shows one field (attribute) from a record (object). It inludes the link to 'edit'
@@ -55,7 +60,13 @@ render 'inline_forms/inline_forms'
55
60
  #
56
61
  # GET /examples/new
57
62
  def new
58
- @object = @Klass.constantize.new
63
+ @object = @Klass.new
64
+ @update_span = params[:update]
65
+ respond_to do |format|
66
+ # found this here: http://www.ruby-forum.com/topic/211467
67
+ format.js { render(:update) {|page| page.replace_html @update_span, :partial => 'inline_forms/new'}
68
+ }
69
+ end
59
70
  end
60
71
 
61
72
  # :edit presents a form to edit one specific field from an object
@@ -75,58 +86,62 @@ render 'inline_forms/inline_forms'
75
86
  # POST /examples
76
87
  #
77
88
  def create
78
- object = @Klass.constantize.new
79
- attributes = object.respond_to?(:field_list) ? object.field_list : [ '', :name, :text ] # sensible default
89
+ object = @Klass.new
90
+ @update_span = params[:update]
91
+ attributes = object.respond_to?(:inline_forms_field_list) ? object.inline_forms_field_list : [ '', :name, :text ] # sensible default
80
92
  attributes = [ attributes ] if not attributes[0].is_a?(Array) # make sure we have an array of arrays
81
93
  attributes.each do | name, attribute, form_element, values |
82
94
  send("#{form_element.to_s}_update", object, attribute, values)
83
95
  end
84
96
  object.save
85
- @objects = @Klass.constantize.all
86
- render( :action => :index )
87
- end
88
-
89
- # :update updates a specific field from an object.
90
- #
91
- # PUT /examples/1
92
- #
93
- def update
94
- @object = @Klass.constantize.find(params[:id])
95
- @field = params[:field]
96
- @form_element = params[:form_element]
97
- @values = params[:values]
98
- @sub_id = params[:sub_id]
99
- send("#{@form_element.to_s}_update", @object, @field, @values)
100
- @object.save
101
- render :inline => '<%= send("#{@form_element.to_s}_show", @object, @field, @values) %>'
97
+ @objects = @Klass.all
98
+ respond_to do |format|
99
+ # found this here: http://www.ruby-forum.com/topic/211467
100
+ format.js { render(:update) {|page| page.replace_html @update_span, :partial => 'inline_forms/index'}
101
+ }
102
+ end
102
103
  end
104
+ # :update updates a specific field from an object.
105
+ #
106
+ # PUT /examples/1
107
+ #
108
+ def update
109
+ @object = @Klass.constantize.find(params[:id])
110
+ @field = params[:field]
111
+ @form_element = params[:form_element]
112
+ @values = params[:values]
113
+ @sub_id = params[:sub_id]
114
+ send("#{@form_element.to_s}_update", @object, @field, @values)
115
+ @object.save
116
+ render :inline => '<%= send("#{@form_element.to_s}_show", @object, @field, @values) %>'
117
+ end
103
118
 
104
- # :destroy is not implemented
105
- # TODO implement a destroy method
106
- #
107
- # DELETE /examples/1
108
- #
109
- def destroy
110
- # @@Klass.constantize = @Klass.constantize.find(params[:id])
111
- # @@Klass.constantize.destroy
112
- redirect_to(@Klass.constantizes_url)
113
- end
119
+ # :destroy is not implemented
120
+ # TODO implement a destroy method
121
+ #
122
+ # DELETE /examples/1
123
+ #
124
+ def destroy
125
+ # @@Klass.constantize = @Klass.constantize.find(params[:id])
126
+ # @@Klass.constantize.destroy
127
+ redirect_to(@Klass.constantizes_url)
128
+ end
114
129
 
115
- private
116
- # If it's not an XhttpRequest, redirect to the index page for this controller.
117
- #
118
- # Used in before_filter as a way to limit access to all actions (except :index)
119
- def must_be_xhr_request #:doc:
120
- redirect_to "/#{@Klass_pluralized}" if not request.xhr?
121
- end
130
+ private
131
+ # If it's not an XhttpRequest, redirect to the index page for this controller.
132
+ #
133
+ # Used in before_filter as a way to limit access to all actions (except :index)
134
+ def must_be_xhr_request #:doc:
135
+ redirect_to "/#{@Klass_pluralized}" if not request.xhr?
136
+ end
122
137
 
123
- # Get the class
124
- # Used in before_filter
125
- def getKlass #:doc:
126
- @Klass = self.controller_name.classify.constantize
127
- #request.request_uri.split(/[\/?]/)[1].classify
128
- #@Klass_constantized = @Klass.constantize
129
- #@Klass_underscored = @Klass.underscore
130
- #@Klass_pluralized = @Klass_underscored.pluralize
138
+ # Get the class
139
+ # Used in before_filter
140
+ def getKlass #:doc:
141
+ @Klass = self.controller_name.classify.constantize
142
+ #request.request_uri.split(/[\/?]/)[1].classify
143
+ #@Klass_constantized = @Klass.constantize
144
+ #@Klass_underscored = @Klass.underscore
145
+ #@Klass_pluralized = @Klass_underscored.pluralize
146
+ end
131
147
  end
132
- end
@@ -1,4 +1,3 @@
1
- puts 'inline forms helper loaded'
2
1
  module InlineFormsHelper
3
2
  # display the forms from an array of attributes
4
3
  def inline_form_display(object, attributes, action=:show)
@@ -22,8 +21,9 @@ module InlineFormsHelper
22
21
  end
23
22
  end
24
23
  out += content_tag :tr, name_cell + value_cell
24
+ out += "\n"
25
25
  end
26
- return content_tag :table, out, :cellspacing => 0, :cellpadding => 0
26
+ return content_tag :table, raw(out), :cellspacing => 0, :cellpadding => 0
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}"
@@ -46,7 +46,7 @@ module InlineFormsHelper
46
46
  end
47
47
  out += content_tag :tr, name_cell + value_cell
48
48
  end
49
- return content_tag :table, out, :cellspacing => 0, :cellpadding => 0
49
+ return content_tag :table, raw(out), :cellspacing => 0, :cellpadding => 0
50
50
  end
51
51
  end
52
52
  # display a list of objects
@@ -54,22 +54,14 @@ module InlineFormsHelper
54
54
  t = ''
55
55
  objects.each do |object|
56
56
  t += content_tag tag do
57
- inline_form_display object, object.respond_to?(:field_list) ? object.field_list : [ '', :name, :text ]
57
+ inline_form_display object, object.respond_to?(:inline_forms_field_list) ? object.inline_forms_field_list : [ '', :name, :text ]
58
58
  end
59
59
  end
60
- return t
60
+ return raw(t)
61
61
  end
62
62
  # link for new item
63
- def inline_form_new_record(attribute, form_element, text='new', update_span='inline_form_list')
64
- link_to_remote( text,
65
- :url => {
66
- :action => :new,
67
- :controller => @Klass_pluralized,
68
- :field => attribute,
69
- :form_element => form_element,
70
- :update_span => update_span },
71
- :method => :get,
72
- :update => update_span )
63
+ def inline_form_new_record(attribute, form_element, text='neeeeew', update_span='inline_form_list')
64
+ link_to text, new_valid_table_path(:update => update_span), :remote => true
73
65
  end
74
66
 
75
67
  # dropdown
@@ -195,7 +187,7 @@ module InlineFormsHelper
195
187
  if @sub_id && @sub_id.to_i > 0
196
188
  # if it's not a new record (sub_id > 0) then just update the list-element
197
189
  out << '<li>'
198
- out << link_to_remote( @associated_record.title,
190
+ out << link_to( @associated_record.title,
199
191
  :url => { :action => 'edit',
200
192
  :id => object.id,
201
193
  :field => attribute,
@@ -203,7 +195,8 @@ module InlineFormsHelper
203
195
  :form_element => this_method.reverse.sub(/.*_/,'').reverse,
204
196
  :values => values },
205
197
  :method => :get,
206
- :update => "field_#{attribute.singularize}_#{@sub_id.to_s}" )
198
+ :update => "field_#{attribute.singularize}_#{@sub_id.to_s}",
199
+ :remote => true )
207
200
  out << '</li>'
208
201
  else
209
202
  # if it's a new record (sub_id == 0) then update the whole <ul> and redraw all list-elements
@@ -213,7 +206,7 @@ module InlineFormsHelper
213
206
  object.send(attribute.pluralize).each do |m|
214
207
  out << "<span id='field_#{attribute.singularize}_#{m.id.to_s}'>"
215
208
  out << '<li>'
216
- out << link_to_remote( m.title,
209
+ out << link_to( m.title,
217
210
  :url => { :action => 'edit',
218
211
  :id => object.id,
219
212
  :field => attribute,
@@ -221,14 +214,15 @@ module InlineFormsHelper
221
214
  :form_element => this_method.sub(/_[a-z]+$/,''),
222
215
  :values => values },
223
216
  :method => :get,
224
- :update => "field_#{attribute.singularize}_#{m.id.to_s}" )
217
+ :update => "field_#{attribute.singularize}_#{m.id.to_s}",
218
+ :remote => true )
225
219
  out << '</li>'
226
220
  out << '</span>'
227
221
  end
228
222
  end
229
223
  # add a 'new' link for creating a new record
230
224
  out << '<li>'
231
- out << link_to_remote( 'new',
225
+ out << link_to( 'new',
232
226
  :url => { :action => 'edit',
233
227
  :id => object.id,
234
228
  :field => attribute,
@@ -236,7 +230,8 @@ module InlineFormsHelper
236
230
  :form_element => this_method.sub(/_[a-z]+$/,''),
237
231
  :values => values },
238
232
  :method => :get,
239
- :update => "list_#{attribute}_#{object.id.to_s}" )
233
+ :update => "list_#{attribute}_#{object.id.to_s}",
234
+ :remote => true )
240
235
  out << '</li>'
241
236
  out << '</ul>' if @sub_id.nil?
242
237
  end
@@ -294,23 +289,22 @@ module InlineFormsHelper
294
289
  private
295
290
 
296
291
  # link_to_inline_edit
297
- # Directly call Erb::Util.h because we sometimes call this from the controller!
298
- # same with link_to_remote. We are using the @template stuff.
299
292
  def link_to_inline_edit(object, attribute, attribute_value, values)
300
- #needed for h() and link_to_remote()
301
293
  attribute_value = h(attribute_value)
302
294
  spaces = attribute_value.length > 40 ? 0 : 40 - attribute_value.length
303
- attribute_value << "&nbsp;" * spaces
295
+ attribute_value << "&nbsp;".html_safe * spaces
304
296
  if @Klass == 'Index'
305
- link_to_remote attribute_value,
297
+ link_to raw(attribute_value),
306
298
  :url => "/#{@Klass_pluralized}/edit/#{object.id}?field=#{attribute.to_s}&form_element=#{calling_method.sub(/_[a-z]+$/,'')}&values=#{values}",
307
299
  :update => 'field_' + attribute.to_s + '_' + object.id.to_s,
308
- :method => :get
300
+ :method => :get,
301
+ :remote => true
309
302
  else
310
- link_to_remote attribute_value,
303
+ link_to raw(attribute_value),
311
304
  :url => "/#{@Klass_pluralized}/#{object.id}/edit?field=#{attribute.to_s}&form_element=#{calling_method.sub(/_[a-z]+$/,'')}&values=#{values}",
312
305
  :update => 'field_' + attribute.to_s + '_' + object.id.to_s,
313
- :method => :get
306
+ :method => :get,
307
+ :remote => true
314
308
 
315
309
  end
316
310
  end
@@ -0,0 +1,4 @@
1
+ <li class="inline_form_new_item">
2
+ <%= inline_form_new_record @field, @form_element %>
3
+ </li>
4
+ <%= inline_form_display_list(@objects) %>
@@ -0,0 +1,10 @@
1
+ <% form_tag valid_tables_path( :update => @update_span || 'inline_form_list' ),
2
+ :multipart => true, :remote => true, :class => "edit_form" do -%>
3
+ <div class="edit_form_field">
4
+ <%= inline_form_display(@object, @object.respond_to?(:inline_forms_field_list) ? @object.inline_forms_field_list : [ '', :name, :text ], :new) %>
5
+ </div>
6
+ <%= link_to "nee", valid_tables_path(:update => @update_span), :remote => true,
7
+ :class => "edit_form_cancel" %>
8
+ <%= submit_tag "ok", :class => "edit_form_submit"-%>
9
+ <div style="clear: both;"></div>
10
+ <% end -%>
@@ -1,16 +1,17 @@
1
- <% form_remote_tag :multipart => true,
2
- :url => "/#{@Klass_pluralized}?field=#{@attribute.to_s}&form_element=#{@form_element}&values=#{@values}&sub_id=#{@sub_id}",
1
+ <% form_tag :multipart => true,
2
+ :url => "/#{@Klass.to_s.pluralize}?field=#{@attribute.to_s}&form_element=#{@form_element}&values=#{@values}&sub_id=#{@sub_id}",
3
3
  :update => @update_span || 'inline_form_list',
4
4
  :html => { :class => "edit_form" } do -%>
5
5
  <div class="edit_form_field">
6
- <%= inline_form_display(@object, @object.respond_to?(:field_list) ? @object.field_list : [ '', :name, :text ], :new) %>
6
+ <%= inline_form_display(@object, @object.respond_to?(:inline_forms_field_list) ? @object.inline_forms_field_list : [ '', :name, :text ], :new) %>
7
7
  </div>
8
- <%= link_to_remote "nee",
9
- # :url => "/#{@Klass_pluralized}/index?field=#{@attribute.to_s}&form_element=#{@form_element}&values=#{@values}&sub_id=#{@sub_id}",
8
+ <%= link_to "nee",
9
+ # :url => "/#{@Klass_pluralized}/index?field=#{@attribute.to_s}&form_element=#{@form_element}&values=#{@values}&sub_id=#{@sub_id}",
10
10
  :url => "/#{@Klass_pluralized}?layout=false",
11
11
  :html => { :class => "edit_form_cancel" },
12
12
  :update => 'inline_form_list',
13
- :method => :get -%>
13
+ :method => :get,
14
+ :remote => true -%>
14
15
  <%= submit_tag "ok", :class => "edit_form_submit"-%>
15
16
  <div style="clear: both;"></div>
16
17
  <% end -%>
@@ -1,7 +1,18 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html>
4
+ <head>
5
+ <title><%= h(yield(:title) || "xyxyxyx") %></title>
6
+ <%= csrf_meta_tag %>
1
7
  <%= stylesheet_link_tag 'inline_form_elements' %>
2
8
  <%= javascript_include_tag :defaults %>
3
- <%#= calendar_date_select_includes "red" %>
4
- <h1><%= @Klass.to_s %></h1>
5
- <ul id="inline_form_list">
6
- <%= yield %>
7
- </ul>
9
+ <%= yield(:head) %>
10
+ </head>
11
+ <%#= calendar_date_select_includes "red" %>
12
+ <body>
13
+ <h1><%= @Klass.to_s %></h1>
14
+ <ul id="inline_form_list">
15
+ <%= yield %>
16
+ </ul>
17
+ </body>
18
+ </html>
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.2.4"
8
+ s.version = "0.2.6"
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-01-29}
12
+ s.date = %q{2011-01-30}
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 = [
@@ -28,6 +28,8 @@ Gem::Specification.new do |s|
28
28
  "app/helpers/inline_forms_helper.rb",
29
29
  "app/models/geo_code_curacao.rb",
30
30
  "app/models/inline_form.rb",
31
+ "app/views/inline_forms/_index.html.erb",
32
+ "app/views/inline_forms/_new.html.erb",
31
33
  "app/views/inline_forms/_subform.html.erb",
32
34
  "app/views/inline_forms/edit.html.erb",
33
35
  "app/views/inline_forms/index.html.erb",
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: 31
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 6
10
+ version: 0.2.6
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-01-29 00:00:00 -04:00
18
+ date: 2011-01-30 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -99,6 +99,8 @@ files:
99
99
  - app/helpers/inline_forms_helper.rb
100
100
  - app/models/geo_code_curacao.rb
101
101
  - app/models/inline_form.rb
102
+ - app/views/inline_forms/_index.html.erb
103
+ - app/views/inline_forms/_new.html.erb
102
104
  - app/views/inline_forms/_subform.html.erb
103
105
  - app/views/inline_forms/edit.html.erb
104
106
  - app/views/inline_forms/index.html.erb