Browse Source

CLDC-2670: Do not show already-answered questions when answering new questions from CYA page

pull/2362/head
Robert Sullivan 2 years ago
parent
commit
fd4e1510c5
  1. 2
      app/components/check_answers_summary_list_card_component.rb
  2. 7
      app/controllers/form_controller.rb
  3. 12
      app/models/form.rb
  4. 2
      app/models/form/page.rb
  5. 6
      app/views/form/_check_answers_summary_list.html.erb
  6. 1
      app/views/form/_interruption_screen_question.html.erb
  7. 2
      app/views/form/check_answers.html.erb
  8. 2
      app/views/form/review.html.erb

2
app/components/check_answers_summary_list_card_component.rb

@ -29,7 +29,7 @@ class CheckAnswersSummaryListCardComponent < ViewComponent::Base
end
def action_href(question, log)
referrer = question.displayed_as_answered?(log) ? "check_answers" : nil
referrer = question.displayed_as_answered?(log) ? "check_answers" : "check_answers_new_answer"
send("#{log.model_name.param_key}_#{question.page.id}_path", log, referrer:)
end

7
app/controllers/form_controller.rb

@ -213,8 +213,11 @@ private
return send("#{@log.class.name.underscore}_#{previous_interruption_screen_page_id}_path", @log, { referrer: previous_interruption_screen_referrer, original_log_id: original_duplicate_log_id_from_query }.compact)
end
redirect_path = form.next_page_redirect_path(@page, @log, current_user)
send(redirect_path, @log)
is_new_answer_from_check_answers = is_referrer_type?("check_answers_new_answer")
redirect_path = form.next_page_redirect_path(@page, @log, current_user, is_new_answer_from_check_answers)
referrer = is_new_answer_from_check_answers ? "check_answers_new_answer" : nil
send(redirect_path, @log, { referrer: referrer})
end
def redirect_path_to_question(page_to_show, unanswered_pages)

12
app/models/form.rb

@ -80,7 +80,7 @@ class Form
subsections.find { |s| s.pages.find { |p| p.id == page.id } }
end
def next_page_id(page, log, current_user)
def next_page_id(page, log, current_user, ignore_answered = false)
return page.next_unresolved_page_id || :check_answers if log.unresolved
page_ids = subsection_for_page(page).pages.map(&:id)
@ -93,13 +93,15 @@ class Form
next_page = get_page(page_id)
return :check_answers if next_page.nil?
return next_page.id if next_page.routed_to?(log, current_user)
return next_page.id if next_page.routed_to?(log, current_user) &&
(!ignore_answered || next_page.has_unanswered_questions?(log))
next_page_id(next_page, log, current_user)
next_page_id(next_page, log, current_user, ignore_answered)
end
def next_page_redirect_path(page, log, current_user)
next_page_id = next_page_id(page, log, current_user)
def next_page_redirect_path(page, log, current_user, ignore_answered = false)
puts ignore_answered
next_page_id = next_page_id(page, log, current_user, ignore_answered)
if next_page_id == :check_answers
"#{type}_log_#{subsection_for_page(page).id}_check_answers_path"
else

2
app/models/form/page.rb

@ -37,7 +37,7 @@ class Form::Page
end
def has_unanswered_questions?(log)
questions.any? { |question| log[question.id].nil? }
questions.any? { |question| question.unanswered?(log) }
end
def interruption_screen?

6
app/views/form/_check_answers_summary_list.html.erb

@ -28,7 +28,11 @@
<% if @log.collection_period_open_for_editing? %>
<% row.with_action(
text: question.action_text(@log),
href: action_href(@log, question.page.id, question.displayed_as_answered?(@log) || refer_unanswered ? referrer : nil),
href: action_href(
@log,
question.page.id,
question.displayed_as_answered?(@log) || referrer_unanswered.nil? ? referrer : referrer_unanswered
),
visually_hidden_text: question.check_answer_label.to_s.downcase,
) %>
<% end %>

1
app/views/form/_interruption_screen_question.html.erb

@ -10,7 +10,6 @@
lettings_log:,
questions: soft_validation_affected_questions(question, @log).filter { |q| q.page.routed_to?(@log, current_user) },
referrer: "interruption_screen",
refer_unanswered: true,
} %>
</div>
</div>

2
app/views/form/check_answers.html.erb

@ -27,7 +27,7 @@
lettings_log: @log,
questions: total_applicable_questions(subsection, @log, current_user),
referrer: "check_answers",
refer_unanswered: false,
referrer_unanswered: "check_answers_new",
} %>
<% end %>

2
app/views/form/review.html.erb

@ -23,7 +23,7 @@
subsection:,
questions: total_applicable_questions(subsection, @log, current_user),
referrer: "check_answers",
refer_unanswered: false,
referrer_unanswered: "check_answers_new",
} %>
</div>
</div>

Loading…
Cancel
Save