Module: Dor::Publishable

Extended by:
ActiveSupport::Concern, Deprecation
Included in:
Item, Set
Defined in:
lib/dor/models/concerns/publishable.rb

Instance Method Summary collapse

Instance Method Details

#encoded_thumbString

Return a URI encoded version of the thumb image for use by indexers (leaving the extension of the filename)

Returns:

  • (String)

    URI encoded version of the thumb with the druid prefix, e.g. oo000oo0001%2Ffilenamewith%20space.jp2



22
23
24
25
26
27
28
29
# File 'lib/dor/models/concerns/publishable.rb', line 22

def encoded_thumb
  thumb_image = thumb # store the result locally, so we don't have to compute each time we use it below
  return unless thumb_image

  thumb_druid = thumb_image.split('/').first # the druid (before the first slash)
  thumb_filename = thumb_image.split(/#{pid_regex}[\/]/).last # everything after the druid
  "#{thumb_druid}%2F#{ERB::Util.url_encode(thumb_filename)}"
end

#public_relationshipsNokogiri::XML

strips away the relationships that should not be shown in public desc metadata

Returns:

  • (Nokogiri::XML)


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/dor/models/concerns/publishable.rb', line 44

def public_relationships
  include_elements = ['fedora:isMemberOf', 'fedora:isMemberOfCollection', 'fedora:isConstituentOf']
  rels_doc = Nokogiri::XML(datastreams['RELS-EXT'].content)
  rels_doc.xpath('/rdf:RDF/rdf:Description/*', 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#').each do |rel|
    unless include_elements.include?([rel.namespace.prefix, rel.name].join(':'))
      rel.next_sibling.remove if rel.next_sibling.content.strip.empty?
      rel.remove
    end
  end
  rels_doc
end

#public_xmlxml

Generate the public .xml for a PURL page.

Returns:

  • (xml)

    The public xml for the item



58
59
60
# File 'lib/dor/models/concerns/publishable.rb', line 58

def public_xml
  PublicXmlService.new(self).to_xml
end

#publish_metadataObject

Copies this object’s public_xml to the Purl document cache if it is world discoverable

otherwise, it prunes the object's metadata from the document cache


65
66
67
# File 'lib/dor/models/concerns/publishable.rb', line 65

def 
  PublishMetadataService.publish(self)
end

#publish_metadata_remotelyObject

Call dor services app to have it publish the metadata



71
72
73
# File 'lib/dor/models/concerns/publishable.rb', line 71

def 
  Dor::Services::Client.object(pid).publish
end

#thumbString

Compute the thumbnail for this object following the rules at consul.stanford.edu/display/chimera/The+Rules+of+Thumb Used by PublicXmlService

Returns:

  • (String)

    the computed thumb filename, with the druid prefix and a slash in front of it, e.g. oo000oo0001/filenamewith space.jp2



15
16
17
# File 'lib/dor/models/concerns/publishable.rb', line 15

def thumb
  ThumbnailService.new(self).thumb
end

#thumb_urlString

Return a full qualified thumbnail image URL if the thumb is computable

Returns:



34
35
36
37
38
39
# File 'lib/dor/models/concerns/publishable.rb', line 34

def thumb_url
  return unless encoded_thumb

  thumb_basename = File.basename(encoded_thumb, File.extname(encoded_thumb)) # strip the extension for URL generation
  "https://#{Dor::Config.stacks.host}/image/iiif/#{thumb_basename}/full/!400,400/0/default.jpg"
end