ask 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []