dynamic_fieldsets 0.1.10 → 0.1.11

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.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
-