fe 0.0.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +16 -36
- data/app/assets/javascripts/fe/admin.js +0 -1
- data/app/assets/javascripts/fe/fe.admin.js +40 -16
- data/app/assets/javascripts/fe/fe.common.js +48 -14
- data/app/assets/javascripts/fe/fe.public.js +1 -414
- data/app/assets/javascripts/fe/fe.public.nojquery.js +450 -0
- data/app/assets/javascripts/fe/jquery.validate.pack.js +3 -15
- data/app/assets/stylesheets/360front.css +0 -0
- data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +69 -10
- data/app/controllers/fe/admin/elements_controller.rb +64 -48
- data/app/controllers/fe/admin/email_templates_controller.rb +2 -2
- data/app/controllers/fe/admin/question_pages_controller.rb +1 -1
- data/app/controllers/fe/admin/question_sheets_controller.rb +2 -103
- data/app/controllers/fe/concerns/admin/question_sheets_controller_concern.rb +112 -0
- data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +2 -1
- data/app/controllers/fe/concerns/answer_sheets_controller_concern.rb +1 -1
- data/app/controllers/fe/concerns/application_controller_concern.rb +13 -0
- data/app/controllers/fe/reference_sheets_controller.rb +2 -0
- data/app/controllers/fe/references_controller.rb +1 -0
- data/app/helpers/fe/application_helper.rb +5 -0
- data/app/mailers/fe/notifier.rb +11 -4
- data/app/models/answer_sheet.rb +2 -0
- data/app/models/fe/application.rb +2 -1
- data/app/models/fe/concerns/answer_pages_presenter_concern.rb +10 -1
- data/app/models/fe/concerns/answer_sheet_concern.rb +38 -8
- data/app/models/fe/concerns/choice_field_concern.rb +17 -10
- data/app/models/fe/date_field.rb +1 -1
- data/app/models/fe/element.rb +105 -31
- data/app/models/fe/page.rb +52 -20
- data/app/models/fe/page_element.rb +6 -1
- data/app/models/fe/page_link.rb +6 -3
- data/app/models/fe/person.rb +11 -8
- data/app/models/fe/question.rb +2 -6
- data/app/models/fe/question_grid.rb +1 -1
- data/app/models/fe/question_grid_with_total.rb +15 -0
- data/app/models/fe/question_set.rb +1 -1
- data/app/models/fe/question_sheet.rb +15 -13
- data/app/models/fe/reference_question.rb +0 -10
- data/app/models/fe/reference_sheet.rb +17 -13
- data/app/models/staff.rb +2 -0
- data/app/validators/email_validator.rb +11 -0
- data/app/views/fe/admin/elements/create.js.erb +1 -0
- data/app/views/fe/admin/elements/drop.js.erb +1 -0
- data/app/views/fe/admin/elements/duplicate.js.erb +1 -0
- data/app/views/fe/admin/panels/_advanced_options.html.erb +9 -3
- data/app/views/fe/admin/panels/_common_fields.html.erb +19 -5
- data/app/views/fe/admin/panels/_page.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_choice_field.html.erb +20 -11
- data/app/views/fe/admin/panels/_prop_element.html.erb +2 -9
- data/app/views/fe/admin/panels/_prop_page.html.erb +8 -3
- data/app/views/fe/admin/panels/_prop_paragraph.html.erb +38 -24
- data/app/views/fe/admin/panels/_prop_section.html.erb +8 -2
- data/app/views/fe/admin/panels/_prop_sheet.html.erb +4 -1
- data/app/views/fe/admin/question_pages/_element.html.erb +11 -1
- data/app/views/fe/answer_pages/_answer_page.html.erb +9 -8
- data/app/views/fe/answer_pages/_element.html.erb +6 -7
- data/app/views/fe/answer_pages/_page_name.html.erb +1 -0
- data/app/views/fe/answer_pages/update.js.erb +3 -3
- data/app/views/fe/answer_sheets/_answer_sheet.html.erb +3 -3
- data/app/views/fe/answer_sheets/_element.html.erb +52 -34
- data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
- data/app/views/fe/answer_sheets/_page_link.html.erb +2 -2
- data/app/views/fe/answer_sheets/_pages_list.html.erb +3 -3
- data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -0
- data/app/views/fe/answer_sheets/edit.html.erb +14 -14
- data/app/views/fe/answer_sheets/incomplete.js.erb +3 -0
- data/app/views/fe/answer_sheets/index.html.erb +3 -3
- data/app/views/fe/answer_sheets/show.html.erb +1 -1
- data/app/views/fe/applications/_logout.html.erb +1 -0
- data/app/views/fe/applications/show.html.erb +1 -0
- data/app/views/fe/questions/fe/_acceptance.html.erb +3 -3
- data/app/views/fe/questions/fe/_attachment_field.html.erb +7 -3
- data/app/views/fe/questions/fe/_checkbox_field.html.erb +26 -24
- data/app/views/fe/questions/fe/_date_field.html.erb +1 -2
- data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +2 -2
- data/app/views/fe/questions/fe/_drop_down_field.html.erb +3 -2
- data/app/views/fe/questions/fe/_paragraph.html.erb +1 -1
- data/app/views/fe/questions/fe/_question_grid.html.erb +14 -9
- data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +21 -14
- data/app/views/fe/questions/fe/_questions.html.erb +2 -2
- data/app/views/fe/questions/fe/_radio_button_field.html.erb +12 -11
- data/app/views/fe/questions/fe/_rating.html.erb +9 -8
- data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_question.html.erb +22 -15
- data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
- data/app/views/fe/questions/fe/_section.html.erb +1 -1
- data/app/views/fe/questions/fe/_text_area_field.html.erb +10 -3
- data/app/views/fe/questions/fe/_text_field.html.erb +1 -1
- data/app/views/fe/questions/fe/_yes_no_field.erb +3 -3
- data/app/views/fe/reference_pages/_reference.html.erb +11 -11
- data/app/views/fe/reference_pages/edit.html.erb +7 -7
- data/app/views/fe/reference_sheets/done.html.erb +2 -2
- data/app/views/fe/reference_sheets/not_found.html.erb +4 -4
- data/app/views/fe/references/edit.html.erb +6 -6
- data/app/views/fe/references/show.html.erb +7 -7
- data/app/views/fe/references/submit.js.erb +1 -1
- data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
- data/app/views/fe/submit_pages/edit.html.erb +9 -9
- data/app/views/layouts/fe/_error_messages_for.html.erb +7 -0
- data/app/views/layouts/fe/application.html.erb +1 -1
- data/config/routes.rb +0 -36
- data/db/migrate/20131003044250_create_reference_sheets.rb +1 -0
- data/db/migrate/20140623153424_create_fe_people.rb +1 -1
- data/db/migrate/20140624180246_create_fe_addresses.rb +1 -1
- data/db/migrate/20140624182216_create_fe_phone_numbers.rb +16 -0
- data/db/migrate/20140625160545_create_fe_users.rb +1 -1
- data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +5 -0
- data/db/migrate/20150713022326_add_locale_columns.rb +9 -0
- data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +5 -0
- data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +5 -0
- data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +5 -0
- data/lib/access_key_generator.rb +12 -0
- data/lib/distinct_distinct_patch.rb +20 -0
- data/lib/fe.rb +4 -0
- data/lib/fe/engine.rb +16 -4
- data/lib/fe/version.rb +1 -1
- data/spec/controllers/fe/admin/elements_controller_spec.rb +201 -1
- data/spec/controllers/fe/admin/email_templates_controller_spec.rb +26 -1
- data/spec/controllers/fe/admin/question_pages_controller_spec.rb +8 -1
- data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +48 -1
- data/spec/controllers/fe/answer_pages_controller_spec.rb +73 -1
- data/spec/controllers/fe/answer_sheets_controller_spec.rb +80 -1
- data/spec/controllers/fe/reference_pages_controller.rb +4 -0
- data/spec/controllers/fe/references_controller_spec.rb +4 -0
- data/spec/controllers/fe/submit_pages_controller_spec.rb +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +9 -0
- data/spec/dummy/app/models/application.rb +3 -0
- data/spec/dummy/app/models/person.rb +11 -0
- data/spec/dummy/app/models/user.rb +3 -0
- data/spec/dummy/config/application.rb +2 -1
- data/spec/dummy/config/database.yml +20 -17
- data/spec/dummy/config/environments/production.rb +1 -5
- data/spec/dummy/config/environments/test.rb +3 -1
- data/spec/dummy/config/initializers/fast_gettext.rb +5 -0
- data/spec/dummy/config/secrets.yml +2 -2
- data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +92 -0
- data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +25 -0
- data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +11 -0
- data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +18 -0
- data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +9 -0
- data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +12 -0
- data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +10 -0
- data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +13 -0
- data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +21 -0
- data/{db/migrate/20140624182216_create_create_fe_phone_numbers.rb → spec/dummy/db/migrate/20141203214026_create_create_fe_phone_numbers.fe_engine.rb} +1 -0
- data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +13 -0
- data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +8 -0
- data/spec/dummy/db/migrate/20150123215803_create_users.rb +9 -0
- data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +20 -0
- data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +10 -0
- data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +6 -0
- data/spec/dummy/db/schema.rb +50 -20
- data/spec/dummy/log/development.log +5 -0
- data/spec/factories/applications.rb +0 -1
- data/spec/factories/dummy_applications.rb +6 -0
- data/spec/factories/dummy_people.rb +6 -0
- data/spec/factories/dummy_users.rb +6 -0
- data/spec/factories/elements.rb +28 -3
- data/spec/factories/email_templates.rb +5 -0
- data/spec/factories/fe_email_templates.rb +9 -0
- data/spec/factories/fe_people.rb +0 -2
- data/spec/factories/fe_user.rb +6 -0
- data/spec/factories/question_sheet.rb +1 -1
- data/spec/factories/reference_sheets.rb +9 -0
- data/spec/mailers/fe/notifier_spec.rb +39 -0
- data/spec/models/fe/choice_field_spec.rb +20 -0
- data/spec/models/fe/element_spec.rb +185 -0
- data/spec/models/fe/page_spec.rb +112 -0
- data/spec/models/fe/question_sheet_spec.rb +106 -0
- data/spec/models/fe/reference_sheet_spec.rb +20 -0
- data/spec/rails_helper.rb +41 -13
- data/spec/support/choices.xml +6 -0
- metadata +136 -48
- data/app/assets/javascripts/fe/rails.extra.js +0 -6
- data/app/controllers/fe/applications_controller.rb +0 -183
- data/app/controllers/fe/payments_controller.rb +0 -184
- data/app/models/fe/payment.rb +0 -77
- data/app/models/fe/payment_question.rb +0 -22
- data/app/views/fe/admin/panels/_prop_payment_question.html.erb +0 -1
- data/app/views/fe/application/_logout.html.erb +0 -1
- data/app/views/fe/payment_pages/_credit.html.erb +0 -47
- data/app/views/fe/payment_pages/_mail.html.erb +0 -27
- data/app/views/fe/payment_pages/_payment.html.erb +0 -6
- data/app/views/fe/payment_pages/_staff.html.erb +0 -25
- data/app/views/fe/payment_pages/_staff_results.html.erb +0 -17
- data/app/views/fe/payment_pages/edit.html.erb +0 -75
- data/app/views/fe/payment_pages/staff_search.js.erb +0 -2
- data/app/views/fe/payments/_credit.html.erb +0 -47
- data/app/views/fe/payments/_errors.html.erb +0 -1
- data/app/views/fe/payments/_payment.html.erb +0 -13
- data/app/views/fe/payments/_staff.html.erb +0 -21
- data/app/views/fe/payments/_staff_results.html.erb +0 -18
- data/app/views/fe/payments/approve.js.erb +0 -3
- data/app/views/fe/payments/create.js.erb +0 -19
- data/app/views/fe/payments/destroy.js.erb +0 -7
- data/app/views/fe/payments/edit.html.erb +0 -56
- data/app/views/fe/payments/error.js.erb +0 -3
- data/app/views/fe/payments/no_access.html.erb +0 -7
- data/app/views/fe/payments/staff_search.js.erb +0 -1
- data/app/views/fe/payments/update.html.erb +0 -24
- data/app/views/fe/questions/fe/_payment_question.html.erb +0 -70
- data/db/migrate/20140828045339_create_payments.rb +0 -13
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/factories/payments.rb +0 -7
- data/spec/models/fe/payment_question_spec.rb +0 -65
File without changes
|
@@ -182,6 +182,7 @@ ul#nav-controls li a:hover {
|
|
182
182
|
.list-elements #at a { background-image: url("<%= asset_path('fe/icons/paper-clip.png') %>");}
|
183
183
|
.list-elements #ref a { background-image: url("<%= asset_path('fe/icons/book-open-list.png') %>");}
|
184
184
|
|
185
|
+
.fe_textfield textarea { width: 90%; }
|
185
186
|
|
186
187
|
|
187
188
|
/* BODY SIDE */
|
@@ -236,7 +237,7 @@ span.required {
|
|
236
237
|
width:16px;
|
237
238
|
}
|
238
239
|
|
239
|
-
label {
|
240
|
+
label:not(.no_label_styles) { /* allow labels without styling, for the feature of clicking the label and having focus go to its corresponding input field */
|
240
241
|
min-width: 150px;
|
241
242
|
font-weight: bold;
|
242
243
|
font-size: 14px;
|
@@ -263,7 +264,8 @@ ul.questions li {
|
|
263
264
|
}
|
264
265
|
|
265
266
|
.field_check input[type=checkbox],
|
266
|
-
.field_check input[type=radio]
|
267
|
+
.field_check input[type=radio],
|
268
|
+
.radio-set input[type=radio] {
|
267
269
|
float: left;
|
268
270
|
}
|
269
271
|
|
@@ -473,6 +475,9 @@ td.actions a {padding: 2px 10px 2px 20px;}
|
|
473
475
|
.archive {background: url("<%= asset_path('fe/icons/briefcase.png') %>") no-repeat 0% 50%;}
|
474
476
|
.delete {background: url("<%= asset_path('fe/icons/minus-button.png') %>") no-repeat 0% 50%;}
|
475
477
|
|
478
|
+
table.ratings tr {
|
479
|
+
margin-right: 20px;
|
480
|
+
}
|
476
481
|
|
477
482
|
/* HEADER */
|
478
483
|
#header {
|
@@ -487,17 +492,17 @@ td.actions a {padding: 2px 10px 2px 20px;}
|
|
487
492
|
|
488
493
|
#header li a {
|
489
494
|
color: #fff;
|
490
|
-
padding:
|
495
|
+
padding: 6px;
|
496
|
+
display: block;
|
491
497
|
}
|
492
498
|
|
493
499
|
#header li {
|
494
500
|
float: left;
|
501
|
+
margin-right: 5px;
|
495
502
|
}
|
496
503
|
|
497
504
|
#header li.active a {
|
498
505
|
background: #2e7ba7;
|
499
|
-
padding: 6px;
|
500
|
-
display: block;
|
501
506
|
}
|
502
507
|
|
503
508
|
#nav-main {
|
@@ -524,10 +529,30 @@ td.actions a {padding: 2px 10px 2px 20px;}
|
|
524
529
|
width:auto;
|
525
530
|
}
|
526
531
|
.droppable-active {
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
532
|
+
background: #EBFCEB;
|
533
|
+
min-height: 200px;
|
534
|
+
border-width: 4px;
|
535
|
+
padding: 4px;
|
536
|
+
margin: -8px;
|
537
|
+
}
|
538
|
+
.droppable-hover {
|
539
|
+
background: #2F7EAB;
|
540
|
+
}
|
541
|
+
|
542
|
+
.droppable.around-container {
|
543
|
+
//border: 1px solid black;
|
544
|
+
border: 0px;
|
545
|
+
}
|
546
|
+
|
547
|
+
.droppable.around-container:not(.droppable-activated) {
|
548
|
+
height: 0px;
|
549
|
+
}
|
550
|
+
.droppable-active.around-container {
|
551
|
+
//display: inline;
|
552
|
+
padding: 0px;
|
553
|
+
margin: 10px 0px 10px 0px;;
|
554
|
+
min-height: 100px;
|
555
|
+
border-width: 1px;
|
531
556
|
}
|
532
557
|
|
533
558
|
.inlinecheck {
|
@@ -543,4 +568,38 @@ td.actions a {padding: 2px 10px 2px 20px;}
|
|
543
568
|
color:red;
|
544
569
|
font-weight: bold;
|
545
570
|
}
|
546
|
-
}
|
571
|
+
}
|
572
|
+
|
573
|
+
.future_affect {
|
574
|
+
label { display: inline-block; min-width: 0px; }
|
575
|
+
input[type=radio] { margin-left: 10px; }
|
576
|
+
}
|
577
|
+
|
578
|
+
/* SPINNER */
|
579
|
+
|
580
|
+
#page_ajax_spinner {
|
581
|
+
position: absolute;
|
582
|
+
top: -52px;
|
583
|
+
width: 1000px;
|
584
|
+
z-index: 100;
|
585
|
+
}
|
586
|
+
|
587
|
+
#page_ajax_spinner div {
|
588
|
+
-moz-box-shadow: 0 0 10px #666666;
|
589
|
+
-webkit-box-shadow: 0 0 10px #666666;
|
590
|
+
box-shadow: 0 0 10px #666666;
|
591
|
+
background: none repeat scroll 0 0 #FFFFFF;
|
592
|
+
border: 2px solid #411E08;
|
593
|
+
color: #411E08;
|
594
|
+
margin: 0 auto;
|
595
|
+
padding: 10px;
|
596
|
+
text-align: center;
|
597
|
+
width: 200px;
|
598
|
+
}
|
599
|
+
|
600
|
+
input[type="text"].char-count {
|
601
|
+
font-size: 10px;
|
602
|
+
display: inline-block;
|
603
|
+
width: 50px;
|
604
|
+
}
|
605
|
+
|
@@ -1,44 +1,35 @@
|
|
1
1
|
class Fe::Admin::ElementsController < ApplicationController
|
2
2
|
before_filter :check_valid_user
|
3
3
|
layout 'fe/fe.admin'
|
4
|
-
|
5
|
-
before_filter :get_page
|
6
|
-
|
7
|
-
# GET /elements/1
|
8
|
-
def show
|
9
|
-
@element = Fe::Element.find(params[:id])
|
10
4
|
|
11
|
-
|
12
|
-
format.js
|
13
|
-
end
|
14
|
-
end
|
5
|
+
before_filter :get_page
|
15
6
|
|
16
7
|
# GET /element/1/edit
|
17
8
|
def edit
|
18
|
-
@element =
|
19
|
-
|
9
|
+
@element = @page.all_elements.find(params[:id])
|
10
|
+
|
20
11
|
# for dependencies
|
21
12
|
if @element.question?
|
22
13
|
(3 - @element.conditions.length).times { @element.conditions.build }
|
23
|
-
@questions_before_this = @page.questions_before_position(@element.position(@page))
|
14
|
+
@questions_before_this = @page.questions_before_position(@element.position(@page))
|
24
15
|
end
|
25
|
-
|
16
|
+
|
26
17
|
respond_to do |format|
|
27
18
|
format.js
|
28
19
|
end
|
29
20
|
end
|
30
|
-
|
21
|
+
|
31
22
|
def new
|
32
23
|
@questions = params[:element_type].constantize.active.order('label')
|
33
24
|
|
34
25
|
@style = element_params[:style]
|
35
26
|
if @style
|
36
|
-
@questions = @questions.where(:style => @style).uniq
|
27
|
+
@questions = @questions.where(:style => @style).to_a.uniq
|
37
28
|
end
|
38
29
|
end
|
39
|
-
|
30
|
+
|
40
31
|
def use_existing
|
41
|
-
@element = Fe::Element.find(params[:id])
|
32
|
+
@element = Fe::Element.find(params[:id]) # NOTE the enclosing app might want to override this method and check that they have access to the questionnaire that the existing element is used on
|
42
33
|
# Don't put the same question on a questionnaire twice
|
43
34
|
unless @page.question_sheet.elements.include?(@element)
|
44
35
|
@page_element = Fe::PageElement.create(:element => @element, :page => @page)
|
@@ -54,24 +45,24 @@ class Fe::Admin::ElementsController < ApplicationController
|
|
54
45
|
@question_sheet = @page.question_sheet
|
55
46
|
|
56
47
|
respond_to do |format|
|
57
|
-
if @element.save
|
48
|
+
if @element.save
|
58
49
|
@page_element = Fe::PageElement.create(:element => @element, :page => @page)
|
59
50
|
format.js
|
60
51
|
else
|
61
|
-
format.js { render :action => 'error.
|
52
|
+
format.js { render :action => 'error.js.erb' }
|
62
53
|
end
|
63
54
|
end
|
64
55
|
end
|
65
56
|
|
66
57
|
# PUT /elements/1
|
67
58
|
def update
|
68
|
-
@element =
|
59
|
+
@element = @page.all_elements.find(params[:id])
|
69
60
|
|
70
61
|
respond_to do |format|
|
71
62
|
if @element.update_attributes(element_params)
|
72
63
|
format.js
|
73
64
|
else
|
74
|
-
format.js { render :action => 'error.
|
65
|
+
format.js { render :action => 'error.js.erb' }
|
75
66
|
end
|
76
67
|
end
|
77
68
|
end
|
@@ -79,11 +70,11 @@ class Fe::Admin::ElementsController < ApplicationController
|
|
79
70
|
# DELETE /elements/1
|
80
71
|
# DELETE /elements/1.xml
|
81
72
|
def destroy
|
82
|
-
@element =
|
73
|
+
@element = @page.all_elements.find(params[:id])
|
83
74
|
# Start by removing the element from the page
|
84
75
|
page_element = Fe::PageElement.where(:element_id => @element.id, :page_id => @page.id).first
|
85
76
|
page_element.destroy if page_element
|
86
|
-
|
77
|
+
|
87
78
|
# If this element is not on any other pages, is not a question or has no answers, Destroy it
|
88
79
|
if @element.reuseable? && (Fe::PageElement.where(:element_id => params[:id]).present? || @element.has_response?)
|
89
80
|
@element.update_attributes(:question_grid_id => nil, :conditional_id => nil)
|
@@ -95,24 +86,24 @@ class Fe::Admin::ElementsController < ApplicationController
|
|
95
86
|
format.js
|
96
87
|
end
|
97
88
|
end
|
98
|
-
|
99
|
-
def reorder
|
89
|
+
|
90
|
+
def reorder
|
100
91
|
# since we don't know the name of the list, just find the first param that is an array
|
101
|
-
params.each_key do |key|
|
92
|
+
params.each_key do |key|
|
102
93
|
if key.include?('questions_list')
|
103
94
|
grid_id = key.sub('questions_list_', '').to_i
|
104
95
|
# See if we're ordering inside of a grid
|
105
96
|
if grid_id > 0
|
106
|
-
|
97
|
+
@page.all_elements.find(grid_id).elements.each do |element|
|
107
98
|
if index = params[key].index(element.id.to_s)
|
108
|
-
element.position = index + 1
|
99
|
+
element.position = index + 1
|
109
100
|
element.save(:validate => false)
|
110
101
|
end
|
111
102
|
end
|
112
103
|
else
|
113
104
|
@page.page_elements.each do |page_element|
|
114
105
|
if index = params[key].index(page_element.element_id.to_s)
|
115
|
-
page_element.position = index + 1
|
106
|
+
page_element.position = index + 1
|
116
107
|
page_element.save(:validate => false)
|
117
108
|
@element = page_element.element
|
118
109
|
end
|
@@ -120,17 +111,36 @@ class Fe::Admin::ElementsController < ApplicationController
|
|
120
111
|
end
|
121
112
|
end
|
122
113
|
end
|
123
|
-
|
114
|
+
|
124
115
|
respond_to do |format|
|
125
116
|
format.js
|
126
117
|
end
|
127
118
|
end
|
128
|
-
|
119
|
+
|
129
120
|
def drop
|
130
|
-
element =
|
131
|
-
target =
|
121
|
+
element = @page.all_elements.find(params[:draggable_element].split('_')[1]) # element being dropped
|
122
|
+
target = @page.all_elements.find(params[:id])
|
123
|
+
|
124
|
+
if [params[:before], params[:after]].include?('true')
|
125
|
+
# move the element out of its parent and back onto the page directly, placing it before the target
|
126
|
+
page_element = Fe::PageElement.where(page_id: @page.id, element_id: element.id).first_or_create
|
127
|
+
@page.page_elements << page_element
|
128
|
+
|
129
|
+
parent_element = element.question_grid || element.choice_field
|
130
|
+
parent_page_element = @page.page_elements.find_by(element_id: parent_element.id)
|
131
|
+
if params[:before]
|
132
|
+
page_element.insert_at(parent_page_element.position)
|
133
|
+
else
|
134
|
+
page_element.insert_at(parent_page_element.position + 1)
|
135
|
+
end
|
136
|
+
|
137
|
+
# remove question grid / choice_field ref since it's directly on the page now
|
138
|
+
element.update_attributes(question_grid_id: nil, choice_field_id: nil)
|
139
|
+
return
|
140
|
+
end
|
141
|
+
|
132
142
|
case target.class.to_s
|
133
|
-
when 'QuestionGrid', 'QuestionGridWithTotal'
|
143
|
+
when 'Fe::QuestionGrid', 'Fe::QuestionGridWithTotal'
|
134
144
|
# abort if the element is already in this box
|
135
145
|
if element.question_grid_id == params[:id].to_i
|
136
146
|
render :nothing => true
|
@@ -138,48 +148,54 @@ class Fe::Admin::ElementsController < ApplicationController
|
|
138
148
|
element.question_grid_id = params[:id]
|
139
149
|
element.save!
|
140
150
|
end
|
141
|
-
when 'ChoiceField'
|
151
|
+
when 'Fe::ChoiceField'
|
142
152
|
# abort if the element is already in this box
|
143
|
-
if element.
|
153
|
+
if element.choice_field_id == params[:id].to_i
|
144
154
|
render :nothing => true
|
145
155
|
else
|
146
|
-
element.
|
156
|
+
element.choice_field_id = params[:id]
|
147
157
|
element.save!
|
148
158
|
end
|
149
159
|
end
|
150
160
|
# Remove page element for this page since it's now in a grid
|
151
161
|
Fe::PageElement.where(:page_id => @page.id, :element_id => element.id).first.try(:destroy)
|
152
162
|
end
|
153
|
-
|
163
|
+
|
154
164
|
def remove_from_grid
|
155
|
-
element =
|
165
|
+
element = @page.all_elements.find(params[:id])
|
156
166
|
Fe::PageElement.create(:element_id => element.id, :page_id => @page.id) unless Fe::PageElement.where(:element_id => element.id, :page_id => @page.id).first
|
157
167
|
if element.question_grid_id
|
158
|
-
element.set_position(element.question_grid.position(@page), @page)
|
168
|
+
element.set_position(element.question_grid.position(@page), @page)
|
159
169
|
element.question_grid_id = nil
|
160
170
|
elsif element.choice_field_id
|
161
|
-
element.set_position(element.choice_field.position(@page), @page)
|
171
|
+
element.set_position(element.choice_field.position(@page), @page)
|
162
172
|
element.choice_field_id = nil
|
163
173
|
end
|
164
174
|
element.save!
|
165
175
|
render :action => :drop
|
166
176
|
end
|
167
|
-
|
177
|
+
|
168
178
|
def duplicate
|
169
|
-
element =
|
170
|
-
@element = element.duplicate(@page, element.question_grid || element.choice_field)
|
179
|
+
element = @page.all_elements.find(params[:id])
|
180
|
+
@element = element.duplicate(@page, element.question_grid || element.question_grid_with_total || element.choice_field)
|
171
181
|
respond_to do |format|
|
172
|
-
format.js
|
182
|
+
format.js
|
173
183
|
end
|
174
184
|
end
|
175
|
-
|
185
|
+
|
176
186
|
private
|
177
187
|
def get_page
|
178
188
|
@page = Fe::Page.find(params[:page_id])
|
179
189
|
end
|
180
190
|
|
181
191
|
def element_params
|
182
|
-
params.fetch(:element, {}).permit(:
|
192
|
+
params.fetch(:element, {}).permit({label_translations: Fe::LANGUAGES.keys}, {tip_translations: Fe::LANGUAGES.keys}, {content_translations: Fe::LANGUAGES.keys},
|
193
|
+
:style, :label, :tooltip,
|
194
|
+
:position, :source, :value_xpath,
|
195
|
+
:text_xpath, :question_grid_id, :cols, :total_cols, :css_id, :css_class,
|
196
|
+
:related_question_sheet_id, :conditional_id, :hide_option_labels, :slug,
|
197
|
+
:required, :is_confidential, :hide_label, :object_name, :attribute_name,
|
198
|
+
:max_length, :content, :conditional_type, :conditional_id, :conditional_answer)
|
183
199
|
end
|
184
200
|
|
185
201
|
end
|
@@ -31,7 +31,7 @@ class Fe::Admin::EmailTemplatesController < ApplicationController
|
|
31
31
|
|
32
32
|
respond_to do |format|
|
33
33
|
if @email_template.save
|
34
|
-
format.html { redirect_to
|
34
|
+
format.html { redirect_to fe_admin_email_templates_path }
|
35
35
|
else
|
36
36
|
format.html { render :action => :new }
|
37
37
|
end
|
@@ -55,7 +55,7 @@ class Fe::Admin::EmailTemplatesController < ApplicationController
|
|
55
55
|
@email_template.destroy
|
56
56
|
|
57
57
|
respond_to do |format|
|
58
|
-
format.html { redirect_to
|
58
|
+
format.html { redirect_to fe_admin_email_templates_path }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -108,6 +108,6 @@ class Fe::Admin::QuestionPagesController < ApplicationController
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def page_params
|
111
|
-
params.fetch(:fe_page, {}).permit(:label, :hidden, :no_cache)
|
111
|
+
params.fetch(:fe_page, {}).permit({label_translations: Fe::LANGUAGES.keys}, :label, :hidden, :no_cache)
|
112
112
|
end
|
113
113
|
end
|
@@ -1,107 +1,6 @@
|
|
1
1
|
# QuestionSheets is used exclusively on the administration side to design a Questionniare
|
2
2
|
# which can than be instantiated as an AnswerSheet for data capture on the front-end
|
3
|
-
|
4
3
|
class Fe::Admin::QuestionSheetsController < ApplicationController
|
5
|
-
|
6
|
-
before_filter :get_question_sheet, :only => [:show, :archive, :unarchive, :destroy, :edit, :update, :duplicate]
|
7
|
-
layout 'fe/fe.admin'
|
8
|
-
|
9
|
-
# list of all questionnaires/forms to edit
|
10
|
-
# GET /question_sheets
|
11
|
-
def index
|
12
|
-
@active_question_sheets = Fe::QuestionSheet.active.order('label')
|
13
|
-
@archived_question_sheets = Fe::QuestionSheet.archived.order('label')
|
14
|
-
|
15
|
-
respond_to do |format|
|
16
|
-
format.html # index.rhtml
|
17
|
-
format.xml { render :xml => @question_sheets.to_xml }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def archive
|
22
|
-
@question_sheet.update_attribute(:archived, true)
|
23
|
-
redirect_to :back
|
24
|
-
end
|
25
|
-
|
26
|
-
def unarchive
|
27
|
-
@question_sheet.update_attribute(:archived, false)
|
28
|
-
redirect_to :back
|
29
|
-
end
|
30
|
-
|
31
|
-
def duplicate
|
32
|
-
@question_sheet.duplicate
|
33
|
-
redirect_to :back
|
34
|
-
end
|
35
|
-
|
36
|
-
# entry point: display form designer with page 1 and panels loaded
|
37
|
-
# GET /question_sheets/1
|
38
|
-
def show
|
39
|
-
@all_pages = @question_sheet.pages
|
40
|
-
@page = @all_pages[0]
|
41
|
-
|
42
|
-
respond_to do |format|
|
43
|
-
format.html # show.rhtml
|
44
|
-
format.xml { render :xml => @question_sheet.to_xml }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# create sheet with inital page, redirect to show
|
49
|
-
# POST /question_sheets
|
50
|
-
def create
|
51
|
-
@question_sheet = Fe::QuestionSheet.new_with_page
|
52
|
-
|
53
|
-
respond_to do |format|
|
54
|
-
if @question_sheet.save
|
55
|
-
format.html { redirect_to fe_admin_question_sheet_path(@question_sheet) }
|
56
|
-
format.xml { head :created, :location => admin_question_sheet_path(@question_sheet) }
|
57
|
-
else
|
58
|
-
format.html { render :action => "new" }
|
59
|
-
format.xml { render :xml => @question_sheet.errors.to_xml }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
# display sheet properties panel
|
66
|
-
# GET /question_sheets/1/edit
|
67
|
-
def edit
|
68
|
-
|
69
|
-
respond_to do |format|
|
70
|
-
format.js
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# save changes to properties panel (label, language)
|
75
|
-
# PUT /question_sheets/1
|
76
|
-
def update
|
77
|
-
params.require(:fe_question_sheet).permit!
|
78
|
-
|
79
|
-
respond_to do |format|
|
80
|
-
if @question_sheet.update_attributes(params[:fe_question_sheet])
|
81
|
-
format.html { redirect_to fe_admin_question_sheet_path(@question_sheet) }
|
82
|
-
format.js
|
83
|
-
format.xml { head :ok }
|
84
|
-
else
|
85
|
-
format.html { render :action => "edit" }
|
86
|
-
format.js { render :action => "error.rjs"}
|
87
|
-
format.xml { render :xml => @question_sheet.errors.to_xml }
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
# mark sheet as destroyed
|
93
|
-
# DELETE /question_sheets/1
|
94
|
-
def destroy
|
95
|
-
@question_sheet.destroy
|
96
|
-
|
97
|
-
respond_to do |format|
|
98
|
-
format.html { redirect_to fe_admin_question_sheets_path }
|
99
|
-
format.xml { head :ok }
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
protected
|
104
|
-
def get_question_sheet
|
105
|
-
@question_sheet = Fe::QuestionSheet.find(params[:id])
|
106
|
-
end
|
4
|
+
include Fe::Admin::QuestionSheetsControllerConcern
|
107
5
|
end
|
6
|
+
|