metadata_presenter 2.3.3 → 2.4.0

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: 40b3177173dd2ca8ade1050a4179ac9deaf93fd3a9587563c5f09adc1f568d4a
4
- data.tar.gz: 010ddf25ee998403e07c666b41555e0ef7d75346b933656b12595011e322594c
3
+ metadata.gz: e32a28102541813aa8d6576cafdaa6fb3b4897daee023f0e52d80b1c98c3266f
4
+ data.tar.gz: 2001211cd3395cff6b2dc4d4f806f7055267c0a448d4316a5da6998d1ebe5295
5
5
  SHA512:
6
- metadata.gz: 9c682f16671c97ea078d9aba49d5fcdea1d320dad7092b08971499be32279ba23529c848cfb641732edc990effda1c67b6132a60bdba2b8969c6bdfb1559734f
7
- data.tar.gz: 21307e02d6d4935273e403c0b1c5c71cf2dc40c2f0e1b82cb56b2cd2daaaf084ebbc196a200c78c319294ae02581094115c641896b51ee288dc3a0bb8880c003
6
+ metadata.gz: 40bbe63a448710146762e167f0abc415e39028d1e279bdf72aa989376abbae4881d56d2cfbcc065805541f6a340a39349a7d5ccb3efd9b6444b803ea5d21ebfc
7
+ data.tar.gz: 48902563f8e43de68352ce31c47d554493a4add994649c54d1933062a7cec78c7334c20debf05fea827f84dd825bf16bb1c1b34fa033733e877d964c94f3c2a2
@@ -3,6 +3,7 @@ module MetadataPresenter
3
3
  before_action :check_page_exists
4
4
 
5
5
  def create
6
+ @previous_answers = reload_user_data.deep_dup
6
7
  @page_answers = PageAnswers.new(page, answers_params)
7
8
 
8
9
  upload_files if upload?
@@ -28,8 +29,9 @@ module MetadataPresenter
28
29
  next_page = NextPage.new(
29
30
  service: service,
30
31
  session: session,
31
- user_data: load_user_data,
32
- current_page_url: page_url
32
+ user_data: reload_user_data,
33
+ current_page_url: page_url,
34
+ previous_answers: @previous_answers
33
35
  ).find
34
36
 
35
37
  if next_page.present?
@@ -5,6 +5,14 @@ module MetadataPresenter
5
5
  helper MetadataPresenter::ApplicationHelper
6
6
  default_form_builder GOVUKDesignSystemFormBuilder::FormBuilder
7
7
 
8
+ def reload_user_data
9
+ if defined? super
10
+ super
11
+ else
12
+ load_user_data
13
+ end
14
+ end
15
+
8
16
  def back_link
9
17
  previous_page = PreviousPage.new(
10
18
  service: service,
@@ -7,11 +7,11 @@ module MetadataPresenter
7
7
  end
8
8
 
9
9
  def expression_page
10
- service.find_page_by_uuid(page)
10
+ @expression_page ||= service.find_page_by_uuid(page)
11
11
  end
12
12
 
13
13
  def expression_component
14
- expression_page.find_component_by_uuid(component)
14
+ @expression_component ||= expression_page.find_component_by_uuid(component)
15
15
  end
16
16
 
17
17
  def expression_field
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class NextPage
3
3
  include ActiveModel::Model
4
- attr_accessor :service, :session, :user_data, :current_page_url
4
+ attr_accessor :service, :session, :user_data, :current_page_url, :previous_answers
5
5
 
6
6
  def find
7
7
  return check_answers_page if return_to_check_your_answer?
@@ -11,17 +11,53 @@ module MetadataPresenter
11
11
  else
12
12
  service.find_page_by_uuid(current_page_flow.default_next)
13
13
  end
14
+ ensure
15
+ session[:return_to_check_your_answer] = nil
14
16
  end
15
17
 
16
18
  private
17
19
 
18
20
  def check_answers_page
19
- session[:return_to_check_your_answer] = nil
20
21
  service.pages.find { |page| page.type == 'page.checkanswers' }
21
22
  end
22
23
 
23
24
  def return_to_check_your_answer?
24
- session[:return_to_check_your_answer].present?
25
+ session[:return_to_check_your_answer].present? &&
26
+ components_not_used_for_branching_and_answers_unchanged?
27
+ end
28
+
29
+ def components_not_used_for_branching_and_answers_unchanged?
30
+ components_not_used_for_branching? && answers_unchanged?
31
+ end
32
+
33
+ def components_not_used_for_branching?
34
+ expressions.none? { |expression| component_ids.include?(expression) }
35
+ end
36
+
37
+ def answers_unchanged?
38
+ components = current_page_components.select do |component|
39
+ component.uuid.in?(expressions.map(&:component))
40
+ end
41
+
42
+ components.all? do |component|
43
+ user_data[component.id] == previous_answers[component.id]
44
+ end
45
+ end
46
+
47
+ def component_ids
48
+ current_page_components.map(&:id)
49
+ end
50
+
51
+ def current_page_components
52
+ current_page.components
53
+ end
54
+
55
+ def expressions
56
+ collection = service.branches.map do |branch|
57
+ branch.conditionals.map(&:expressions)
58
+ end
59
+
60
+ collection.flatten
25
61
  end
26
62
 
27
63
  def conditionals?
@@ -67,7 +67,7 @@
67
67
  <% end %>
68
68
 
69
69
  <% if @page.send_body.present? %>
70
- <div class="fb-send-body fb-editable"
70
+ <div class="fb-send-body fb-editable govuk-body"
71
71
  data-fb-content-type="content"
72
72
  data-fb-content-id="page[send_body]">
73
73
  <%= @page.send_body %>
@@ -17,7 +17,8 @@
17
17
  <% if @page.before_you_start %>
18
18
  <div class="fb-editable"
19
19
  data-fb-content-id="page[before_you_start]"
20
- data-fb-content-type="content">
20
+ data-fb-content-type="content"
21
+ data-fb-default-text="<%= default_text('before_you_start') %>">
21
22
  <%= to_html(@page.before_you_start) %>
22
23
  </div>
23
24
  <%- end %>
@@ -6,5 +6,6 @@
6
6
  "hint": "[Optional hint text]",
7
7
  "option": "Option",
8
8
  "option_hint": "[Optional hint text]",
9
- "upload_hint": "Maximum file size is 7MB"
9
+ "upload_hint": "Maximum file size is 7MB",
10
+ "before_you_start": "[Optional content]"
10
11
  }
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.3.3'.freeze
2
+ VERSION = '2.4.0'.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.3.3
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-20 00:00:00.000000000 Z
11
+ date: 2021-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder