qwester 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +15 -0
  2. data/app/models/qwester/answer.rb +4 -1
  3. data/app/models/qwester/answer_store.rb +3 -0
  4. data/app/models/qwester/presentation.rb +4 -2
  5. data/app/models/qwester/presentation_questionnaire.rb +3 -1
  6. data/app/models/qwester/question.rb +3 -1
  7. data/app/models/qwester/questionnaire.rb +3 -1
  8. data/app/models/qwester/questionnaires_question.rb +3 -1
  9. data/app/models/qwester/rule_set.rb +3 -1
  10. data/app/views/qwester/questionnaires/index.html.erb +16 -16
  11. data/app/views/qwester/questionnaires/show.html.erb +4 -4
  12. data/lib/active_admin/admin/answers.rb +2 -1
  13. data/lib/active_admin/admin/presentations.rb +12 -1
  14. data/lib/active_admin/admin/questionnaires.rb +12 -1
  15. data/lib/active_admin/admin/questions.rb +12 -3
  16. data/lib/active_admin/admin/rule_sets.rb +12 -1
  17. data/lib/qwester/version.rb +3 -1
  18. data/lib/qwester.rb +4 -0
  19. data/test/dummy/app/assets/stylesheets/questionnaires.css.scss +4 -0
  20. data/test/dummy/db/development.sqlite3 +0 -0
  21. data/test/dummy/db/test.sqlite3 +0 -0
  22. data/test/dummy/log/development.log +5847 -0
  23. data/test/dummy/log/test.log +18376 -0
  24. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/blue.png +0 -0
  25. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/blue.png +0 -0
  26. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/blue.png +0 -0
  27. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/qwester.png +0 -0
  28. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/qwester.png +0 -0
  29. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/qwester.png +0 -0
  30. data/test/dummy/tmp/cache/assets/C26/9F0/sprockets%2F845e497a575c390134890305d73603fa +0 -0
  31. data/test/dummy/tmp/cache/assets/C5E/190/sprockets%2F884e6fc668000102b9764640f74b938f +0 -0
  32. data/test/dummy/tmp/cache/assets/C5F/260/sprockets%2F90424bb1d20261bd99d49853589b6399 +0 -0
  33. data/test/dummy/tmp/cache/assets/C89/F60/sprockets%2F59638d54511f81bd6b41555e34874b4d +0 -0
  34. data/test/dummy/tmp/cache/assets/C9C/330/sprockets%2Fd555282f7ba49f75897eb3f456426429 +0 -0
  35. data/test/dummy/tmp/cache/assets/CA2/BA0/sprockets%2F710a9a1697baf1003a8764f76bd20091 +0 -0
  36. data/test/dummy/tmp/cache/assets/CAC/5B0/sprockets%2F561f9be63d0d3d9059357221a28e153b +0 -0
  37. data/test/dummy/tmp/cache/assets/CC5/620/sprockets%2F03718a976968696d5f1831f6dad5df03 +0 -0
  38. data/test/dummy/tmp/cache/assets/CD4/620/sprockets%2F73bddc14960082707af20860a73c64ea +0 -0
  39. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  40. data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
  41. data/test/dummy/tmp/cache/assets/CF3/1B0/sprockets%2F5af3f4726631a5af496e6693e239fe28 +0 -0
  42. data/test/dummy/tmp/cache/assets/D03/3E0/sprockets%2F8c2f11a68d4304d2eb129b8119ad547a +0 -0
  43. data/test/dummy/tmp/cache/assets/D08/630/sprockets%2F01c69e5e94001a45e3837b01bff6c63e +0 -0
  44. data/test/dummy/tmp/cache/assets/D0A/9B0/sprockets%2F3c7c595119cd187f13fad06de3f34212 +0 -0
  45. data/test/dummy/tmp/cache/assets/D0E/4B0/sprockets%2Fe3cc72e3c0e6e76f780d41d1602442e9 +0 -0
  46. data/test/dummy/tmp/cache/assets/D0F/0D0/sprockets%2Fa7cc3b3bb91739976e2a634340bd68e1 +0 -0
  47. data/test/dummy/tmp/cache/assets/D1F/2B0/sprockets%2F56c48fe90949eb21aa5d8aee42349890 +0 -0
  48. data/test/dummy/tmp/cache/assets/D23/750/sprockets%2Fa21a09cf6204922d2df746a50ab0e3b3 +0 -0
  49. data/test/dummy/tmp/cache/assets/D2E/670/sprockets%2F28b755a9120ae2aecca9a29b05b18507 +0 -0
  50. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  51. data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
  52. data/test/dummy/tmp/cache/assets/D3B/2A0/sprockets%2F4e293b5ef6851a3acbd8c01914d734b6 +0 -0
  53. data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
  54. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  55. data/test/dummy/tmp/cache/assets/D57/830/sprockets%2Fc0f0fed8ec79871fb9c8848131d888b0 +0 -0
  56. data/test/dummy/tmp/cache/assets/D57/980/sprockets%2Fb53201d73edbdba1453449a2f65c4bc0 +0 -0
  57. data/test/dummy/tmp/cache/assets/D59/000/sprockets%2Fe7426ef4d8ea9028edebe495113e9698 +0 -0
  58. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  59. data/test/dummy/tmp/cache/assets/D61/6E0/sprockets%2F41e7fb3ec1ab3a343c9566c3c81a39c0 +0 -0
  60. data/test/dummy/tmp/cache/assets/D62/500/sprockets%2F4e64511f8fe62cb8ef7697d9559d4fb6 +0 -0
  61. data/test/dummy/tmp/cache/assets/D6B/350/sprockets%2Ffe96748ac9e0ed2203a272c6ea0465ae +0 -0
  62. data/test/dummy/tmp/cache/assets/D74/7A0/sprockets%2Fad303ebb30768ef3c4e4389f57b9c0e5 +0 -0
  63. data/test/dummy/tmp/cache/assets/D75/080/sprockets%2F48cea574b9659113a157eb7ebe7c80cc +0 -0
  64. data/test/dummy/tmp/cache/assets/D79/A60/sprockets%2F84903d1c98ce9ad4bddc8553030ed6f8 +0 -0
  65. data/test/dummy/tmp/cache/assets/D7F/6F0/sprockets%2F19af6fa7fac6d1e87f21652ee97366d2 +0 -0
  66. data/test/dummy/tmp/cache/assets/D81/6B0/sprockets%2F99c2812cc5649953fd0bd8a9af99aca4 +0 -0
  67. data/test/dummy/tmp/cache/assets/D89/EC0/sprockets%2F7b50b81cfb0f1bb5f03ad09583c5e31a +0 -0
  68. data/test/dummy/tmp/cache/assets/D8F/250/sprockets%2F60101e38ae706c7e8da0fd49b4c10dbe +0 -0
  69. data/test/dummy/tmp/cache/assets/D94/790/sprockets%2Fd78be002b446eb324b68bf26bb1b3f8d +0 -0
  70. data/test/dummy/tmp/cache/assets/D98/AB0/sprockets%2F028ba597918a94e6bc11a7ab1aa8fe5b +0 -0
  71. data/test/dummy/tmp/cache/assets/DA6/260/sprockets%2F996fb95f5eb0fa6ea87f911c12ba3e51 +0 -0
  72. data/test/dummy/tmp/cache/assets/DCA/C00/sprockets%2Fc7e141db4230d75aeeb95cee73548eaa +0 -0
  73. data/test/dummy/tmp/cache/assets/DD2/930/sprockets%2F50b8f1d35ba79d23e5ccf44d2992bcfe +0 -0
  74. data/test/dummy/tmp/cache/assets/DDB/7C0/sprockets%2Fd6416913c8bd115ef5ff69fde2fe4e2c +0 -0
  75. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  76. data/test/dummy/tmp/cache/assets/DF0/AF0/sprockets%2F5bf64d042b4148f1aadea4f4c3f9dba3 +0 -0
  77. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  78. data/test/dummy/tmp/cache/assets/E06/340/sprockets%2Fb8e7cc5efc6721bddec4c59b2b94b672 +0 -0
  79. data/test/dummy/tmp/cache/assets/E5F/280/sprockets%2F38185b36c9bd1cd7cee3ccb7f9a2acfc +0 -0
  80. data/test/dummy/tmp/cache/sass/1bbbb17ea2792cc02311376f918123ad52ab195a/_reset.css.scssc +0 -0
  81. data/test/dummy/tmp/cache/sass/2fd9c76d84cefb666046113b053d85103e19230b/questionnaires.css.scssc +0 -0
  82. data/test/dummy/tmp/cache/sass/d2c69e841ace0e6337c850059b4b92ab9932356b/_typography.css.scssc +0 -0
  83. data/test/dummy/tmp/cache/sass/d2c69e841ace0e6337c850059b4b92ab9932356b/print.css.scssc +0 -0
  84. metadata +103 -46
  85. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/commend_button.png +0 -0
  86. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/commend_button.png +0 -0
  87. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/commend_button.png +0 -0
  88. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/commend_button.gif +0 -0
  89. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/commend_button.gif +0 -0
  90. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/commend_button.gif +0 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Njk1Yzc3YmU1NzA5MDQxN2RiOWY4NjU4NTY4ODcwMmU1MWUwMjdmYw==
5
+ data.tar.gz: !binary |-
6
+ ODVkMDE2ZjNhODUyYjU4YjRiMGI5ZGQwMWM2YTNlNjI4YThhOWYzOA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ N2RjNGJhNDk3ZjlhZmU0M2E3MWNlNzc4YjkyNDA3ZTQ1NmJiY2VmMjNmNzFk
10
+ ZDMzYzQ2MGFiOThjZDg5ZWM0MWQ0MzgwOWZhOTliMzE5N2JkMGI3YzgyYjg0
11
+ YjgwNjRkNDhkMTQyMzQ2ODAxNDNlNThmOWQ0MzliNjJkY2JjNTE=
12
+ data.tar.gz: !binary |-
13
+ M2VhNGE3N2UzMGQ1NTgxNDM3N2MyNGE3YWQwY2Q4ZmIxNjU2ZTgxZWM3YWVm
14
+ ZjY1Yzc4OTE2N2JmMGVkY2U0MzIzYzY2NzE5MzA1MDYzNDFjZGM1NDg4OTRl
15
+ NTI3MmNmZDJiM2UwY2RlMjIyZDUxMzM2MTMwNTk2NGE2N2MwNTc=
@@ -1,6 +1,9 @@
1
1
  module Qwester
2
2
  class Answer < ActiveRecord::Base
3
- attr_accessible :value, :question_id, :position, :weighting
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :value, :question_id, :position, :weighting
5
+ end
6
+
4
7
 
5
8
  DEFAULT_VALUE = 'Not applicable'
6
9
  STANDARD_VALUES = ['Yes', 'No', DEFAULT_VALUE]
@@ -1,5 +1,8 @@
1
1
  module Qwester
2
2
  class AnswerStore < ActiveRecord::Base
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible
5
+ end
3
6
 
4
7
  has_and_belongs_to_many(
5
8
  :answers,
@@ -1,6 +1,8 @@
1
1
  module Qwester
2
2
  class Presentation < ActiveRecord::Base
3
- attr_accessible :description, :name, :title, :questionnaire_ids, :default
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :description, :name, :title, :questionnaire_ids, :default
5
+ end
4
6
 
5
7
  has_many(
6
8
  :presentation_questionnaires,
@@ -21,7 +23,7 @@ module Qwester
21
23
  validates(
22
24
  :name,
23
25
  :format => {
24
- :with => /^\w+$/,
26
+ :with => /\A\w+\z/,
25
27
  :message => "must comprise letters or numbers with underscores separating words"
26
28
  },
27
29
  :presence => true,
@@ -1,6 +1,8 @@
1
1
  module Qwester
2
2
  class PresentationQuestionnaire < ActiveRecord::Base
3
- attr_accessible :presentation_id, :questionnaire_id
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :presentation_id, :questionnaire_id
5
+ end
4
6
 
5
7
  belongs_to :presentation
6
8
  belongs_to :questionnaire
@@ -1,6 +1,8 @@
1
1
  module Qwester
2
2
  class Question < ActiveRecord::Base
3
- attr_accessible :title, :description, :ref, :answers_attributes, :multi_answer
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :title, :description, :ref, :answers_attributes, :multi_answer
5
+ end
4
6
 
5
7
  has_many(
6
8
  :answers,
@@ -1,6 +1,8 @@
1
1
  module Qwester
2
2
  class Questionnaire < ActiveRecord::Base
3
- attr_accessible :title, :description, :button_image, :question_ids
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :title, :description, :button_image, :question_ids
5
+ end
4
6
 
5
7
  has_many(
6
8
  :questionnaires_questions,
@@ -1,6 +1,8 @@
1
1
  module Qwester
2
2
  class QuestionnairesQuestion < ActiveRecord::Base
3
- attr_accessible :position
3
+ if Qwester.rails_version == '3'
4
+ attr_accessible :position
5
+ end
4
6
 
5
7
  belongs_to :questionnaire
6
8
  belongs_to :question
@@ -1,7 +1,9 @@
1
1
  require 'array_logic'
2
2
  module Qwester
3
3
  class RuleSet < ActiveRecord::Base
4
- attr_accessible :title, :description, :answers, :url, :rule, :answer_ids, :link_text, :warning_id, :presentation
4
+ if Qwester.rails_version == '3'
5
+ attr_accessible :title, :description, :answers, :url, :rule, :answer_ids, :link_text, :warning_id, :presentation
6
+ end
5
7
 
6
8
  before_save :keep_answers_in_step_with_rule
7
9
 
@@ -1,21 +1,21 @@
1
1
  <h1>Questionnaires</h1>
2
2
  <div>
3
3
  <% @questionnaires.each do |questionnaire| %>
4
-
5
- <%= link_to(
6
- image_tag(questionnaire.button_image.url(:link)),
7
- questionnaire_path(questionnaire),
8
- :class => 'image_link'
9
- )
10
- %>
11
- <br>
12
- <%= link_to(
13
- questionnaire.title,
14
- questionnaire_path(questionnaire),
15
- :class => 'text_link'
16
- )
17
- %>
18
-
4
+ <div class="questionnaire">
5
+ <%= link_to(
6
+ image_tag(questionnaire.button_image.url(:link)),
7
+ questionnaire_path(questionnaire),
8
+ :class => 'image_link'
9
+ )
10
+ %>
11
+ <br>
12
+ <%= link_to(
13
+ questionnaire.title,
14
+ questionnaire_path(questionnaire),
15
+ :class => 'text_link'
16
+ )
17
+ %>
18
+ </div>
19
19
  <% end %>
20
20
  </div>
21
21
 
@@ -35,5 +35,5 @@
35
35
  content_tag(
36
36
  'p',
37
37
  link_to('Clear answers and start again', reset_questionnaires_path)
38
- ) if @qwester_rule_sets.present?
38
+ ) if @qwester_answer_store and @qwester_answer_store.answers.present?
39
39
  %>
@@ -8,8 +8,8 @@
8
8
 
9
9
  <%= form_for(@questionnaire, :url => questionnaire_path(@questionnaire)) do |form| %>
10
10
  <ul>
11
- <%= form.fields_for(@questionnaire.answers, Qwester::Answer) do |answer_form| %>
12
- <% @questionnaire.questions.each do |question| %>
11
+
12
+ <% @questionnaire.questions.each do |question| %>
13
13
  <li>
14
14
  <%= content_tag(
15
15
  'span', question.title,
@@ -21,8 +21,8 @@
21
21
  <%= qwester_answers_selection_list(question) %>
22
22
 
23
23
  </li>
24
- <% end %>
25
- <% end %>
24
+ <% end %>
25
+
26
26
  </ul>
27
27
 
28
28
  <p>
@@ -6,7 +6,7 @@ module Qwester
6
6
  menu_label = "Qwester #{menu_label}" unless Qwester.active_admin_menu
7
7
  menu :parent => Qwester.active_admin_menu, :label => menu_label
8
8
 
9
- actions :all, :except => [:edit]
9
+ actions :all, :except => [:edit, :new]
10
10
  config.batch_actions = false
11
11
 
12
12
  filter :question
@@ -59,6 +59,7 @@ module Qwester
59
59
  redirect_to admin_qwester_question_path(answer.question)
60
60
  end
61
61
 
62
+
62
63
  end if defined?(ActiveAdmin)
63
64
 
64
65
  end
@@ -54,7 +54,18 @@ module Qwester
54
54
  end
55
55
  f.input :questionnaires, :as => :check_boxes, :collection => Questionnaire.all
56
56
  end
57
- f.buttons
57
+ f.actions
58
+ end
59
+
60
+ controller do
61
+ def permitted_params
62
+ params.permit(
63
+ qwester_presentation: [
64
+ :name, :title, :default, :description,
65
+ {questionnaire_ids: []}
66
+ ]
67
+ )
68
+ end
58
69
  end
59
70
 
60
71
  member_action :move_up do
@@ -30,7 +30,18 @@ module Qwester
30
30
  f.input :button_image, :as => :file, :hint => f.template.image_tag(f.object.button_image.url(:link))
31
31
  f.input :questions, :as => :check_boxes, :collection => Question.all
32
32
  end
33
- f.buttons
33
+ f.actions
34
+ end
35
+
36
+ controller do
37
+ def permitted_params
38
+ params.permit(
39
+ qwester_questionnaire: [
40
+ :title, :description, :button_image,
41
+ {question_ids: []}
42
+ ]
43
+ )
44
+ end
34
45
  end
35
46
 
36
47
  show do
@@ -30,11 +30,11 @@ module Qwester
30
30
 
31
31
  table :class => 'sortable_list' do
32
32
  tr do
33
- th 'Value'
33
+ th "Value (#{Answer.weighting_alias_name.humanize})"
34
34
  end
35
35
  qwester_question.answers.each do |answer|
36
36
  tr do
37
- td answer.value
37
+ td "#{answer.value} (#{answer.weighting})"
38
38
  td(answer.first? ? "&nbsp;".html_safe : link_to('Up', move_up_admin_qwester_answer_path(answer)))
39
39
  td(answer.last? ? "&nbsp;".html_safe : link_to('Down', move_down_admin_qwester_answer_path(answer)))
40
40
  td link_to('Delete', remove_admin_qwester_answer_path(answer), :confirm => "Are you sure you want to delete the answer '#{answer.value}'?")
@@ -59,7 +59,7 @@ module Qwester
59
59
  end
60
60
  end
61
61
 
62
- f.buttons
62
+ f.actions
63
63
  end
64
64
 
65
65
  controller do
@@ -69,6 +69,15 @@ module Qwester
69
69
  @qwester_question.build_standard_answers
70
70
  end
71
71
 
72
+ def permitted_params
73
+ params.permit(
74
+ qwester_question: [
75
+ :ref, :title, :description, :multi_answer,
76
+ {answers_attributes: [:value, :position, :weighting]}
77
+ ]
78
+ )
79
+ end
80
+
72
81
  end
73
82
 
74
83
  end if defined?(ActiveAdmin)
@@ -137,7 +137,18 @@ EOF
137
137
 
138
138
  end
139
139
 
140
- f.buttons
140
+ f.actions
141
+ end
142
+
143
+ controller do
144
+ def permitted_params
145
+ params.permit(
146
+ qwester_rule_set: [
147
+ :title, :description, :url, :link_text, :presentation, :rule,
148
+ {answer_ids: []}
149
+ ]
150
+ )
151
+ end
141
152
  end
142
153
 
143
154
  show do
@@ -1,10 +1,12 @@
1
1
  module Qwester
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
4
4
 
5
5
  # History
6
6
  # =======
7
7
  #
8
+ # 0.3.0 - Allows qwester to be hosted in a rails 4 app
9
+ #
8
10
  # 0.2.2 - Removes require statements not needed in production
9
11
  # Some gems needed to be required to run the dummy app, but these may have
10
12
  # caused some javascript and/or asset pipeline errors in production apps.
data/lib/qwester.rb CHANGED
@@ -31,5 +31,9 @@ module Qwester
31
31
  def self.session_key=(key)
32
32
  @session_key = key
33
33
  end
34
+
35
+ def self.rails_version
36
+ @rails_version ||= Rails.version.split('.').first if defined? Rails
37
+ end
34
38
 
35
39
  end
@@ -1,3 +1,7 @@
1
1
  // Place all the styles related to the questionnaires controller here.
2
2
  // They will automatically be included in application.css.
3
3
  // You can use Sass (SCSS) here: http://sass-lang.com/
4
+
5
+ .questionnaire {
6
+ display: inline-block;
7
+ }
Binary file
Binary file