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



66
67
68
69
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 66

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



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

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

#collection_type_gidObject

Overrides delegate because admin sets do not index collection type gid



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

def collection_type_gid
  collection_type.to_global_id
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)



53
54
55
56
57
58
# File 'app/presenters/hyrax/admin_set_presenter.rb', line 53

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



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

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