dynamic_fieldsets 0.0.16 → 0.1.0
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/.rdebugrc +3 -0
- data/.rspec +1 -0
- data/CHANGELOG +7 -0
- data/Gemfile +17 -8
- data/Gemfile.lock +77 -60
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/app/controllers/dynamic_fieldsets/fields_controller.rb +5 -4
- data/app/helpers/dynamic_fieldsets_helper.rb +48 -131
- data/app/models/dynamic_fieldsets.rb +2 -0
- data/app/models/dynamic_fieldsets/checkbox_field.rb +29 -0
- data/app/models/dynamic_fieldsets/date_field.rb +37 -0
- data/app/models/dynamic_fieldsets/datetime_field.rb +36 -0
- data/app/models/dynamic_fieldsets/dependency.rb +1 -1
- 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/field.rb +170 -42
- data/app/models/dynamic_fieldsets/field_default.rb +3 -3
- data/app/models/dynamic_fieldsets/field_html_attribute.rb +1 -1
- data/app/models/dynamic_fieldsets/field_option.rb +1 -1
- data/app/models/dynamic_fieldsets/field_record.rb +1 -1
- data/app/models/dynamic_fieldsets/fieldset.rb +36 -1
- data/app/models/dynamic_fieldsets/fieldset_associator.rb +9 -34
- data/app/models/dynamic_fieldsets/fieldset_child.rb +43 -24
- data/app/models/dynamic_fieldsets/instruction_field.rb +35 -0
- data/app/models/dynamic_fieldsets/multiple_select_field.rb +43 -0
- data/app/models/dynamic_fieldsets/radio_field.rb +27 -0
- data/app/models/dynamic_fieldsets/select_field.rb +16 -0
- data/app/models/dynamic_fieldsets/text_field.rb +14 -0
- data/app/models/dynamic_fieldsets/textarea_field.rb +40 -0
- data/app/views/dynamic_fieldsets/fields/_form.html.erb +50 -52
- data/app/views/dynamic_fieldsets/fields/edit.html.erb +5 -2
- data/app/views/dynamic_fieldsets/fields/index.html.erb +1 -1
- data/app/views/dynamic_fieldsets/fields/new.html.erb +3 -1
- data/app/views/dynamic_fieldsets/fields/show.html.erb +1 -1
- data/app/views/dynamic_fieldsets/fieldsets/_child.html.erb +1 -1
- data/app/views/dynamic_fieldsets/form_partials/_checkbox_field.html.erb +8 -0
- data/app/views/dynamic_fieldsets/form_partials/_date_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_datetime_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_input_footer.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_input_header.html.erb +7 -0
- data/app/views/dynamic_fieldsets/form_partials/_instruction_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_multiple_select_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_radio_field.html.erb +8 -0
- data/app/views/dynamic_fieldsets/form_partials/_select_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_text_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/form_partials/_textarea_field.html.erb +1 -0
- data/app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb +8 -8
- data/app/views/dynamic_fieldsets/show_partials/_show_incomplete.html.erb +1 -0
- data/app/views/dynamic_fieldsets/show_partials/_show_incomplete_footer.html.erb +2 -0
- data/app/views/dynamic_fieldsets/show_partials/_show_incomplete_header.html.erb +1 -0
- data/app/views/dynamic_fieldsets/show_partials/_show_instruction.html.erb +1 -0
- data/app/views/dynamic_fieldsets/show_partials/_show_multiple_answers.html.erb +13 -0
- data/app/views/dynamic_fieldsets/show_partials/_show_single_answer.html.erb +8 -0
- data/autotest/discover.rb +2 -0
- data/dynamic_fieldsets.gemspec +74 -20
- data/lib/dynamic_fieldsets/config.rb +45 -0
- data/lib/dynamic_fieldsets/dynamic_fieldsets_in_model.rb +38 -63
- data/lib/dynamic_fieldsets/field_with_field_options.rb +58 -0
- data/lib/dynamic_fieldsets/field_with_multiple_answers.rb +89 -0
- data/lib/dynamic_fieldsets/field_with_single_answer.rb +84 -0
- data/lib/dynamic_fieldsets/railtie.rb +6 -1
- data/lib/generators/dynamic_fieldsets/install_generator.rb +3 -3
- data/lib/generators/dynamic_fieldsets/templates/config.rb +15 -0
- data/lib/generators/dynamic_fieldsets/templates/migrations/install_migration.rb +1 -1
- data/spec/dummy/config/initializers/dynamic_fieldsets.rb +15 -0
- data/spec/dummy/db/migrate/20120213211033_create_dynamic_fieldsets_tables.rb +1 -1
- data/spec/dummy/db/schema.rb +1 -1
- data/spec/dummy/features/step_definitions/field_steps.rb +4 -4
- data/spec/dummy/features/step_definitions/fieldset_children_steps.rb +2 -2
- data/spec/dummy/features/step_definitions/javascript_steps.rb +7 -7
- data/spec/dynamic_fieldsets_helper_spec.rb +278 -312
- data/spec/dynamic_fieldsets_in_model_spec.rb +2 -2
- data/spec/field_with_field_options_spec.rb +49 -0
- data/spec/field_with_multiple_answers_spec.rb +50 -0
- data/spec/field_with_single_answer_spec.rb +51 -0
- data/spec/models/checkbox_field_spec.rb +19 -0
- data/spec/models/date_field_spec.rb +24 -0
- data/spec/models/datetime_field_spec.rb +24 -0
- data/spec/models/dependency_clause_spec.rb +7 -8
- data/spec/models/dependency_group_spec.rb +27 -30
- data/spec/models/dependency_spec.rb +8 -9
- data/spec/models/field_default_spec.rb +19 -14
- data/spec/models/field_html_attribute_spec.rb +3 -4
- data/spec/models/field_option_spec.rb +8 -9
- data/spec/models/field_record_spec.rb +8 -9
- data/spec/models/field_spec.rb +195 -94
- data/spec/models/fieldset_associator_spec.rb +39 -41
- data/spec/models/fieldset_child_spec.rb +99 -47
- data/spec/models/fieldset_spec.rb +25 -29
- data/spec/models/instruction_field_spec.rb +38 -0
- data/spec/models/multiple_select_field_spec.rb +31 -0
- data/spec/models/radio_field_spec.rb +21 -0
- data/spec/models/text_field_spec.rb +19 -0
- data/spec/models/textarea_field_spec.rb +39 -0
- data/spec/support/field_helper.rb +1 -1
- metadata +106 -28
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<h1>Editing field</h1>
|
|
2
2
|
|
|
3
|
-
<%=
|
|
3
|
+
<%= form_for(@field, :as => :dynamic_fieldsets_field, :url => dynamic_fieldsets_field_path, :method => :put) do |f| %>
|
|
4
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
|
5
|
+
<% end %>
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
|
|
8
|
+
<%= link_to 'Show', dynamic_fieldsets_field_path(@field) %> |
|
|
6
9
|
<%= link_to 'Back', dynamic_fieldsets_fields_path %>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<% @fields.each do |field| %>
|
|
13
13
|
<tr>
|
|
14
14
|
<td><%= field.name %></td>
|
|
15
|
-
<td><%= field.
|
|
15
|
+
<td><%= field.type %></td>
|
|
16
16
|
<td><%= link_to 'Show', dynamic_fieldsets_field_path(field) %></td>
|
|
17
17
|
<td><%= link_to 'Edit', edit_dynamic_fieldsets_field_path(field) %></td>
|
|
18
18
|
<td><%= render :partial => "disable_field_form", :locals => { :field => field } %></td>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<% fieldset_child = DynamicFieldsets::FieldsetChild.where( fieldset_id: fieldset.id, child_id: child.id, child_type: "DynamicFieldsets::Field" ).first %>
|
|
28
28
|
<li id="child-<%= fieldset_child.id %>" class="field<%= ' required' if child.required? %>">
|
|
29
29
|
<div>
|
|
30
|
-
<span class="fieldtype"><%= child.
|
|
30
|
+
<span class="fieldtype"><%= child.type %>:</span>
|
|
31
31
|
<span class="name"><%= child.label %></span>
|
|
32
32
|
<span class="admin">
|
|
33
33
|
<span class="show"><%= link_to 'Show', dynamic_fieldsets_field_path(child) %></span>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= date_select(object, method, date_options, attrs) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= datetime_select(object, method, date_options, attrs) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
</li>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<li class='<%= classes %>' id='input-<%= DynamicFieldsets.config.form_field_prefix %><%= field.id %>-child-<%= fieldset_child.id %>'>
|
|
2
|
+
<label for ='<%=DynamicFieldsets.config.form_field_prefix %><%= field.id %>'>
|
|
3
|
+
<%= field.label %>
|
|
4
|
+
<% if field.required? %>
|
|
5
|
+
<abbr title='required'>*</abbr>
|
|
6
|
+
<% end %>
|
|
7
|
+
</label>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p><%= label %></p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= select_tag(name, options_from_collection_for_select( collection, :id, :name, selected_ids ), attrs) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= select_tag(name, options_from_collection_for_select( collection, :id, :name, selected_id ), attrs) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= text_field object, method, attrs %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= text_area_tag(name, content, attrs) %>
|
|
@@ -13,8 +13,8 @@ var allInputs = $(":input:not(:hidden)");
|
|
|
13
13
|
|
|
14
14
|
***************************************************************************/
|
|
15
15
|
|
|
16
|
-
function grab_fsc_id(field,
|
|
17
|
-
switch(
|
|
16
|
+
function grab_fsc_id(field, type) {
|
|
17
|
+
switch(type)
|
|
18
18
|
{
|
|
19
19
|
case 'text':
|
|
20
20
|
var id_array = field.attr('id').split('-');
|
|
@@ -114,8 +114,8 @@ function group_action(success_flag, action, group_field) {
|
|
|
114
114
|
}
|
|
115
115
|
};
|
|
116
116
|
|
|
117
|
-
function grab_value(field,
|
|
118
|
-
switch(
|
|
117
|
+
function grab_value(field, type) {
|
|
118
|
+
switch(type)
|
|
119
119
|
{
|
|
120
120
|
case 'text':
|
|
121
121
|
return field.attr('value').toLowerCase();
|
|
@@ -204,15 +204,15 @@ function getIntersect(arr1, arr2) {
|
|
|
204
204
|
|
|
205
205
|
allInputs.change( function() {
|
|
206
206
|
var field = $(this);
|
|
207
|
-
var
|
|
208
|
-
var fieldset_child_id = grab_fsc_id(field,
|
|
209
|
-
var entered_value = grab_value(field,
|
|
207
|
+
var type = grab_type(field);
|
|
208
|
+
var fieldset_child_id = grab_fsc_id(field, type);
|
|
209
|
+
var entered_value = grab_value(field, type)
|
|
210
210
|
if (fieldset_child_id in json_holder) {
|
|
211
211
|
for (var group in json_holder[fieldset_child_id]) {
|
|
212
212
|
var action = json_holder[fieldset_child_id][group]['action'];
|
|
213
213
|
var group_fsc_id = json_holder[fieldset_child_id][group]['fieldset_child_id'];
|
|
214
214
|
var group_field_id = json_holder[fieldset_child_id][group]['field_id'];
|
|
215
|
-
var group_field = '
|
|
215
|
+
var group_field = '<%= DynamicFieldsets.config.form_field_prefix %>' + group_field_id + '-child-' + group_fsc_id;
|
|
216
216
|
|
|
217
217
|
// As each dependency clause is AND'd together, we'll assume it'll be
|
|
218
218
|
// true until short circuited into being false.`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p>This field type needs to set the show_partial to an existing partial.</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p>This footer needs to be overridden by setting show_header_partial in your child Field class.</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p><%= label %></p>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class='dynamic_fieldsets field'>
|
|
2
|
+
<span class='label'><%= label %></label>
|
|
3
|
+
<% if values.nil? || values.empty? %>
|
|
4
|
+
<em class='empty'>No answer given</em>
|
|
5
|
+
<% else %>
|
|
6
|
+
<ul>
|
|
7
|
+
<% values.each do |value| %>
|
|
8
|
+
<span class='value'><%= value %></span>
|
|
9
|
+
<% end %>
|
|
10
|
+
</ul>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
|
13
|
+
|
data/dynamic_fieldsets.gemspec
CHANGED
|
@@ -5,17 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "dynamic_fieldsets"
|
|
8
|
-
s.version = "0.0
|
|
8
|
+
s.version = "0.1.0"
|
|
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-02-
|
|
12
|
+
s.date = "2012-02-28"
|
|
13
13
|
s.description = "Dynamic fieldsets for rails controllers"
|
|
14
14
|
s.email = "jeremiah@cloudspace.com"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
16
16
|
"README.rdoc"
|
|
17
17
|
]
|
|
18
18
|
s.files = [
|
|
19
|
+
".rdebugrc",
|
|
20
|
+
".rspec",
|
|
19
21
|
"CHANGELOG",
|
|
20
22
|
"Gemfile",
|
|
21
23
|
"Gemfile.lock",
|
|
@@ -31,6 +33,10 @@ Gem::Specification.new do |s|
|
|
|
31
33
|
"app/helpers/dynamic_fieldsets/fieldset_children_helper.rb",
|
|
32
34
|
"app/helpers/dynamic_fieldsets/nested_model_helper.rb",
|
|
33
35
|
"app/helpers/dynamic_fieldsets_helper.rb",
|
|
36
|
+
"app/models/dynamic_fieldsets.rb",
|
|
37
|
+
"app/models/dynamic_fieldsets/checkbox_field.rb",
|
|
38
|
+
"app/models/dynamic_fieldsets/date_field.rb",
|
|
39
|
+
"app/models/dynamic_fieldsets/datetime_field.rb",
|
|
34
40
|
"app/models/dynamic_fieldsets/dependency.rb",
|
|
35
41
|
"app/models/dynamic_fieldsets/dependency_clause.rb",
|
|
36
42
|
"app/models/dynamic_fieldsets/dependency_group.rb",
|
|
@@ -42,6 +48,12 @@ Gem::Specification.new do |s|
|
|
|
42
48
|
"app/models/dynamic_fieldsets/fieldset.rb",
|
|
43
49
|
"app/models/dynamic_fieldsets/fieldset_associator.rb",
|
|
44
50
|
"app/models/dynamic_fieldsets/fieldset_child.rb",
|
|
51
|
+
"app/models/dynamic_fieldsets/instruction_field.rb",
|
|
52
|
+
"app/models/dynamic_fieldsets/multiple_select_field.rb",
|
|
53
|
+
"app/models/dynamic_fieldsets/radio_field.rb",
|
|
54
|
+
"app/models/dynamic_fieldsets/select_field.rb",
|
|
55
|
+
"app/models/dynamic_fieldsets/text_field.rb",
|
|
56
|
+
"app/models/dynamic_fieldsets/textarea_field.rb",
|
|
45
57
|
"app/views/dynamic_fieldsets/fields/_disable_field_form.html.erb",
|
|
46
58
|
"app/views/dynamic_fieldsets/fields/_field_default_fields.html.erb",
|
|
47
59
|
"app/views/dynamic_fieldsets/fields/_field_html_attribute_fields.html.erb",
|
|
@@ -67,8 +79,26 @@ Gem::Specification.new do |s|
|
|
|
67
79
|
"app/views/dynamic_fieldsets/fieldsets/new.html.erb",
|
|
68
80
|
"app/views/dynamic_fieldsets/fieldsets/reorder.html.erb",
|
|
69
81
|
"app/views/dynamic_fieldsets/fieldsets/show.html.erb",
|
|
82
|
+
"app/views/dynamic_fieldsets/form_partials/_checkbox_field.html.erb",
|
|
83
|
+
"app/views/dynamic_fieldsets/form_partials/_date_field.html.erb",
|
|
84
|
+
"app/views/dynamic_fieldsets/form_partials/_datetime_field.html.erb",
|
|
85
|
+
"app/views/dynamic_fieldsets/form_partials/_input_footer.html.erb",
|
|
86
|
+
"app/views/dynamic_fieldsets/form_partials/_input_header.html.erb",
|
|
87
|
+
"app/views/dynamic_fieldsets/form_partials/_instruction_field.html.erb",
|
|
88
|
+
"app/views/dynamic_fieldsets/form_partials/_multiple_select_field.html.erb",
|
|
89
|
+
"app/views/dynamic_fieldsets/form_partials/_radio_field.html.erb",
|
|
90
|
+
"app/views/dynamic_fieldsets/form_partials/_select_field.html.erb",
|
|
91
|
+
"app/views/dynamic_fieldsets/form_partials/_text_field.html.erb",
|
|
92
|
+
"app/views/dynamic_fieldsets/form_partials/_textarea_field.html.erb",
|
|
70
93
|
"app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb",
|
|
71
94
|
"app/views/dynamic_fieldsets/shared/_nested_model_javascript.html.erb",
|
|
95
|
+
"app/views/dynamic_fieldsets/show_partials/_show_incomplete.html.erb",
|
|
96
|
+
"app/views/dynamic_fieldsets/show_partials/_show_incomplete_footer.html.erb",
|
|
97
|
+
"app/views/dynamic_fieldsets/show_partials/_show_incomplete_header.html.erb",
|
|
98
|
+
"app/views/dynamic_fieldsets/show_partials/_show_instruction.html.erb",
|
|
99
|
+
"app/views/dynamic_fieldsets/show_partials/_show_multiple_answers.html.erb",
|
|
100
|
+
"app/views/dynamic_fieldsets/show_partials/_show_single_answer.html.erb",
|
|
101
|
+
"autotest/discover.rb",
|
|
72
102
|
"config/.routes.rb.swp",
|
|
73
103
|
"config/routes.rb",
|
|
74
104
|
"dynamic_fieldsets.gemspec",
|
|
@@ -76,6 +106,9 @@ Gem::Specification.new do |s|
|
|
|
76
106
|
"lib/dynamic_fieldsets/config.rb",
|
|
77
107
|
"lib/dynamic_fieldsets/dynamic_fieldsets_in_model.rb",
|
|
78
108
|
"lib/dynamic_fieldsets/engine.rb",
|
|
109
|
+
"lib/dynamic_fieldsets/field_with_field_options.rb",
|
|
110
|
+
"lib/dynamic_fieldsets/field_with_multiple_answers.rb",
|
|
111
|
+
"lib/dynamic_fieldsets/field_with_single_answer.rb",
|
|
79
112
|
"lib/dynamic_fieldsets/railtie.rb",
|
|
80
113
|
"lib/generators/dynamic_fieldsets/controllers_generator.rb",
|
|
81
114
|
"lib/generators/dynamic_fieldsets/install_generator.rb",
|
|
@@ -104,6 +137,7 @@ Gem::Specification.new do |s|
|
|
|
104
137
|
"spec/dummy/config/environments/production.rb",
|
|
105
138
|
"spec/dummy/config/environments/test.rb",
|
|
106
139
|
"spec/dummy/config/initializers/backtrace_silencers.rb",
|
|
140
|
+
"spec/dummy/config/initializers/dynamic_fieldsets.rb",
|
|
107
141
|
"spec/dummy/config/initializers/inflections.rb",
|
|
108
142
|
"spec/dummy/config/initializers/mime_types.rb",
|
|
109
143
|
"spec/dummy/config/initializers/secret_token.rb",
|
|
@@ -143,7 +177,13 @@ Gem::Specification.new do |s|
|
|
|
143
177
|
"spec/dynamic_fieldsets_helper_spec.rb",
|
|
144
178
|
"spec/dynamic_fieldsets_in_model_spec.rb",
|
|
145
179
|
"spec/dynamic_fieldsets_spec.rb",
|
|
180
|
+
"spec/field_with_field_options_spec.rb",
|
|
181
|
+
"spec/field_with_multiple_answers_spec.rb",
|
|
182
|
+
"spec/field_with_single_answer_spec.rb",
|
|
146
183
|
"spec/integration/navigation_spec.rb",
|
|
184
|
+
"spec/models/checkbox_field_spec.rb",
|
|
185
|
+
"spec/models/date_field_spec.rb",
|
|
186
|
+
"spec/models/datetime_field_spec.rb",
|
|
147
187
|
"spec/models/dependency_clause_spec.rb",
|
|
148
188
|
"spec/models/dependency_group_spec.rb",
|
|
149
189
|
"spec/models/dependency_spec.rb",
|
|
@@ -155,6 +195,11 @@ Gem::Specification.new do |s|
|
|
|
155
195
|
"spec/models/fieldset_associator_spec.rb",
|
|
156
196
|
"spec/models/fieldset_child_spec.rb",
|
|
157
197
|
"spec/models/fieldset_spec.rb",
|
|
198
|
+
"spec/models/instruction_field_spec.rb",
|
|
199
|
+
"spec/models/multiple_select_field_spec.rb",
|
|
200
|
+
"spec/models/radio_field_spec.rb",
|
|
201
|
+
"spec/models/text_field_spec.rb",
|
|
202
|
+
"spec/models/textarea_field_spec.rb",
|
|
158
203
|
"spec/spec_helper.rb",
|
|
159
204
|
"spec/support/dependency_group_helper.rb",
|
|
160
205
|
"spec/support/dependency_helper.rb",
|
|
@@ -177,53 +222,62 @@ Gem::Specification.new do |s|
|
|
|
177
222
|
s.specification_version = 3
|
|
178
223
|
|
|
179
224
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
180
|
-
s.add_runtime_dependency(%q<rails>, ["
|
|
225
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.0.7"])
|
|
181
226
|
s.add_development_dependency(%q<capybara>, [">= 0.4.0"])
|
|
182
227
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
|
183
228
|
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
|
229
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
230
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
231
|
+
s.add_development_dependency(%q<json>, [">= 0"])
|
|
184
232
|
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
|
185
233
|
s.add_development_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
|
186
|
-
s.add_development_dependency(%q<
|
|
234
|
+
s.add_development_dependency(%q<shoulda>, ["~> 3.0.0"])
|
|
235
|
+
s.add_development_dependency(%q<ruby_parser>, ["~> 2.3.1"])
|
|
236
|
+
s.add_development_dependency(%q<ZenTest>, [">= 0"])
|
|
237
|
+
s.add_development_dependency(%q<autotest-rails>, [">= 0"])
|
|
187
238
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
|
188
239
|
s.add_development_dependency(%q<cucumber-rails>, [">= 0"])
|
|
189
240
|
s.add_development_dependency(%q<database_cleaner>, [">= 0"])
|
|
190
|
-
s.add_development_dependency(%q<
|
|
191
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
192
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
193
|
-
s.add_development_dependency(%q<json>, [">= 0"])
|
|
241
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
|
194
242
|
s.add_development_dependency(%q<ci_reporter>, [">= 0"])
|
|
195
243
|
else
|
|
196
|
-
s.add_dependency(%q<rails>, ["
|
|
244
|
+
s.add_dependency(%q<rails>, ["~> 3.0.7"])
|
|
197
245
|
s.add_dependency(%q<capybara>, [">= 0.4.0"])
|
|
198
246
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
|
199
247
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
|
248
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
249
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
250
|
+
s.add_dependency(%q<json>, [">= 0"])
|
|
200
251
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
|
201
252
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
|
202
|
-
s.add_dependency(%q<
|
|
253
|
+
s.add_dependency(%q<shoulda>, ["~> 3.0.0"])
|
|
254
|
+
s.add_dependency(%q<ruby_parser>, ["~> 2.3.1"])
|
|
255
|
+
s.add_dependency(%q<ZenTest>, [">= 0"])
|
|
256
|
+
s.add_dependency(%q<autotest-rails>, [">= 0"])
|
|
203
257
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
|
204
258
|
s.add_dependency(%q<cucumber-rails>, [">= 0"])
|
|
205
259
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
|
206
|
-
s.add_dependency(%q<
|
|
207
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
208
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
209
|
-
s.add_dependency(%q<json>, [">= 0"])
|
|
260
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
|
210
261
|
s.add_dependency(%q<ci_reporter>, [">= 0"])
|
|
211
262
|
end
|
|
212
263
|
else
|
|
213
|
-
s.add_dependency(%q<rails>, ["
|
|
264
|
+
s.add_dependency(%q<rails>, ["~> 3.0.7"])
|
|
214
265
|
s.add_dependency(%q<capybara>, [">= 0.4.0"])
|
|
215
266
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
|
216
267
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
|
268
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
269
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
270
|
+
s.add_dependency(%q<json>, [">= 0"])
|
|
217
271
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
|
218
272
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
|
219
|
-
s.add_dependency(%q<
|
|
273
|
+
s.add_dependency(%q<shoulda>, ["~> 3.0.0"])
|
|
274
|
+
s.add_dependency(%q<ruby_parser>, ["~> 2.3.1"])
|
|
275
|
+
s.add_dependency(%q<ZenTest>, [">= 0"])
|
|
276
|
+
s.add_dependency(%q<autotest-rails>, [">= 0"])
|
|
220
277
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
|
221
278
|
s.add_dependency(%q<cucumber-rails>, [">= 0"])
|
|
222
279
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
|
223
|
-
s.add_dependency(%q<
|
|
224
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
|
225
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
226
|
-
s.add_dependency(%q<json>, [">= 0"])
|
|
280
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
|
227
281
|
s.add_dependency(%q<ci_reporter>, [">= 0"])
|
|
228
282
|
end
|
|
229
283
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# this file was stolen from kaminari
|
|
2
|
+
require 'active_support/configurable'
|
|
3
|
+
|
|
4
|
+
module DynamicFieldsets
|
|
5
|
+
|
|
6
|
+
# create new configs by passing a block with the config assignment
|
|
7
|
+
def self.configure(&block)
|
|
8
|
+
yield @config ||= DynamicFieldsets::Configuration.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.config
|
|
12
|
+
@config
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# setup config data
|
|
16
|
+
class Configuration
|
|
17
|
+
include ActiveSupport::Configurable
|
|
18
|
+
config_accessor :available_field_types
|
|
19
|
+
config_accessor :form_fieldset_associator_prefix
|
|
20
|
+
config_accessor :form_field_prefix
|
|
21
|
+
|
|
22
|
+
def param_name
|
|
23
|
+
config.param_name.respond_to?(:call) ? config.param_name.call() : config.param_name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# setup default options
|
|
28
|
+
# this should match the generator config that goes in the initializer file
|
|
29
|
+
configure do |config|
|
|
30
|
+
config.available_field_types = [
|
|
31
|
+
"DynamicFieldsets::CheckboxField",
|
|
32
|
+
"DynamicFieldsets::DateField",
|
|
33
|
+
"DynamicFieldsets::DatetimeField",
|
|
34
|
+
"DynamicFieldsets::InstructionField",
|
|
35
|
+
"DynamicFieldsets::MultipleSelectField",
|
|
36
|
+
"DynamicFieldsets::RadioField",
|
|
37
|
+
"DynamicFieldsets::SelectField",
|
|
38
|
+
"DynamicFieldsets::TextField",
|
|
39
|
+
"DynamicFieldsets::TextareaField"
|
|
40
|
+
]
|
|
41
|
+
config.form_fieldset_associator_prefix = "fsa-"
|
|
42
|
+
config.form_field_prefix = "field-"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
@@ -59,7 +59,7 @@ module DynamicFieldsets
|
|
|
59
59
|
# for each fsa
|
|
60
60
|
self.dynamic_fieldsets.keys.each do |key|
|
|
61
61
|
fsa = self.fieldset_associator(key)
|
|
62
|
-
fsa_tag_id =
|
|
62
|
+
fsa_tag_id = DynamicFieldsets.config.form_fieldset_associator_prefix + fsa.id.to_s
|
|
63
63
|
|
|
64
64
|
# check if the values are set, if it matches the current fsa, and if it matches the current fieldset
|
|
65
65
|
if !self.dynamic_fieldset_values.nil? && self.dynamic_fieldset_values.has_key?(fsa_tag_id) && self.dynamic_fieldset_values[fsa_tag_id][:fieldset_model_name] == key
|
|
@@ -81,8 +81,8 @@ module DynamicFieldsets
|
|
|
81
81
|
end
|
|
82
82
|
elsif child.is_a?(DynamicFieldsets::Field)
|
|
83
83
|
# if a child, check if the params value is set, check if it is required, check if it satisfies condition
|
|
84
|
-
fsa_tag_id =
|
|
85
|
-
field_tag_id =
|
|
84
|
+
fsa_tag_id = DynamicFieldsets.config.form_fieldset_associator_prefix + fsa_id.to_s
|
|
85
|
+
field_tag_id = DynamicFieldsets.config.form_field_prefix + child.id.to_s
|
|
86
86
|
if !self.dynamic_fieldset_values[fsa_tag_id].has_key?(field_tag_id)
|
|
87
87
|
self.errors.add(:base, child.label + " is missing from the form data")
|
|
88
88
|
else
|
|
@@ -95,17 +95,18 @@ module DynamicFieldsets
|
|
|
95
95
|
end
|
|
96
96
|
else
|
|
97
97
|
# found a major problem, not sure how to get here
|
|
98
|
-
|
|
98
|
+
throw "found a child that wasn't a field or fieldset" + child.inspect
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# Stores data from the controller into the dynamic_fieldset_values instance variable
|
|
103
|
+
# Also combines the date and time fields into a single field
|
|
103
104
|
#
|
|
104
105
|
# @param [Hash] params The parameters from the controller that include fsa tags
|
|
105
106
|
def set_fieldset_values( params )
|
|
106
|
-
values = params.select{ |key| key.match(
|
|
107
|
+
values = params.select{ |key| key.match(/^#{DynamicFieldsets.config.form_fieldset_associator_prefix}/) }
|
|
107
108
|
values.keys.each do |key|
|
|
108
|
-
set_date_to_mysql( values[key] )
|
|
109
|
+
values[key] = set_date_to_mysql( values[key] )
|
|
109
110
|
end
|
|
110
111
|
self.dynamic_fieldset_values = values
|
|
111
112
|
end
|
|
@@ -116,6 +117,12 @@ module DynamicFieldsets
|
|
|
116
117
|
# time conversions. If the query receives a string instead of a time object, time zone information
|
|
117
118
|
# may be saved incorrectly. (1-25-2012)
|
|
118
119
|
#
|
|
120
|
+
# At some point this should be moved to the date_field and datetime_field models. Right now, it needs
|
|
121
|
+
# to stay here because we are taking the values from the form and iterating over the keys. This
|
|
122
|
+
# will not work because the date information is stored int 3-5 keys. We need to change the form
|
|
123
|
+
# data parser to get a list of expected field and iterate over them, looking for the values in the
|
|
124
|
+
# form post. That is a big change that we don't have time for now. (JH 2-27-2012)
|
|
125
|
+
#
|
|
119
126
|
# @param [Hash] post The post parameters that include date fields like date(1i), date(2i), ...
|
|
120
127
|
# @return [Hash] The modified hash containing one key-pair value in YYYY-MM-DD[ hh:mm] format.
|
|
121
128
|
def set_date_to_mysql( post )
|
|
@@ -143,73 +150,41 @@ module DynamicFieldsets
|
|
|
143
150
|
return post
|
|
144
151
|
end
|
|
145
152
|
|
|
146
|
-
|
|
147
|
-
#
|
|
148
|
-
# needs to be refactored and tested
|
|
149
|
-
#
|
|
150
|
-
# among other things, it can edit field records for random fsas if the wrong information comes from the controller
|
|
151
|
-
|
|
153
|
+
# Given the form values, finds the keys that correspond to fieldsets
|
|
154
|
+
# then passes the value for the key to the fieldset associator object for saving into individual field records
|
|
152
155
|
def save_dynamic_fieldsets
|
|
153
156
|
values = self.dynamic_fieldset_values
|
|
154
157
|
if !values.nil?
|
|
155
158
|
values.keys.each do |key|
|
|
156
|
-
if key.start_with?(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if key_id.eql? ""
|
|
160
|
-
then fsa = DynamicFieldsets::FieldsetAssociator.create(
|
|
161
|
-
:fieldset_id => values[key][:fieldset_id],
|
|
162
|
-
:fieldset_model_id => self.id,
|
|
163
|
-
:fieldset_model_type => self.class.name,
|
|
164
|
-
:fieldset_model_name => values[key][:fieldset_model_name] )
|
|
165
|
-
else fsa = DynamicFieldsets::FieldsetAssociator.find_by_id key_id
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
values[key].keys.each do |sub_key| # EACH FIELD
|
|
169
|
-
if sub_key.start_with?("field-")
|
|
170
|
-
sub_key_id = sub_key.gsub(/^field-/, "")
|
|
171
|
-
|
|
172
|
-
this_value = values[key][sub_key]
|
|
173
|
-
if this_value.is_a? Array
|
|
174
|
-
then # multiple values
|
|
175
|
-
field_records = DynamicFieldsets::FieldRecord.where(:fieldset_associator_id => fsa.id, :fieldset_child_id => sub_key_id)
|
|
176
|
-
|
|
177
|
-
this_value.each do |value|
|
|
178
|
-
if field_records.select{ |record| record.value.eql? value }.empty? # record does not exist?
|
|
179
|
-
#ADD
|
|
180
|
-
DynamicFieldsets::FieldRecord.create( :fieldset_associator_id => fsa.id,
|
|
181
|
-
:fieldset_child_id => sub_key_id,
|
|
182
|
-
:value => value)
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
field_records.each do |record|
|
|
186
|
-
if !this_value.include? record.value then
|
|
187
|
-
#DELETE
|
|
188
|
-
record.destroy
|
|
189
|
-
else
|
|
190
|
-
#KEEP
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
else # single value
|
|
195
|
-
# retrieve record
|
|
196
|
-
field_record = DynamicFieldsets::FieldRecord.where(:fieldset_associator_id => fsa.id, :fieldset_child_id => sub_key_id).first
|
|
197
|
-
if field_record.nil? # create record
|
|
198
|
-
field_record = DynamicFieldsets::FieldRecord.create(:fieldset_associator_id => fsa.id, :fieldset_child_id => sub_key_id, :value => this_value)
|
|
199
|
-
else # update record
|
|
200
|
-
field_record.value = this_value
|
|
201
|
-
field_record.save
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
end
|
|
206
|
-
end
|
|
159
|
+
if key.start_with?(DynamicFieldsets.config.form_fieldset_associator_prefix)
|
|
160
|
+
save_fsa(key, values[key])
|
|
207
161
|
end
|
|
208
162
|
end
|
|
209
163
|
end
|
|
210
164
|
self.dynamic_fieldset_values = nil
|
|
211
165
|
end
|
|
212
166
|
|
|
167
|
+
# save all of the fields and fieldsets in the values hash for this fieldset associator
|
|
168
|
+
#
|
|
169
|
+
# @param [String] The key that includes the fieldset associator's id
|
|
170
|
+
# @param [Hash] fsa_values An array of input information from the form
|
|
171
|
+
def save_fsa(key, fsa_values)
|
|
172
|
+
key_id = key.gsub(/^#{DynamicFieldsets.config.form_fieldset_associator_prefix}/, "")
|
|
173
|
+
|
|
174
|
+
if(key_id == "")
|
|
175
|
+
fsa = DynamicFieldsets::FieldsetAssociator.create(
|
|
176
|
+
:fieldset_id => fsa_values[:fieldset_id],
|
|
177
|
+
:fieldset_model_id => self.id,
|
|
178
|
+
:fieldset_model_type => self.class.name,
|
|
179
|
+
:fieldset_model_name => fsa_values[:fieldset_model_name]
|
|
180
|
+
)
|
|
181
|
+
else
|
|
182
|
+
fsa = DynamicFieldsets::FieldsetAssociator.find_by_id key_id
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
fsa.update_fieldset_records_with_form_information(fsa_values)
|
|
186
|
+
end
|
|
187
|
+
|
|
213
188
|
# Matches methods that match named_fieldset and named_fieldset_fieldset
|
|
214
189
|
# Or calls super
|
|
215
190
|
#
|