metadata_presenter 3.3.14 → 3.3.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fce1f7719e73302d134f91f03ce4bfbd239e9303d1d2a08bc5594f9b9882585c
4
- data.tar.gz: 5c15e0714aaa369a8898ba00d27f0199972bed43dfc6bffb99e6c0e8be35d0e9
3
+ metadata.gz: 697e6b4f94a8e43973cc082259567e2967f2b4686e840174cfda308b378f5302
4
+ data.tar.gz: e47e94bf27c2b86cc9e4677ed0dec9c0385c3adc9c92e0594938d3a8ae1de20a
5
5
  SHA512:
6
- metadata.gz: cfb93f873bdd5cd77e49819a924178b45c2a30e35c8dd6aab829011c058a49ca6a79aa3d94917f136e68c3274fa722b6c9864ee8f5ae759a957f40ac4c6dee95
7
- data.tar.gz: 6c68732e6f9cbcac962ce1ef24847d317a041a3b0b48ebacc7589ddd4bfc419770d0fc049dd61427446f82e08d7baa29741538908538f54503afd9a2d21ec7ca
6
+ metadata.gz: 9a1f301247aa0891098f7d4cbab3a8a6de98b0bcf02187a4d51e214318f933acff699e910122690118dd1768fc7e6d1cbfd7e02732e8c53b4d338cf2445c205a
7
+ data.tar.gz: 9801b62cd16f191fd5b239c4fd39ba1ce60bd8007c255cb309e1037840d35a4876feb2a0ebb2255d172ea37037811d066c3d40b03a02e9a89e2a4f1660880151
@@ -0,0 +1,31 @@
1
+ module MetadataPresenter
2
+ module Concerns
3
+ module SaveAndReturn
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :page_slug, :label_text
8
+ end
9
+
10
+ def page_slug
11
+ if params && params[:page_slug].present?
12
+ return params[:page_slug]
13
+ end
14
+ if session['returning_slug'].present?
15
+ return session['returning_slug']
16
+ end
17
+ if session['saved_form'].present?
18
+ return session['saved_form']['page_slug']
19
+ end
20
+
21
+ if params['saved_form'].present?
22
+ params['saved_form']['page_slug']
23
+ end
24
+ end
25
+
26
+ def label_text(text)
27
+ "<h2 class='govuk-heading-m'>#{text}</h2>"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,119 @@
1
+ module MetadataPresenter
2
+ class ResumeController < EngineController
3
+ include Concerns::SaveAndReturn
4
+
5
+ helper_method :get_service_name, :get_uuid, :pages_presenters
6
+
7
+ def return
8
+ response = get_saved_progress(get_uuid)
9
+
10
+ if response.status == 404
11
+ redirect_to '/record_error' and return
12
+ end
13
+
14
+ if response.status == 400
15
+ redirect_to '/record_failure' and return
16
+ end
17
+
18
+ if response.status == 422
19
+ redirect_to '/already_used' and return
20
+ end
21
+
22
+ @saved_form = SavedForm.new.from_json(response.body.to_json)
23
+ @resume_form = ResumeForm.new(@saved_form.secret_question)
24
+ end
25
+
26
+ # rubocop:disable Style/RescueStandardError
27
+ def submit_secret_answer
28
+ response = get_saved_progress(get_uuid)
29
+
30
+ if response.status != 200
31
+ if response.status == 400
32
+ redirect_to '/record_failure' and return
33
+ end
34
+
35
+ redirect_to '/record_error' and return
36
+ end
37
+
38
+ @saved_form = SavedForm.new.from_json(response.body.to_json)
39
+ @resume_form = ResumeForm.new(@saved_form.secret_question)
40
+ @resume_form.secret_answer = resume_form_params[:secret_answer]
41
+ @resume_form.recorded_answer = @saved_form.secret_answer
42
+ @resume_form.attempts_remaining = 2 - @saved_form.attempts.to_i
43
+
44
+ if @resume_form.valid?
45
+ # redirect back to right place in form
46
+ session[:user_id] = @saved_form.user_id
47
+ session[:user_token] = @saved_form.user_token
48
+ session[:returning_slug] = @saved_form.page_slug
49
+
50
+ invalidate_record(@saved_form.id)
51
+
52
+ if @saved_form.service_version == service.version_id
53
+ redirect_to '/resume_progress' and return
54
+ else
55
+ redirect_to '/resume_from_start' and return
56
+ end
57
+ else
58
+ if @resume_form.attempts_remaining <= 0
59
+ begin
60
+ increment_record_counter(@saved_form.id)
61
+ rescue => e
62
+ Rails.logger.info(e)
63
+ redirect_to '/record_failure' and return
64
+ end
65
+ redirect_to '/record_failure' and return
66
+ end
67
+
68
+ increment_record_counter(@saved_form.id)
69
+
70
+ render :return, params: { uuid: @saved_form.id }
71
+ end
72
+ end
73
+ # rubocop:enable Style/RescueStandardError
74
+
75
+ def resume_progress
76
+ @user_data = load_user_data
77
+
78
+ @page ||= service.checkanswers_page
79
+
80
+ if @page
81
+ @page_answers = PageAnswers.new(@page, @answered_pages)
82
+ else
83
+ not_found
84
+ end
85
+ end
86
+
87
+ def answered_pages
88
+ TraversedPages.new(service, @user_data, @page).all
89
+ end
90
+
91
+ def pages_presenters
92
+ PageAnswersPresenter.map(
93
+ view: view_context,
94
+ pages: answered_pages,
95
+ answers: @user_data
96
+ )
97
+ end
98
+
99
+ private
100
+
101
+ def resume_form_params
102
+ params.require(:resume_form).permit(
103
+ :secret_answer, :uuid
104
+ )
105
+ end
106
+
107
+ def get_uuid
108
+ if params[:uuid].present?
109
+ return params[:uuid]
110
+ end
111
+
112
+ resume_form_params[:uuid].presence
113
+ end
114
+
115
+ def get_service_name
116
+ service.service_name
117
+ end
118
+ end
119
+ end
@@ -1,27 +1,13 @@
1
1
  module MetadataPresenter
2
2
  class SaveAndReturnController < EngineController
3
- helper_method :secret_questions, :page_slug, :confirmed_email, :get_service_name, :get_uuid, :label_text
3
+ include Concerns::SaveAndReturn
4
+
5
+ helper_method :secret_questions, :confirmed_email
4
6
 
5
7
  def show
6
8
  @saved_form = SavedForm.new
7
9
  end
8
10
 
9
- def page_slug
10
- if params && params[:page_slug].present?
11
- return params[:page_slug]
12
- end
13
- if session['returning_slug'].present?
14
- return session['returning_slug']
15
- end
16
- if session['saved_form'].present?
17
- return session['saved_form']['page_slug']
18
- end
19
-
20
- if params['saved_form'].present?
21
- params['saved_form']['page_slug']
22
- end
23
- end
24
-
25
11
  def confirmed_email
26
12
  email = session['saved_form']['email']
27
13
  session['saved_form']['email'] = nil
@@ -77,96 +63,6 @@ module MetadataPresenter
77
63
  end
78
64
  end
79
65
 
80
- def return
81
- response = get_saved_progress(get_uuid)
82
-
83
- if response.status == 404
84
- redirect_to '/record_error' and return
85
- end
86
-
87
- if response.status == 400
88
- redirect_to '/record_failure' and return
89
- end
90
-
91
- if response.status == 422
92
- redirect_to '/already_used' and return
93
- end
94
-
95
- @saved_form = SavedForm.new.from_json(response.body.to_json)
96
- @resume_form = ResumeForm.new(@saved_form.secret_question)
97
- end
98
-
99
- def get_uuid
100
- if params[:uuid].present?
101
- return params[:uuid]
102
- end
103
-
104
- params[:resume_form][:uuid].presence
105
- end
106
-
107
- # rubocop:disable Style/RescueStandardError
108
- def submit_secret_answer
109
- response = get_saved_progress(get_uuid)
110
-
111
- if response.status != 200
112
- if response.status == 400
113
- redirect_to '/record_failure' and return
114
- end
115
-
116
- redirect_to '/record_error' and return
117
- end
118
-
119
- @saved_form = SavedForm.new.from_json(response.body.to_json)
120
- @resume_form = ResumeForm.new(@saved_form.secret_question)
121
- @resume_form.secret_answer = resume_form_params[:resume_form][:secret_answer]
122
- @resume_form.recorded_answer = @saved_form.secret_answer
123
- @resume_form.attempts_remaining = 2 - @saved_form.attempts.to_i
124
-
125
- if @resume_form.valid?
126
- # redirect back to right place in form
127
- session[:user_id] = @saved_form.user_id
128
- session[:user_token] = @saved_form.user_token
129
- session[:returning_slug] = @saved_form.page_slug
130
-
131
- invalidate_record(@saved_form.id)
132
-
133
- if @saved_form.service_version == service.version_id
134
- redirect_to '/resume_progress' and return
135
- else
136
- redirect_to '/resume_from_start' and return
137
- end
138
- else
139
- if @resume_form.attempts_remaining <= 0
140
- begin
141
- increment_record_counter(@saved_form.id)
142
- rescue => e
143
- Rails.logger.info(e)
144
- redirect_to '/record_failure' and return
145
- end
146
- redirect_to '/record_failure' and return
147
- end
148
-
149
- increment_record_counter(@saved_form.id)
150
-
151
- render :return, params: { uuid: @saved_form.id }
152
- end
153
- end
154
- # rubocop:enable Style/RescueStandardError
155
-
156
- def resume_progress
157
- @user_data = load_user_data
158
-
159
- @page ||= service.checkanswers_page
160
-
161
- if @page
162
- @page_answers = PageAnswers.new(@page, @answered_pages)
163
-
164
- render template: 'metadata_presenter/save_and_return/resume_progress'
165
- else
166
- not_found
167
- end
168
- end
169
-
170
66
  def save_progress
171
67
  session['saved_form']['user_id'] = nil
172
68
  session['saved_form']['user_token'] = nil
@@ -174,19 +70,6 @@ module MetadataPresenter
174
70
  session['user_token'] = nil
175
71
  end
176
72
 
177
- def answered_pages
178
- TraversedPages.new(service, @user_data, @page).all
179
- end
180
-
181
- def pages_presenters
182
- PageAnswersPresenter.map(
183
- view: view_context,
184
- pages: answered_pages,
185
- answers: @user_data
186
- )
187
- end
188
- helper_method :pages_presenters
189
-
190
73
  def secret_questions
191
74
  [
192
75
  OpenStruct.new(id: 1, name: I18n.t('presenter.save_and_return.secret_questions.one')),
@@ -201,6 +84,8 @@ module MetadataPresenter
201
84
  secret_questions.select { |s| s.id.to_s == question.to_s }.first.name
202
85
  end
203
86
 
87
+ private
88
+
204
89
  def saved_form_params
205
90
  params.permit(
206
91
  :email,
@@ -218,23 +103,6 @@ module MetadataPresenter
218
103
  )
219
104
  end
220
105
 
221
- def resume_form_params
222
- params.permit(
223
- { resume_form: %i[secret_answer uuid] },
224
- :authenticity_token
225
- )
226
- end
227
-
228
- def get_service_name
229
- service.service_name
230
- end
231
-
232
- def label_text(text)
233
- "<h2 class='govuk-heading-m'>#{text}</h2>"
234
- end
235
-
236
- private
237
-
238
106
  def service_slug
239
107
  @service_slug ||= service_slug_config
240
108
  end
@@ -1,4 +1,5 @@
1
1
  <legend class="govuk-heading-xl"><%= input_title %></legend>
2
+ <%= render 'metadata_presenter/attribute/body' %>
2
3
 
3
4
  <% if answered?(component.id) && @page_answers.send(component.id)[component.id].compact.count.positive? %>
4
5
  <label id="uploaded-file-summary-list-label"><p class="govuk-heading-s"><%= uploads_count %></p></label>
@@ -15,6 +16,8 @@
15
16
  </div>
16
17
  <% end %>
17
18
  </dl>
19
+ <% else %>
20
+ <label id="uploaded-file-summary-list-label"><p class="govuk-heading-s"><%= t('presenter.questions.multiupload.upload_file') %></p></label>
18
21
  <% end %>
19
22
 
20
23
  <% if uploads_remaining.positive? || editable? %>
@@ -1,10 +1,13 @@
1
1
  <div class="fb-main-grid-wrapper">
2
2
  <div class="govuk-grid-row">
3
3
  <div class="govuk-grid-column-two-thirds">
4
- <h1 id="page-heading" class="govuk-heading-xl"><%= t('presenter.save_and_return.resume.heading', service_name: get_service_name) %></h1>
5
- <p><%= t('presenter.save_and_return.resume.content') %></p>
4
+
6
5
  <%= form_for @resume_form do |f| %>
7
6
  <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
7
+
8
+ <h1 id="page-heading" class="govuk-heading-xl"><%= t('presenter.save_and_return.resume.heading', service_name: get_service_name) %></h1>
9
+ <p><%= t('presenter.save_and_return.resume.content') %></p>
10
+
8
11
  <%= f.hidden_field(:uuid, value: get_uuid) %>
9
12
  <div class="govuk-form-group">
10
13
  <%=
@@ -66,13 +66,14 @@ cy:
66
66
  upload:
67
67
  remove_file: (cy) Remove file
68
68
  multiupload:
69
+ upload_file: '(cy) Upload a file'
69
70
  remove_file: '(cy) Delete'
70
71
  add_another: '(cy) Add another file'
71
72
  single_upload: '(cy) Maximum file size 7MB'
72
73
  answered_singular: '(cy) You can add 1 more file (maximum 7MB per file)'
73
74
  answered_plural: '(cy) You can add %{num} more files (maximum 7MB per file)'
74
- answered_count_singular: '(cy) You have added 1 file'
75
- answered_count_plural: '(cy) You have added %{num} files'
75
+ answered_count_singular: '(cy) You have uploaded 1 file'
76
+ answered_count_plural: '(cy) You have uploaded %{num} files'
76
77
  singular: '(cy) You can add 1 more file (maximum 7MB)'
77
78
  plural: '(cy) You can add up to %{num} files (maximum 7MB per file)'
78
79
  none: "(cy) You can't add any more files. Remove a file if you need to add a different one."
@@ -57,13 +57,14 @@ en:
57
57
  upload:
58
58
  remove_file: Remove file
59
59
  multiupload:
60
+ upload_file: 'Upload a file'
60
61
  remove_file: 'Delete'
61
62
  add_another: 'Add another file'
62
63
  single_upload: 'Maximum file size 7MB'
63
64
  answered_singular: 'You can add 1 more file (maximum 7MB per file)'
64
65
  answered_plural: 'You can add %{num} more files (maximum 7MB per file)'
65
- answered_count_singular: 'You have added 1 file'
66
- answered_count_plural: 'You have added %{num} files'
66
+ answered_count_singular: 'You have uploaded 1 file'
67
+ answered_count_plural: 'You have uploaded %{num} files'
67
68
  singular: 'You can add 1 more file (maximum 7MB)'
68
69
  plural: 'You can add up to %{num} files (maximum 7MB per file)'
69
70
  none: "You can't add any more files. Remove a file if you need to add a different one."
data/config/routes.rb CHANGED
@@ -12,19 +12,22 @@ MetadataPresenter::Engine.routes.draw do
12
12
  get 'session/expired', to: 'session#expired'
13
13
  get 'session/complete', to: 'session#complete'
14
14
 
15
+ # save form journey
15
16
  get 'save', to: 'save_and_return#show'
16
17
  post 'saved_forms', to: 'save_and_return#create'
17
18
  get 'save/email_confirmation', to: 'save_and_return#email_confirmation'
18
19
  post 'email_confirmations', to: 'save_and_return#confirm_email'
19
20
  get 'save/progress_saved', to: 'save_and_return#save_progress'
20
- get '/return/:uuid', to: 'save_and_return#return'
21
- post 'resume_forms', to: 'save_and_return#submit_secret_answer'
22
- get 'record_error', to: 'save_and_return#record_error'
23
- get 'record_failure', to: 'save_and_return#record_failure'
24
- get 'expired', to: 'save_and_return#record_link_expired'
25
- get 'already_used', to: 'save_and_return#record_link_used'
26
- get 'resume_from_start', to: 'save_and_return#resume_from_start'
27
- get 'resume_progress', to: 'save_and_return#resume_progress'
21
+
22
+ # resume form journey
23
+ get '/return/:uuid', to: 'resume#return'
24
+ post 'resume_forms', to: 'resume#submit_secret_answer'
25
+ get 'resume_from_start', to: 'resume#resume_from_start'
26
+ get 'resume_progress', to: 'resume#resume_progress'
27
+ get 'record_error', to: 'resume#record_error'
28
+ get 'record_failure', to: 'resume#record_failure'
29
+ get 'expired', to: 'resume#record_link_expired'
30
+ get 'already_used', to: 'resume#record_link_used'
28
31
 
29
32
  post '/', to: 'answers#create'
30
33
  match '*path', to: 'answers#create', via: :post
@@ -4,7 +4,7 @@
4
4
  "section_heading": "",
5
5
  "heading": "",
6
6
  "lede": "",
7
- "body": "Body section",
7
+ "body": "",
8
8
  "components": [],
9
9
  "url": ""
10
10
  }
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '3.3.14'.freeze
2
+ VERSION = '3.3.15'.freeze
3
3
  end
@@ -12,7 +12,7 @@
12
12
  "maxItems": 1,
13
13
  "accepts": [
14
14
  "control"
15
- ]
15
+ ]
16
16
  }
17
17
  },
18
18
  "allOf": [
@@ -26,7 +26,6 @@
26
26
  ],
27
27
  "surplus_properties": [
28
28
  "heading",
29
- "lede",
30
- "body"
29
+ "lede"
31
30
  ]
32
31
  }
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: 3.3.14
4
+ version: 3.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -331,9 +331,11 @@ files:
331
331
  - app/assets/stylesheets/metadata_presenter/application.css
332
332
  - app/controllers/metadata_presenter/answers_controller.rb
333
333
  - app/controllers/metadata_presenter/change_answer_controller.rb
334
+ - app/controllers/metadata_presenter/concerns/save_and_return.rb
334
335
  - app/controllers/metadata_presenter/engine_controller.rb
335
336
  - app/controllers/metadata_presenter/file_controller.rb
336
337
  - app/controllers/metadata_presenter/pages_controller.rb
338
+ - app/controllers/metadata_presenter/resume_controller.rb
337
339
  - app/controllers/metadata_presenter/save_and_return_controller.rb
338
340
  - app/controllers/metadata_presenter/service_controller.rb
339
341
  - app/controllers/metadata_presenter/session_controller.rb
@@ -457,14 +459,14 @@ files:
457
459
  - app/views/metadata_presenter/page/singlequestion.html.erb
458
460
  - app/views/metadata_presenter/page/standalone.html.erb
459
461
  - app/views/metadata_presenter/page/start.html.erb
462
+ - app/views/metadata_presenter/resume/record_error.html.erb
463
+ - app/views/metadata_presenter/resume/record_failure.html.erb
464
+ - app/views/metadata_presenter/resume/record_link_expired.html.erb
465
+ - app/views/metadata_presenter/resume/record_link_used.html.erb
466
+ - app/views/metadata_presenter/resume/resume_from_start.html.erb
467
+ - app/views/metadata_presenter/resume/resume_progress.html.erb
468
+ - app/views/metadata_presenter/resume/return.html.erb
460
469
  - app/views/metadata_presenter/save_and_return/email_confirmation.html.erb
461
- - app/views/metadata_presenter/save_and_return/record_error.html.erb
462
- - app/views/metadata_presenter/save_and_return/record_failure.html.erb
463
- - app/views/metadata_presenter/save_and_return/record_link_expired.html.erb
464
- - app/views/metadata_presenter/save_and_return/record_link_used.html.erb
465
- - app/views/metadata_presenter/save_and_return/resume_from_start.html.erb
466
- - app/views/metadata_presenter/save_and_return/resume_progress.html.erb
467
- - app/views/metadata_presenter/save_and_return/return.html.erb
468
470
  - app/views/metadata_presenter/save_and_return/save_progress.html.erb
469
471
  - app/views/metadata_presenter/save_and_return/show.html.erb
470
472
  - app/views/metadata_presenter/session/_timeout_fallback.html.erb