Module: Hydra::RepositoryController

Includes:
MediaShelf::ActiveFedoraHelper
Included in:
AssetsController, CatalogController, DownloadsController, FileAssetsController, GenericContentObjectsController, GetController
Defined in:
vendor/plugins/hydra_repository/lib/hydra/repository_controller.rb

Overview

Hydra-repository Contoller is a controller layer mixin. It is in the controller scope: request params, session etc.

NOTE: Be careful when creating variables here as they may be overriding something that already exists. The ActionController docs: api.rubyonrails.org/classes/ActionController/Base.html

Override these methods in your own controller for customizations:

class HomeController < ActionController::Base

  
  include Stanford::SolrHelper
  
  def solr_search_params
    super.merge :per_page=>10
  end
  

end

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods included from MediaShelf::ActiveFedoraHelper

#load_af_instance_from_solr, #retrieve_af_model

Class Method Details

+ (Object) included(c)



22
23
24
25
26
# File 'vendor/plugins/hydra_repository/lib/hydra/repository_controller.rb', line 22

def self.included(c)
  if c.respond_to?(:helper_method)
    c.helper_method :solr_name
  end
end

Instance Method Details

- (Object) downloadables(fedora_object = @fedora_object, opts = {})

Returns a list of datastreams for download. Uses user’s roles and “mime_type” value in submitted params to decide what to return. if you pass the optional argument of :canonical=>true, it will return the canonical datastream for this object (a single object not a hash of datastreams)



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'vendor/plugins/hydra_repository/lib/hydra/repository_controller.rb', line 35

def downloadables(fedora_object=@fedora_object, opts={})
  if opts[:canonical]
    mime_type = opts[:mime_type] ? opts[:mime_type] : "application/pdf"
    result = filter_datastreams_for_mime_type(fedora_object.datastreams, mime_type).sort.first[1]
  elsif editor? 
    if params["mime_type"] == "all"
      result = fedora_object.datastreams
    else
      result = Hash[]
      fedora_object.datastreams.each_pair do |dsid,ds|
        if !ds.new_object?
          mime_type = ds.attributes["mimeType"] ? ds.attributes["mimeType"] : ""
          if mime_type.include?("pdf") || ds.label.include?("_TEXT.xml") || ds.label.include?("_METS.xml")
           result[dsid] = ds
          end 
        end 
      end
    end
  else
    result = Hash[]
    fedora_object.datastreams.each_pair do |dsid,ds|
       if ds.attributes["mimeType"].include?("pdf")
         result[dsid] = ds
       end  
     end
  end 
  # puts "downloadables result: #{result}"
  return result    
end

- (Object) solr_name(field_name, field_type = :text)



28
29
30
# File 'vendor/plugins/hydra_repository/lib/hydra/repository_controller.rb', line 28

def solr_name(field_name, field_type = :text)
  ::ActiveFedora::SolrService.solr_name(field_name, field_type)
end