Class: Hyrax::CollectionPresenter
- Inherits:
-
Object
- Object
- Hyrax::CollectionPresenter
show all
- Includes:
- ActionView::Helpers::NumberHelper, ActionView::Helpers::TagHelper, ModelProxy, PresentsAttributes
- Defined in:
- app/presenters/hyrax/collection_presenter.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
-
.terms ⇒ Object
Terms is the list of fields displayed by app/views/collections/_show_descriptions.html.erb.
Instance Method Summary
collapse
#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
#initialize(solr_document, current_ability, request = nil) ⇒ CollectionPresenter
19
20
21
22
23
24
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 19
def initialize(solr_document, current_ability, request = nil)
@solr_document = solr_document
@current_ability = current_ability
@request = request
@subcollection_count = 0
end
|
Instance Attribute Details
#collection_type ⇒ Object
33
34
35
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 33
def collection_type
@collection_type ||= Hyrax::CollectionType.find_by_gid!(collection_type_gid)
end
|
#current_ability ⇒ Object
Returns the value of attribute current_ability.
8
9
10
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 8
def current_ability
@current_ability
end
|
#parent_collections ⇒ Object
This is expected to be a Blacklight::Solr::Response with all of the parent collections
10
11
12
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 10
def parent_collections
@parent_collections
end
|
#request ⇒ Object
Returns the value of attribute request.
8
9
10
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 8
def request
@request
end
|
#solr_document ⇒ Object
Returns the value of attribute solr_document.
8
9
10
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 8
def solr_document
@solr_document
end
|
#subcollection_count ⇒ Object
Returns the value of attribute subcollection_count.
9
10
11
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 9
def subcollection_count
@subcollection_count
end
|
Class Method Details
.terms ⇒ Object
Terms is the list of fields displayed by
app/views/collections/_show_descriptions.html.erb
45
46
47
48
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 45
def self.terms
[:total_items, :alternative_title, :size, :resource_type, :creator, :contributor, :keyword, :license, :publisher, :date_created, :subject,
:language, :identifier, :based_near, :related_url]
end
|
Instance Method Details
#[](key) ⇒ Object
57
58
59
60
61
62
63
64
65
66
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 57
def [](key)
case key
when :size
size
when :total_items
total_items
else
solr_document.send key
end
end
|
#allow_batch? ⇒ Boolean
Determine if the user can perform batch operations on this collection. Currently, the only
batch operation allowed is deleting, so this is equivalent to checking if the user can delete
the collection determined by criteria...
- user must be able to edit the collection to be able to delete it
- the collection does not have to be empty
199
200
201
202
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 199
def allow_batch?
return true if current_ability.can?(:edit, solr_document)
false
end
|
#banner_file ⇒ #to_s?
146
147
148
149
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 146
def banner_file
banner = CollectionBrandingInfo.find_by(collection_id: id, role: "banner")
"/" + banner.local_path.split("/")[-4..-1].join("/") if banner
end
|
#collection_type_badge ⇒ Object
113
114
115
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 113
def collection_type_badge
tag.span(collection_type.title, class: "badge", style: "background-color: " + collection_type.badge_color + ";")
end
|
#create_many_work_types? ⇒ Boolean
167
168
169
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 167
def create_many_work_types?
create_work_presenter.many?
end
|
#create_work_presenter ⇒ Object
A presenter for selecting a work type to create
this is needed here because the selector is in the header on every page
163
164
165
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 163
def create_work_presenter
@create_work_presenter ||= create_work_presenter_class.new(current_ability.current_user)
end
|
#draw_select_work_modal? ⇒ Boolean
171
172
173
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 171
def draw_select_work_modal?
create_many_work_types?
end
|
#editor? ⇒ Boolean
132
133
134
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 132
def editor?
current_ability.can?(:edit, self)
end
|
#first_work_type ⇒ Object
175
176
177
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 175
def first_work_type
create_work_presenter.first_model
end
|
#logo_record ⇒ Object
151
152
153
154
155
156
157
158
159
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 151
def logo_record
CollectionBrandingInfo.where(collection_id: id, role: "logo")
.select(:local_path, :alt_text, :target_url).map do |logo|
{ alttext: logo.alt_text,
file: File.split(logo.local_path).last,
file_location: "/#{logo.local_path.split('/')[-4..-1].join('/')}",
linkurl: logo.target_url }
end
end
|
#managed_access ⇒ Object
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.
186
187
188
189
190
191
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 186
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
|
#parent_collection_count ⇒ Object
The number of parent collections shown on the current page. This will differ from total_parent_collections
due to pagination.
124
125
126
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 124
def parent_collection_count
parent_collections.blank? ? 0 : parent_collections.documents.size
end
|
#show_path ⇒ Object
140
141
142
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 140
def show_path
Hyrax::Engine.routes.url_helpers.dashboard_collection_path(id, locale: I18n.locale)
end
|
#size ⇒ String
Deprecated. to be removed in 4.0.0; this feature was replaced with a
hard-coded null implementation
Returns 'unknown'.
71
72
73
74
75
76
77
78
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 71
def size
Deprecation.warn('#size 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 `"unknown"` for ' \
'compatibility.')
'unknown'
end
|
#terms_with_values ⇒ Object
50
51
52
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 50
def terms_with_values
self.class.terms.select { |t| self[t].present? }
end
|
#total_items ⇒ Object
80
81
82
83
84
85
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 80
def total_items
field_pairs = { "member_of_collection_ids_ssim" => id.to_s }
SolrQueryService.new
.with_field_pairs(field_pairs: field_pairs)
.count
end
|
#total_parent_collections ⇒ Object
The total number of parents that this collection belongs to, visible or not.
118
119
120
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 118
def total_parent_collections
parent_collections.blank? ? 0 : parent_collections.response['numFound']
end
|
#total_viewable_collections ⇒ Object
104
105
106
107
108
109
110
111
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 104
def total_viewable_collections
field_pairs = { "member_of_collection_ids_ssim" => id.to_s }
SolrQueryService.new
.with_field_pairs(field_pairs: field_pairs)
.with_generic_type(generic_type: "Collection")
.accessible_by(ability: current_ability)
.count
end
|
#total_viewable_items ⇒ Object
87
88
89
90
91
92
93
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 87
def total_viewable_items
field_pairs = { "member_of_collection_ids_ssim" => id.to_s }
SolrQueryService.new
.with_field_pairs(field_pairs: field_pairs)
.accessible_by(ability: current_ability)
.count
end
|
#total_viewable_works ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 95
def total_viewable_works
field_pairs = { "member_of_collection_ids_ssim" => id.to_s }
SolrQueryService.new
.with_field_pairs(field_pairs: field_pairs)
.with_generic_type(generic_type: "Work")
.accessible_by(ability: current_ability)
.count
end
|
#user_can_create_new_nest_collection? ⇒ Boolean
136
137
138
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 136
def user_can_create_new_nest_collection?
current_ability.can?(:create_collection_of_type, collection_type)
end
|
#user_can_nest_collection? ⇒ Boolean
128
129
130
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 128
def user_can_nest_collection?
current_ability.can?(:deposit, solr_document)
end
|