inline_forms 0.2.4 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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