diff --git a/CHANGELOG.md b/CHANGELOG.md index bd2903e2..a85927c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## Unreleased + +- [Allow non-GOV.UK favicon and opengraph assets](https://github.com/alphagov/tech-docs-gem/pull/387) + +To use a non-crown assets, you need to +- add `favicon.ico`, `favicon.svg` and `opengraph-image.png` to your `source/images` folder. +- set `show_govuk_logo: false` + ## 4.1.2 ## Fixes diff --git a/lib/govuk_tech_docs/meta_tags.rb b/lib/govuk_tech_docs/meta_tags.rb index 56ade52f..a6f218e7 100644 --- a/lib/govuk_tech_docs/meta_tags.rb +++ b/lib/govuk_tech_docs/meta_tags.rb @@ -48,7 +48,11 @@ def canonical_url attr_reader :config, :current_page def page_image - "#{host}/assets/govuk/assets/images/govuk-opengraph-image.png" + if config[:tech_docs][:show_govuk_logo] + "#{host}/assets/govuk/assets/images/govuk-opengraph-image.png" + else + "#{host}/images/opengraph-image.png" + end end def site_name diff --git a/lib/source/layouts/core.erb b/lib/source/layouts/core.erb index 499083dd..21ba63ac 100644 --- a/lib/source/layouts/core.erb +++ b/lib/source/layouts/core.erb @@ -10,11 +10,16 @@ <%= stylesheet_link_tag :manifest %> - - - - - + <% if config[:tech_docs][:show_govuk_logo] %> + + + + + + <% else %> + + + <% end %> <% meta_tags.tags.each do |name, content| %> <%= tag :meta, name: name, content: content %> diff --git a/spec/govuk_tech_docs/meta_tags_spec.rb b/spec/govuk_tech_docs/meta_tags_spec.rb index cb85ec2c..ea876ad6 100644 --- a/spec/govuk_tech_docs/meta_tags_spec.rb +++ b/spec/govuk_tech_docs/meta_tags_spec.rb @@ -37,6 +37,7 @@ def generate_title(site_name:, page_title:) host: "https://www.example.org", service_name: "Foo", full_service_name: "Test Site", + show_govuk_logo: true, ) current_page = double("current_page", @@ -56,6 +57,31 @@ def generate_title(site_name:, page_title:) ) end + it "returns standard meta tag with non GOV.UK twitter image" do + config = generate_config( + host: "https://www.example.org", + service_name: "Foo", + full_service_name: "Test Site", + show_govuk_logo: false, + ) + + current_page = double("current_page", + data: { description: "The description.", title: "The Title" }, + url: "/foo.html", + metadata: { locals: {} }) + + tags = GovukTechDocs::MetaTags.new(config, current_page).tags + + expect(tags).to eql( + "description" => "The description.", + "twitter:card" => "summary", + "twitter:domain" => "www.example.org", + "twitter:image" => "https://www.example.org/images/opengraph-image.png", + "twitter:title" => "The Title - Test Site", + "twitter:url" => "https://www.example.org/foo.html", + ) + end + it "adds a noindex robots tag when the site config prevents indexing" do config = generate_config( prevent_indexing: true, @@ -128,6 +154,7 @@ def generate_title(site_name:, page_title:) host: "https://www.example.org", service_name: "Foo", full_service_name: "Test Site", + show_govuk_logo: true, ) current_page = double("current_page", @@ -147,6 +174,31 @@ def generate_title(site_name:, page_title:) ) end + it "returns a custom opengraph meta tag image" do + config = generate_config( + host: "https://www.example.org", + service_name: "Foo", + full_service_name: "Test Site", + show_govuk_logo: false, + ) + + current_page = double("current_page", + data: { description: "The description.", title: "The Title" }, + url: "/foo.html", + metadata: { locals: {} }) + + og_tags = GovukTechDocs::MetaTags.new(config, current_page).opengraph_tags + + expect(og_tags).to eql( + "og:description" => "The description.", + "og:image" => "https://www.example.org/images/opengraph-image.png", + "og:site_name" => "Test Site", + "og:title" => "The Title", + "og:type" => "object", + "og:url" => "https://www.example.org/foo.html", + ) + end + it "uses the local variable as page title for proxied pages" do current_page = double("current_page", data: { description: "The description." },