Sha256: 90fb88191818094cbebc0af568884566c6f9679a8cfee271fdd9a8ab25fda334

Contents?: true

Size: 1.94 KB

Versions: 1

Compression:

Stored size: 1.94 KB

Contents

module Hydra
  module Collection
    extend ActiveSupport::Concern
    extend ActiveSupport::Autoload
    include Hydra::ModelMethods # for access to apply_depositor_metadata
    include Hydra::AccessControls::Permissions
    include Hydra::Collections::Collectible

    included do
      has_metadata "descMetadata", type: Hydra::CollectionRdfDatastream
      has_metadata "properties", type: Hydra::Datastream::Properties

      has_and_belongs_to_many :members, property: :has_collection_member, class_name: "ActiveFedora::Base" , after_remove: :update_member

      has_attributes :depositor, datastream: :properties, multiple: false

      has_attributes :title, :date_uploaded, :date_modified, :description,
                     datastream: :descMetadata, multiple: false
      has_attributes :creator, :contributor, :based_near, :part_of, :publisher,
                     :date_created, :subject,:resource_type, :rights,
                     :identifier, :language, :tag, :related_url,
                     datastream: :descMetadata, multiple: true

      before_create :set_date_uploaded
      before_save :set_date_modified

      after_save :update_all_members

      before_destroy :update_all_members
    end

    def terms_for_editing
      terms_for_display - [:date_modified, :date_uploaded]
    end

    def terms_for_display
      self.descMetadata.class.properties.keys.map{|v| v.to_sym}
    end

    def update_all_members
      self.members.collect { |m| update_member(m) }
    end

    # TODO: Use solr atomic updates to accelerate this process
    def update_member member
      # because the member may have its collections cached, reload that cache so that it indexes the correct fields.
      member.collections(true) if member.respond_to? :collections
      member.update_index
    end

    private

    def set_date_uploaded
      self.date_uploaded = Date.today
    end

    def set_date_modified
      self.date_modified = Date.today
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hydra-collections-3.0.0.beta3 app/models/concerns/hydra/collection.rb