diff --git a/app/models/iiif_resource.rb b/app/models/iiif_resource.rb index aca3ceed..10691f98 100644 --- a/app/models/iiif_resource.rb +++ b/app/models/iiif_resource.rb @@ -35,7 +35,7 @@ def to_solr solr_doc['content_metadata_image_iiif_info_ssm'] = manifest['thumbnail']['@id'].sub(/full.*/, 'info.json') end manifest['metadata'].each do |h| - solr_doc[field_name(h['label'].parameterize('_'))] = h['value'].map { |v| v["@value"] || v} + solr_doc[field_name(h['label'].parameterize('_'))] = h['value'].map { |v| v["@value"] || v } end solr_doc.merge! sidecar.to_solr end diff --git a/app/models/solr_document.rb b/app/models/solr_document.rb index 54242bc3..75499b24 100644 --- a/app/models/solr_document.rb +++ b/app/models/solr_document.rb @@ -19,4 +19,24 @@ class SolrDocument # and Blacklight::Document::SemanticFields#to_semantic_values # Recommendation: Use field names from Dublin Core use_extension(Blacklight::Document::DublinCore) + + def display_fields + @display_fields ||= to_h.select do |x| + !x.start_with?("spotlight_") && + !reserved_fields.include?(x) && + !x.end_with?("bsi") + end + end + + private + + def reserved_fields + [ + "full_title_ssim", + "id", + "_version_", + "timestamp", + "manifest_url_ssm" + ] + end end diff --git a/app/views/catalog/_show_default.html.erb b/app/views/catalog/_show_default.html.erb new file mode 100644 index 00000000..b91e328c --- /dev/null +++ b/app/views/catalog/_show_default.html.erb @@ -0,0 +1,7 @@ +<%# default partial to display solr document fields in catalog show view -%> +
+ <% document.display_fields.each do |field_name, field| -%> +
<%= render_document_show_field_label document, field: field_name.gsub("_ssim","") %>
+
<%= field.join(", ") %>
+ <% end -%> +
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c460f002..6a5742d2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -27,7 +27,7 @@ # Prevents you from mocking or stubbing a method that does not exist on # a real object. This is generally recommended, and will default to # `true` in RSpec 4. - mocks.verify_partial_doubles = true + # mocks.verify_partial_doubles = true end # The settings below are suggested to provide a good initial experience diff --git a/spec/views/catalog/_show_default.html.erb_spec.rb b/spec/views/catalog/_show_default.html.erb_spec.rb new file mode 100644 index 00000000..f06a2c17 --- /dev/null +++ b/spec/views/catalog/_show_default.html.erb_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +RSpec.describe "catalog/_show_default.html.erb" do + let(:document) do + SolrDocument.new(id: "1", + author_ssim: ["The Doctor"], + publisher_ssim: ["The Byzantium", "The Silence"]) + end + before do + allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config) + render "catalog/show_default", document: document + end + it "renders all possible metadata fields" do + expect(rendered).to have_content "The Doctor" + expect(rendered).to have_content "The Byzantium, The Silence" + end +end