dynamic_fieldsets 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.10
1
+ 0.1.11
@@ -57,18 +57,27 @@ module DynamicFieldsets
57
57
  @field = params[:dynamic_fieldsets_field][:type].constantize.new(params[:dynamic_fieldsets_field])
58
58
 
59
59
  respond_to do |format|
60
+ type = params[:dynamic_fieldsets_field][:type]
61
+
62
+ if type == ""
63
+ format.html { redirect_to(new_dynamic_fieldsets_field_path, :notice => 'Need to select a type') }
64
+
65
+ elsif (type == "DynamicFieldsets::CheckboxField" || type == "DynamicFieldsets::RadioField" || type == "DynamicFieldsets::MultipleSelectField" || type == "DynamicFieldsets::SelectField") && !params[:dynamic_fieldsets_field].has_key?(:field_options_attributes)
66
+ format.html { redirect_to(new_dynamic_fieldsets_field_path, :notice => 'Need to add at least one option with field type '+type.split('::').last) }
60
67
 
61
- if @field.save
62
- if !parent_id.empty?
63
- parent = DynamicFieldsets::Fieldset.find(parent_id)
64
- DynamicFieldsets::FieldsetChild.create( :fieldset => parent, :child => @field )
65
- #relation = @fieldset.fieldset_children.build( :fieldset => parent )
66
- #relation.child = @field
67
- #relation.save
68
- end
69
- format.html { redirect_to(dynamic_fieldsets_field_path(@field), :notice => 'Successfully created a new field.') }
70
68
  else
71
- format.html { render :action => "new" }
69
+ if @field.save
70
+ if !parent_id.empty?
71
+ parent = DynamicFieldsets::Fieldset.find(parent_id)
72
+ DynamicFieldsets::FieldsetChild.create( :fieldset => parent, :child => @field )
73
+ #relation = @fieldset.fieldset_children.build( :fieldset => parent )
74
+ #relation.child = @field
75
+ #relation.save
76
+ end
77
+ format.html { redirect_to(dynamic_fieldsets_field_path(@field), :notice => 'Successfully created a new field.') }
78
+ else
79
+ format.html { render :action => "new" }
80
+ end
72
81
  end
73
82
  end
74
83
  end
@@ -28,7 +28,6 @@ module DynamicFieldsets
28
28
  # updates the fieldset_child and uses accepts_nested_attributes_for to setup a dependency system
29
29
  def update
30
30
  @fieldset_child = DynamicFieldsets::FieldsetChild.find(params[:id])
31
-
32
31
  respond_to do |format|
33
32
  if @fieldset_child.update_attributes(params[:dynamic_fieldsets_fieldset_child])
34
33
  format.html { redirect_to(dynamic_fieldsets_children_dynamic_fieldsets_fieldset_path(@fieldset_child.root_fieldset), :notice => "Successfully updated a child")}
@@ -66,7 +66,7 @@ module DynamicFieldsets
66
66
  if(@fieldset_child.nil?)
67
67
  @fieldset_child = DynamicFieldsets::FieldsetChild.new(
68
68
  :child_id => @field.id,
69
- :child_type => @field.class.name,
69
+ :child_type => "DynamicFieldsets::Field",
70
70
  :fieldset_id => @fieldset.id,
71
71
  :order_num => DynamicFieldsets::FieldsetChild.where(:fieldset_id => @fieldset.id).count + 1)
72
72
  else
@@ -82,7 +82,7 @@ module DynamicFieldsets
82
82
  end
83
83
  format.html { redirect_to(dynamic_fieldsets_children_dynamic_fieldsets_fieldset_path(@fieldset), :notice => notice_text )}
84
84
  else
85
- format.html { redirect_to(dynamic_fieldsets_children_dynamic_fieldsets_fieldset_path(@fieldset), :notice => "Field was not successsfully associated." )}
85
+ format.html { redirect_to(dynamic_fieldsets_children_dynamic_fieldsets_fieldset_path(@fieldset), :notice => @fieldset_child.errors) }
86
86
  end
87
87
  end
88
88
  end
@@ -82,7 +82,47 @@ module DynamicFieldsetsHelper
82
82
 
83
83
  return field_markup
84
84
  end
85
-
85
+
86
+ # Removes fieldset children that do not show in the edit form due to dependencies
87
+ # @param [Fieldset] fieldset The Fieldset to render
88
+ # @param [Hash] values Stored values for the fieldset
89
+ # @return [Array <FieldsetChild>] children that should render in show page
90
+ #
91
+ def hide_children(fieldset, values)
92
+ children = []
93
+ fieldset.fieldset_children.each do |child_field|
94
+ value = values[child_field.id]
95
+ dependent_on = DynamicFieldsets::DependencyGroup.where(:fieldset_child_id => child_field.id).first
96
+ if dependent_on.nil?
97
+ children << child_field.child
98
+ else
99
+ dependencies = dependent_on.dependency_clauses.collect(&:dependencies).flatten.uniq
100
+ dependencies.each do |dependency|
101
+ if values[dependency.fieldset_child_id].present?
102
+ dependent_on_type = dependency.fieldset_child.child.type
103
+ dependent_on_values = values[dependency.fieldset_child_id]
104
+ check_values = []
105
+
106
+ if dependent_on_type == "DynamicFieldsets::CheckboxField" || dependent_on_type == "DynamicFieldsets::MultipleSelectField"
107
+ dependent_on_values.each do |current_value|
108
+ check_values << current_value[:name]
109
+ end
110
+ else
111
+ check_values << (dependent_on_values.has_key?(:name) ? dependent_on_values[:name] : dependent_on_values[:value])
112
+ end
113
+
114
+ check_values.each do |check|
115
+ if dependent_on.action == "show" && check == dependency.value
116
+ children << child_field.child
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ return children.uniq
124
+ end
125
+
86
126
  # Builds HTML for the provided fieldset and its children.
87
127
  # @param [FieldsetAssociator] fsa parent FieldsetAssociator
88
128
  # @param [Fieldset] fieldset The Fieldset to render
@@ -92,9 +132,12 @@ module DynamicFieldsetsHelper
92
132
  lines = []
93
133
  lines.push render(:partial => "/dynamic_fieldsets/shared/fieldset_header", :locals => {:fieldset => fieldset})
94
134
 
135
+ # still have to add children that are fieldsets.. have not tested far enough to get into it
136
+ children = form_type == "show" ? hide_children(fieldset, values) : fieldset.children
137
+
95
138
  # this returns field/fieldset objects rather than fieldset children
96
139
  # that is why this code looks like it is accessing odd objects
97
- fieldset.children.each do |child|
140
+ children.each do |child|
98
141
  if child.is_a? DynamicFieldsets::Fieldset
99
142
  lines += fieldset_renderer( fsa, child, values, form_type )
100
143
  else # one of many possible types of child
@@ -133,7 +176,6 @@ module DynamicFieldsetsHelper
133
176
  rendered_dynamic_fieldset += line + "\n"
134
177
  end
135
178
  rendered_dynamic_fieldset += "</div>"
136
-
137
179
  return rendered_dynamic_fieldset.html_safe
138
180
  end
139
181
 
@@ -6,7 +6,7 @@ module DynamicFieldsets
6
6
  self.table_name = "dynamic_fieldsets_dependency_clauses"
7
7
  belongs_to :dependency_group
8
8
 
9
- has_many :dependencies
9
+ has_many :dependencies, :dependent => :destroy
10
10
  accepts_nested_attributes_for :dependencies, :allow_destroy => true
11
11
 
12
12
  # hack to make saving through nested attributes work
@@ -3,7 +3,7 @@ module DynamicFieldsets
3
3
  self.table_name = "dynamic_fieldsets_dependency_groups"
4
4
  belongs_to :fieldset_child
5
5
 
6
- has_many :dependency_clauses
6
+ has_many :dependency_clauses, :dependent => :destroy
7
7
  accepts_nested_attributes_for :dependency_clauses, :allow_destroy => true
8
8
 
9
9
  # List of allowable actions for the group
@@ -84,7 +84,7 @@ module DynamicFieldsets
84
84
  output[fieldset_child.id] = {}
85
85
  fieldset_child.dependencies.each do |dependency|
86
86
  dependency_group = dependency.dependency_clause.dependency_group
87
- output[fieldset_child.id][dependency_group.id] = dependency_group.to_hash
87
+ output[fieldset_child.id][dependency_group.id] = dependency_group.to_hash #if dependency_group.present?
88
88
  end
89
89
  end
90
90
  return output
@@ -101,7 +101,7 @@ module DynamicFieldsets
101
101
  output = []
102
102
  parent_fieldset.fieldset_children.each do |fieldset_child|
103
103
  if fieldset_child.child_type == "DynamicFieldsets::Field"
104
- if !fieldset_child.dependencies.empty?
104
+ if fieldset_child.dependencies.present?
105
105
  output.push fieldset_child
106
106
  # else then next
107
107
  end
@@ -23,7 +23,7 @@ module DynamicFieldsets
23
23
  # statement:
24
24
  # IF Field1 == A AND Field2 == B THEN show Field3
25
25
  # In that example, Field1 and Field2 belong to dependencies and Field3 belongs to a dependency_group
26
- has_one :dependency_group
26
+ has_one :dependency_group, :dependent => :destroy
27
27
  accepts_nested_attributes_for :dependency_group, :allow_destroy => true
28
28
 
29
29
  has_many :dependencies
@@ -1,5 +1,5 @@
1
1
  <tr>
2
- <td><%= f.select :fieldset_child_id, options_for_select(DynamicFieldsets::FieldsetChild.all.collect { |c| [c.child.name, c.id]}, obj.fieldset_child_id)%></td>
2
+ <td><%= f.select :fieldset_child_id, options_for_select(DynamicFieldsets::FieldsetChild.all.select { |x| x.child.type != "DynamicFieldsets::InstructionField" }.collect { |c| [c.child.name, c.id]}, obj.fieldset_child_id)%></td>
3
3
  <td><%= f.select :relationship, DynamicFieldsets::Dependency::RELATIONSHIP_LIST %></td>
4
4
  <td><%= f.text_field :value %></td>
5
5
  <td>
@@ -25,7 +25,10 @@
25
25
  <%= f.fields_for :dependency_group, @fieldset_child.dependency_group do |dependency_group_form| %>
26
26
  <%= render :partial => "dependency_group_fields", :locals => {:f => dependency_group_form, :obj => @fieldset_child.dependency_group} %>
27
27
  <% end %>
28
- <p><%= df_link_to_add_fields "Add Dependency", f, :dependency_group %></p>
28
+
29
+ <% if @fieldset_child.dependency_group.nil? %>
30
+ <p><%= df_link_to_add_fields "Add Dependency", f, :dependency_group %></p>
31
+ <% end %>
29
32
 
30
33
  <div class="actions">
31
34
  <%= f.submit %>
@@ -3,4 +3,5 @@
3
3
  <%= render 'form' %>
4
4
 
5
5
  <%= link_to 'Show', @fieldset_child %> |
6
- <%= link_to 'Back', dynamic_fieldsets_fieldset_children_path %>
6
+ <%= link_to 'Back', dynamic_fieldsets_children_dynamic_fieldsets_fieldset_path(@fieldset_child.fieldset) %>
7
+
@@ -1 +1 @@
1
- <p><%= label %></p>
1
+ <p id='<%= id %>' name='<%= name %>' type='<%= "instruction" %>'><%= label %></p>
@@ -1 +1 @@
1
- <%= select_tag(name, options_from_collection_for_select( collection, :id, :name, selected_id ), attrs) %>
1
+ <%= select_tag(name, options_from_collection_for_select( collection, :id, :name, selected_id ), attrs.merge({:include_blank => true})) %>
@@ -1,7 +1,7 @@
1
1
  <script type='text/javascript'>
2
2
 
3
3
  // The only inputs we care about are visible... not hidden
4
- var all_inputs = $(":input:not(:hidden)");
4
+ var all_inputs = $(":input:not(:hidden)").add("p[id^='fsa']");
5
5
 
6
6
  //Return the fieldset child id for the input
7
7
  //This uniquely associated the fieldset child with the fieldset associator
@@ -21,6 +21,7 @@ function get_fieldset_child_id(field, type) {
21
21
  case 'textarea':
22
22
  case 'select':
23
23
  case 'multi-select':
24
+ case 'instruction':
24
25
  var id_array = field.attr('id').split('-');
25
26
  return id_array[id_array.length-1];
26
27
  case 'radio':
@@ -44,61 +45,6 @@ function get_fieldset_associator_id(field) {
44
45
  }
45
46
  }
46
47
 
47
- //Determines whether the dependency has been satisfied
48
- //CHANGE THIS if the dependency model changes which relationships are allowed.
49
- //
50
- // user_value: The value on the form
51
- // stored_value: The value that satisfies the dependency
52
- // relationship: The predicate used to compare the user and stored values
53
- //
54
- // returns the result of the relationship between user and stored valued
55
- function evaluate_dependency(user_value, relationship, stored_value) {
56
- switch(relationship)
57
- {
58
- case 'equals':
59
- return user_value == stored_value;
60
- case 'not equals':
61
- return user_value != stored_value;
62
- case 'includes':
63
- return $.inArray(stored_value, user_value) != -1;
64
- case 'not includes':
65
- return $.inArray(stored_value, user_value) == -1;
66
- case 'blank':
67
- return user_value == "";
68
- case 'not blank':
69
- return user_value != "";
70
- default:
71
- return false;
72
- }
73
- };
74
-
75
- // What to do to the field based on the dependency information
76
- // CHANGE THIS if the dependency group model changes which actions are allowed
77
- //
78
- // success_flag: whether the dependency group returned true or false
79
- // action: the type of update to apply to the field
80
- // group_field: the field to update (generally not the field that triggered the change)
81
- function dependency_action(success_flag, action, group_field) {
82
-
83
- if (success_flag){
84
- switch(action)
85
- {
86
- case 'show':
87
- $('#input-' + group_field).show();
88
- case 'enable':
89
- $('#' + group_field + ' :input').removeAttr('disabled');
90
- }
91
- } else {
92
- switch(action)
93
- {
94
- case 'show':
95
- $('#input-' + group_field).hide();
96
- case 'enable':
97
- $('#' + group_field + ' :input').attr('disabled', true);
98
- }
99
- }
100
- };
101
-
102
48
  function get_input_value(field, type) {
103
49
  switch(type)
104
50
  {
@@ -108,7 +54,11 @@ function get_input_value(field, type) {
108
54
  case 'radio':
109
55
  if (field.attr('checked') == 'checked') {
110
56
  return $.trim(field.parent('label').text());
111
- }
57
+ }
58
+ //it should only grab results for checked radios
59
+ else {
60
+ return $.trim(field.parent().parent().find('[checked="checked"]').parent('label').text());
61
+ }
112
62
  case 'checkbox':
113
63
  return $('input[name="' + field.attr('name') + '"]:checked').map(function(index,option) {
114
64
  return $.trim($(option).parent('label').text())
@@ -143,43 +93,49 @@ function get_field_type(field) {
143
93
  }
144
94
 
145
95
  // when a dynamic fieldsets field fires a change event,
96
+ // store current values of all fields in associative array (AU 08-07-13)
97
+ // pass fieldset_child_id of field that was changed to other functions
146
98
  // update the page based on dependency information
147
99
  //
148
100
  // the dependency information is stored in dynamic_fieldsets_dependencies
149
101
  all_inputs.change( function() {
150
- var field = $(this);
151
- var type = get_field_type(field);
152
- var fieldset_child_id = get_fieldset_child_id(field, type);
153
- var fieldset_associator_id = get_fieldset_associator_id(field);
154
- var user_input = get_input_value(field, type)
155
-
156
-
157
- if (fieldset_child_id in dynamic_fieldsets_dependencies) {
158
- $.each(dynamic_fieldsets_dependencies[fieldset_child_id], function(index, group) {
159
- update_dependency_group_for_fieldset_child(group, user_input, fieldset_associator_id);
102
+ field = $(this);
103
+ var type = get_field_type(field);
104
+ var fieldset_child_id = get_fieldset_child_id(field, type)
105
+ var fieldset_associator_id = get_fieldset_associator_id(field);
106
+
107
+ var user_inputs = {}
108
+ $.each(all_inputs, function(index, input){
109
+ var all_type = get_field_type($(input));
110
+ var all_fieldset_child_id = get_fieldset_child_id($(input), all_type)
111
+ user_inputs[all_fieldset_child_id] = get_input_value($(input), all_type);
160
112
  });
161
- }
113
+
114
+ if (fieldset_child_id in dynamic_fieldsets_dependencies) {
115
+ $.each(dynamic_fieldsets_dependencies[fieldset_child_id], function(index, group) {
116
+ update_dependency_group_for_fieldset_child(fieldset_child_id, group, user_inputs, fieldset_associator_id);
117
+ });
118
+ }
162
119
  });
163
120
 
164
121
  // checks the clauses for a dependency group and runs the action
165
122
  // group: the dependency group
166
123
  // user_input: the input from the form
167
- function update_dependency_group_for_fieldset_child(group, user_input, fieldset_associator_id) {
124
+ function update_dependency_group_for_fieldset_child(fieldset_child_id, group, user_inputs, fieldset_associator_id) {
168
125
  var action = group['action'];
169
126
  var group_fsc_id = group['fieldset_child_id'];
170
127
  var group_field_id = group['field_id'];
171
128
  var group_field = '<%= DynamicFieldsets.config.form_fieldset_associator_prefix %>' + fieldset_associator_id + '_' + '<%=DynamicFieldsets.config.form_field_prefix %>' + group_fsc_id;
172
-
173
- dependency_action(all_dependency_clauses_true(group, user_input), action, group_field)
129
+ dependency_action(all_dependency_clauses_true(fieldset_child_id, group, user_inputs), action, group_field, 0 )
174
130
  }
175
131
 
176
- //all dependencies must be satisfied
132
+ //all dependencies clauses are ANDed
177
133
  //the first one that is false makes this return false
178
134
  //only return true if all return true
179
- function all_dependency_clauses_true(group, user_input) {
135
+ function all_dependency_clauses_true(fieldset_child_id, group, user_inputs) {
180
136
  for(var key in group["clause"]) {
181
137
  var clause = group["clause"][key]
182
- if(!at_least_one_dependency_true(clause, user_input)) {
138
+ if(!at_least_one_dependency_true(fieldset_child_id, clause, user_inputs)) {
183
139
  return false;
184
140
  }
185
141
  }
@@ -189,16 +145,131 @@ function all_dependency_clauses_true(group, user_input) {
189
145
  //The dependencies are ORed together
190
146
  //So as soon as one returns true, return true
191
147
  //Only return false if all are false
192
- function at_least_one_dependency_true(clause, user_input) {
148
+ //It looks to see what dependencies inside the clause should actually be tested (AU 08-07-13)
149
+ // If dependency doesn't match current field, it looks up the correct stored input to compare
150
+ function at_least_one_dependency_true(fieldset_child_id, clause, user_inputs) {
193
151
  for(var key in clause) {
194
152
  var dependency = clause[key]
195
- if(evaluate_dependency(user_input, dependency["relationship"], dependency["value"])) {
153
+ if( evaluate_dependency(user_inputs[fieldset_child_id], dependency["relationship"], dependency["value"]) ){
196
154
  return true
155
+ } else if( fieldset_child_id != dependency['fieldset_child_id'] ) {
156
+ if( evaluate_dependency(user_inputs[dependency['fieldset_child_id']], dependency['relationship'], dependency['value']) ){
157
+ return true
158
+ }
197
159
  }
198
160
  }
199
161
  return false
200
162
  }
201
163
 
164
+
165
+ //Determines whether the dependency has been satisfied
166
+ //CHANGE THIS if the dependency model changes which relationships are allowed.
167
+ //
168
+ // user_value: The value on the form
169
+ // stored_value: The value that satisfies the dependency
170
+ // relationship: The predicate used to compare the user and stored values
171
+ //
172
+ // returns the result of the relationship between user and stored valued
173
+ function evaluate_dependency(user_value, relationship, stored_value) {
174
+ switch(relationship)
175
+ {
176
+ case 'equals':
177
+ return user_value == stored_value;
178
+ case 'not equals':
179
+ return user_value != stored_value;
180
+ case 'includes':
181
+ return $.inArray(stored_value, user_value) != -1;
182
+ case 'not includes':
183
+ return $.inArray(stored_value, user_value) == -1;
184
+ case 'blank':
185
+ return user_value == "";
186
+ case 'not blank':
187
+ return user_value != "";
188
+ default:
189
+ return false;
190
+ }
191
+ };
192
+
193
+ // What to do to the field based on the dependency information
194
+ // CHANGE THIS if the dependency group model changes which actions are allowed
195
+ //
196
+ // success_flag: whether the dependency group returned true or false
197
+ // action: the type of update to apply to the field
198
+ // group_field: the field to update (generally not the field that triggered the change)
199
+ function dependency_action(success_flag, action, group_field, counter) {
200
+ if (success_flag){
201
+ switch(action)
202
+ {
203
+ case 'show':
204
+ $('[id$=' + group_field +']').show();
205
+ case 'enable':
206
+ $('#' + group_field + ' :input').removeAttr('disabled');
207
+ }
208
+ } else {
209
+ switch(action)
210
+ {
211
+ case 'show':
212
+ $('[id$=' + group_field +']').hide();
213
+ case 'enable':
214
+ $('#' + group_field + ' :input').attr('disabled', true);
215
+ }
216
+
217
+ clear_unused_fields(group_field)
218
+
219
+ //save from infinite recursion, only goes as deep as there are dependency groups
220
+ if( counter < Object.keys(dynamic_fieldsets_dependencies).length ) {
221
+ nested_dependencies(success_flag, action, group_field, counter)
222
+ }
223
+ }
224
+
225
+ };
226
+
227
+ function clear_unused_fields(group_field) {
228
+ field = $('[id$='+group_field+']').children(':input');
229
+ type = get_field_type(field);
230
+ switch(type)
231
+ {
232
+ case 'text':
233
+ case 'textarea':
234
+ field.val("");
235
+ case 'radio':
236
+ if (field.attr('checked') == 'checked') {
237
+ }
238
+ case 'checkbox':
239
+ //$('input[name="' + field.attr('name') + '"]:checked').map(function(index,option) {
240
+ //});
241
+ case 'select':
242
+ //field.find(':selected').text();
243
+ case 'multi-select':
244
+ //return field.find(':selected').map(function(index, option) {
245
+ //});
246
+ }
247
+ };
248
+
249
+ //looks through dependency hash to find dependent fields that may need to be hidden (AU 08-07-13)
250
+ function nested_dependencies(success_flag, action, group_field, counter) {
251
+ var dependent_on = group_field.split("-").pop();
252
+ for( var key in dynamic_fieldsets_dependencies ) {
253
+ var child = dynamic_fieldsets_dependencies[key]
254
+ for( var keyg in child ) {
255
+ //ignore own group since dependents won't be here
256
+ if( keyg != dependent_on ) {
257
+ var group_search = child[keyg]
258
+ for( var keyc in group_search["clause"] ) {
259
+ var clause = group_search["clause"][keyc]
260
+ for( var keyd in clause ) {
261
+ var dependency = clause[keyd]
262
+ if ( dependency["fieldset_child_id"] == dependent_on ) {
263
+ var dependent_id = group_field.replace(dependent_on, group_search["fieldset_child_id"])
264
+ dependency_action(success_flag, action, dependent_id, counter+1)
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ };
272
+
202
273
  all_inputs.change();
203
274
 
204
275
  </script>
data/config/routes.rb CHANGED
@@ -2,8 +2,8 @@ Rails.application.routes.draw do
2
2
  namespace :dynamic_fieldsets do
3
3
  resources :fieldset_associators
4
4
 
5
- resources :fieldsets
6
5
  match "/fieldsets/roots" => "fieldsets#roots"
6
+ resources :fieldsets
7
7
  match "/fieldsets/:id/children" => "fieldsets#children", :as => :children_dynamic_fieldsets_fieldset
8
8
  match "/fieldsets/:id/children/reorder" => "fieldsets#reorder"
9
9
  match "/fieldsets/new(/:parent)" => "fieldsets#new", :as => :new_dynamic_fieldsets_fieldset
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "dynamic_fieldsets"
8
- s.version = "0.1.10"
8
+ s.version = "0.1.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeremiah Hemphill", "Ethan Pemble", "John Carter"]
12
- s.date = "2012-05-30"
12
+ s.date = "2013-08-07"
13
13
  s.description = "Dynamic fieldsets for rails controllers"
14
14
  s.email = "jeremiah@cloudspace.com"
15
15
  s.extra_rdoc_files = [
@@ -217,7 +217,7 @@ Gem::Specification.new do |s|
217
217
  s.homepage = "http://github.com/jeremiahishere/dynamic_fieldsets"
218
218
  s.licenses = ["MIT"]
219
219
  s.require_paths = ["lib"]
220
- s.rubygems_version = "1.8.15"
220
+ s.rubygems_version = "1.8.25"
221
221
  s.summary = "Dynamic fieldsets for rails controllers"
222
222
 
223
223
  if s.respond_to? :specification_version then
@@ -3,7 +3,7 @@ DynamicFieldsets.configure do |config|
3
3
  # can cause the single table inheritance to fail. This is due to the object
4
4
  # space getting reset after every request. In production and test environemnts,
5
5
  # this information will not be used because the object space will be complete.
6
- # config.available_field_types = [ "DynamicFieldsets::CheckboxField", "DynamicFieldsets::"DateField", "DynamicFieldsets::"DatetimeField", "DynamicFieldsets::InstructionField", "DynamicFieldsets::MultipleSelectField", "DynamicFieldsets::RadioField", "DynamicFieldsets::SelectField", "DynamicFieldsets::TextField", "DynamicFieldsets::TextareaField" ]
6
+ # config.available_field_types = [ "DynamicFieldsets::CheckboxField", "DynamicFieldsets::DateField", "DynamicFieldsets::DatetimeField", "DynamicFieldsets::InstructionField", "DynamicFieldsets::MultipleSelectField", "DynamicFieldsets::RadioField", "DynamicFieldsets::SelectField", "DynamicFieldsets::TextField", "DynamicFieldsets::TextareaField" ]
7
7
 
8
8
  # This should correspond to the beginning of the id for the fields for on the form
9
9
  # For example: fsa-8
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  # This file is auto-generated from the current state of the database. Instead
2
3
  # of editing this file, please use the migrations feature of Active Record to
3
4
  # incrementally modify your database, and then regenerate this schema definition.
metadata CHANGED
@@ -1,226 +1,313 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dynamic_fieldsets
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.11
4
5
  prerelease:
5
- version: 0.1.10
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jeremiah Hemphill
9
9
  - Ethan Pemble
10
10
  - John Carter
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
-
15
- date: 2012-05-30 00:00:00 Z
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
14
+ date: 2013-08-07 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
18
17
  name: rails
19
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
20
19
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
24
23
  version: 3.0.7
25
24
  type: :runtime
26
25
  prerelease: false
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: 3.0.7
32
+ - !ruby/object:Gem::Dependency
29
33
  name: capybara
30
- requirement: &id002 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
31
35
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
35
39
  version: 0.4.0
36
40
  type: :development
37
41
  prerelease: false
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.4.0
48
+ - !ruby/object:Gem::Dependency
40
49
  name: sqlite3
41
- requirement: &id003 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
42
51
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
47
56
  type: :development
48
57
  prerelease: false
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
51
65
  name: ruby-debug19
52
- requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
53
67
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
58
72
  type: :development
59
73
  prerelease: false
60
- version_requirements: *id004
61
- - !ruby/object:Gem::Dependency
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
62
81
  name: bundler
63
- requirement: &id005 !ruby/object:Gem::Requirement
82
+ requirement: !ruby/object:Gem::Requirement
64
83
  none: false
65
- requirements:
84
+ requirements:
66
85
  - - ~>
67
- - !ruby/object:Gem::Version
86
+ - !ruby/object:Gem::Version
68
87
  version: 1.0.0
69
88
  type: :development
70
89
  prerelease: false
71
- version_requirements: *id005
72
- - !ruby/object:Gem::Dependency
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 1.0.0
96
+ - !ruby/object:Gem::Dependency
73
97
  name: jeweler
74
- requirement: &id006 !ruby/object:Gem::Requirement
98
+ requirement: !ruby/object:Gem::Requirement
75
99
  none: false
76
- requirements:
100
+ requirements:
77
101
  - - ~>
78
- - !ruby/object:Gem::Version
102
+ - !ruby/object:Gem::Version
79
103
  version: 1.6.3
80
104
  type: :development
81
105
  prerelease: false
82
- version_requirements: *id006
83
- - !ruby/object:Gem::Dependency
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 1.6.3
112
+ - !ruby/object:Gem::Dependency
84
113
  name: json
85
- requirement: &id007 !ruby/object:Gem::Requirement
114
+ requirement: !ruby/object:Gem::Requirement
86
115
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
91
120
  type: :development
92
121
  prerelease: false
93
- version_requirements: *id007
94
- - !ruby/object:Gem::Dependency
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
95
129
  name: rspec
96
- requirement: &id008 !ruby/object:Gem::Requirement
130
+ requirement: !ruby/object:Gem::Requirement
97
131
  none: false
98
- requirements:
132
+ requirements:
99
133
  - - ~>
100
- - !ruby/object:Gem::Version
134
+ - !ruby/object:Gem::Version
101
135
  version: 2.6.0
102
136
  type: :development
103
137
  prerelease: false
104
- version_requirements: *id008
105
- - !ruby/object:Gem::Dependency
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ~>
142
+ - !ruby/object:Gem::Version
143
+ version: 2.6.0
144
+ - !ruby/object:Gem::Dependency
106
145
  name: rspec-rails
107
- requirement: &id009 !ruby/object:Gem::Requirement
146
+ requirement: !ruby/object:Gem::Requirement
108
147
  none: false
109
- requirements:
148
+ requirements:
110
149
  - - ~>
111
- - !ruby/object:Gem::Version
150
+ - !ruby/object:Gem::Version
112
151
  version: 2.6.1
113
152
  type: :development
114
153
  prerelease: false
115
- version_requirements: *id009
116
- - !ruby/object:Gem::Dependency
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: 2.6.1
160
+ - !ruby/object:Gem::Dependency
117
161
  name: shoulda
118
- requirement: &id010 !ruby/object:Gem::Requirement
162
+ requirement: !ruby/object:Gem::Requirement
119
163
  none: false
120
- requirements:
164
+ requirements:
121
165
  - - ~>
122
- - !ruby/object:Gem::Version
166
+ - !ruby/object:Gem::Version
123
167
  version: 3.0.0
124
168
  type: :development
125
169
  prerelease: false
126
- version_requirements: *id010
127
- - !ruby/object:Gem::Dependency
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 3.0.0
176
+ - !ruby/object:Gem::Dependency
128
177
  name: ruby_parser
129
- requirement: &id011 !ruby/object:Gem::Requirement
178
+ requirement: !ruby/object:Gem::Requirement
130
179
  none: false
131
- requirements:
180
+ requirements:
132
181
  - - ~>
133
- - !ruby/object:Gem::Version
182
+ - !ruby/object:Gem::Version
134
183
  version: 2.3.1
135
184
  type: :development
136
185
  prerelease: false
137
- version_requirements: *id011
138
- - !ruby/object:Gem::Dependency
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ~>
190
+ - !ruby/object:Gem::Version
191
+ version: 2.3.1
192
+ - !ruby/object:Gem::Dependency
139
193
  name: ZenTest
140
- requirement: &id012 !ruby/object:Gem::Requirement
194
+ requirement: !ruby/object:Gem::Requirement
141
195
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: "0"
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
146
200
  type: :development
147
201
  prerelease: false
148
- version_requirements: *id012
149
- - !ruby/object:Gem::Dependency
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ - !ruby/object:Gem::Dependency
150
209
  name: autotest-rails
151
- requirement: &id013 !ruby/object:Gem::Requirement
210
+ requirement: !ruby/object:Gem::Requirement
152
211
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- version: "0"
212
+ requirements:
213
+ - - ! '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
157
216
  type: :development
158
217
  prerelease: false
159
- version_requirements: *id013
160
- - !ruby/object:Gem::Dependency
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ! '>='
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
161
225
  name: cucumber
162
- requirement: &id014 !ruby/object:Gem::Requirement
226
+ requirement: !ruby/object:Gem::Requirement
163
227
  none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: "0"
228
+ requirements:
229
+ - - ! '>='
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
168
232
  type: :development
169
233
  prerelease: false
170
- version_requirements: *id014
171
- - !ruby/object:Gem::Dependency
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ! '>='
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ - !ruby/object:Gem::Dependency
172
241
  name: cucumber-rails
173
- requirement: &id015 !ruby/object:Gem::Requirement
242
+ requirement: !ruby/object:Gem::Requirement
174
243
  none: false
175
- requirements:
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: "0"
244
+ requirements:
245
+ - - ! '>='
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
179
248
  type: :development
180
249
  prerelease: false
181
- version_requirements: *id015
182
- - !ruby/object:Gem::Dependency
250
+ version_requirements: !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ! '>='
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ - !ruby/object:Gem::Dependency
183
257
  name: database_cleaner
184
- requirement: &id016 !ruby/object:Gem::Requirement
258
+ requirement: !ruby/object:Gem::Requirement
185
259
  none: false
186
- requirements:
187
- - - ">="
188
- - !ruby/object:Gem::Version
189
- version: "0"
260
+ requirements:
261
+ - - ! '>='
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
190
264
  type: :development
191
265
  prerelease: false
192
- version_requirements: *id016
193
- - !ruby/object:Gem::Dependency
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ none: false
268
+ requirements:
269
+ - - ! '>='
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ - !ruby/object:Gem::Dependency
194
273
  name: yard
195
- requirement: &id017 !ruby/object:Gem::Requirement
274
+ requirement: !ruby/object:Gem::Requirement
196
275
  none: false
197
- requirements:
276
+ requirements:
198
277
  - - ~>
199
- - !ruby/object:Gem::Version
278
+ - !ruby/object:Gem::Version
200
279
  version: 0.6.0
201
280
  type: :development
202
281
  prerelease: false
203
- version_requirements: *id017
204
- - !ruby/object:Gem::Dependency
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ none: false
284
+ requirements:
285
+ - - ~>
286
+ - !ruby/object:Gem::Version
287
+ version: 0.6.0
288
+ - !ruby/object:Gem::Dependency
205
289
  name: ci_reporter
206
- requirement: &id018 !ruby/object:Gem::Requirement
290
+ requirement: !ruby/object:Gem::Requirement
207
291
  none: false
208
- requirements:
209
- - - ">="
210
- - !ruby/object:Gem::Version
211
- version: "0"
292
+ requirements:
293
+ - - ! '>='
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
212
296
  type: :development
213
297
  prerelease: false
214
- version_requirements: *id018
298
+ version_requirements: !ruby/object:Gem::Requirement
299
+ none: false
300
+ requirements:
301
+ - - ! '>='
302
+ - !ruby/object:Gem::Version
303
+ version: '0'
215
304
  description: Dynamic fieldsets for rails controllers
216
305
  email: jeremiah@cloudspace.com
217
306
  executables: []
218
-
219
307
  extensions: []
220
-
221
- extra_rdoc_files:
308
+ extra_rdoc_files:
222
309
  - README.rdoc
223
- files:
310
+ files:
224
311
  - .rdebugrc
225
312
  - .rspec
226
313
  - CHANGELOG
@@ -419,34 +506,31 @@ files:
419
506
  - spec/support/fieldset_child_helper.rb
420
507
  - spec/support/fieldset_helper.rb
421
508
  homepage: http://github.com/jeremiahishere/dynamic_fieldsets
422
- licenses:
509
+ licenses:
423
510
  - MIT
424
511
  post_install_message:
425
512
  rdoc_options: []
426
-
427
- require_paths:
513
+ require_paths:
428
514
  - lib
429
- required_ruby_version: !ruby/object:Gem::Requirement
515
+ required_ruby_version: !ruby/object:Gem::Requirement
430
516
  none: false
431
- requirements:
432
- - - ">="
433
- - !ruby/object:Gem::Version
434
- hash: -1949793338758347934
435
- segments:
517
+ requirements:
518
+ - - ! '>='
519
+ - !ruby/object:Gem::Version
520
+ version: '0'
521
+ segments:
436
522
  - 0
437
- version: "0"
438
- required_rubygems_version: !ruby/object:Gem::Requirement
523
+ hash: -3321699385613512278
524
+ required_rubygems_version: !ruby/object:Gem::Requirement
439
525
  none: false
440
- requirements:
441
- - - ">="
442
- - !ruby/object:Gem::Version
443
- version: "0"
526
+ requirements:
527
+ - - ! '>='
528
+ - !ruby/object:Gem::Version
529
+ version: '0'
444
530
  requirements: []
445
-
446
531
  rubyforge_project:
447
- rubygems_version: 1.8.15
532
+ rubygems_version: 1.8.25
448
533
  signing_key:
449
534
  specification_version: 3
450
535
  summary: Dynamic fieldsets for rails controllers
451
536
  test_files: []
452
-