From 1cc4cfb4d8f0132c94b992e1d717cc0b67025fdf Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Tue, 22 Oct 2024 14:44:36 -0400 Subject: [PATCH] robots and noindex nofollow META tags on search actions (DLC-1164) --- app/controllers/application_controller.rb | 16 ++++++++++++++++ app/controllers/browse_controller.rb | 3 +++ .../repositories/catalog_controller.rb | 3 +++ app/controllers/sites/search_controller.rb | 2 ++ app/controllers/subsites_controller.rb | 2 ++ app/views/shared/_head_includes.html.erb | 5 ++++- spec/controllers/browse_controller_spec.rb | 5 +++++ .../repositories/catalog_controller_spec.rb | 5 +++++ spec/features/catalog_controller_spec.rb | 7 +++++++ 9 files changed, 47 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f62ec3a0..e7c53779 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -103,4 +103,20 @@ def on_page_not_found def has_search_parameters? false end + + def meta_nofollow + @meta_nofollow + end + + def meta_nofollow! + @meta_nofollow = true + end + + def meta_noindex + @meta_noindex + end + + def meta_noindex! + @meta_noindex = true + end end diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index 95f7e480..ed0f408a 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -7,6 +7,9 @@ class BrowseController < ApplicationController controller.subsite_layout } + before_action :meta_nofollow!, only: [:list] + before_action :meta_noindex!, only: [:list] + def initialize(*args) super(*args) # _prefixes are where view path lookups are attempted; probably unnecessary diff --git a/app/controllers/repositories/catalog_controller.rb b/app/controllers/repositories/catalog_controller.rb index 833891d4..98293432 100644 --- a/app/controllers/repositories/catalog_controller.rb +++ b/app/controllers/repositories/catalog_controller.rb @@ -5,6 +5,9 @@ class CatalogController < Sites::SearchController before_action :set_map_data_json, only: [:map_search] + before_action :meta_nofollow!, only: [:index, :map_search] + before_action :meta_noindex!, only: [:index, :map_search] + delegate :blacklight_config, to: :@subsite def initialize(*args) diff --git a/app/controllers/sites/search_controller.rb b/app/controllers/sites/search_controller.rb index 8130c6f6..798181b2 100644 --- a/app/controllers/sites/search_controller.rb +++ b/app/controllers/sites/search_controller.rb @@ -17,6 +17,8 @@ class SearchController < ApplicationController before_action :store_unless_user, except: [:update, :destroy, :api_info] before_action :redirect_unless_local, only: :index before_action :authorize_document, only: :show + before_action :meta_nofollow!, only: [:index, :map_search] + before_action :meta_noindex!, only: [:index, :map_search] delegate :blacklight_config, to: :@subsite diff --git a/app/controllers/subsites_controller.rb b/app/controllers/subsites_controller.rb index a7a1291d..8ccac531 100644 --- a/app/controllers/subsites_controller.rb +++ b/app/controllers/subsites_controller.rb @@ -16,6 +16,8 @@ class SubsitesController < ApplicationController before_action :default_search_mode_cookie, only: :index before_action :load_subsite, except: [:home, :page] before_action :load_page, only: [:home, :index, :page] + before_action :meta_nofollow!, only: [:index, :map_search] + before_action :meta_noindex!, only: [:index, :map_search] protect_from_forgery :except => [:update, :destroy, :api_info] # No CSRF token required for publishing actions helper_method :extract_map_data_from_document_list diff --git a/app/views/shared/_head_includes.html.erb b/app/views/shared/_head_includes.html.erb index 15396a87..2c8650f6 100644 --- a/app/views/shared/_head_includes.html.erb +++ b/app/views/shared/_head_includes.html.erb @@ -5,9 +5,12 @@ <% # Do not index search result pages %> -<% if query_has_constraints? || (params[:q] && params[:search_field]) %> +<% if controller.meta_noindex %> <% end %> +<% if controller.meta_nofollow %> + +<% end %> diff --git a/spec/controllers/browse_controller_spec.rb b/spec/controllers/browse_controller_spec.rb index c9e17714..9b4548be 100644 --- a/spec/controllers/browse_controller_spec.rb +++ b/spec/controllers/browse_controller_spec.rb @@ -52,6 +52,11 @@ expect(response.status).to eq(200) expect(response.body).to include("#{format_link} (#{test_format_count})") end + it "has robots meta flag attributes" do + get :list, params: { list_id: 'formats' } + expect(controller.instance_variable_get(:@meta_noindex)).to be true + expect(controller.instance_variable_get(:@meta_nofollow)).to be true + end end end diff --git a/spec/controllers/repositories/catalog_controller_spec.rb b/spec/controllers/repositories/catalog_controller_spec.rb index 16cb63eb..b4f38ba1 100644 --- a/spec/controllers/repositories/catalog_controller_spec.rb +++ b/spec/controllers/repositories/catalog_controller_spec.rb @@ -28,5 +28,10 @@ expect(response.status).to eq(200) expect(controller.load_subsite.palette).to eql 'monochrome' end + it "has robots meta flag attributes" do + get :index, params: { repository_id: 'NNC-RB' } + expect(controller.instance_variable_get(:@meta_nofollow)).to be true + expect(controller.instance_variable_get(:@meta_noindex)).to be true + end end end diff --git a/spec/features/catalog_controller_spec.rb b/spec/features/catalog_controller_spec.rb index 521b3df2..7de424c6 100644 --- a/spec/features/catalog_controller_spec.rb +++ b/spec/features/catalog_controller_spec.rb @@ -10,6 +10,13 @@ expect(page).to have_text('Perform a search') end + it "has robots meta tags" do + # + # + expect(page).to have_xpath("/descendant::meta[@name='robots' and @content='nofollow']") + expect(page).to have_xpath("/descendant::meta[@name='robots' and @content='noindex']") + end + it "shows concepts when performing a search with a relevant query" do find(:xpath, '//nav[@id="site-banner"]//input[@id="q"]').set('Internal') find(:xpath, '//nav[@id="site-banner"]//button[@type="submit"]').click