diff --git a/app/presenters/publication_presenter.rb b/app/presenters/publication_presenter.rb index 7514029e9..2009231f6 100644 --- a/app/presenters/publication_presenter.rb +++ b/app/presenters/publication_presenter.rb @@ -11,7 +11,11 @@ def details end def documents - content_item["details"]["documents"].to_a.join("") + docs = content_item["details"]["attachments"].select { |a| a["locale"] == locale } + docs.each do |doc| + doc.delete("alternative_format_contact_email") if doc["accessible"] == true + end + docs end def featured_attachments diff --git a/app/views/content_items/_attachments.html.erb b/app/views/content_items/_attachments.html.erb index ee8f901a6..b3c8b2e0f 100644 --- a/app/views/content_items/_attachments.html.erb +++ b/app/views/content_items/_attachments.html.erb @@ -1,26 +1,37 @@ -<% attachments ||= [] %> -<% attachment_details = attachments.filter_map { |id| @content_item&.attachment_details(id) } %> -<% if legacy_pre_rendered_documents.present? || attachment_details.any? %> +<% + attachments ||= nil + attachments_html ||= nil + featured_attachments ||= [] + attachment_details = featured_attachments.filter_map { |id| @content_item&.attachment_details(id) } +%> +<% if attachments || attachments_html %>
<%= render 'govuk_publishing_components/components/heading', text: title, mobile_top_margin: true %> - <% if legacy_pre_rendered_documents.present? %> + <% add_gem_component_stylesheet("details") %> + <% if attachments %> + <% attachments.each do |details| %> + <%= render 'govuk_publishing_components/components/attachment', { + heading_level: 3, + attachment: details, + margin_bottom: 6 + } %> + <% end %> + <% elsif attachments_html %> <%= render 'govuk_publishing_components/components/govspeak', { direction: page_text_direction, } do %> - <% add_gem_component_stylesheet("details") if legacy_pre_rendered_documents.include? "govuk\-details" %> - <%= raw(legacy_pre_rendered_documents) %> + <%= raw(attachments_html) %> <% end %> <% else %> <% attachment_details.each do |details| %> -
- <%= render 'govuk_publishing_components/components/attachment', { - heading_level: 3, - attachment: details - } %> -
+ <%= render 'govuk_publishing_components/components/attachment', { + heading_level: 3, + attachment: details, + margin_bottom: 6 + } %> <% end %> <% end %>
diff --git a/app/views/content_items/call_for_evidence.html.erb b/app/views/content_items/call_for_evidence.html.erb index 3ecef5dc9..5d9957a93 100644 --- a/app/views/content_items/call_for_evidence.html.erb +++ b/app/views/content_items/call_for_evidence.html.erb @@ -44,8 +44,8 @@ <%= render "attachments", title: t("call_for_evidence.download_outcome"), - legacy_pre_rendered_documents: @content_item.outcome_documents, - attachments: @content_item.outcome_attachments %> + attachments_html: @content_item.outcome_documents, + featured_attachments: @content_item.outcome_attachments %> <%= render 'govuk_publishing_components/components/heading', text: t("call_for_evidence.detail_of_outcome"), mobile_top_margin: true %>
@@ -118,8 +118,8 @@ <%= render "attachments", title: t("call_for_evidence.documents"), - legacy_pre_rendered_documents: @content_item.documents, - attachments: @content_item.featured_attachments %> + attachments_html: @content_item.documents, + featured_attachments: @content_item.featured_attachments %>
<% if @content_item.ways_to_respond? %> diff --git a/app/views/content_items/consultation.html.erb b/app/views/content_items/consultation.html.erb index cb96edaca..1a6fda1c7 100644 --- a/app/views/content_items/consultation.html.erb +++ b/app/views/content_items/consultation.html.erb @@ -55,8 +55,8 @@ <%= render "attachments", title: t("consultation.download_outcome"), - legacy_pre_rendered_documents: @content_item.final_outcome_documents, - attachments: @content_item.final_outcome_attachments %> + attachments_html: @content_item.final_outcome_documents, + featured_attachments: @content_item.final_outcome_attachments %> <%= render 'govuk_publishing_components/components/heading', text: t("consultation.detail_of_outcome"), mobile_top_margin: true %>
@@ -70,8 +70,8 @@ <%= render "attachments", title: t("consultation.feedback_received"), - legacy_pre_rendered_documents: @content_item.public_feedback_documents, - attachments: @content_item.public_feedback_attachments %> + attachments_html: @content_item.public_feedback_documents, + featured_attachments: @content_item.public_feedback_attachments %> <% if @content_item.public_feedback_detail %> <%= render 'govuk_publishing_components/components/heading', { @@ -148,8 +148,8 @@ <%= render "attachments", title: t("consultation.documents"), - legacy_pre_rendered_documents: @content_item.documents, - attachments: @content_item.featured_attachments %> + attachments_html: @content_item.documents, + featured_attachments: @content_item.featured_attachments %>
<% if @content_item.ways_to_respond? %> diff --git a/app/views/content_items/publication.html.erb b/app/views/content_items/publication.html.erb index 66b40dd80..3d82244b4 100644 --- a/app/views/content_items/publication.html.erb +++ b/app/views/content_items/publication.html.erb @@ -51,8 +51,8 @@
<%= render "attachments", title: t("publication.documents", count: 5), # This should always be pluralised. - legacy_pre_rendered_documents: @content_item.documents, - attachments: @content_item.featured_attachments + attachments: @content_item.documents, + featured_attachments: @content_item.featured_attachments %>
diff --git a/test/presenters/publication_presenter_test.rb b/test/presenters/publication_presenter_test.rb index ad11cba5d..da7fd3989 100644 --- a/test/presenters/publication_presenter_test.rb +++ b/test/presenters/publication_presenter_test.rb @@ -10,7 +10,7 @@ def schema_name assert_equal schema_item["schema_name"], presented_item.schema_name assert_equal schema_item["title"], presented_item.title assert_equal schema_item["details"]["body"], presented_item.details - assert_equal schema_item["details"]["documents"].join(""), presented_item.documents + assert_equal schema_item["details"]["documents"], presented_item.documents_attachments end test "#published returns a formatted date of the day the content item became public" do diff --git a/test/views/content_items/attachments.html.erb_test.rb b/test/views/content_items/attachments.html.erb_test.rb index 913d549ba..ec3a6fe91 100644 --- a/test/views/content_items/attachments.html.erb_test.rb +++ b/test/views/content_items/attachments.html.erb_test.rb @@ -1,17 +1,56 @@ require "test_helper" class ContentItemsAttachmentsTest < ActionView::TestCase - test "it shows pre-rendered attachments by default" do + def test_data + { + accessible: true, + attachment_type: "file", + command_paper_number: "", + content_type: "application/pdf", + file_size: "1570742", + filename: "aa1-interactive-claim-form.pdf", + hoc_paper_number: "", + id: "7556005", + isbn: "", + locale: "en", + number_of_pages: 30, + title: "Attendance Allowance claim form", + unique_reference: "AA1", + unnumbered_command_paper: false, + unnumbered_hoc_paper: false, + url: "https://assets.publishing.service.gov.uk/media/64132b818fa8f55576ac627e/aa1-interactive-claim-form.pdf", + } + end + + test "it can display pre-rendered attachments" do render( partial: "content_items/attachments", - locals: { title: "Documents", - legacy_pre_rendered_documents: "some html" }, + locals: { + title: "Documents", + attachments_html: "some html", + }, ) assert_includes rendered, "gem-c-govspeak" assert_includes rendered, "some html" end + test "it can render an array of attachments" do + render( + partial: "content_items/attachments", + locals: { + title: "Documents", + attachments: [ + test_data, + ], + }, + ) + + assert_includes rendered, "gem-c-attachment" + assert_includes rendered, "govuk-link", text: "Attendance Allowance claim form" + assert_not_includes rendered, "gem-c-details" + end + test "can render attachments using their metadata" do @content_item = PublicationPresenter.new( { "details" => { "attachments" => [{ "id" => "attachment_id", @@ -24,8 +63,8 @@ class ContentItemsAttachmentsTest < ActionView::TestCase render( partial: "content_items/attachments", locals: { title: "Documents", - legacy_pre_rendered_documents: "", - attachments: %w[attachment_id] }, + attachments: "", + featured_attachments: %w[attachment_id] }, ) assert_includes rendered, "gem-c-attachment" @@ -35,12 +74,36 @@ class ContentItemsAttachmentsTest < ActionView::TestCase test "it prioritises pre-rendered attachments" do render( partial: "content_items/attachments", - locals: { title: "Documents", - legacy_pre_rendered_documents: "some html", - attachments: %w[attachment_id] }, + locals: { + title: "Documents", + attachments: [ + test_data, + ], + featured_attachments: %w[attachment_id], + }, ) - assert_includes rendered, "gem-c-govspeak" - assert_includes rendered, "some html" + assert_includes rendered, "gem-c-attachment" + assert_includes rendered, "govuk-link", text: "Attendance Allowance claim form" + end + + test "it shows extra information for inaccessible attachments" do + data = test_data + data[:accessible] = false + data[:alternative_format_contact_email] = "accessible.formats@dwp.gov.uk" + render( + partial: "content_items/attachments", + locals: { + title: "Documents", + attachments: [ + data, + ], + }, + ) + + assert_includes rendered, "gem-c-attachment" + assert_includes rendered, "govuk-link", text: "Attendance Allowance claim form" + assert_includes rendered, "gem-c-attachment__metadata", text: "This file may not be suitable for users of assistive technology." + assert_includes rendered, "govuk-details__summary-text", text: "Request an accessible format." end end