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, #valid_child_concerns

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


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

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


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

def any_items?
  total_items.positive?
end

#available_parent_collectionsObject


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

def available_parent_collections(*)
  []
end

#collection_typeObject


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

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)

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

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

#disabled_messageObject

Message to display if deletion is disabled


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

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)


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

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


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

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

#total_itemsObject


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

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

#total_viewable_itemsObject


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

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