Module: Hyrax::CollectionBehavior

Extended by:
ActiveSupport::Concern
Includes:
Hydra::AccessControls::WithAccessRight, Hydra::WithDepositor, Hydra::Works::CollectionBehavior, CollectionNesting, CoreMetadata, HasRepresentative, HumanReadableType, Noid, Permissions
Included in:
Collection
Defined in:
app/models/concerns/hyrax/collection_behavior.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Methods included from CollectionNesting

#find_children_of, #reindex_extent, #reindex_extent=, #update_index, #use_nested_reindexing?

Methods included from Permissions::Readable

#private?, #public?, #registered?

Methods included from Permissions::Writable

#paranoid_permissions

Methods included from HumanReadableType

#human_readable_type, #to_solr

Methods included from Noid

#assign_id

Instance Method Details

#add_member_objects(new_member_ids) ⇒ Object

Add member objects by adding this collection to the objects' member_of_collection association.

Parameters:

  • the (Enumerable<String>)

    ids of the new child collections and works collection ids


64
65
66
67
68
69
70
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 64

def add_member_objects(new_member_ids)
  Deprecation.warn("'##{__method__}' will be removed in Hyrax 4.0.  " \
                     "Instead, use Hyrax::Collections::CollectionMemberService.add_members_by_ids.")
  Hyrax::Collections::CollectionMemberService.add_members_by_ids(collection_id: id,
                                                                 new_member_ids: new_member_ids,
                                                                 user: nil)
end

#add_members(new_member_ids) ⇒ Object

Add members using the members association.


54
55
56
57
58
59
60
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 54

def add_members(new_member_ids)
  Deprecation.warn("'##{__method__}' will be removed in Hyrax 4.0.  " \
                     "Instead, use Hyrax::Collections::CollectionMemberService.add_members_by_ids.")
  Hyrax::Collections::CollectionMemberService.add_members_by_ids(collection_id: id,
                                                                 new_member_ids: new_member_ids,
                                                                 user: nil)
end

#bytesFixnum

Deprecated.

to be removed in 4.0.0; this feature was replaced with a hard-coded null implementation

Returns 0.

Returns:

  • (Fixnum)

    0


107
108
109
110
111
112
113
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 107

def bytes
  Deprecation.warn('#bytes has been deprecated for removal in Hyrax 4.0.0; ' \
                   'The implementation of the indexed Collection size ' \
                   'feature is extremely inefficient, so it has been removed. ' \
                   'This method now returns a hard-coded `0` for compatibility.')
  0
end

#collection_typeObject

Get the collection_type when accessed


45
46
47
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 45

def collection_type
  @collection_type ||= Hyrax::CollectionType.find_by_gid!(collection_type_gid)
end

#collection_type=(new_collection_type) ⇒ Object


49
50
51
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 49

def collection_type=(new_collection_type)
  self.collection_type_gid = new_collection_type.to_global_id
end

#member_object_idsObject

Use this query to get the ids of the member objects (since the containment association has been flipped)


79
80
81
82
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 79

def member_object_ids
  return [] unless id
  member_objects.map(&:id)
end

#member_objectsEnumerable<ActiveFedora::Base>

Returns an enumerable over the children of this collection.

Returns:


73
74
75
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 73

def member_objects
  ActiveFedora::Base.where("member_of_collection_ids_ssim:#{id}")
end

#permission_templateHyrax::PermissionTemplate

Retrieve the permission template for this collection.

Returns:

Raises:

  • (ActiveRecord::RecordNotFound)

119
120
121
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 119

def permission_template
  Hyrax::PermissionTemplate.find_by!(source_id: id)
end

#reset_access_controls!Object

Deprecated.

use PermissionTemplate#reset_access_controls_for instead

Calculate and update who should have read/edit access to the collections based on who has access in PermissionTemplateAccess


128
129
130
131
132
133
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 128

def reset_access_controls!
  Deprecation.warn("reset_access_controls! is deprecated; use PermissionTemplate#reset_access_controls_for instead.")

  permission_template
    .reset_access_controls_for(collection: self, interpret_visibility: true)
end

#to_sObject


84
85
86
# File 'app/models/concerns/hyrax/collection_behavior.rb', line 84

def to_s
  title.present? ? title.join(' | ') : 'No Title'
end