ask 0.5.2 → 0.5.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 797809ae29c20763f48c7a2fe68456a2e81d1ee9
4
+ data.tar.gz: f7e3a5a044a443e390aafa15246a863f97f446a5
5
+ SHA512:
6
+ metadata.gz: 8699ccb0e982ef3b10ec98ce1ca4ec7d2adc6c557b6c35de3fd94ee2d2c4109b85292cf0cd1afef76f1179b150a2aae5850a130786fee2867d766be75224922a
7
+ data.tar.gz: 350a1bfd84e5b05e97a86714d44c880b3e7151261dda7de492fb901d0638490cd05065423d69f96658ce8dd896bc82276c4dca9091a14ac94ea02cbc8953618d
@@ -90,6 +90,11 @@ If you want to changed the default whitelisted file types for upload questions,
90
90
  end
91
91
 
92
92
 
93
+ Build Status
94
+ ------------
95
+ [![Build Status](https://travis-ci.org/biola/ask.png)](https://travis-ci.org/biola/ask)
96
+
97
+
93
98
  License
94
99
  -------
95
100
  MIT License
@@ -1,6 +1,6 @@
1
1
  jQuery ->
2
- ###
3
- Handle adding and removing fields
2
+ ###
3
+ Handle adding and removing fields
4
4
  ###
5
5
  $('form').on 'click', '.remove_fields', (event) ->
6
6
  $(this).prev('input[type=hidden]').val('1')
@@ -16,7 +16,7 @@ jQuery ->
16
16
  toggleEditMode new_question
17
17
  event.preventDefault()
18
18
 
19
- ###
19
+ ###
20
20
  Update the edit preview mode between textQuestion, ChecklistQuestion, etc.
21
21
  ###
22
22
  updateChoiceVisibility = (select) ->
@@ -32,11 +32,12 @@ jQuery ->
32
32
  current_question_type.removeClass('show-radio').addClass('show-checkbox')
33
33
  else if select.val() == 'FormSection'
34
34
  question.find('.required-option').hide()
35
-
35
+ question.find('.required-option input[type=checkbox]').prop('checked', false)
36
+
36
37
  # Update preview type whenever the user changes the type of this question
37
38
  $('form').on "change", ".select-question-type select", ->
38
39
  updateChoiceVisibility $(this)
39
-
40
+
40
41
  bindTypeChange = (select) ->
41
42
 
42
43
  # Update once when the DOM first loads
@@ -46,8 +47,8 @@ jQuery ->
46
47
  updateChoiceVisibility $(this)
47
48
 
48
49
 
49
- ###
50
- Make the list sortable
50
+ ###
51
+ Make the list sortable
51
52
  ###
52
53
  makeSortable = ->
53
54
  questions = $("form .ask.questions")
@@ -158,4 +159,4 @@ jQuery.fn.serializeObject = (ignore_regex = null) ->
158
159
  # recursive function that builds a nested object based on the name
159
160
  pushData(objectData, hash_array, value)
160
161
 
161
- return objectData
162
+ return objectData
@@ -1,7 +1,8 @@
1
1
  class Answer < ActiveRecord::Base
2
+ if respond_to? :attr_accessible # Rails 3.2 backwards compatibility
3
+ attr_accessible :question_id, :answer, :choice_id, :uploaded_file, :uploaded_file_cache
4
+ end
2
5
 
3
- attr_accessible :question_id, :answer, :choice_id, :uploaded_file, :uploaded_file_cache
4
-
5
6
  belongs_to :answerer, :polymorphic => true
6
7
  belongs_to :question
7
8
  belongs_to :choice
@@ -10,7 +11,7 @@ class Answer < ActiveRecord::Base
10
11
 
11
12
  mount_uploader :uploaded_file, UploadedFileUploader
12
13
 
13
- default_scope joins(:question).order('questions.position').readonly(false) # This scope prevents updating answers unless readonly is set to false.
14
+ default_scope lambda { joins(:question).order('questions.position').readonly(false) } # This scope prevents updating answers unless readonly is set to false.
14
15
  scope :for_answerer, lambda{|answerer| where(:answerer_type => answerer.class.to_s, :answerer_id => answerer.id)}
15
16
  scope :for_question, lambda{|question| where(:question_id => question.id)}
16
17
 
@@ -33,5 +34,4 @@ class Answer < ActiveRecord::Base
33
34
  end
34
35
  end
35
36
  end
36
-
37
37
  end
@@ -1,7 +1,7 @@
1
1
  class Choice < ActiveRecord::Base
2
+ if respond_to? :attr_accessible # Rails 3.2 backwards compatibility
3
+ attr_accessible :name
4
+ end
2
5
 
3
- attr_accessible :name
4
-
5
6
  belongs_to :question
6
-
7
7
  end
@@ -1,23 +1,25 @@
1
1
  class Question < ActiveRecord::Base
2
-
3
2
  require 'acts_as_list'
4
3
 
5
- TYPES = ['TextQuestion', 'EssayQuestion', 'ChooseOneQuestion', 'ChecklistQuestion', 'UploadQuestion', 'FormSection']
6
-
4
+ TYPES = ['TextQuestion', 'EssayQuestion', 'ChooseOneQuestion', 'ChecklistQuestion', 'UploadQuestion', 'FormSection']
5
+
7
6
  belongs_to :asker, :polymorphic => true
8
7
  has_many :choices, :dependent => :destroy
9
8
  has_many :answers, :dependent => :destroy
10
9
 
11
10
  acts_as_list :scope=>:asker
12
11
 
13
- attr_accessible :type, :name, :instructions, :required, :choices_attributes, :position
12
+ if respond_to? :attr_accessible # Rails 3.2 backwards compatibility
13
+ attr_accessible :type, :name, :instructions, :required, :choices_attributes, :position
14
+ end
14
15
  accepts_nested_attributes_for :choices, :allow_destroy=>true, :reject_if=>lambda{|attrs| attrs['name'].blank? }
15
16
 
16
17
  validates_presence_of :type, :name
17
18
  validates_inclusion_of :type, :in=>TYPES
19
+ validate :form_section_not_required
18
20
 
19
- default_scope :order => :position
20
- scope :required, where(:required => true)
21
+ default_scope lambda { order(:position) }
22
+ scope :required, -> { where(:required => true) }
21
23
 
22
24
  def attributes_protected_by_default
23
25
  default = [ self.class.primary_key ]
@@ -47,4 +49,11 @@ class Question < ActiveRecord::Base
47
49
  false
48
50
  end
49
51
 
52
+ private
53
+
54
+ def form_section_not_required
55
+ if type == 'FormSection' && required?
56
+ errors.add :required, 'cannot be true for form sections'
57
+ end
58
+ end
50
59
  end
data/lib/ask.rb CHANGED
@@ -2,6 +2,7 @@ require "ask/engine"
2
2
  require "ask/acts_as_asker"
3
3
  require "ask/acts_as_answerer"
4
4
  require "carrierwave"
5
+ require "acts_as_list"
5
6
 
6
7
  module Ask
7
8
  require 'ask/configuration'
@@ -1,6 +1,5 @@
1
1
  module Ask
2
2
  module ActiveRecord
3
-
4
3
  module InstanceMethods
5
4
  def all_questions
6
5
  if respond_to? :asker
@@ -9,7 +8,7 @@ module Ask
9
8
  raise NoMethodError, "You must define a #{self}#asker method that returns the related acts_as_asker model"
10
9
  end
11
10
  end
12
-
11
+
13
12
  def find_question(question)
14
13
  if question.is_a? Question
15
14
  question
@@ -23,19 +22,19 @@ module Ask
23
22
  def questions_by_section
24
23
  section = nil
25
24
  questions = {}
26
-
25
+
27
26
  asker.questions.order(:position).each do |question|
28
27
  if question.is_a? FormSection
29
28
  section = question
30
29
  end
31
-
30
+
32
31
  questions[section] ||= []
33
-
32
+
34
33
  unless question.is_a? FormSection
35
34
  questions[section] << question
36
35
  end
37
36
  end
38
-
37
+
39
38
  questions
40
39
  end
41
40
 
@@ -52,13 +51,12 @@ module Ask
52
51
  return nil if question.nil?
53
52
  answers.for_question(question)
54
53
  end
55
-
54
+
56
55
  def build_or_create_answers(questions)
57
56
  method = new_record? ? :build : :create
58
-
57
+
59
58
  questions.each do |question|
60
59
  if answers_to(question).empty?
61
-
62
60
  if question.supports_multiple_answers?
63
61
  question.choices.each do |choice|
64
62
  answers.send(method, :question_id=>question.id, :answer=>'', :choice_id=>choice.id)
@@ -66,28 +64,27 @@ module Ask
66
64
  else
67
65
  answers.send(method, :question_id=>question.id)
68
66
  end
69
-
70
67
  end
71
68
  end
72
69
  end
73
-
70
+
74
71
  def questions_with_answers
75
72
  qa = ActiveSupport::OrderedHash.new
76
-
73
+
77
74
  # Set the correct order and make sure we have all the questions
78
75
  all_questions.each do |q|
79
76
  qa[q.id] = []
80
77
  end
81
-
78
+
82
79
  answers.each do |a|
83
80
  qa[a.question.id] << a.answer.to_s.strip unless a.answer.blank?
84
81
  end
85
-
82
+
86
83
  qa
87
84
  end
88
-
85
+
89
86
  private
90
-
87
+
91
88
  def validate_required_questions
92
89
  return if asker.blank?
93
90
  asker.questions.required.each do |question|
@@ -97,20 +94,21 @@ module Ask
97
94
  end
98
95
  end
99
96
  end
100
-
101
97
  end
102
98
  end
103
99
 
104
100
  class ActiveRecord::Base
105
101
  def self.acts_as_answerer
106
102
  include Ask::ActiveRecord::InstanceMethods
107
-
103
+
108
104
  has_many :answers, :as => :answerer, :dependent=>:destroy
109
105
  has_many :questions, :through=>:answers
110
-
111
- attr_accessible :answers_attributes
106
+
107
+ if respond_to? :attr_accessible # Rails 3.2 backwards compatibility
108
+ attr_accessible :answers_attributes
109
+ end
112
110
  accepts_nested_attributes_for :answers, :allow_destroy=>true
113
-
111
+
114
112
  validate :validate_required_questions
115
113
  end
116
114
  end
@@ -1,8 +1,10 @@
1
1
  class ActiveRecord::Base
2
2
  def self.acts_as_asker
3
3
  has_many :questions, :as => :asker, :dependent => :destroy
4
-
5
- attr_accessible :questions_attributes
4
+
5
+ if respond_to? :attr_accessible # Rails 3.2 backwards compatibility
6
+ attr_accessible :questions_attributes
7
+ end
6
8
  accepts_nested_attributes_for :questions, :allow_destroy=>true, :reject_if=>lambda{|attrs| attrs['name'].blank? }
7
9
  end
8
10
  end
@@ -1,3 +1,3 @@
1
1
  module Ask
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
metadata CHANGED
@@ -1,126 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ask
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
5
- prerelease:
4
+ version: 0.5.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Adam Crownoble
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-15 00:00:00.000000000 Z
11
+ date: 2015-02-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.1.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.1.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: acts_as_list
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 0.1.2
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 0.1.2
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rails_autolink
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 1.0.2
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 1.0.2
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: jquery-rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: carrierwave
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: 0.8.0
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: 0.8.0
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: sqlite3
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - ">="
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rspec-rails
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - ">="
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  description: Allow your site's maintainers to easily create forms.
@@ -130,6 +115,9 @@ executables: []
130
115
  extensions: []
131
116
  extra_rdoc_files: []
132
117
  files:
118
+ - MIT-LICENSE
119
+ - README.markdown
120
+ - Rakefile
133
121
  - app/assets/images/add.png
134
122
  - app/assets/images/delete.png
135
123
  - app/assets/javascripts/ask.js.coffee
@@ -163,37 +151,34 @@ files:
163
151
  - db/migrate/20110913214255_create_choices.rb
164
152
  - db/migrate/20110913214410_create_questions.rb
165
153
  - db/migrate/20130202010401_add_upload_field_to_answers.rb
154
+ - lib/ask.rb
166
155
  - lib/ask/acts_as_answerer.rb
167
156
  - lib/ask/acts_as_asker.rb
168
157
  - lib/ask/configuration.rb
169
158
  - lib/ask/engine.rb
170
159
  - lib/ask/version.rb
171
- - lib/ask.rb
172
- - MIT-LICENSE
173
- - Rakefile
174
- - README.markdown
175
160
  homepage: https://github.com/biola/ask
176
- licenses: []
161
+ licenses:
162
+ - MIT
163
+ metadata: {}
177
164
  post_install_message:
178
165
  rdoc_options: []
179
166
  require_paths:
180
167
  - lib
181
168
  required_ruby_version: !ruby/object:Gem::Requirement
182
- none: false
183
169
  requirements:
184
- - - ! '>='
170
+ - - ">="
185
171
  - !ruby/object:Gem::Version
186
172
  version: '0'
187
173
  required_rubygems_version: !ruby/object:Gem::Requirement
188
- none: false
189
174
  requirements:
190
- - - ! '>='
175
+ - - ">="
191
176
  - !ruby/object:Gem::Version
192
177
  version: '0'
193
178
  requirements: []
194
179
  rubyforge_project:
195
- rubygems_version: 1.8.25
180
+ rubygems_version: 2.2.2
196
181
  signing_key:
197
- specification_version: 3
182
+ specification_version: 4
198
183
  summary: End-user form creation engine for Rails
199
184
  test_files: []