inline_forms 0.8.5 → 0.8.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.8.5
1
+ 0.8.6
@@ -100,8 +100,10 @@ class InlineFormsController < ApplicationController
100
100
  @form_element = params[:form_element]
101
101
  @sub_id = params[:sub_id]
102
102
  @update_span = params[:update]
103
+ logger.info @form_element.to_s
103
104
  send("#{@form_element.to_s}_update", @object, @attribute)
104
105
  @object.save
106
+ logger.info "after"
105
107
  respond_to do |format|
106
108
  # found this here: http://www.ruby-forum.com/topic/211467
107
109
  format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send("#{@form_element.to_s}_show", @object, @attribute) %>' }
@@ -118,6 +120,7 @@ class InlineFormsController < ApplicationController
118
120
  @object = @Klass.find(params[:id])
119
121
  @attribute = params[:attribute]
120
122
  @form_element = params[:form_element]
123
+ close = params[:close] || false
121
124
  if @form_element == "associated"
122
125
  @sub_id = params[:sub_id]
123
126
  if @sub_id.to_i > 0
@@ -130,8 +133,11 @@ class InlineFormsController < ApplicationController
130
133
  respond_to do |format|
131
134
  @attributes = @object.inline_forms_attribute_list
132
135
  # found this here: http://www.ruby-forum.com/topic/211467
133
- format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send( "inline_forms_show_record", @object) %>' }
134
- }
136
+ if close
137
+ format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= link_to h(@object._presentation), send(@object.class.to_s.underscore + "_path", @object, :update => @update_span), :remote => true %>' } }
138
+ else
139
+ format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send( "inline_forms_show_record", @object) %>' } }
140
+ end
135
141
  end
136
142
  else
137
143
  respond_to do |format|
@@ -3,89 +3,92 @@ InlineForms::SPECIAL_COLUMN_TYPES[:associated]=:no_migration
3
3
  # associated
4
4
  def associated_show(object, attribute)
5
5
  #show a list of records
6
- out = String.new
7
- if @sub_id && @sub_id.to_i > 0
8
- # if it's not a new record (sub_id > 0) then just update the list-element
9
- out << '<li>'
10
- out << link_to( @associated_record._presentation,
11
- send('edit_' + @Klass.to_s.underscore + '_path', object,
12
- :attribute => attribute,
13
- :sub_id => @sub_id,
14
- :form_element => this_method.reverse.sub(/.*_/,'').reverse,
15
- :update => "attribute_#{attribute.to_s.singularize}_#{@sub_id.to_s}" ),
16
- :method => :get,
17
- :remote => true )
18
- out << '</li>'
19
- else
20
- # if it's a new record (sub_id == 0) then update the whole <ul> and redraw all list-elements
21
- out << "<ul class='associated #{attribute}' id='list_#{attribute}_#{object.id.to_s}'>" if @sub_id.nil?
22
- out << '<li class="associated_new">'
23
- out << link_to( 'new', send('edit_' + @Klass.to_s.underscore + '_path',
24
- object,
25
- :attribute => attribute,
26
- :sub_id => 0,
27
- :form_element => this_method.sub(/_[a-z]+$/,''),
28
- :update => "list_#{attribute}_#{object.id.to_s}" ),
29
- :method => :get,
30
- :remote => true )
31
- out << '</li>'
32
- if not object.send(attribute.to_s.pluralize).empty?
33
- # if there are things to show, show them
34
- object.send(attribute.to_s.pluralize).each do |m|
35
- out << "<span id='attribute_#{attribute.to_s.singularize}_#{m.id.to_s}'>"
36
- out << '<li>'
37
- out << link_to( m._presentation, send('edit_' + @Klass.to_s.underscore + '_path',
38
- object,
39
- :attribute => attribute,
40
- :sub_id => m.id,
41
- :form_element => this_method.sub(/_[a-z]+$/,''),
42
- :update => "attribute_#{attribute.to_s.singularize}_#{m.id.to_s}" ),
43
- :method => :get,
44
- :remote => true )
45
- out << '</li>'
46
- out << '</span>'
47
- end
48
- end
49
- # add a 'new' link for creating a new record
50
- out << '</ul>' if @sub_id.nil?
51
- end
52
- raw(out)
6
+ inline_forms_list(object.send(attribute.to_s.pluralize))
53
7
  end
54
-
55
- def associated_edit(object, attribute)
56
- # @sub_id is the id of the associated record
57
- if @sub_id.to_i > 0
58
- # only if @sub_id > 0, means we have a associated record
59
- @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
60
- @associated_record = object.send(attribute)[@associated_record_id]
61
- @update_span = "attribute_#{attribute.to_s.singularize}_#{@sub_id.to_s}"
62
- else
63
- # but if @sub_id = 0, then we are dealing with a new associated record
64
- # in that case, we .new a record, and the update_span is the whole <ul>
65
- @associated_record = attribute.to_s.singularize.capitalize.constantize.new
66
- @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
67
- end
68
- render :partial => "inline_forms/subform"
69
- end
70
-
71
- def associated_update(object, attribute)
72
- return if object.id.nil?
73
- if @sub_id.to_i > 0
74
- # get the existing associated record
75
- @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
76
- @associated_record = object.send(attribute)[@associated_record_id]
77
- @update_span = "attribute_" + attribute.to_s.singularize + '_' + @sub_id.to_s
78
- else
79
- # create a new associated record
80
- @associated_record = object.send(attribute.to_sym).new
81
- @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
82
- end
83
- # process the sub_form attributes (attributes). These are declared in the model!
84
- @associated_record.inline_forms_attribute_list.each do | @subform_description, @subform_attribute, @subform_element |
85
- # have no fear
86
- send("#{@subform_element}_update", @associated_record, @subform_attribute)
87
- end
88
- @associated_record.save
89
- end
90
-
91
-
8
+ #
9
+ # out = String.new
10
+ # if @sub_id && @sub_id.to_i > 0
11
+ # # if it's not a new record (sub_id > 0) then just update the list-element
12
+ # out << '<li>'
13
+ # out << link_to( @associated_record._presentation,
14
+ # send('edit_' + @Klass.to_s.underscore + '_path', object,
15
+ # :attribute => attribute,
16
+ # :sub_id => @sub_id,
17
+ # :form_element => this_method.reverse.sub(/.*_/,'').reverse,
18
+ # :update => "attribute_#{attribute.to_s.singularize}_#{@sub_id.to_s}" ),
19
+ # :method => :get,
20
+ # :remote => true )
21
+ # out << '</li>'
22
+ # else
23
+ # # if it's a new record (sub_id == 0) then update the whole <ul> and redraw all list-elements
24
+ # out << "<ul class='associated #{attribute}' id='list_#{attribute}_#{object.id.to_s}'>" if @sub_id.nil?
25
+ # out << '<li class="associated_new">'
26
+ # out << link_to( 'new', send('edit_' + @Klass.to_s.underscore + '_path',
27
+ # object,
28
+ # :attribute => attribute,
29
+ # :sub_id => 0,
30
+ # :form_element => this_method.sub(/_[a-z]+$/,''),
31
+ # :update => "list_#{attribute}_#{object.id.to_s}" ),
32
+ # :method => :get,
33
+ # :remote => true )
34
+ # out << '</li>'
35
+ # if not object.send(attribute.to_s.pluralize).empty?
36
+ # # if there are things to show, show them
37
+ # object.send(attribute.to_s.pluralize).each do |m|
38
+ # out << "<span id='attribute_#{attribute.to_s.singularize}_#{m.id.to_s}'>"
39
+ # out << '<li>'
40
+ # out << link_to( m._presentation, send('edit_' + @Klass.to_s.underscore + '_path',
41
+ # object,
42
+ # :attribute => attribute,
43
+ # :sub_id => m.id,
44
+ # :form_element => this_method.sub(/_[a-z]+$/,''),
45
+ # :update => "attribute_#{attribute.to_s.singularize}_#{m.id.to_s}" ),
46
+ # :method => :get,
47
+ # :remote => true )
48
+ # out << '</li>'
49
+ # out << '</span>'
50
+ # end
51
+ # end
52
+ # # add a 'new' link for creating a new record
53
+ # out << '</ul>' if @sub_id.nil?
54
+ # end
55
+ # raw(out)
56
+ # end
57
+ #
58
+ #def associated_edit(object, attribute)
59
+ # # @sub_id is the id of the associated record
60
+ # if @sub_id.to_i > 0
61
+ # # only if @sub_id > 0, means we have a associated record
62
+ # @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
63
+ # @associated_record = object.send(attribute)[@associated_record_id]
64
+ # @update_span = "attribute_#{attribute.to_s.singularize}_#{@sub_id.to_s}"
65
+ # else
66
+ # # but if @sub_id = 0, then we are dealing with a new associated record
67
+ # # in that case, we .new a record, and the update_span is the whole <ul>
68
+ # @associated_record = attribute.to_s.singularize.capitalize.constantize.new
69
+ # @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
70
+ # end
71
+ # render :partial => "inline_forms/subform"
72
+ #end
73
+ #
74
+ #def associated_update(object, attribute)
75
+ # return if object.id.nil?
76
+ # if @sub_id.to_i > 0
77
+ # # get the existing associated record
78
+ # @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
79
+ # @associated_record = object.send(attribute)[@associated_record_id]
80
+ # @update_span = "attribute_" + attribute.to_s.singularize + '_' + @sub_id.to_s
81
+ # else
82
+ # # create a new associated record
83
+ # @associated_record = object.send(attribute.to_sym).new
84
+ # @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
85
+ # end
86
+ # # process the sub_form attributes (attributes). These are declared in the model!
87
+ # @associated_record.inline_forms_attribute_list.each do | @subform_description, @subform_attribute, @subform_element |
88
+ # # have no fear
89
+ # send("#{@subform_element}_update", @associated_record, @subform_attribute) unless @subform_element == :associated
90
+ # end
91
+ # @associated_record.save
92
+ #end
93
+ #
94
+ #
@@ -0,0 +1,43 @@
1
+ #InlineForms::SPECIAL_COLUMN_TYPES[:question_list]=:no_migration
2
+
3
+ # checklist
4
+ def question_list_show(object, attribute)
5
+ out = '<ul class="question_list">'
6
+ out << link_to_inline_edit(object, attribute) if object.send(attribute).empty?
7
+ object.send(attribute).sort.each do | item |
8
+ out << '<li>'
9
+ out << link_to_inline_edit(object, attribute, item._presentation )
10
+ out << '</li>'
11
+ end
12
+ out << '</ul>'
13
+ out.html_safe
14
+ end
15
+
16
+ def question_list_edit(object, attribute)
17
+ object.send(attribute).build if object.send(attribute).empty?
18
+ values = object.send(attribute).first.class.name.constantize.find(:all) # TODO bring order
19
+ out = '<div class="edit_form_checklist">'
20
+ out << '<ul>'
21
+ Question.all.each do | question |
22
+ out << '<li>'
23
+ out << h(question._presentation)
24
+ unless question.subquestions.empty?
25
+ out << '<ul>'
26
+ question.subquestions.each do | subquestion |
27
+ out << '<li>'
28
+ out << h(subquestion._presentation)
29
+ out << '</li>'
30
+ end
31
+ out << '</ul>'
32
+ end
33
+ out << '</li>'
34
+ end
35
+ out << '</ul>'
36
+ out << '</div>'
37
+ out.html_safe
38
+ end
39
+
40
+ def question_list_update(object, attribute)
41
+ params[attribute] ||= {}
42
+ object.send(attribute.singularize + '_ids=', params[attribute].keys)
43
+ end
@@ -15,8 +15,13 @@ module InlineFormsHelper
15
15
  def inline_forms_show_record(object, attributes=nil)
16
16
  attributes ||= object.inline_forms_attribute_list
17
17
  out = String.new
18
+ css_class_id = object.class.to_s.underscore + '_' + object.id.to_s
19
+ close_link = link_to h(object._presentation + " - CLOSE "),
20
+ send( object.class.to_s.underscore + '_path', object, :update => css_class_id, :close => true ),
21
+ :remote => true
22
+ out << close_link
18
23
  attributes.each do | attribute, name, form_element |
19
- css_class_id = "attribute_#{attribute}_#{object.id}"
24
+ css_class_id = "#{object.class.to_s.underscore}_#{object.id}_#{attribute}"
20
25
  name_cell = content_tag :td, :valign=>'top' do
21
26
  content_tag :div, :class=> "attribute_name attribute_#{attribute} form_element_#{form_element}" do
22
27
  h(name)
@@ -44,7 +49,7 @@ module InlineFormsHelper
44
49
  attributes ||= object.inline_forms_attribute_list
45
50
  out = String.new
46
51
  attributes.each do | attribute, name, form_element |
47
- unless form_element.to_sym == :associated #|| form_element.to_sym == :check_list
52
+ unless form_element.to_sym == :associated
48
53
  css_class_id = "attribute_#{attribute}_#{object.id}"
49
54
  name_cell = content_tag :td, :valign=>'top' do
50
55
  content_tag :div, :class=> "attribute_name attribute_#{attribute} form_element_#{form_element}" do
@@ -64,14 +69,28 @@ module InlineFormsHelper
64
69
  return content_tag :table, raw(out), :cellspacing => 0, :cellpadding => 0
65
70
  end
66
71
 
67
- # display a list of objects
72
+ # # display a list of objects
73
+ # def inline_forms_list(objects, tag=:li)
74
+ # t = String.new
75
+ # objects.each do |object|
76
+ # css_class_id = @Klass.to_s.underscore + '_' + object.id.to_s
77
+ # t += content_tag tag, :id => css_class_id do
78
+ # link_to h(object._presentation),
79
+ # send( @Klass.to_s.underscore + '_path', object, :update => css_class_id),
80
+ # :remote => true
81
+ # end
82
+ # end
83
+ # return raw(t)
84
+ # end
85
+
86
+ # display a list of objects without links
68
87
  def inline_forms_list(objects, tag=:li)
69
88
  t = String.new
70
89
  objects.each do |object|
71
- css_class_id = @Klass.to_s.underscore + '_' + object.id.to_s
90
+ css_class_id = object.class.to_s.underscore + '_' + object.id.to_s
72
91
  t += content_tag tag, :id => css_class_id do
73
- link_to h(object._presentation),
74
- send( @Klass.to_s.underscore + '_path', object, :update => css_class_id),
92
+ link_to h(object._presentation),
93
+ send( object.class.to_s.underscore + '_path', object, :update => css_class_id),
75
94
  :remote => true
76
95
  end
77
96
  end
@@ -92,12 +111,13 @@ module InlineFormsHelper
92
111
  attribute_value = h(attribute_value)
93
112
  spaces = attribute_value.length > 40 ? 0 : 40 - attribute_value.length
94
113
  attribute_value << "&nbsp;".html_safe * spaces
114
+ css_class_id = "#{object.class.to_s.underscore}_#{object.id}_#{attribute}"
95
115
  link_to attribute_value,
96
- send( 'edit_' + @Klass.to_s.underscore + '_path',
116
+ send( 'edit_' + object.class.to_s.underscore + '_path',
97
117
  object,
98
118
  :attribute => attribute.to_s,
99
119
  :form_element => calling_method.sub(/_[a-z]+$/,''),
100
- :update => "attribute_#{attribute}_#{object.id}" ),
120
+ :update => css_class_id ),
101
121
  :remote => true
102
122
  end
103
123
 
@@ -1,4 +1,4 @@
1
- <% form_tag send(@Klass.to_s.underscore + '_path', :update => @update_span ,
1
+ <% form_tag send(@object.class.to_s.underscore + '_path', :update => @update_span ,
2
2
  :attribute => @attribute,
3
3
  :form_element => @form_element,
4
4
  :sub_id => @sub_id ),
@@ -7,9 +7,9 @@
7
7
  :class => "edit_form",
8
8
  :remote => true do -%>
9
9
  <div class="edit_form_field">
10
- <%= send("#{@form_element.to_s}_edit", @object, @attribute) %>
10
+ <%= send("#{@form_element}_edit", @object, @attribute) %>
11
11
  </div>
12
- <%= link_to( send( @Klass.to_s.underscore + '_path', :update => @update_span || "field_#{@attribute}_#{@object.id.to_s}",
12
+ <%= link_to( send( @object.class.to_s.underscore + '_path', :update => @update_span || "field_#{@attribute}_#{@object.id.to_s}",
13
13
  :attribute => @attribute,
14
14
  :form_element => @form_element,
15
15
  :sub_id => @sub_id ),
@@ -8,7 +8,11 @@
8
8
  </td>
9
9
  <td valign="top">
10
10
  <div class="subform_field-value">
11
- <%= send("#{@subform_element}_edit", @associated_record, @subform_field.to_s) %>
11
+ <% if @subform_element == :associated -%>
12
+ <%= inline_forms_list @associated_record.send(@subform_field) %>
13
+ <% else %>
14
+ <%= send("#{@subform_element}_edit", @associated_record, @subform_field.to_s) %>
15
+ <% end %>
12
16
  </div>
13
17
  </td>
14
18
  </tr>
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{inline_forms}
8
- s.version = "0.8.5"
8
+ s.version = "0.8.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"]
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
34
34
  "app/helpers/form_elements/dropdown_with_values.rb",
35
35
  "app/helpers/form_elements/geo_code_curacao.rb",
36
36
  "app/helpers/form_elements/image.rb",
37
+ "app/helpers/form_elements/question_list.rb",
37
38
  "app/helpers/form_elements/scale_with_integers.rb",
38
39
  "app/helpers/form_elements/scale_with_values.rb",
39
40
  "app/helpers/form_elements/text_area.rb",
@@ -55,8 +55,7 @@ module InlineForms
55
55
  name == "_presentation" ||
56
56
  name == "_order" ||
57
57
  name == "_enabled" ||
58
- name == "_id" ||
59
- relation? )
58
+ name == "_id" )
60
59
  end
61
60
 
62
61
  def attribute?
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: 53
4
+ hash: 51
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 5
10
- version: 0.8.5
9
+ - 6
10
+ version: 0.8.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ace Suares
@@ -105,6 +105,7 @@ files:
105
105
  - app/helpers/form_elements/dropdown_with_values.rb
106
106
  - app/helpers/form_elements/geo_code_curacao.rb
107
107
  - app/helpers/form_elements/image.rb
108
+ - app/helpers/form_elements/question_list.rb
108
109
  - app/helpers/form_elements/scale_with_integers.rb
109
110
  - app/helpers/form_elements/scale_with_values.rb
110
111
  - app/helpers/form_elements/text_area.rb