Module: CurationConcerns::SelectsCollections
- Extended by:
- ActiveSupport::Concern, Deprecation
- Defined in:
- app/controllers/concerns/curation_concerns/selects_collections.rb
Instance Method Summary collapse
-
#access_levels ⇒ Hash{Symbol => Array[Symbol]}
Bottom-up map of “what you need” to “what qualifies”.
- #collections_search_builder(access_level = nil) ⇒ Object
- #collections_search_builder_class ⇒ Object
-
#find_collections(access_level = nil) ⇒ Array<SolrDocument>
Return list of collections matching the passed in access_level for the current user.
-
#find_collections_with_edit_access(include_default = false, default_id = -1,, default_title = 'Select collection...') ⇒ Array<SolrDocument>
Return list of collections for which the current user has edit access.
-
#find_collections_with_read_access ⇒ Array<SolrDocument>
Return list of collections for which the current user has read access.
Instance Method Details
#access_levels ⇒ Hash{Symbol => Array[Symbol]}
i.e., requiring :read access is satisfied by either :read or :edit access
Returns bottom-up map of “what you need” to “what qualifies”.
14 15 16 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 14 def access_levels { read: [:read, :edit], edit: [:edit] } end |
#collections_search_builder(access_level = nil) ⇒ Object
63 64 65 66 67 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 63 def collections_search_builder(access_level = nil) collections_search_builder_class.new(self).tap do |builder| builder.discovery_perms = access_levels[access_level] if access_level end end |
#collections_search_builder_class ⇒ Object
59 60 61 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 59 def collections_search_builder_class CurationConcerns::CollectionSearchBuilder end |
#find_collections(access_level = nil) ⇒ Array<SolrDocument>
Return list of collections matching the passed in access_level for the current user.
47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 47 def find_collections(access_level = nil) # need to know the user if there is an access level applied otherwise we are just doing public collections authenticate_user! unless access_level.blank? # run the solr query to find the collections query = collections_search_builder(access_level).with(q: '').query response = repository.search(query) # return the user's collections (or public collections if no access_level is applied) @user_collections = response.documents end |
#find_collections_with_edit_access(include_default = false, default_id = -1,, default_title = 'Select collection...') ⇒ Array<SolrDocument>
Return list of collections for which the current user has edit access. Optionally prepend with default that can be used in a select menu to instruct user to select a collection. Add this or find_collections_with_read_access as a before filter on any page that shows the form_for_select_collection
37 38 39 40 41 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 37 def find_collections_with_edit_access(include_default = false, default_id = -1, default_title = 'Select collection...') find_collections(:edit) default_option = SolrDocument.new(id: default_id, title_tesim: default_title) @user_collections.unshift(default_option) if include_default end |
#find_collections_with_read_access ⇒ Array<SolrDocument>
Return list of collections for which the current user has read access. Add this or find_collections_with_edit_access as a before filter on any page that shows the form_for_select_collection
23 24 25 |
# File 'app/controllers/concerns/curation_concerns/selects_collections.rb', line 23 def find_collections_with_read_access find_collections(:read) end |