helena_administration 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +18 -0
- data/.travis.yml +6 -0
- data/Gemfile +44 -0
- data/Gemfile.lock +309 -0
- data/MIT-LICENSE +20 -0
- data/README.md +82 -0
- data/Rakefile +28 -0
- data/app/assets/images/helena_administration/.keep +0 -0
- data/app/assets/javascripts/helena_administration.js.coffee +20 -0
- data/app/assets/javascripts/polyfills.js +10 -0
- data/app/assets/stylesheets/_dashboard.sass +4 -0
- data/app/assets/stylesheets/_layout.sass +50 -0
- data/app/assets/stylesheets/_media_queries.scss +18 -0
- data/app/assets/stylesheets/_variables.sass +19 -0
- data/app/assets/stylesheets/helena_administration.css.sass +27 -0
- data/app/controllers/helena_administration/application_controller.rb +19 -0
- data/app/controllers/helena_administration/dashboard_controller.rb +11 -0
- data/app/controllers/helena_administration/import_surveys_controller.rb +40 -0
- data/app/controllers/helena_administration/question_groups_controller.rb +68 -0
- data/app/controllers/helena_administration/questions/checkbox_groups_controller.rb +15 -0
- data/app/controllers/helena_administration/questions/checkbox_matrix_controller.rb +7 -0
- data/app/controllers/helena_administration/questions/long_texts_controller.rb +11 -0
- data/app/controllers/helena_administration/questions/radio_groups_controller.rb +15 -0
- data/app/controllers/helena_administration/questions/radio_matrix_controller.rb +7 -0
- data/app/controllers/helena_administration/questions/short_texts_controller.rb +11 -0
- data/app/controllers/helena_administration/questions/static_texts_controller.rb +11 -0
- data/app/controllers/helena_administration/questions_controller.rb +96 -0
- data/app/controllers/helena_administration/sessions_controller.rb +60 -0
- data/app/controllers/helena_administration/surveys_controller.rb +71 -0
- data/app/controllers/helena_administration/versions_controller.rb +82 -0
- data/app/helpers/helena_administration/application_helper.rb +14 -0
- data/app/models/helena_administration/import_survey_form.rb +9 -0
- data/app/views/helena_administration/application/_chromeframe.html.slim +4 -0
- data/app/views/helena_administration/application/_flash_messages.html.haml +5 -0
- data/app/views/helena_administration/application/_head.html.slim +13 -0
- data/app/views/helena_administration/application/_header.html.slim +16 -0
- data/app/views/helena_administration/dashboard/index.html.slim +14 -0
- data/app/views/helena_administration/import_surveys/_form.html.slim +11 -0
- data/app/views/helena_administration/import_surveys/new.html.slim +1 -0
- data/app/views/helena_administration/kaminari/_first_page.html.slim +2 -0
- data/app/views/helena_administration/kaminari/_gap.html.slim +2 -0
- data/app/views/helena_administration/kaminari/_last_page.html.slim +2 -0
- data/app/views/helena_administration/kaminari/_next_page.html.slim +2 -0
- data/app/views/helena_administration/kaminari/_page.html.slim +2 -0
- data/app/views/helena_administration/kaminari/_paginator.html.slim +11 -0
- data/app/views/helena_administration/kaminari/_prev_page.html.slim +2 -0
- data/app/views/helena_administration/layouts/application.html.slim +13 -0
- data/app/views/helena_administration/question_groups/_form.html.slim +5 -0
- data/app/views/helena_administration/question_groups/edit.html.slim +1 -0
- data/app/views/helena_administration/question_groups/new.html.slim +1 -0
- data/app/views/helena_administration/question_groups/show.html.slim +60 -0
- data/app/views/helena_administration/questions/_form.html.slim +15 -0
- data/app/views/helena_administration/questions/_labels.html.slim +24 -0
- data/app/views/helena_administration/questions/_sub_questions.html.slim +32 -0
- data/app/views/helena_administration/questions/edit.html.slim +1 -0
- data/app/views/helena_administration/questions/new.html.slim +1 -0
- data/app/views/helena_administration/questions/show.html.slim +26 -0
- data/app/views/helena_administration/sessions/_form.html.slim +8 -0
- data/app/views/helena_administration/sessions/edit.html.slim +1 -0
- data/app/views/helena_administration/surveys/_form.html.slim +5 -0
- data/app/views/helena_administration/surveys/edit.html.slim +1 -0
- data/app/views/helena_administration/surveys/index.html.slim +34 -0
- data/app/views/helena_administration/surveys/new.html.slim +1 -0
- data/app/views/helena_administration/surveys/show.html.slim +120 -0
- data/app/views/helena_administration/versions/_form.html.slim +14 -0
- data/app/views/helena_administration/versions/edit.html.slim +1 -0
- data/app/views/helena_administration/versions/new.html.slim +1 -0
- data/app/views/helena_administration/versions/show.html.slim +68 -0
- data/app/views/layouts/helena_administration/application.html.slim +10 -0
- data/bin/rails +12 -0
- data/config/compass.rb +2 -0
- data/config/html5_rails.yml +26 -0
- data/config/locales/en.yml +21 -0
- data/config/locales/views/dashboard.en.yml +6 -0
- data/config/locales/views/import_surveys.en.yml +11 -0
- data/config/locales/views/question_groups.en.yml +5 -0
- data/config/locales/views/questions.en.yml +5 -0
- data/config/locales/views/surveys.en.yml +10 -0
- data/config/locales/views/versions.en.yml +11 -0
- data/config/routes.rb +24 -0
- data/coverage/.resultset.json.lock +0 -0
- data/coverage/assets/0.8.0/application.css +799 -0
- data/coverage/assets/0.8.0/application.js +1559 -0
- data/coverage/assets/0.8.0/colorbox/border.png +0 -0
- data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.8.0/favicon_green.png +0 -0
- data/coverage/assets/0.8.0/favicon_red.png +0 -0
- data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.8.0/loading.gif +0 -0
- data/coverage/assets/0.8.0/magnify.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/helena_administration.gemspec +37 -0
- data/lib/helena_administration/engine.rb +13 -0
- data/lib/helena_administration/version.rb +3 -0
- data/lib/helena_administration.rb +15 -0
- data/lib/tasks/helena_administration_tasks.rake +4 -0
- data/spec/controllers/dashboard_controller_spec.rb +11 -0
- data/spec/controllers/sessions_controller_spec.rb +102 -0
- data/spec/controllers/survey_controller_spec.rb +36 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/decorators/controllers/helena_administration/application_controller_decorator.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +27 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +34 -0
- data/spec/dummy/config/environments/production.rb +78 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +9 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/mongoid.yml +13 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/features/dashboard/index.html.slim_spec.rb +9 -0
- data/spec/features/question_groups/manage_question_groups_spec.rb +97 -0
- data/spec/features/questions/manage_questions_spec.rb +108 -0
- data/spec/features/questions/question_types/manage_checkbox_group_question_spec.rb +53 -0
- data/spec/features/questions/question_types/manage_long_text_question_spec.rb +22 -0
- data/spec/features/questions/question_types/manage_radio_group_question_spec.rb +57 -0
- data/spec/features/questions/question_types/manage_radio_matrix_question_spec.rb +78 -0
- data/spec/features/questions/question_types/manage_short_text_question_spec.rb +20 -0
- data/spec/features/questions/question_types/manage_static_text_question_spec.rb +18 -0
- data/spec/features/sessions/manage_sessions_spec.rb +51 -0
- data/spec/features/surveys/manage_survey_spec.rb +95 -0
- data/spec/features/versions/manage_version_spec.rb +113 -0
- data/spec/helpers/applicatin_helper_spec.rb +17 -0
- data/spec/rails_helper.rb +23 -0
- data/spec/spec_helper.rb +63 -0
- data/spec/support/.keep +0 -0
- metadata +455 -0
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'HelenaAdministration'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
require 'rspec/core'
|
23
|
+
require 'rspec/core/rake_task'
|
24
|
+
|
25
|
+
desc 'Run all specs in spec directory (excluding plugin specs)'
|
26
|
+
RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
|
27
|
+
|
28
|
+
task default: :spec
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#= require jquery
|
2
|
+
#= require jquery_ujs
|
3
|
+
#= require polyfills
|
4
|
+
#= require bootstrap
|
5
|
+
#= require codemirror
|
6
|
+
#= require codemirror/modes/xml
|
7
|
+
#= require codemirror/modes/htmlembedded
|
8
|
+
#= require codemirror/modes/htmlmixed
|
9
|
+
#= require codemirror/modes/coffeescript
|
10
|
+
#= require codemirror/modes/javascript
|
11
|
+
#= require codemirror/modes/ruby
|
12
|
+
#= require codemirror/modes/markdown
|
13
|
+
#= require codemirror/modes/slim
|
14
|
+
#= require codemirror/modes/yaml
|
15
|
+
$ ->
|
16
|
+
$('textarea.slim_lang').each ->
|
17
|
+
CodeMirror.fromTextArea(@, { mode: 'application/x-slim', lineNumbers: true, tabSize: 2, insertSoftTab: true })
|
18
|
+
|
19
|
+
$('textarea.yaml_lang').each ->
|
20
|
+
CodeMirror.fromTextArea(@, { mode: 'yaml', lineNumbers: true, tabSize: 2, insertSoftTab: true })
|
@@ -0,0 +1,10 @@
|
|
1
|
+
// This file was generated by html5-rails
|
2
|
+
// https://github.com/sporkd/html5-rails
|
3
|
+
// Upgrade with: $ rails generate html5:install
|
4
|
+
//
|
5
|
+
// This is a manifest for javascript polyfills that will be included
|
6
|
+
// in the head section of your layouts.
|
7
|
+
//
|
8
|
+
// polyfill (n): a JavaScript shim that replicates the standard API for older browsers.
|
9
|
+
//
|
10
|
+
//= require modernizr.min
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// This file was generated by html5-rails
|
2
|
+
// https://github.com/sporkd/html5-rails
|
3
|
+
// Upgrade with: $ rails generate html5:install
|
4
|
+
|
5
|
+
//-----------------------------------------
|
6
|
+
// Layout styles
|
7
|
+
//-----------------------------------------
|
8
|
+
|
9
|
+
body
|
10
|
+
font-weight: 300
|
11
|
+
|
12
|
+
.decision
|
13
|
+
a
|
14
|
+
font-size: 2em
|
15
|
+
font-weight: 100
|
16
|
+
|
17
|
+
svg
|
18
|
+
fill: $brand-primary
|
19
|
+
|
20
|
+
nav.navbar
|
21
|
+
ul.breadcrumbs
|
22
|
+
li:before
|
23
|
+
content: '»'
|
24
|
+
padding-right: 5px
|
25
|
+
|
26
|
+
li
|
27
|
+
margin: 15px 5px
|
28
|
+
|
29
|
+
a
|
30
|
+
padding: 0px
|
31
|
+
display: inline
|
32
|
+
|
33
|
+
a.btn
|
34
|
+
margin: 3px
|
35
|
+
|
36
|
+
i.fa
|
37
|
+
padding-right: 1ex
|
38
|
+
|
39
|
+
&.disabled,
|
40
|
+
@include opacity(.2)
|
41
|
+
|
42
|
+
hr
|
43
|
+
border-color: #EEE
|
44
|
+
|
45
|
+
.hide-text
|
46
|
+
visibility: hidden
|
47
|
+
|
48
|
+
.CodeMirror
|
49
|
+
border: 1px solid #ccc
|
50
|
+
border-radius: 4px
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// This file was generated by html5-rails
|
2
|
+
// https://github.com/sporkd/html5-rails
|
3
|
+
// Upgrade with: $ rails generate html5:install
|
4
|
+
//
|
5
|
+
// EXAMPLE Media Query for Responsive Design.
|
6
|
+
// This example overrides the primary ('mobile first') styles
|
7
|
+
// Modify as content requires.
|
8
|
+
|
9
|
+
@media only screen and (min-width: 35em) {
|
10
|
+
// Style adjustments for viewports that meet the condition
|
11
|
+
}
|
12
|
+
|
13
|
+
@media print,
|
14
|
+
(-o-min-device-pixel-ratio: 5/4),
|
15
|
+
(-webkit-min-device-pixel-ratio: 1.25),
|
16
|
+
(min-resolution: 120dpi) {
|
17
|
+
// Style adjustments for high resolution devices
|
18
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// color palette: http://www.colourlovers.com/palette/3477680/ANA
|
2
|
+
$brand-primary: #00A0B0
|
3
|
+
$brand-danger: #BD1550
|
4
|
+
$brand-success: #00C176
|
5
|
+
$state-success-bg: #00C176
|
6
|
+
$state-success-text: #FFF
|
7
|
+
|
8
|
+
$line-height: 1.4
|
9
|
+
$font-color: #222
|
10
|
+
$font-family: sans-serif
|
11
|
+
$font-size: 1em
|
12
|
+
$link-color: $brand-primary
|
13
|
+
$link-hover-color: $brand-primary
|
14
|
+
$link-visited-color: $brand-primary
|
15
|
+
$selected-font-color: #fff
|
16
|
+
$selected-background-color: #ff5e99
|
17
|
+
$invalid-background-color: #f0dddd
|
18
|
+
$well-bg: #FFF
|
19
|
+
$navbar-default-bg: #FFF
|
@@ -0,0 +1,27 @@
|
|
1
|
+
// This file was generated by html5-rails
|
2
|
+
// https://github.com/sporkd/html5-rails
|
3
|
+
// Upgrade with: $ rails generate html5:install
|
4
|
+
//
|
5
|
+
// application styles
|
6
|
+
|
7
|
+
//-----------------------------------------
|
8
|
+
// Variables
|
9
|
+
//-----------------------------------------
|
10
|
+
@import '_variables'
|
11
|
+
|
12
|
+
//-----------------------------------------
|
13
|
+
// Vendor imports
|
14
|
+
//-----------------------------------------
|
15
|
+
// @import 'compass/css3';
|
16
|
+
@import 'bootstrap-sprockets'
|
17
|
+
@import 'bootstrap'
|
18
|
+
@import 'font-awesome.css'
|
19
|
+
|
20
|
+
|
21
|
+
//-----------------------------------------
|
22
|
+
// Custom imports
|
23
|
+
//-----------------------------------------
|
24
|
+
@import 'layout'
|
25
|
+
@import media_queries
|
26
|
+
@import 'dashboard'
|
27
|
+
@import 'codemirror.css'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
class ApplicationController < ActionController::Base
|
3
|
+
before_action :set_locale, :authenticate_administrator
|
4
|
+
|
5
|
+
def add_breadcrumb(name, path = nil, options = {})
|
6
|
+
super(name.presence || t('shared.untitled'), path, options)
|
7
|
+
end
|
8
|
+
|
9
|
+
def set_locale
|
10
|
+
I18n.locale = params[:locale] || I18n.default_locale
|
11
|
+
end
|
12
|
+
|
13
|
+
helper_method :can_administer?
|
14
|
+
|
15
|
+
def authenticate_administrator
|
16
|
+
fail(ActionController::RoutingError, 'Access Denied') unless can_administer?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
class ImportSurveysController < ApplicationController
|
3
|
+
before_action :add_breadcrumbs
|
4
|
+
|
5
|
+
def new
|
6
|
+
add_breadcrumb t('.import')
|
7
|
+
@import_survey_form = ImportSurveyForm.new
|
8
|
+
end
|
9
|
+
|
10
|
+
# rubocop:disable Metrics/MethodLength
|
11
|
+
def create
|
12
|
+
@import_survey_form = ImportSurveyForm.new import_survey_form_params
|
13
|
+
if @import_survey_form.valid?
|
14
|
+
begin
|
15
|
+
Helena::SurveyImporter.new @import_survey_form.script
|
16
|
+
flash[:success] = t('shared.actions.created')
|
17
|
+
redirect_to surveys_path
|
18
|
+
rescue => e
|
19
|
+
@error = e
|
20
|
+
|
21
|
+
render 'new'
|
22
|
+
end
|
23
|
+
else
|
24
|
+
flash.now[:danger] = t('shared.actions.error')
|
25
|
+
render 'new'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
# rubocop:enable Metrics/MethodLength
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def import_survey_form_params
|
33
|
+
params.require(:import_survey_form).permit(:script)
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_breadcrumbs
|
37
|
+
add_breadcrumb t('shared.navigation.dashboard'), dashboard_index_path
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
class QuestionGroupsController < ApplicationController
|
3
|
+
respond_to :html
|
4
|
+
|
5
|
+
before_action :load_version, :add_breadcrumbs
|
6
|
+
before_action :load_question_group, only: [:destroy, :edit, :update, :show]
|
7
|
+
|
8
|
+
def show
|
9
|
+
add_breadcrumb @question_group.title
|
10
|
+
end
|
11
|
+
|
12
|
+
def new
|
13
|
+
@question_group = @version.question_groups.build
|
14
|
+
add_breadcrumb t('.new')
|
15
|
+
end
|
16
|
+
|
17
|
+
def create
|
18
|
+
@question_group = @version.question_groups.build question_group_params
|
19
|
+
if @question_group.save
|
20
|
+
flash[:success] = t 'shared.actions.created'
|
21
|
+
else
|
22
|
+
flash.now[:danger] = t 'shared.actions.error'
|
23
|
+
end
|
24
|
+
respond_with [@survey, @version, @question_group]
|
25
|
+
end
|
26
|
+
|
27
|
+
def edit
|
28
|
+
add_breadcrumb @question_group.title
|
29
|
+
end
|
30
|
+
|
31
|
+
def update
|
32
|
+
if @question_group.update_attributes(question_group_params)
|
33
|
+
flash[:success] = t 'shared.actions.updated'
|
34
|
+
else
|
35
|
+
flash.now[:danger] = t 'shared.actions.error'
|
36
|
+
add_breadcrumb @question_group.title_was
|
37
|
+
end
|
38
|
+
respond_with [@survey, @version, @question_group]
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
flash[:success] = t 'shared.actions.deleted' if @question_group.destroy
|
43
|
+
respond_with @question_group, location: [@survey, @version]
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def add_breadcrumbs
|
49
|
+
add_breadcrumb t('shared.navigation.dashboard'), dashboard_index_path
|
50
|
+
add_breadcrumb Helena::Survey.model_name.human(count: 2), surveys_path
|
51
|
+
add_breadcrumb @survey.name, @survey
|
52
|
+
add_breadcrumb t('helena_administration.versions.version', version: @version.version), [@survey, @version]
|
53
|
+
end
|
54
|
+
|
55
|
+
def load_version
|
56
|
+
@survey = Helena::Survey.find params[:survey_id]
|
57
|
+
@version = @survey.versions.find params[:version_id]
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_question_group
|
61
|
+
@question_group = @version.question_groups.find params[:id]
|
62
|
+
end
|
63
|
+
|
64
|
+
def question_group_params
|
65
|
+
params.require(:question_group).permit(:position, :title, :allow_to_go_back)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
module Questions
|
3
|
+
class CheckboxGroupsController < QuestionsController
|
4
|
+
private
|
5
|
+
|
6
|
+
def add_ressources
|
7
|
+
@question.sub_questions.build
|
8
|
+
end
|
9
|
+
|
10
|
+
def permited_params
|
11
|
+
[:required, sub_questions_attributes: sub_questions_attributes]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
module Questions
|
3
|
+
class RadioGroupsController < QuestionsController
|
4
|
+
private
|
5
|
+
|
6
|
+
def add_ressources
|
7
|
+
@question.labels.build
|
8
|
+
end
|
9
|
+
|
10
|
+
def permited_params
|
11
|
+
[:required, labels_attributes: labels_attributes]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module HelenaAdministration
|
2
|
+
class QuestionsController < ApplicationController
|
3
|
+
respond_to :html
|
4
|
+
|
5
|
+
before_action :load_question_group, :add_breadcrumbs
|
6
|
+
before_action :load_question, only: [:destroy, :edit, :update, :show]
|
7
|
+
|
8
|
+
def show
|
9
|
+
add_breadcrumb @question.code
|
10
|
+
end
|
11
|
+
|
12
|
+
def new
|
13
|
+
@question = @question_group.questions.build
|
14
|
+
add_breadcrumb t('.new')
|
15
|
+
end
|
16
|
+
|
17
|
+
def create
|
18
|
+
@question = @question_group.questions.build question_params
|
19
|
+
if @question.save
|
20
|
+
flash[:success] = t 'shared.actions.created'
|
21
|
+
else
|
22
|
+
flash.now[:danger] = t 'shared.actions.error'
|
23
|
+
end
|
24
|
+
respond_with [@survey, @version, @question_group, @question]
|
25
|
+
end
|
26
|
+
|
27
|
+
def edit
|
28
|
+
add_ressources
|
29
|
+
add_breadcrumb @question.code
|
30
|
+
end
|
31
|
+
|
32
|
+
def update
|
33
|
+
if @question.update_attributes(question_params)
|
34
|
+
flash[:success] = t 'shared.actions.updated'
|
35
|
+
else
|
36
|
+
flash[:danger] = t 'shared.actions.error'
|
37
|
+
add_breadcrumb @question.code_was
|
38
|
+
end
|
39
|
+
add_ressources
|
40
|
+
respond_with @question, location: [@survey, @version, @question_group, @question]
|
41
|
+
end
|
42
|
+
|
43
|
+
def destroy
|
44
|
+
flash[:success] = t 'shared.actions.deleted' if @question.destroy
|
45
|
+
respond_with @question_group, location: [@survey, @version, @question_group]
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def add_breadcrumbs
|
51
|
+
add_breadcrumb t('shared.navigation.dashboard'), dashboard_index_path
|
52
|
+
add_breadcrumb Helena::Survey.model_name.human(count: 2), surveys_path
|
53
|
+
add_breadcrumb @survey.name, @survey
|
54
|
+
add_breadcrumb t('helena_administration.versions.version', version: @version.version), [@survey, @version]
|
55
|
+
add_breadcrumb @question_group.title, [@survey, @version, @question_group]
|
56
|
+
end
|
57
|
+
|
58
|
+
def load_question_group
|
59
|
+
@survey = Helena::Survey.find params[:survey_id]
|
60
|
+
@version = @survey.versions.find params[:version_id]
|
61
|
+
@question_group = @version.question_groups.find params[:question_group_id]
|
62
|
+
end
|
63
|
+
|
64
|
+
def load_question
|
65
|
+
@question = @question_group.questions.find params[:id]
|
66
|
+
end
|
67
|
+
|
68
|
+
def question_group_params
|
69
|
+
params.require(:question).permit(:position, :title)
|
70
|
+
end
|
71
|
+
|
72
|
+
def labels_attributes
|
73
|
+
[:id, :position, :text, :value, :preselected, :_destroy]
|
74
|
+
end
|
75
|
+
|
76
|
+
def sub_questions_attributes
|
77
|
+
[:id, :position, :code, :text, :value, :preselected, :_destroy]
|
78
|
+
end
|
79
|
+
|
80
|
+
def question_params
|
81
|
+
required_param.permit(permited_params + [:question_text, :code, :_type])
|
82
|
+
end
|
83
|
+
|
84
|
+
def permited_params
|
85
|
+
[]
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_ressources
|
89
|
+
end
|
90
|
+
|
91
|
+
def required_param
|
92
|
+
param_name = self.class == QuestionsController ? :question : "questions_#{controller_name.singularize}"
|
93
|
+
params.require(param_name)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|