Skip to content

Commit db0b29f

Browse files
committed
link relatedItem[@otherType] values to facet if configured (DLC-1144)
- replace deprecated field configuration key link_to_search with link_to_facet
1 parent c559373 commit db0b29f

15 files changed

+73
-23
lines changed

app/controllers/iiif/presentations_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Iiif::PresentationsController < ApplicationController
1313

1414
configure_blacklight do |config|
1515
Dcv::Configurators::DcvBlacklightConfigurator.configure(config)
16-
config.show_fields.each { |field_key, show_field| show_field.link_to_search = false }
16+
config.show_fields.each { |field_key, show_field| show_field.link_to_facet = false }
1717
end
1818

1919
layout false

app/helpers/field_display_helpers/name.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def display_names_with_roles(args={})
2929
field_config = blacklight_config.show_fields[args[:field]]
3030
end
3131

32-
default_field = field_config.link_to_search if blacklight_config.facet_fields[field_config.link_to_search]
32+
default_field = field_config.link_to_facet if blacklight_config.facet_fields[field_config.link_to_facet]
3333
names.map do |name, role_info|
3434
facet_field = role_info[:fields].detect { |field_name| blacklight_config.facet_fields[field_name]} || default_field
3535
value = (!args[:suppress_links] && facet_field) ?

app/helpers/field_display_helpers/project.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def show_digital_project?(field_config, document)
1010
end
1111

1212
def show_field_project_to_facet_link(args)
13-
return args[:document][args[:field]] unless blacklight_config.show_fields[args[:field]].link_to_search
13+
return args[:document][args[:field]] unless blacklight_config.show_fields[args[:field]].link_to_facet
1414
projects_config = Rails.application.config_for(:hyacinth_projects)
1515

1616
display_values = args[:document][args[:field]]

app/helpers/field_display_helpers/repository.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def show_field_repository_to_facet_link(args)
4949
facet_value = full_repo_names_to_short_repo_names[display_value]
5050
end
5151

52-
url_for_facet_search = search_action_path(:f => {facet_field_name => [facet_value]}) if blacklight_config.show_fields[args[:field]].link_to_search
52+
url_for_facet_search = search_action_path(:f => {facet_field_name => [facet_value]}) if blacklight_config.show_fields[args[:field]].link_to_facet
5353

5454
if display_value == 'Non-Columbia Location' && args[:document]['lib_repo_text_ssm'].present?
5555
result_src = [args[:document]['lib_repo_text_ssm'].first]

app/models/site.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class Site < ApplicationRecord
3131

3232
Dcv::Configurators::DcvBlacklightConfigurator.configure_show_fields(config)
3333
field_name = 'lib_repo_short_ssim'
34-
config.show_fields[field_name].link_to_search = false
34+
config.show_fields[field_name].link_to_facet = false
3535
field_name = 'lib_project_full_ssim'
36-
config.show_fields[field_name].link_to_search = false
36+
config.show_fields[field_name].link_to_facet = false
3737

3838
Dcv::Configurators::DcvBlacklightConfigurator.configure_citation_fields(config)
3939
Dcv::Configurators::DcvBlacklightConfigurator.configure_sort_fields(config)

app/presenters/dcv/field_presenter.rb

+5
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ def label(context = 'index', **options)
1010
super
1111
end
1212
end
13+
def pipeline_steps
14+
upstream_operations = Blacklight::Rendering::Pipeline.operations.dup
15+
upstream_operations.index(Blacklight::Rendering::LinkToFacet)&.tap { |ix| upstream_operations[ix] = Rendering::LinkToFacet }
16+
(options[:steps] || field_config[:steps] || upstream_operations) - except_operations
17+
end
1318
end
1419
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module Dcv
2+
module Rendering
3+
class LinkToFacet < Blacklight::Rendering::LinkToFacet
4+
def render
5+
return next_step(values) unless linkable_facet
6+
7+
next_step(render_link)
8+
end
9+
10+
def linkable_facet
11+
config.link_to_facet && context.blacklight_config.facet_fields[link_field]
12+
end
13+
end
14+
end
15+
end

lib/dcv/configurators/carnegie_blacklight_configurator.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def self.configure(config, fulltext: true)
6363
# The ordering of the field names is the order of the display
6464
# solr fields to be displayed in the show (single result) view
6565
# The ordering of the field names is the order of the display
66-
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_search: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
66+
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_facet: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
6767
config.add_show_field 'title_display_ssm', label: 'Title'
6868
config.add_show_field 'abstract_ssm', label: 'Abstract', helper_method: :expandable_past_400
6969
config.add_show_field 'lib_collection_ssm', label: 'Collection Name', helper_method: :display_collection_with_links

lib/dcv/configurators/dcv_blacklight_configurator.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ def self.configure_index_fields(config)
113113
# The ordering of the field names is the order of the display
114114
def self.configure_show_fields(config)
115115
configure_file_show_fields(config)
116-
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_search: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
117-
config.add_show_field 'rel_other_project_ssim', :label => 'Project'
116+
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_facet: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
117+
config.add_show_field 'rel_other_project_ssim', label: 'Project', link_to_facet: true
118118
config.add_show_field 'title_display_ssm', label: 'Title'
119119
config.add_show_field 'alternative_title_ssm', :label => 'Other Titles'
120120
config.add_show_field 'abstract_ssm', label: 'Abstract', helper_method: :expandable_past_400, iiif: false
@@ -132,14 +132,14 @@ def self.configure_show_fields(config)
132132
config.add_show_field 'lib_date_textual_ssm', :label => 'Date', :helper_method => :show_date_field
133133
config.add_show_field 'physical_description_extent_ssm', :label => 'Physical Description'
134134
config.add_show_field 'dynamic_notes', pattern: /lib_.*_notes_ssm/, label: :notes_label, helper_method: :expandable_past_250, unless: :is_excepted_dynamic_field?, except: ['lib_acknowledgment_notes_ssm'], join: false
135-
config.add_show_field 'language_language_term_text_ssim', :label => 'Language', :link_to_search => 'language_language_term_text_ssim'
135+
config.add_show_field 'language_language_term_text_ssim', label: 'Language', link_to_facet: 'language_language_term_text_ssim'
136136
config.add_show_field 'table_of_contents_ssm', :label => 'Contents'
137-
config.add_show_field 'lib_repo_short_ssim', label: 'Library Location', helper_method: :show_field_repository_to_facet_link, link_to_search: true, iiif: false
137+
config.add_show_field 'lib_repo_short_ssim', label: 'Library Location', helper_method: :show_field_repository_to_facet_link, link_to_facet: true, iiif: false
138138
config.add_show_field 'location_sublocation_ssm', :label => 'Department'
139139
config.add_show_field 'clio_ssim', label: 'Catalog Record', helper_method: :render_link_to_clio, join: false
140140
config.add_show_field 'lib_part_ssm', :label => 'Part'
141-
config.add_show_field 'lib_project_full_ssim', label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_search: :project_key, if: :show_digital_project?, unless_fields: :project_key_ssim
142-
config.add_show_field 'project_key_ssim', label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_search: :project_key, if: :show_digital_project?
141+
config.add_show_field 'lib_project_full_ssim', label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_facet: :project_key, if: :show_digital_project?, unless_fields: :project_key_ssim
142+
config.add_show_field 'project_key_ssim', label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_facet: :project_key, if: :show_digital_project?
143143
config.add_show_field 'other_sites_data', :label => 'Also In', :helper_method => :show_link_to_other_site_home
144144
# Note: Do NOT show the access_condition field. See DCV-465 for explanation.
145145
#config.add_show_field 'access_condition_ssim', :label => 'Rights'

lib/dcv/configurators/jay_blacklight_configurator.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def self.configure(config)
5959
config.add_show_field 'title_display_ssm', :label => 'Title'
6060
config.add_show_field 'alternative_title_ssm', :label => 'Alternative Titles'
6161
config.add_show_field 'lib_repo_full_ssim', :label => 'Library Location', :helper_method => :show_field_repository_to_facet_link
62-
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_search: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
62+
config.add_show_field 'lib_name_ssm', label: 'Name', link_to_facet: 'lib_name_sim', helper_method: :display_non_copyright_names_with_roles, if: :has_non_copyright_names?
6363
config.add_show_field 'lib_format_ssm', :label => 'Format'
6464
config.add_show_field 'lib_project_full_ssim', :label => 'Digital Project'
6565
config.add_show_field 'lib_collection_ssm', :label => 'Collection'

lib/dcv/configurators/lcaaj_blacklight_configurator.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ def self.configure(config)
6363
# The ordering of the field names is the order of the display
6464
config.add_show_field 'title_display_ssm', :label => 'Title'
6565
config.add_show_field 'lib_repo_full_ssim', :label => 'Library Location', :helper_method => :show_field_repository_to_facet_link
66-
config.add_show_field 'role_interviewer_ssim', :label => 'Interviewer', :sort => 'index', :link_to_search => 'role_interviewer_ssim'
67-
config.add_show_field 'role_interviewee_ssim', :label => 'Interviewee', :sort => 'index', :link_to_search => 'role_interviewee_ssim'
66+
config.add_show_field 'role_interviewer_ssim', label: 'Interviewer', sort: 'index', link_to_facet: 'role_interviewer_ssim'
67+
config.add_show_field 'role_interviewee_ssim', label: 'Interviewee', sort: 'index', link_to_facet: 'role_interviewee_ssim'
6868
config.add_show_field 'lib_format_ssm', :label => 'Format'
6969
config.add_show_field 'subject_hierarchical_geographic_region_ssim', :label => 'Region'
7070
config.add_show_field 'subject_hierarchical_geographic_city_ssim', :label => 'City'

lib/dcv/configurators/nyre_blacklight_configurator.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def self.configure(config)
5353
config.add_index_field 'lib_date_textual_ssm', :label => 'Date'
5454
config.add_index_field 'abstract_ssm', :label => 'Summary', :helper_method => :truncate_text_to_250
5555
config.add_index_field 'cul_number_of_members_isi', :label => 'Number of Images'
56-
config.add_index_field 'classification_other_ssim', :label => 'Call Number', :link_to_search => 'classification_other_ssim'
56+
config.add_index_field 'classification_other_ssim', label: 'Call Number'
5757
config.add_index_field 'lib_name_ssm', label: 'Name', grid_display: true, if: false
5858

5959
# solr fields to be displayed in the show (single result) view
@@ -62,9 +62,9 @@ def self.configure(config)
6262
# The ordering of the field names is the order of the display
6363
config.add_show_field 'title_display_ssm', :label => 'Title'
6464
config.add_show_field 'lib_repo_full_ssim', :label => 'Library Location', :helper_method => :show_field_repository_to_facet_link
65-
config.add_show_field 'role_architect_ssim', :label => 'Architect', :link_to_search => 'role_architect_ssim'
66-
config.add_show_field 'role_owner_agent_ssim', :label => 'Owner/Agent', :link_to_search => 'role_owner_agent_ssim'
67-
config.add_show_field 'classification_other_ssim', :label => 'Call Number', :link_to_search => 'classification_other_ssim'
65+
config.add_show_field 'role_architect_ssim', label: 'Architect', link_to_facet: 'role_architect_ssim'
66+
config.add_show_field 'role_owner_agent_ssim', label: 'Owner/Agent', link_to_facet: 'role_owner_agent_ssim'
67+
config.add_show_field 'classification_other_ssim', label: 'Call Number', link_to_facet: 'classification_other_ssim'
6868
config.add_show_field 'lib_format_ssm', :label => 'Format'
6969
config.add_show_field 'subject_hierarchical_geographic_region_ssim', :label => 'Region'
7070
config.add_show_field 'subject_hierarchical_geographic_city_ssim', :label => 'City'

lib/dcv/configurators/restricted/universityseminars_blacklight_configurator.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def self.configure(config)
5959
# The ordering of the field names is the order of the display
6060
config.add_show_field 'title_display_ssm', :label => 'Title'
6161
config.add_show_field 'alternative_title_ssm', :label => 'Alternative Titles'
62-
config.add_show_field 'primary_name_ssm', :label => 'Seminar Number', :link_to_search => 'primary_name_sim'
62+
config.add_show_field 'primary_name_ssm', label: 'Seminar Number', link_to_facet: 'primary_name_sim'
6363
config.add_show_field 'lib_date_textual_ssm', :label => 'Date'
6464
config.add_show_field 'lib_non_date_notes_ssm', :label => 'Note'
6565
config.add_show_field 'lib_date_notes_ssm', :label => 'Date Note'

spec/helpers/field_display_helpers/project_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@
3434
let(:field_name) { :project_key_ssim }
3535
let(:field_values) { ['test'] }
3636
before do
37-
blacklight_config.add_show_field field_name, label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_search: true
37+
blacklight_config.add_show_field field_name, label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_facet: true
3838
end
3939
it { is_expected.to satisfy {|x| x.length == field_values.length} }
4040
it { is_expected.to satisfy {|x| x[0].include?(">Successful Project Mapping For Full Project Title</a>") } }
4141
end
4242
context "field is not linked" do
4343
before do
44-
blacklight_config.add_show_field field_name, label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_search: false
44+
blacklight_config.add_show_field field_name, label: 'Digital Project', helper_method: :show_field_project_to_facet_link, link_to_facet: false
4545
end
4646
it { is_expected.to satisfy {|x| x.length == 2} }
4747
it { is_expected.to satisfy {|x| x[0].eql?("Project 1") && x[1].eql?("Project 2") } }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
require 'rails_helper'
2+
3+
describe Dcv::FieldPresenter do
4+
include_context "a solr document"
5+
6+
let(:blacklight_config) { Blacklight::Configuration.new }
7+
let(:search_action_path) { '/search' }
8+
let(:search_state) { Dcv::SearchState.new({}, blacklight_config) }
9+
let(:view_context) { double(ActionController::Base, blacklight_config: blacklight_config, search_state: search_state, search_action_path: search_action_path) }
10+
let(:presenter) { described_class.new(view_context, solr_document, blacklight_config.show_fields['dc_type_ssm']) }
11+
12+
before do
13+
blacklight_config.add_show_field 'dc_type_ssm', label: 'DcType', link_to_facet: true
14+
end
15+
16+
it "does not link the values without a configured facet" do
17+
expect(presenter.render).to eql "Unknown"
18+
end
19+
20+
context "facet field is configured" do
21+
before do
22+
blacklight_config.add_facet_field 'dc_type_ssm', label: 'DcType'
23+
allow(view_context).to receive(:link_to).and_return ('success')
24+
end
25+
26+
it "links the values" do
27+
expect(presenter.render).to eql "success"
28+
end
29+
end
30+
end

0 commit comments

Comments
 (0)