metadata_presenter 2.17.39 → 2.17.41

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74a03d0e71f4cda581df3afd4cf40329124cbf1aa600c04ca3ee54bf3b8ad40d
4
- data.tar.gz: 977eed88e73f2e507681ff4e2580b4538c00a7a67548bf7ba12dc442560089c4
3
+ metadata.gz: 06ef8d829975b8cd62a3060296a02bcc4da086497f6d388f5cd0491c780c886a
4
+ data.tar.gz: 9ff7ef2b5a8a436a90a196c56f50e5413f608c3dd5245e543420fb908ac73b58
5
5
  SHA512:
6
- metadata.gz: f0b846fa1f4ed5b5317130cf201cfd6ecef403237ff546d009fb4415a8df5a97a280e6e28d6c4a68e89a00b4c465a3e574419bf527edbbad5b92e42892742da6
7
- data.tar.gz: 6fe78ca82cb81ba12782c9f6ad589cc5f41831a9e72e4d61a4e3201d749549c08cd387bad53264b3c41132688f0814a8895a5a7b57bbe0a88ee0b2d3d060f329
6
+ metadata.gz: 4ec97f71e39206385633229ab67537d3a6011a7debcf8d264f6e707e365868b7136d798803f975578a1c8daa659113cdcbc8d75816f8cbaedc28c0ed90fa6cd2
7
+ data.tar.gz: 3a2ad788127411e12c498534b07b56914082afc3afff90c053ab030735f06dca77ba728b6f6d5efca47b7a38199bc3b82f6fb6be4a723f6c9c8d91e4c06629af
@@ -0,0 +1,26 @@
1
+ module MetadataPresenter
2
+ class SaveAndReturnController < EngineController
3
+ before_action :check_feature_flag
4
+ helper_method :secret_questions
5
+
6
+ def show
7
+ @saved_form = SavedForm.new
8
+ end
9
+
10
+ def create; end
11
+
12
+ def secret_questions
13
+ [
14
+ OpenStruct.new(id: 1, name: I18n.t('presenter.save_and_return.secret_questions.one')),
15
+ OpenStruct.new(id: 2, name: I18n.t('presenter.save_and_return.secret_questions.two')),
16
+ OpenStruct.new(id: 3, name: I18n.t('presenter.save_and_return.secret_questions.three'))
17
+ ]
18
+ end
19
+
20
+ private
21
+
22
+ def check_feature_flag
23
+ redirect_to '/' and return if ENV['SAVE_AND_RETURN'] != 'enabled'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ module MetadataPresenter
2
+ class SavedForm
3
+ include ActiveModel::Model
4
+
5
+ attr_accessor :email,
6
+ :secret_question,
7
+ :secret_answer
8
+
9
+ def initialize; end
10
+ end
11
+ end
@@ -1,18 +1,19 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
+ <meta charset="utf-8">
4
5
  <title><%= service.service_name %></title>
5
6
  <%= csrf_meta_tags %>
6
7
  <%= csp_meta_tag %>
7
8
 
8
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9
- <meta name="robots" content="noindex">
10
- <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="<%= asset_pack_url('media/images/favicon.ico') %>" type="image/x-icon" />
11
- <link rel="mask-icon" href="<%= asset_pack_url('media/images/govuk-mask-icon.svg') %>" color="blue">
12
- <link rel="apple-touch-icon" sizes="180x180" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-180x180.png') %>">
13
- <link rel="apple-touch-icon" sizes="167x167" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-167x167.png') %>">
14
- <link rel="apple-touch-icon" sizes="152x152" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-152x152.png') %>">
15
- <link rel="apple-touch-icon" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon.png') %>">
9
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
10
+ <meta name="robots" content="noindex">
11
+ <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="<%= asset_pack_url('media/images/favicon.ico') %>" type="image/x-icon" />
12
+ <link rel="mask-icon" href="<%= asset_pack_url('media/images/govuk-mask-icon.svg') %>" color="blue">
13
+ <link rel="apple-touch-icon" sizes="180x180" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-180x180.png') %>">
14
+ <link rel="apple-touch-icon" sizes="167x167" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-167x167.png') %>">
15
+ <link rel="apple-touch-icon" sizes="152x152" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon-152x152.png') %>">
16
+ <link rel="apple-touch-icon" href="<%= asset_pack_url('media/images/govuk-apple-touch-icon.png') %>">
16
17
 
17
18
  <%= javascript_pack_tag 'runner_application', 'govuk', defer: true %>
18
19
  <%= stylesheet_pack_tag 'govuk', 'runner_application', media: 'all' %>
@@ -23,19 +24,34 @@
23
24
  </head>
24
25
 
25
26
  <body class="govuk-template__body">
26
- <% if show_cookie_banner? %>
27
- <%= render partial: 'metadata_presenter/analytics/cookie_banner' %>
28
- <% end %>
27
+ <script>
28
+ document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');
29
+ </script>
30
+
31
+ <div class="govuk-modal-dialogue-inert-container">
32
+ <% if show_cookie_banner? %>
33
+ <%= render partial: 'metadata_presenter/analytics/cookie_banner' %>
34
+ <% end %>
35
+
36
+ <%= render template: 'metadata_presenter/header/show' %>
29
37
 
30
- <%= render template: 'metadata_presenter/header/show' %>
31
- <div class="govuk-width-container govuk-body-m">
32
- <main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
33
- <% if back_link.present? %>
34
- <a class="govuk-back-link" href="<%= back_link %>">Back</a>
35
- <% end %>
36
- <%= yield %>
37
- </main>
38
+ <div class="govuk-width-container govuk-body-m">
39
+ <main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
40
+ <% if back_link.present? %>
41
+ <a class="govuk-back-link" href="<%= back_link %>">Back</a>
42
+ <% end %>
43
+ <% if !in_progress? %>
44
+ <%= render partial: 'metadata_presenter/session/timeout_fallback' %>
45
+ <% end %>
46
+ <%= yield %>
47
+ </main>
48
+ </div>
49
+
50
+ <%= render template: 'metadata_presenter/footer/footer' %>
38
51
  </div>
39
- <%= render template: 'metadata_presenter/footer/footer' %>
52
+
53
+ <% if !in_progress? %>
54
+ <%= render partial: 'metadata_presenter/session/timeout_warning_modal' %>
55
+ <% end %>
40
56
  </body>
41
57
  </html>
@@ -86,7 +86,7 @@
86
86
 
87
87
  <button <%= 'disabled' if editable? %> data-prevent-double-click="true" class="fb-block fb-block-actions govuk-button" data-module="govuk-button" data-block-id="actions" data-block-type="actions">
88
88
  <%= t('presenter.actions.submit') -%>
89
- </button>
89
+ </button> <% if ENV['SAVE_AND_RETURN'] == 'enabled' %><a href="<%= save_path %>" class="govuk-button" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.save') %></a><% end %>
90
90
  <% end %>
91
91
 
92
92
  </div>
@@ -25,7 +25,7 @@
25
25
  content_components: @page.supported_content_components
26
26
  } %>
27
27
 
28
- <%= f.govuk_submit(disabled: editable?) %>
28
+ <%= f.govuk_submit(disabled: editable?) %> <% if ENV['SAVE_AND_RETURN'] == 'enabled' %><a href="<%= save_path %>" class="govuk-button" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.save') %></a><% end %>
29
29
  <% end %>
30
30
  </div>
31
31
  </div>
@@ -18,7 +18,7 @@
18
18
  }
19
19
  %>
20
20
 
21
- <%= f.govuk_submit(disabled: editable?) %>
21
+ <%= f.govuk_submit(disabled: editable?) %> <% if ENV['SAVE_AND_RETURN'] == 'enabled' %><a href="<%= save_path %>" class="govuk-button" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.save') %></a><% end %>
22
22
  <% end %>
23
23
  </div>
24
24
  </div>
@@ -20,7 +20,7 @@
20
20
  </div>
21
21
  <% end %>
22
22
 
23
- <%= f.govuk_submit(disabled: editable?) %>
23
+ <%= f.govuk_submit(disabled: editable?) %> <% if ENV['SAVE_AND_RETURN'] == 'enabled' %><a href="<%= save_path %>" class="govuk-button" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.save') %></a><% end %>
24
24
  <% end %>
25
25
  </div>
26
26
  </div>
@@ -0,0 +1,43 @@
1
+ <div class="fb-main-grid-wrapper">
2
+ <div class="govuk-grid-row">
3
+ <div class="govuk-grid-column-two-thirds">
4
+ <h1 id="page-heading" class="govuk-heading-xl"><%= t('presenter.save_and_return.show.heading') %></h1>
5
+ <p class="mojf-settings-screen__description"><%= t('presenter.save_and_return.show.description') %></p>
6
+
7
+ <%= form_for @saved_form do |f| %>
8
+ <%= f.govuk_error_summary %>
9
+ <div class="govuk-form-group">
10
+ <%=
11
+ f.govuk_email_field :email,
12
+ label: { text: t('presenter.save_and_return.show.email') },
13
+ hint: {
14
+ data: { "fb-default-text" => default_text('hint') },
15
+ text: t('presenter.save_and_return.show.email_hint')
16
+ },
17
+ name: "email",
18
+ spellcheck: "false",
19
+ autocomplete: "email"
20
+ %>
21
+ <%=
22
+ f.govuk_collection_radio_buttons :secret_question,
23
+ secret_questions,
24
+ :id,
25
+ :name,
26
+ legend: { text: t('presenter.save_and_return.show.secret_question') },
27
+ hint: {
28
+ data: { "fb-default-text" => default_text('hint') },
29
+ text: t('presenter.save_and_return.show.secret_question_hint')
30
+ },
31
+ bold_labels: false
32
+ %>
33
+ <%=
34
+ f.govuk_text_field :secret_answer,
35
+ label: { text: t('presenter.save_and_return.show.secret_answer') },
36
+ name: "secret_answer"
37
+ %>
38
+ </div>
39
+
40
+ <%= f.govuk_submit t('presenter.save_and_return.show.continue') %><% end %> <%= link_to t('presenter.save_and_return.show.cancel'), :back %>
41
+ </div>
42
+ </div>
43
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="govuk-warning-text govuk-timeout-warning-fallback">
2
+ <span class="govuk-warning-text__icon" aria-hidden="true">!</span>
3
+ <strong class="govuk-warning-text__text">
4
+ <span class="govuk-warning-text__assistive">Warning</span>
5
+ <%= t('presenter.session_timeout_warning.timer_fallback') %> <%= session_expiry_time&.strftime('%l:%M %p') %>.
6
+ <%= t('presenter.session_timeout_warning.timer_extra') %>
7
+ </strong>
8
+ </div>
@@ -0,0 +1,33 @@
1
+ <div class="govuk-timeout-warning"
2
+ data-module="govuk-timeout-warning"
3
+ id="js-timeout-warning"
4
+ data-minutes-idle-timeout="25"
5
+ data-minutes-modal-visible="5"
6
+ data-url-redirect="/session/reset"
7
+ data-timer-text="<%= t('presenter.session_timeout_warning.timer') %>"
8
+ data-timer-extra-text="<%= t('presenter.session_timeout_warning.timer_extra') %>"
9
+ data-timer-redirect-text="<%= t('presenter.session_timeout_warning.redirect') %>">
10
+
11
+ <div id="timeout-warning-modal"
12
+ class="govuk-modal-dialogue govuk-timeout-warning__dialog"
13
+ data-inert-container=".govuk-modal-dialogue-inert-container">
14
+ <div class="govuk-modal-dialogue__wrapper" >
15
+ <dialog class="govuk-modal-dialogue__box " aria-labelledby="timeout-warning-modal-title" aria-modal="true" role="modal" tabindex="-1">
16
+ <div class="govuk-modal-dialogue__header">
17
+ <button type="button" class="govuk-button govuk-modal-dialogue__close" aria-label="<%= t('presenter.session_timeout_warning.close_button') %>" data-element="govuk-modal-dialogue-close">x</button>
18
+ </div>
19
+ <div class="govuk-modal-dialogue__content">
20
+ <h2 class="govuk-modal-dialogue__heading govuk-heading-l" id="timeout-warning-modal-title">
21
+ <%= t('presenter.session_timeout_warning.heading') %>
22
+ </h2>
23
+ <div class="govuk-modal-dialogue__description govuk-body" id="timeout-warning-modal-description">
24
+ <div class="govuk-timeout-warning__timer" aria-hidden="true"></div>
25
+ <div class="govuk-timeout-warning__at-timer govuk-visually-hidden" role="status" id="at-timer"></div>
26
+ </div>
27
+ <button class="govuk-button dialog-button govuk" data-module="govuk-button" data-element="govuk-modal-dialogue-close"><%= t('presenter.session_timeout_warning.button') %></button>
28
+ </div>
29
+ </dialog>
30
+ </div>
31
+ <div class="govuk-modal-dialogue__backdrop"></div>
32
+ </div>
33
+ </div>
@@ -19,15 +19,39 @@ en:
19
19
  maintenance:
20
20
  maintenance_page_heading: 'Sorry, this form is unavailable'
21
21
  maintenance_page_content: "If you were in the middle of completing the form, your data has not been saved.\r\n\r\nThe form will be available again from 9am on Monday 19 November 2018.\r\n\r\n\r\n\r\n### Other ways to apply\r\n\r\nContact us if your application is urgent \r\n\r\nEmail: \r\nTelephone: \r\nMonday to Friday, 9am to 5pm \r\n[Find out about call charges](https://www.gov.uk/call-charges)"
22
+ session_timeout_warning:
23
+ heading: Your form will reset soon
24
+ timer: We will reset your form if you do not continue in
25
+ timer_fallback: We will reset your form if you do not complete the page and press continue by
26
+ timer_extra: Any answers you have entered so far will be cleared to protect your information.
27
+ redirect: You are about to be redirected
28
+ close_button: Close
29
+ button: Continue
22
30
  session_expired:
23
31
  title: Your form has been reset
24
- content: "To protect your personal information, we have reset the form and cleared your answers.\r\n\r\nThis is because you were inactive for 20 minutes."
32
+ content: "To protect your personal information, we have reset the form and cleared your answers.\r\n\r\nThis is because you were inactive for 30 minutes."
25
33
  restart_link: Start again
26
34
  confirmation:
27
35
  reference_number: 'Your reference number is:'
28
36
  payment_enabled: You still need to pay
29
37
  continue_to_pay_button: Continue to pay
30
38
  application_complete: 'Application complete'
39
+ save_and_return:
40
+ save: 'Save for later'
41
+ show:
42
+ heading: 'Save for later'
43
+ description: 'We will send you a one-off link that you can use to resume this form within 28 days.'
44
+ email: 'Email address'
45
+ email_hint: 'Where we will send the link'
46
+ secret_question: 'Pick a security question'
47
+ secret_question_hint: 'We will use this to verify your identity when you return'
48
+ secret_answer: 'The answer to your security question'
49
+ continue: 'Continue with saving'
50
+ cancel: 'Cancel saving and resume form'
51
+ secret_questions:
52
+ one: "What is your mother's maiden name?"
53
+ two: 'What is the last name of your favourite teacher?'
54
+ three: 'What is the name of the hospital where you were born?'
31
55
  footer:
32
56
  cookies:
33
57
  heading: "Cookies"
data/config/routes.rb CHANGED
@@ -10,6 +10,9 @@ MetadataPresenter::Engine.routes.draw do
10
10
 
11
11
  get 'session/expired', to: 'session#expired'
12
12
 
13
+ get 'save', to: 'save_and_return#show'
14
+ post 'saved_forms', to: 'save_and_return#create'
15
+
13
16
  post '/', to: 'answers#create'
14
17
  match '*path', to: 'answers#create', via: :post
15
18
  match '*path', to: 'pages#show',
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.17.39'.freeze
2
+ VERSION = '2.17.41'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.17.39
4
+ version: 2.17.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-16 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -257,6 +257,7 @@ files:
257
257
  - app/controllers/metadata_presenter/engine_controller.rb
258
258
  - app/controllers/metadata_presenter/file_controller.rb
259
259
  - app/controllers/metadata_presenter/pages_controller.rb
260
+ - app/controllers/metadata_presenter/save_and_return_controller.rb
260
261
  - app/controllers/metadata_presenter/service_controller.rb
261
262
  - app/controllers/metadata_presenter/session_controller.rb
262
263
  - app/controllers/metadata_presenter/submissions_controller.rb
@@ -287,6 +288,7 @@ files:
287
288
  - app/models/metadata_presenter/previous_page.rb
288
289
  - app/models/metadata_presenter/route.rb
289
290
  - app/models/metadata_presenter/row_number.rb
291
+ - app/models/metadata_presenter/saved_form.rb
290
292
  - app/models/metadata_presenter/service.rb
291
293
  - app/models/metadata_presenter/traversed_pages.rb
292
294
  - app/models/metadata_presenter/uploaded_file.rb
@@ -357,6 +359,9 @@ files:
357
359
  - app/views/metadata_presenter/page/singlequestion.html.erb
358
360
  - app/views/metadata_presenter/page/standalone.html.erb
359
361
  - app/views/metadata_presenter/page/start.html.erb
362
+ - app/views/metadata_presenter/save_and_return/show.html.erb
363
+ - app/views/metadata_presenter/session/_timeout_fallback.html.erb
364
+ - app/views/metadata_presenter/session/_timeout_warning_modal.html.erb
360
365
  - app/views/metadata_presenter/session/expired.html.erb
361
366
  - config/initializers/default_metadata.rb
362
367
  - config/initializers/default_text.rb