doop 0.0.4.2 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +126 -12
- data/app/helpers/doop_helper.rb +4 -0
- data/demo/.gitignore +19 -0
- data/demo/.rspec +2 -0
- data/demo/Gemfile +70 -0
- data/demo/Gemfile.lock +237 -0
- data/demo/README.md +50 -0
- data/demo/Rakefile +6 -0
- data/demo/app/assets/images/.keep +0 -0
- data/demo/app/assets/images/cert_sample.jpg +0 -0
- data/demo/app/assets/javascripts/application.js +16 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo.js.coffee +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo/analytics.js.erb +0 -0
- data/demo/app/assets/javascripts/demo/application.js +8 -0
- data/demo/app/assets/stylesheets/application.css +15 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo.css.scss +39 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/assets/stylesheets/demo/application.css +1 -0
- data/demo/app/controllers/application_controller.rb +5 -0
- data/demo/app/controllers/concerns/.keep +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/controllers/demo_controller.rb +84 -53
- data/demo/app/helpers/application_helper.rb +2 -0
- data/demo/app/helpers/demo_helper.rb +2 -0
- data/demo/app/mailers/.keep +0 -0
- data/demo/app/models/.keep +0 -0
- data/demo/app/models/concerns/.keep +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_about_you.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_before_you_begin.html.erb +3 -3
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_children.html.erb +8 -6
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_declaration.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/_preamble.html.erb +10 -0
- data/demo/app/views/demo/harness.html.erb +6 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/demo/index.js.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_change_answer_tooltip.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_debug.html.erb +1 -1
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_error.html.erb +0 -0
- data/demo/app/views/doop/_file_uploader.html.erb +58 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_info_box.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_navbar.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_question_form.html.erb +1 -1
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_textfield.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/doop/_tooltip.html.erb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/app/views/layouts/application.html.erb +0 -0
- data/demo/bin/bundle +3 -0
- data/demo/bin/rails +8 -0
- data/demo/bin/rake +8 -0
- data/demo/bin/rspec +16 -0
- data/demo/bin/spring +18 -0
- data/demo/config.ru +4 -0
- data/demo/config/application.rb +23 -0
- data/demo/config/boot.rb +4 -0
- data/demo/config/database.yml +26 -0
- data/demo/config/environment.rb +5 -0
- data/demo/config/environments/development.rb +37 -0
- data/demo/config/environments/production.rb +78 -0
- data/demo/config/environments/test.rb +39 -0
- data/demo/config/initializers/assets.rb +8 -0
- data/demo/config/initializers/backtrace_silencers.rb +7 -0
- data/demo/config/initializers/cookies_serializer.rb +3 -0
- data/demo/config/initializers/filter_parameter_logging.rb +4 -0
- data/demo/config/initializers/inflections.rb +16 -0
- data/demo/config/initializers/mime_types.rb +4 -0
- data/demo/config/initializers/session_store.rb +3 -0
- data/demo/config/initializers/wrap_parameters.rb +14 -0
- data/demo/config/locales/en.yml +23 -0
- data/demo/config/routes.rb +63 -0
- data/demo/config/secrets.yml +22 -0
- data/demo/db/seeds.rb +7 -0
- data/demo/lib/assets/.keep +0 -0
- data/demo/lib/tasks/.keep +0 -0
- data/demo/log/.keep +0 -0
- data/demo/notes.txt +3 -0
- data/demo/public/404.html +67 -0
- data/demo/public/422.html +67 -0
- data/demo/public/500.html +66 -0
- data/demo/public/favicon.ico +0 -0
- data/demo/public/robots.txt +5 -0
- data/{lib/generators/doopgovuk/templates → demo}/spec/features/demo_spec.rb +24 -5
- data/{lib/generators/doopgovuk/templates → demo}/spec/rails_helper.rb +0 -0
- data/{lib/generators/doopgovuk/templates → demo}/spec/spec_helper.rb +0 -0
- data/demo/test/controllers/.keep +0 -0
- data/demo/test/fixtures/.keep +0 -0
- data/demo/test/helpers/.keep +0 -0
- data/demo/test/integration/.keep +0 -0
- data/demo/test/mailers/.keep +0 -0
- data/demo/test/models/.keep +0 -0
- data/demo/test/test_helper.rb +10 -0
- data/demo/vendor/assets/javascripts/.keep +0 -0
- data/demo/vendor/assets/stylesheets/.keep +0 -0
- data/doop.gemspec +1 -17
- data/lib/doop-rspec.rb +4 -0
- data/lib/doop/version.rb +1 -1
- data/lib/doop_controller.rb +19 -24
- data/lib/generators/doopgovuk/doopgovuk_generator.rb +23 -13
- data/lib/generators/doopgovuk/templates/.keep +0 -0
- data/notes/screenshots/doop_1.png +0 -0
- metadata +94 -31
- data/lib/generators/doopgovuk/templates/app/assets/javascripts/demo/application.js +0 -3
- data/lib/generators/doopgovuk/templates/app/views/demo/harness.html.erb +0 -6
data/demo/README.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Doop Demo
|
2
|
+
An example doop-rails project which is used as the template for the doopgovuk generator.
|
3
|
+
|
4
|
+
|
5
|
+
## Development
|
6
|
+
|
7
|
+
git clone git@github.com:coder36/doop.git
|
8
|
+
cd doop
|
9
|
+
git submodule init
|
10
|
+
cd ..
|
11
|
+
git clone git@github.com:coder36/doop_demo.git
|
12
|
+
cd doop_demo
|
13
|
+
bundle install
|
14
|
+
rails s
|
15
|
+
|
16
|
+
|
17
|
+
## Publishing to Heroku
|
18
|
+
|
19
|
+
touch heroku
|
20
|
+
bundle install
|
21
|
+
git add .
|
22
|
+
git commit -m"Heroku build"
|
23
|
+
heroku login (provide email and password)
|
24
|
+
git push heroku
|
25
|
+
|
26
|
+
|
27
|
+
# Testing
|
28
|
+
|
29
|
+
I've used cucmber extensively in the past, but found that inveitably the customer would never actually read the gherkin, so immediatly the rational
|
30
|
+
for using gherkins would be invalid. One of the issues that I found with gherkins was the lure towards writing hundreds of different flows, but
|
31
|
+
all that would happen is that the testing feedback loop increased to hours! Also cucmber matchers feel very artificial and can lead you down a
|
32
|
+
rabbit hole!
|
33
|
+
|
34
|
+
|
35
|
+
I would suggest to use (capybara)[https://github.com/jnicklas/capybara] with rspec, along with a headless browser. Rspec gives much more control to the developer, so that accurate and concise testing can be done, without the overhead of creating cucumber matchers.
|
36
|
+
|
37
|
+
|
38
|
+
## Headless web driver
|
39
|
+
|
40
|
+
sudo apt-get install qt4-dev-tools libqt4-dev libqt4-core libqt4-gui xvfb
|
41
|
+
|
42
|
+
|
43
|
+
## Chromedriver
|
44
|
+
|
45
|
+
Download the (chromedriver)[http://chromedriver.storage.googleapis.com/index.html].
|
46
|
+
|
47
|
+
chromdriver --white-listed-ips 192.168.33.11
|
48
|
+
|
49
|
+
This allows the chromedriver to be used remotely from 192.168.33.11. This type of setup is ideal for a CI pipeline.
|
50
|
+
|
data/demo/Rakefile
ADDED
File without changes
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require turbolinks
|
16
|
+
//= require_tree .
|
File without changes
|
data/{lib/generators/doopgovuk/templates → demo}/app/assets/javascripts/demo/analytics.js.erb
RENAMED
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any styles
|
10
|
+
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
11
|
+
* file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
@@ -137,6 +137,12 @@ button {
|
|
137
137
|
|
138
138
|
}
|
139
139
|
|
140
|
+
.button {
|
141
|
+
@include button;
|
142
|
+
margin: 16px 0 0 0;
|
143
|
+
|
144
|
+
}
|
145
|
+
|
140
146
|
.button-secondary{
|
141
147
|
@include button($grey-3);
|
142
148
|
}
|
@@ -288,3 +294,36 @@ select {
|
|
288
294
|
@include core-16();
|
289
295
|
}
|
290
296
|
|
297
|
+
.bar {
|
298
|
+
height: 18px;
|
299
|
+
background: green;
|
300
|
+
}
|
301
|
+
|
302
|
+
.uploaded_image {
|
303
|
+
float: left;
|
304
|
+
padding: 0 0 5px 0;
|
305
|
+
margin: 0 2px 0 0;
|
306
|
+
width: auto;
|
307
|
+
border: 1px solid #ccc;
|
308
|
+
img {
|
309
|
+
padding: 0 0 0 0;
|
310
|
+
margin: 8px 0 0 0;
|
311
|
+
}
|
312
|
+
button {
|
313
|
+
|
314
|
+
margin: 0 0 0 0;
|
315
|
+
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
.clear {
|
320
|
+
clear: both;
|
321
|
+
}
|
322
|
+
|
323
|
+
.progress-bar {
|
324
|
+
margin: 10px 0 0 0;
|
325
|
+
height: 20px;
|
326
|
+
width: 0;
|
327
|
+
background: url(progressbar.gif);
|
328
|
+
display: none;
|
329
|
+
}
|
File without changes
|
@@ -9,18 +9,16 @@ class DemoController < ApplicationController
|
|
9
9
|
delegate :index, :answer, to: :@doop_controller
|
10
10
|
before_filter :setup_doop
|
11
11
|
|
12
|
+
def harness
|
13
|
+
return if request.get?
|
14
|
+
@doop_controller.inject_yaml params["yaml"]
|
15
|
+
index
|
16
|
+
end
|
17
|
+
|
12
18
|
def setup_doop
|
13
19
|
@doop_controller = Doop::DoopController.new self do |doop|
|
14
20
|
|
15
|
-
|
16
|
-
data = params["doop_data"]
|
17
|
-
if data != nil
|
18
|
-
if Rails.env.development? || Rails.env.test? || params.include?("harness")
|
19
|
-
next data
|
20
|
-
else
|
21
|
-
next ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base).decrypt_and_verify data if !Rails.env.development?
|
22
|
-
end
|
23
|
-
end
|
21
|
+
yaml do
|
24
22
|
|
25
23
|
<<-EOS
|
26
24
|
page: {
|
@@ -37,7 +35,12 @@ class DemoController < ApplicationController
|
|
37
35
|
},
|
38
36
|
do_you_still_want_to_apply: {
|
39
37
|
_question: "Do you still want to apply for child benefit?"
|
38
|
+
},
|
39
|
+
proof_of_id: {
|
40
|
+
_question: "We need proof of your identity",
|
41
|
+
_answer: {}
|
40
42
|
}
|
43
|
+
|
41
44
|
},
|
42
45
|
about_you: {
|
43
46
|
_page: "about_you",
|
@@ -82,9 +85,6 @@ class DemoController < ApplicationController
|
|
82
85
|
children: {
|
83
86
|
_page: "children",
|
84
87
|
_nav_name: "Children",
|
85
|
-
how_many_birth_certs: {
|
86
|
-
_question: "How many birth certificates are you sending us?"
|
87
|
-
},
|
88
88
|
#{child_yaml}
|
89
89
|
},
|
90
90
|
declaration: {
|
@@ -112,23 +112,18 @@ class DemoController < ApplicationController
|
|
112
112
|
},
|
113
113
|
own_child: {
|
114
114
|
_question: "Is this child your own child ?"
|
115
|
+
},
|
116
|
+
birth_certificate: {
|
117
|
+
_question: "We need a photo of the birth certificate",
|
118
|
+
_answer: {}
|
115
119
|
}
|
116
120
|
}
|
117
121
|
EOS
|
118
122
|
end
|
119
123
|
|
120
|
-
save_yaml do |yaml|
|
121
|
-
if Rails.env.development? || Rails.env.test?
|
122
|
-
request["doop_data"] = yaml
|
123
|
-
else
|
124
|
-
crypt = ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base)
|
125
|
-
data = crypt.encrypt_and_sign(yaml)
|
126
|
-
request["doop_data"] = data
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
124
|
|
131
125
|
# PREAMBLE callbacks
|
126
|
+
|
132
127
|
|
133
128
|
on_answer "/page/preamble/income_more_than_50000" do |question,path, params, answer|
|
134
129
|
answer_with( question, { "_summary" => answer } )
|
@@ -139,6 +134,9 @@ class DemoController < ApplicationController
|
|
139
134
|
answer_with( question, { "_summary" => "Yes" } )
|
140
135
|
end
|
141
136
|
|
137
|
+
on_answer "/page/preamble/proof_of_id" do |question,path, params, answer|
|
138
|
+
file_upload_control question, path, params, answer
|
139
|
+
end
|
142
140
|
|
143
141
|
|
144
142
|
# ABOUT YOU callbacks
|
@@ -207,15 +205,6 @@ class DemoController < ApplicationController
|
|
207
205
|
answer_with( question, { "_summary" => answer } )
|
208
206
|
end
|
209
207
|
|
210
|
-
on_answer "/page/children/how_many_birth_certs" do |question,path, params, answer|
|
211
|
-
res = validate( answer )
|
212
|
-
next res if !res.empty?
|
213
|
-
next { :answer_error => "Must be a number" } if !is_number answer
|
214
|
-
|
215
|
-
|
216
|
-
answer_with( question, { "_summary" => answer } )
|
217
|
-
end
|
218
|
-
|
219
208
|
on_answer "/page/children/child__(\\d+)/name" do |question,path, params, answer|
|
220
209
|
res = validate( answer, ["firstname", "surname"] )
|
221
210
|
next res if !res.empty?
|
@@ -239,6 +228,10 @@ class DemoController < ApplicationController
|
|
239
228
|
answer_with( question, { "_summary" => answer } )
|
240
229
|
end
|
241
230
|
|
231
|
+
on_answer "/page/children/child__(\\d+)/birth_certificate" do |question,path, params, answer|
|
232
|
+
file_upload_control question, path, params, answer
|
233
|
+
end
|
234
|
+
|
242
235
|
on_answer "/page/children/child__(\\d+)" do |question,path, params, answer|
|
243
236
|
if params.include?("remove_child")
|
244
237
|
remove path
|
@@ -259,38 +252,76 @@ class DemoController < ApplicationController
|
|
259
252
|
end
|
260
253
|
|
261
254
|
on_answer "/page/declaration" do |question, path, params, answer |
|
262
|
-
{ :redirect => "https://github.com/coder36/doop" }
|
255
|
+
#{ :redirect => "https://github.com/coder36/doop" }
|
263
256
|
end
|
264
257
|
|
265
|
-
end
|
266
|
-
end
|
267
258
|
|
268
|
-
end
|
269
259
|
|
270
260
|
|
271
|
-
def
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
261
|
+
def file_upload_control question, path, params, answer
|
262
|
+
|
263
|
+
if params.include? "remove_file"
|
264
|
+
answer.delete( params["remove_file"] )
|
265
|
+
end
|
266
|
+
|
267
|
+
a = answer.values
|
268
|
+
if params.include? "files"
|
269
|
+
params["files"].each do |uploaded_io|
|
270
|
+
if File.directory? Rails.root.join('public','uploads')
|
271
|
+
ext = uploaded_io.original_filename[/.*\.(\w+)/,1]
|
272
|
+
filename = (0...16).map { (65 + rand(26)).chr }.join + ".#{ext}"
|
273
|
+
filename.downcase!
|
274
|
+
|
275
|
+
File.open(Rails.root.join('public', 'uploads', filename), 'wb') do |file|
|
276
|
+
file.write(uploaded_io.read)
|
277
|
+
end
|
278
|
+
a << "/uploads/#{filename}"
|
279
|
+
else
|
280
|
+
a << view_context.image_path("cert_sample.jpg")
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
file_count = 0
|
285
|
+
answer.clear
|
286
|
+
a.each do |n|
|
287
|
+
file_count += 1
|
288
|
+
answer[ "file__#{file_count}" ] = n
|
289
|
+
end
|
290
|
+
|
291
|
+
if params.include? "continue"
|
292
|
+
summary = file_count==0 ? "None provided" : "#{file_count} image#{file_count>1 ? 's' : ''} provided"
|
293
|
+
answer_with( question, { "_summary" => summary } )
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
end
|
277
298
|
end
|
278
|
-
end
|
279
299
|
|
280
|
-
def
|
281
|
-
|
300
|
+
def format_date d
|
301
|
+
begin
|
302
|
+
return nil if d.length != 10
|
303
|
+
Date.strptime( d, "%d/%m/%Y" ).strftime( "%-d %B %Y" )
|
304
|
+
rescue
|
305
|
+
nil
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
def validate answer,fields=nil
|
310
|
+
res = {}
|
311
|
+
|
312
|
+
if fields == nil
|
313
|
+
res["answer_error".to_sym] = "Can not be empty" if answer.squish.empty?
|
314
|
+
return res
|
315
|
+
end
|
282
316
|
|
283
|
-
|
284
|
-
res["
|
285
|
-
|
317
|
+
fields.each do |f|
|
318
|
+
res["#{f}_error".to_sym] = "Can not be empty" if answer[f].squish.empty?
|
319
|
+
end
|
320
|
+
res
|
286
321
|
end
|
287
322
|
|
288
|
-
|
289
|
-
|
323
|
+
def is_number num
|
324
|
+
num =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
|
290
325
|
end
|
291
|
-
res
|
292
|
-
end
|
293
326
|
|
294
|
-
def is_number num
|
295
|
-
num =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
|
296
327
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -15,9 +15,9 @@
|
|
15
15
|
<h2>The code</h2>
|
16
16
|
<p>As you progress through the questionnaire, you can follow along in the code:<br/><br/>
|
17
17
|
<%
|
18
|
-
view_url = "https://github.com/coder36/doop/tree/master/
|
19
|
-
cont_url = "https://github.com/coder36/doop/tree/master/
|
20
|
-
rspec_url = "https://github.com/coder36/doop/blob/master/
|
18
|
+
view_url = "https://github.com/coder36/doop/tree/master/demo/app/views/demo"
|
19
|
+
cont_url = "https://github.com/coder36/doop/tree/master/demo/app/controllers"
|
20
|
+
rspec_url = "https://github.com/coder36/doop/blob/master/demo/spec/features/demo_spec.rb"
|
21
21
|
%>
|
22
22
|
|
23
23
|
<strong><a href='<%="#{cont_url}/demo_controller.rb"%>'>demo_controller.rb</a></strong><br/>
|
@@ -13,12 +13,6 @@
|
|
13
13
|
<% end %>
|
14
14
|
<p>You don't need to tell us about any children you already get Child Benefit for.</p>
|
15
15
|
|
16
|
-
<%=question "/page/children/how_many_birth_certs" do |root,answer| %>
|
17
|
-
<p>We don't need to see a birth certificate for a child that has been claimed for by you or someone else in the past</p>
|
18
|
-
<%=doop_textfield "answer", answer, res %>
|
19
|
-
<button>Continue</button>
|
20
|
-
<% end %>
|
21
|
-
|
22
16
|
<% list "/page/children/child__(\\d+)" do |path,index| %>
|
23
17
|
|
24
18
|
<%=question "#{path}", :title => "Child #{index}" do |root,answer| %>
|
@@ -46,6 +40,14 @@
|
|
46
40
|
<button name="b_answer" value="No">No, this is someone elses child</button>
|
47
41
|
<% end %>
|
48
42
|
|
43
|
+
<%=question "#{path}/birth_certificate" do |root,answer| %>
|
44
|
+
<%=info_box do %>
|
45
|
+
<p>Please upload a photo, of the birth certificate or adoption papers.</p>
|
46
|
+
<p>If you are applying using a mobile device with a camera, when you click the upload button, your camera will be activated.</p>
|
47
|
+
<% end %>
|
48
|
+
<%=file_uploader answer%>
|
49
|
+
<% end %>
|
50
|
+
|
49
51
|
<% when_answered path do %>
|
50
52
|
<% if index > 1 %>
|
51
53
|
<button class="button-secondary" name="remove_child">Remove child</button><br/>
|
File without changes
|
@@ -14,6 +14,7 @@
|
|
14
14
|
<h3>Your information</h3>
|
15
15
|
<p>By applying for child benefit online, you consent that we may process your personal data (including sensitive personal data) that we collect from you.</p>
|
16
16
|
|
17
|
+
|
17
18
|
<% when_question :changed => "/page/preamble/income_more_than_50000" do |current_answer, id| %>
|
18
19
|
<%=change_answer_tooltip id do %>
|
19
20
|
<p>If you change this answer, additional questions may be asked</p>
|
@@ -48,6 +49,15 @@
|
|
48
49
|
<button name="b_answer" value="Yes">Yes, I still want to apply for child benefit</button><br/>
|
49
50
|
<% end %>
|
50
51
|
|
52
|
+
<%=question "/page/preamble/proof_of_id" do |root,answer| %>
|
53
|
+
<%=info_box do %>
|
54
|
+
<p>Please upload a photo, of either your passport, driving license and a utility bill
|
55
|
+
with your name and address visible.</p>
|
56
|
+
<p>If you are applying using a mobile device with a camera, when you click the upload button, your camera will be activated.</p>
|
57
|
+
<% end %>
|
58
|
+
<%=file_uploader answer%>
|
59
|
+
<% end %>
|
60
|
+
|
51
61
|
<% when_answered "/page/preamble" do %>
|
52
62
|
<button>Continue and Save</button>
|
53
63
|
<% end %>
|