Class: Hyrax::AdminSetPresenter

Inherits:
CollectionPresenter show all
Defined in:
app/presenters/hyrax/admin_set_presenter.rb

Instance Attribute Summary

Attributes inherited from CollectionPresenter

#current_ability, #parent_collections, #request, #solr_document, #subcollection_count

Instance Method Summary collapse

Methods inherited from CollectionPresenter

#[], #banner_file, #collection_type_badge, #create_many_work_types?, #create_work_presenter, #draw_select_work_modal?, #first_work_type, #initialize, #logo_record, #parent_collection_count, #size, terms, #terms_with_values, #total_parent_collections, #total_viewable_collections, #total_viewable_works, #user_can_create_new_nest_collection?, #user_can_nest_collection?

Methods included from PresentsAttributes

#attribute_to_html, #display_microdata?, #microdata_type_to_html, #permission_badge, #permission_badge_class

Methods included from ModelProxy

#persisted?, #to_model, #to_partial_path

Constructor Details

This class inherits a constructor from Hyrax::CollectionPresenter

Instance Method Details

#allow_batch?Boolean

Determine if the user can perform batch operations on this admin set. Currently, the only batch operation allowed is deleting, so this is equivalent to checking if the user can delete the admin set determined by criteria…

  • user must be able to edit the admin set to be able to delete it

  • the admin set itself must be able to be deleted (i.e., there cannot be any works in the admin set)

Returns:

  • (Boolean)

    Boolean true if the user can perform batch actions; otherwise, false



57
58
59
60
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 57

def allow_batch?
  return false unless current_ability.can?(:edit, solr_document)
  !disable_delete?
end

#any_items?Boolean

Returns true if there are items.

Returns:

  • (Boolean)

    true if there are items



5
6
7
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 5

def any_items?
  total_items.positive?
end

#available_parent_collectionsObject



37
38
39
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 37

def available_parent_collections(*)
  []
end

#collection_typeObject



29
30
31
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 29

def collection_type
  @collection_type ||= Hyrax::CollectionType.find_or_create_admin_set_type
end

#disable_delete?Boolean

AdminSet cannot be deleted if default set or non-empty

Returns:

  • (Boolean)


18
19
20
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 18

def disable_delete?
  AdminSet.default_set?(id) || any_items?
end

#disabled_messageObject

Message to display if deletion is disabled



23
24
25
26
27
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 23

def disabled_message
  return I18n.t('hyrax.admin.admin_sets.delete.error_default_set') if AdminSet.default_set?(id)

  I18n.t('hyrax.admin.admin_sets.delete.error_not_empty') if any_items?
end

#managed_accessObject

For the Managed Collections tab, determine the label to use for the level of access the user has for this admin set. Checks from most permissive to most restrictive.

Returns:

  • String the access label (e.g. Manage, Deposit, View)



44
45
46
47
48
49
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 44

def managed_access
  return I18n.t('hyrax.dashboard.my.collection_list.managed_access.manage') if current_ability.can?(:edit, solr_document)
  return I18n.t('hyrax.dashboard.my.collection_list.managed_access.deposit') if current_ability.can?(:deposit, solr_document)
  return I18n.t('hyrax.dashboard.my.collection_list.managed_access.view') if current_ability.can?(:read, solr_document)
  ''
end

#show_pathObject



33
34
35
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 33

def show_path
  Hyrax::Engine.routes.url_helpers.admin_admin_set_path(id, locale: I18n.locale)
end

#total_itemsObject



9
10
11
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 9

def total_items
  ActiveFedora::SolrService.count("{!field f=isPartOf_ssim}#{id}")
end

#total_viewable_itemsObject



13
14
15
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 13

def total_viewable_items
  ActiveFedora::Base.where("isPartOf_ssim:#{id}").accessible_by(current_ability).count
end