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, #to_partial_path
Constructor Details
#initialize(solr_document, current_ability, request = nil) ⇒ CollectionPresenter
Returns a new instance of CollectionPresenter.
18
19
20
21
22
23
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 18
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
31
32
33
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 31
def collection_type
@collection_type ||= Hyrax::CollectionType.find_by_gid!(collection_type_gid)
end
|
#current_ability ⇒ Object
Returns the value of attribute current_ability.
7
8
9
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 7
def current_ability
@current_ability
end
|
#parent_collections ⇒ Object
This is expected to be a Blacklight::Solr::Response with all of the parent collections
9
10
11
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 9
def parent_collections
@parent_collections
end
|
#request ⇒ Object
Returns the value of attribute request.
7
8
9
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 7
def request
@request
end
|
#solr_document ⇒ Object
Returns the value of attribute solr_document.
7
8
9
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 7
def solr_document
@solr_document
end
|
#subcollection_count ⇒ Object
Returns the value of attribute subcollection_count.
8
9
10
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 8
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
43
44
45
46
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 43
def self.terms
[:total_items, :size, :resource_type, :creator, :contributor, :keyword, :license, :publisher, :date_created, :subject,
:language, :identifier, :based_near, :related_url]
end
|
Instance Method Details
#[](key) ⇒ Object
52
53
54
55
56
57
58
59
60
61
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 52
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…
179
180
181
182
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 179
def allow_batch?
return true if current_ability.can?(:edit, solr_document)
false
end
|
#available_parent_collections(scope:) ⇒ Object
149
150
151
152
153
154
155
156
157
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 149
def available_parent_collections(scope:)
return @available_parents if @available_parents.present?
collection = Collection.find(id)
colls = Hyrax::Collections::NestedCollectionQueryService.available_parent_collections(child: collection, scope: scope, limit_to_id: nil)
@available_parents = colls.map do |col|
{ "id" => col.id, "title_first" => col.title.first }
end
@available_parents.to_json
end
|
#banner_file ⇒ Object
110
111
112
113
114
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 110
def banner_file
ci = CollectionBrandingInfo.where(collection_id: id, role: "banner")
"/" + ci[0].local_path.split("/")[-4..-1].join("/") unless ci.empty?
end
|
#collection_type_badge ⇒ Object
83
84
85
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 83
def collection_type_badge
content_tag(:span, collection_type.title, class: "label", style: "background-color: " + collection_type.badge_color + ";")
end
|
#create_many_work_types? ⇒ Boolean
137
138
139
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 137
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
133
134
135
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 133
def create_work_presenter
@create_work_presenter ||= create_work_presenter_class.new(current_ability.current_user)
end
|
#draw_select_work_modal? ⇒ Boolean
141
142
143
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 141
def draw_select_work_modal?
create_many_work_types?
end
|
#first_work_type ⇒ Object
145
146
147
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 145
def first_work_type
create_work_presenter.first_model
end
|
#logo_record ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 116
def logo_record
logo_info = []
cis = CollectionBrandingInfo.where(collection_id: id, role: "logo")
return if cis.empty?
cis.each do |coll_info|
logo_file = File.split(coll_info.local_path).last
file_location = "/" + coll_info.local_path.split("/")[-4..-1].join("/") unless logo_file.empty?
alttext = coll_info.alt_text
linkurl = coll_info.target_url
logo_info << { file: logo_file, file_location: file_location, alttext: alttext, linkurl: linkurl }
end
logo_info
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.
166
167
168
169
170
171
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 166
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.
94
95
96
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 94
def parent_collection_count
parent_collections.nil? ? 0 : parent_collections.documents.size
end
|
#show_path ⇒ Object
106
107
108
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 106
def show_path
Hyrax::Engine.routes.url_helpers.dashboard_collection_path(id, locale: I18n.locale)
end
|
#size ⇒ Object
63
64
65
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 63
def size
number_to_human_size(@solr_document['bytes_lts'])
end
|
#terms_with_values ⇒ Object
48
49
50
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 48
def terms_with_values
self.class.terms.select { |t| self[t].present? }
end
|
#total_items ⇒ Object
67
68
69
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 67
def total_items
ActiveFedora::Base.where("member_of_collection_ids_ssim:#{id}").count
end
|
#total_parent_collections ⇒ Object
The total number of parents that this collection belongs to, visible or not.
88
89
90
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 88
def total_parent_collections
parent_collections.nil? ? 0 : parent_collections.response['numFound']
end
|
#total_viewable_collections ⇒ Object
79
80
81
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 79
def total_viewable_collections
ActiveFedora::Base.where("member_of_collection_ids_ssim:#{id} AND generic_type_sim:Collection").accessible_by(current_ability).count
end
|
#total_viewable_items ⇒ Object
71
72
73
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 71
def total_viewable_items
ActiveFedora::Base.where("member_of_collection_ids_ssim:#{id}").accessible_by(current_ability).count
end
|
#total_viewable_works ⇒ Object
75
76
77
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 75
def total_viewable_works
ActiveFedora::Base.where("member_of_collection_ids_ssim:#{id} AND generic_type_sim:Work").accessible_by(current_ability).count
end
|
#user_can_create_new_nest_collection? ⇒ Boolean
102
103
104
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 102
def user_can_create_new_nest_collection?
current_ability.can?(:create_collection_of_type, collection_type)
end
|
#user_can_nest_collection? ⇒ Boolean
98
99
100
|
# File 'app/presenters/hyrax/collection_presenter.rb', line 98
def user_can_nest_collection?
current_ability.can?(:deposit, solr_document)
end
|