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 +1 -1
- data/app/controllers/dynamic_fieldsets/fields_controller.rb +19 -10
- data/app/controllers/dynamic_fieldsets/fieldset_children_controller.rb +0 -1
- data/app/controllers/dynamic_fieldsets/fieldsets_controller.rb +2 -2
- data/app/helpers/dynamic_fieldsets_helper.rb +45 -3
- data/app/models/dynamic_fieldsets/dependency_clause.rb +1 -1
- data/app/models/dynamic_fieldsets/dependency_group.rb +1 -1
- data/app/models/dynamic_fieldsets/fieldset_associator.rb +2 -2
- data/app/models/dynamic_fieldsets/fieldset_child.rb +1 -1
- data/app/views/dynamic_fieldsets/fieldset_children/_dependency_fields.html.erb +1 -1
- data/app/views/dynamic_fieldsets/fieldset_children/_form.html.erb +4 -1
- data/app/views/dynamic_fieldsets/fieldset_children/edit.html.erb +2 -1
- data/app/views/dynamic_fieldsets/form_partials/_instruction_field.html.erb +1 -1
- data/app/views/dynamic_fieldsets/form_partials/_select_field.html.erb +1 -1
- data/app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb +147 -76
- data/config/routes.rb +1 -1
- data/dynamic_fieldsets.gemspec +3 -3
- data/spec/dummy/config/initializers/dynamic_fieldsets.rb +1 -1
- data/spec/dummy/db/schema.rb +1 -0
- metadata +223 -139
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
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
|
-
|
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 =>
|
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 =>
|
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
|
-
|
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
|
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
|
-
|
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 %>
|
@@ -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
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
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,
|
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
|
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,
|
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,
|
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
|
-
|
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(
|
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
|
data/dynamic_fieldsets.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "dynamic_fieldsets"
|
8
|
-
s.version = "0.1.
|
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 = "
|
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.
|
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::
|
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
|
data/spec/dummy/db/schema.rb
CHANGED
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
|
-
|
16
|
-
|
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:
|
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:
|
28
|
-
|
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:
|
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:
|
39
|
-
|
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:
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
42
51
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
47
56
|
type: :development
|
48
57
|
prerelease: false
|
49
|
-
version_requirements:
|
50
|
-
|
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:
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
53
67
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version:
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
58
72
|
type: :development
|
59
73
|
prerelease: false
|
60
|
-
version_requirements:
|
61
|
-
|
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:
|
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:
|
72
|
-
|
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:
|
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:
|
83
|
-
|
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:
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
86
115
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
91
120
|
type: :development
|
92
121
|
prerelease: false
|
93
|
-
version_requirements:
|
94
|
-
|
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:
|
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:
|
105
|
-
|
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:
|
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:
|
116
|
-
|
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:
|
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:
|
127
|
-
|
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:
|
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:
|
138
|
-
|
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:
|
194
|
+
requirement: !ruby/object:Gem::Requirement
|
141
195
|
none: false
|
142
|
-
requirements:
|
143
|
-
- -
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version:
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
146
200
|
type: :development
|
147
201
|
prerelease: false
|
148
|
-
version_requirements:
|
149
|
-
|
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:
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
152
211
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
version:
|
212
|
+
requirements:
|
213
|
+
- - ! '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
157
216
|
type: :development
|
158
217
|
prerelease: false
|
159
|
-
version_requirements:
|
160
|
-
|
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:
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
163
227
|
none: false
|
164
|
-
requirements:
|
165
|
-
- -
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version:
|
228
|
+
requirements:
|
229
|
+
- - ! '>='
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
168
232
|
type: :development
|
169
233
|
prerelease: false
|
170
|
-
version_requirements:
|
171
|
-
|
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:
|
242
|
+
requirement: !ruby/object:Gem::Requirement
|
174
243
|
none: false
|
175
|
-
requirements:
|
176
|
-
- -
|
177
|
-
- !ruby/object:Gem::Version
|
178
|
-
version:
|
244
|
+
requirements:
|
245
|
+
- - ! '>='
|
246
|
+
- !ruby/object:Gem::Version
|
247
|
+
version: '0'
|
179
248
|
type: :development
|
180
249
|
prerelease: false
|
181
|
-
version_requirements:
|
182
|
-
|
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:
|
258
|
+
requirement: !ruby/object:Gem::Requirement
|
185
259
|
none: false
|
186
|
-
requirements:
|
187
|
-
- -
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version:
|
260
|
+
requirements:
|
261
|
+
- - ! '>='
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
190
264
|
type: :development
|
191
265
|
prerelease: false
|
192
|
-
version_requirements:
|
193
|
-
|
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:
|
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:
|
204
|
-
|
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:
|
290
|
+
requirement: !ruby/object:Gem::Requirement
|
207
291
|
none: false
|
208
|
-
requirements:
|
209
|
-
- -
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
version:
|
292
|
+
requirements:
|
293
|
+
- - ! '>='
|
294
|
+
- !ruby/object:Gem::Version
|
295
|
+
version: '0'
|
212
296
|
type: :development
|
213
297
|
prerelease: false
|
214
|
-
version_requirements:
|
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
|
-
|
435
|
-
segments:
|
517
|
+
requirements:
|
518
|
+
- - ! '>='
|
519
|
+
- !ruby/object:Gem::Version
|
520
|
+
version: '0'
|
521
|
+
segments:
|
436
522
|
- 0
|
437
|
-
|
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:
|
526
|
+
requirements:
|
527
|
+
- - ! '>='
|
528
|
+
- !ruby/object:Gem::Version
|
529
|
+
version: '0'
|
444
530
|
requirements: []
|
445
|
-
|
446
531
|
rubyforge_project:
|
447
|
-
rubygems_version: 1.8.
|
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
|
-
|