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


61
62
63
64
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 61

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


41
42
43
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 41

def available_parent_collections(*)
  []
end

#collection_typeObject


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

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)

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

def disable_delete?
  default_set? || any_items?
end

#disabled_messageObject

Message to display if deletion is disabled


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

def disabled_message
  return I18n.t('hyrax.admin.admin_sets.delete.error_default_set') if default_set?
  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)


48
49
50
51
52
53
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 48

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


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

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=#{Hyrax.config.admin_set_predicate.qname.last}_ssim}#{id}")
end

#total_viewable_itemsObject


14
15
16
17
18
19
20
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 14

def total_viewable_items
  field_pairs = { "#{Hyrax.config.admin_set_predicate.qname.last}_ssim" => id.to_s }
  SolrQueryService.new
                  .with_field_pairs(field_pairs: field_pairs)
                  .accessible_by(ability: current_ability)
                  .count
end