app/models/spotlight/resources/iiif_manifest.rb in blacklight-spotlight-2.2.1 vs app/models/spotlight/resources/iiif_manifest.rb in blacklight-spotlight-2.3.0
- old
+ new
@@ -52,15 +52,17 @@
solr_hash[Spotlight::Engine.config.iiif_manifest_field] = url
end
def add_thumbnail_url
return unless thumbnail_field && manifest['thumbnail'].present?
+
solr_hash[thumbnail_field] = manifest['thumbnail']['@id']
end
def add_full_image_urls
return unless full_image_field && full_image_url
+
solr_hash[full_image_field] = full_image_url
end
def add_label
return unless title_fields.present? && manifest.try(:label)
@@ -80,21 +82,24 @@
end
def manifest_metadata
metadata = metadata_class.new(manifest).to_solr
return {} unless metadata.present?
+
create_sidecars_for(*metadata.keys)
metadata.each_with_object({}) do |(key, value), hash|
next unless (field = exhibit_custom_fields[key])
+
hash[field.field] = value
end
end
def json_ld_value(value)
return value['@value'] if value.is_a?(Hash)
return value.find { |v| v['@language'] == default_json_ld_language }.try(:[], '@value') if value.is_a?(Array)
+
value
end
def create_sidecars_for(*keys)
missing_keys(keys).each do |k|
@@ -117,10 +122,11 @@
end
def image_urls
@image_urls ||= resources.map do |resource|
next unless resource && !resource.service.empty?
+
image_url = resource.service['@id']
image_url << '/info.json' unless image_url.downcase.ends_with?('/info.json')
image_url
end
end
@@ -199,18 +205,20 @@
return {} unless metadata.present?
return {} unless metadata.is_a?(Array)
metadata.each_with_object({}) do |md, hash|
next unless md['label'] && md['value']
+
hash[md['label']] ||= []
hash[md['label']] += Array(md['value'])
end
end
def manifest_level_metadata
manifest_fields.each_with_object({}) do |field, hash|
next unless manifest.respond_to?(field) &&
manifest.send(field).present?
+
hash[field.capitalize] ||= []
hash[field.capitalize] += Array(manifest.send(field))
end
end