hyrax 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +22 -0
- data/.dassie/Gemfile +10 -5
- data/.dassie/config/initializers/hyrax.rb +5 -0
- data/.dockerignore +3 -0
- data/.env +0 -1
- data/.rubocop.yml +4 -0
- data/CONTAINERS.md +1 -1
- data/Dockerfile +12 -6
- data/Gemfile +21 -27
- data/app/actors/hyrax/actors/base_actor.rb +1 -1
- data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +85 -63
- data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +7 -42
- data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +20 -8
- data/app/controllers/concerns/hyrax/embargoes_controller_behavior.rb +21 -9
- data/app/controllers/concerns/hyrax/leases_controller_behavior.rb +14 -5
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +22 -3
- data/app/controllers/hyrax/admin/workflows_controller.rb +8 -2
- data/app/controllers/hyrax/dashboard/collection_members_controller.rb +13 -9
- data/app/controllers/hyrax/dashboard/collections_controller.rb +12 -10
- data/app/controllers/hyrax/file_sets_controller.rb +49 -13
- data/app/controllers/hyrax/permissions_controller.rb +3 -4
- data/app/controllers/hyrax/workflow_actions_controller.rb +3 -1
- data/app/forms/hyrax/forms/collection_form.rb +7 -3
- data/app/forms/hyrax/forms/dashboard/nest_collection_form.rb +24 -2
- data/app/forms/hyrax/forms/file_set_form.rb +46 -0
- data/app/forms/hyrax/forms/permission.rb +23 -0
- data/app/forms/hyrax/forms/permission_template_form.rb +8 -2
- data/app/forms/hyrax/forms/resource_form.rb +10 -17
- data/app/forms/hyrax/forms/work_form.rb +5 -2
- data/app/helpers/hyrax/batch_edits_helper.rb +3 -1
- data/app/helpers/hyrax/collections_helper.rb +88 -2
- data/app/helpers/hyrax/dashboard_helper_behavior.rb +3 -7
- data/app/helpers/hyrax/file_set_helper.rb +25 -6
- data/app/helpers/hyrax/work_form_helper.rb +53 -0
- data/app/indexers/hyrax/administrative_set_indexer.rb +18 -0
- data/app/indexers/hyrax/valkyrie_indexer.rb +3 -3
- data/app/inputs/controlled_vocabulary_input.rb +2 -5
- data/app/jobs/attach_files_to_work_job.rb +19 -10
- data/app/jobs/attach_files_to_work_with_ordered_members_job.rb +6 -5
- data/app/jobs/inherit_permissions_job.rb +9 -5
- data/app/models/admin_set.rb +6 -25
- data/app/models/concerns/hyrax/ability.rb +3 -1
- data/app/models/concerns/hyrax/collection_behavior.rb +17 -44
- data/app/models/concerns/hyrax/file_set/characterization.rb +18 -12
- data/app/models/concerns/hyrax/solr_document_behavior.rb +9 -52
- data/app/models/concerns/hyrax/suppressible.rb +5 -0
- data/app/models/concerns/hyrax/user.rb +9 -3
- data/app/models/hyrax/file_set.rb +6 -0
- data/app/models/hyrax/pcdm_collection.rb +1 -0
- data/app/models/hyrax/permission_template.rb +98 -12
- data/app/models/hyrax/virus_scanner.rb +27 -18
- data/app/models/sipity/agent.rb +1 -0
- data/app/models/sipity/entity.rb +30 -8
- data/app/models/sipity/workflow.rb +1 -0
- data/app/models/sipity.rb +42 -0
- data/app/presenters/hyrax/admin_set_options_presenter.rb +2 -10
- data/app/presenters/hyrax/admin_set_presenter.rb +5 -1
- data/app/presenters/hyrax/admin_set_selection_presenter.rb +116 -0
- data/app/presenters/hyrax/collection_presenter.rb +31 -6
- data/app/presenters/hyrax/file_set_presenter.rb +6 -1
- data/app/presenters/hyrax/file_usage.rb +3 -2
- data/app/presenters/hyrax/stats_usage_presenter.rb +2 -1
- data/app/presenters/hyrax/trophy_presenter.rb +33 -4
- data/app/presenters/hyrax/user_profile_presenter.rb +11 -1
- data/app/presenters/hyrax/version_list_presenter.rb +19 -0
- data/app/presenters/hyrax/version_presenter.rb +3 -2
- data/app/presenters/hyrax/work_show_presenter.rb +25 -4
- data/app/presenters/hyrax/work_usage.rb +5 -3
- data/app/renderers/hyrax/renderers/attribute_renderer.rb +10 -2
- data/app/search_builders/hyrax/admin_set_search_builder.rb +1 -1
- data/app/search_builders/hyrax/my/collections_search_builder.rb +1 -1
- data/app/services/hyrax/admin_set_create_service.rb +3 -1
- data/app/services/hyrax/collections/collection_member_search_service.rb +72 -0
- data/app/services/hyrax/collections/collection_member_service.rb +112 -27
- data/app/services/hyrax/collections/migration_service.rb +4 -2
- data/app/services/hyrax/collections/nested_collection_persistence_service.rb +12 -13
- data/app/services/hyrax/collections/nested_collection_query_service.rb +2 -0
- data/app/services/hyrax/collections/permissions_create_service.rb +6 -4
- data/app/services/hyrax/contextual_path.rb +23 -0
- data/app/services/hyrax/custom_queries/find_file_metadata.rb +7 -5
- data/app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb +46 -0
- data/app/services/hyrax/edit_permissions_service.rb +27 -20
- data/app/services/hyrax/find_objects_via_solr_service.rb +11 -7
- data/app/services/hyrax/multiple_membership_checker.rb +51 -31
- data/app/services/hyrax/resource_status.rb +7 -0
- data/app/services/hyrax/search_service.rb +4 -2
- data/app/services/hyrax/solr_query_builder_service.rb +29 -6
- data/app/services/hyrax/solr_query_service.rb +224 -0
- data/app/services/hyrax/solr_service.rb +8 -1
- data/app/services/hyrax/statistics/depositors/summary.rb +2 -1
- data/app/services/hyrax/work_uploads_handler.rb +17 -2
- data/app/services/hyrax/workflow/actionable_objects.rb +70 -0
- data/app/services/hyrax/workflow/object_in_workflow_decorator.rb +31 -0
- data/app/services/hyrax/workflow/status_list_service.rb +43 -13
- data/app/views/hyrax/base/_form_relationships.html.erb +1 -2
- data/app/views/hyrax/base/_form_rendering.html.erb +1 -1
- data/app/views/hyrax/base/_form_representative.html.erb +1 -1
- data/app/views/hyrax/base/_form_thumbnail.html.erb +1 -1
- data/app/views/hyrax/base/_guts4form.html.erb +2 -2
- data/app/views/hyrax/base/_representative_media.html.erb +1 -1
- data/app/views/hyrax/base/_show_actions.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_form.html.erb +3 -3
- data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/edit.html.erb +4 -2
- data/app/views/hyrax/dashboard/collections/new.html.erb +4 -2
- data/app/views/hyrax/dashboard/collections/show.html.erb +1 -1
- data/app/views/hyrax/file_sets/edit.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_audio.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_default.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_image.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_office_document.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_pdf.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_video.html.erb +1 -1
- data/app/views/hyrax/file_sets/show.html.erb +1 -1
- data/app/views/hyrax/my/_admin_set_action_menu.html.erb +0 -11
- data/app/views/hyrax/my/_collection_action_menu.html.erb +1 -2
- data/app/views/hyrax/my/collections/_list_collections.html.erb +1 -1
- data/app/views/hyrax/my/collections/_modal_add_subcollection.html.erb +3 -5
- data/bin/solrcloud-assign-configset.sh +8 -5
- data/bin/solrcloud-upload-configset.sh +4 -2
- data/chart/hyrax/Chart.yaml +3 -3
- data/chart/hyrax/README.md +47 -1
- data/chart/hyrax/templates/_helpers.tpl +1 -1
- data/chart/hyrax/templates/configmap-env.yaml +1 -3
- data/chart/hyrax/templates/deployment-worker.yaml +6 -3
- data/chart/hyrax/templates/deployment.yaml +8 -3
- data/chart/hyrax/values.yaml +12 -0
- data/config/brakeman.ignore +2 -2
- data/config/locales/hyrax.de.yml +1 -1
- data/config/locales/hyrax.en.yml +1 -1
- data/config/locales/hyrax.es.yml +1 -1
- data/config/locales/hyrax.fr.yml +1 -1
- data/config/locales/hyrax.it.yml +1 -1
- data/config/locales/hyrax.pt-BR.yml +1 -1
- data/config/locales/hyrax.zh.yml +1 -1
- data/docker-compose.yml +1 -0
- data/documentation/developing-your-hyrax-based-app.md +1 -1
- data/documentation/legacyREADME.md +1 -1
- data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +5 -0
- data/lib/hyrax/active_fedora_dummy_model.rb +62 -0
- data/lib/hyrax/configuration.rb +8 -0
- data/lib/hyrax/engine.rb +1 -0
- data/lib/hyrax/errors.rb +2 -0
- data/lib/hyrax/specs/capybara.rb +3 -1
- data/lib/hyrax/specs/shared_specs/valkyrie_storage_versions.rb +9 -0
- data/lib/hyrax/transactions/container.rb +21 -0
- data/lib/hyrax/transactions/file_set_destroy.rb +21 -0
- data/lib/hyrax/transactions/steps/add_file_sets.rb +3 -2
- data/lib/hyrax/transactions/steps/add_to_parent.rb +36 -0
- data/lib/hyrax/transactions/steps/remove_file_set_from_work.rb +47 -0
- data/lib/hyrax/transactions/work_create.rb +2 -1
- data/lib/hyrax/valkyrie_can_can_adapter.rb +1 -0
- data/lib/hyrax/version.rb +1 -1
- data/lib/hyrax.rb +9 -0
- data/lib/tasks/collection_type_global_id.rake +1 -1
- data/lib/tasks/regenerate_derivatives.rake +12 -0
- data/lib/wings/orm_converter.rb +18 -2
- data/lib/wings/setup.rb +1 -0
- data/lib/wings/valkyrie/storage.rb +56 -1
- data/template.rb +1 -1
- metadata +17 -2
|
@@ -18,7 +18,7 @@ module Hyrax
|
|
|
18
18
|
|
|
19
19
|
self.model_class = ::Collection
|
|
20
20
|
|
|
21
|
-
self.membership_service_class = Collections::
|
|
21
|
+
self.membership_service_class = Collections::CollectionMemberSearchService
|
|
22
22
|
|
|
23
23
|
delegate :blacklight_config, to: Hyrax::CollectionsController
|
|
24
24
|
|
|
@@ -123,6 +123,11 @@ module Hyrax
|
|
|
123
123
|
collection_member_service.available_member_subcollections.documents
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
+
##
|
|
127
|
+
# @deprecated this implementation requires an extra db round trip, had a
|
|
128
|
+
# buggy cacheing mechanism, and was largely duplicative of other code.
|
|
129
|
+
# all versions of this code are replaced by
|
|
130
|
+
# {CollectionsHelper#available_parent_collections_data}.
|
|
126
131
|
def available_parent_collections(scope:)
|
|
127
132
|
return @available_parents if @available_parents.present?
|
|
128
133
|
|
|
@@ -130,8 +135,7 @@ module Hyrax
|
|
|
130
135
|
colls = Hyrax::Collections::NestedCollectionQueryService.available_parent_collections(child: collection, scope: scope, limit_to_id: nil)
|
|
131
136
|
@available_parents = colls.map do |col|
|
|
132
137
|
{ "id" => col.id, "title_first" => col.title.first }
|
|
133
|
-
end
|
|
134
|
-
@available_parents.to_json
|
|
138
|
+
end.to_json
|
|
135
139
|
end
|
|
136
140
|
|
|
137
141
|
private
|
|
@@ -32,18 +32,40 @@ module Hyrax
|
|
|
32
32
|
|
|
33
33
|
def save
|
|
34
34
|
return false unless valid?
|
|
35
|
-
persistence_service.persist_nested_collection_for(parent: parent, child: child)
|
|
35
|
+
persistence_service.persist_nested_collection_for(parent: parent, child: child, user: context.current_user)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
##
|
|
39
|
+
# @deprecated this method is unused by hyrax, and is effectively a
|
|
40
|
+
# delegation to `Hyrax::Collections::NestedCollectionQueryService`.
|
|
41
|
+
# if you want to be sure to use nested indexing to generate this list,
|
|
42
|
+
# use the query service directly.
|
|
43
|
+
#
|
|
38
44
|
# For the given parent, what are all of the available collections that
|
|
39
45
|
# can be added as sub-collection of the parent.
|
|
40
46
|
def available_child_collections
|
|
47
|
+
Deprecation.warn "#{self.class}#available_child_collections " \
|
|
48
|
+
"is deprecated. the helper of the same name or " \
|
|
49
|
+
"Hyrax::Collections::NestedCollectionQueryService " \
|
|
50
|
+
"instead."
|
|
51
|
+
|
|
41
52
|
query_service.available_child_collections(parent: parent, scope: context)
|
|
42
53
|
end
|
|
43
54
|
|
|
55
|
+
##
|
|
56
|
+
# @deprecated this method is unused by hyrax, and is effectively a
|
|
57
|
+
# delegation to `Hyrax::Collections::NestedCollectionQueryService`.
|
|
58
|
+
# if you want to be sure to use nested indexing to generate this list,
|
|
59
|
+
# use the query service directly.
|
|
60
|
+
#
|
|
44
61
|
# For the given child, what are all of the available collections to
|
|
45
62
|
# which the child can be added as a sub-collection.
|
|
46
63
|
def available_parent_collections
|
|
64
|
+
Deprecation.warn "#{self.class}#available_parent_collections " \
|
|
65
|
+
"is deprecated. the helper of the same name or " \
|
|
66
|
+
"Hyrax::Collections::NestedCollectionQueryService " \
|
|
67
|
+
"instead."
|
|
68
|
+
|
|
47
69
|
query_service.available_parent_collections(child: child, scope: context)
|
|
48
70
|
end
|
|
49
71
|
|
|
@@ -61,7 +83,7 @@ module Hyrax
|
|
|
61
83
|
|
|
62
84
|
def remove
|
|
63
85
|
if context.can? :edit, parent
|
|
64
|
-
persistence_service.remove_nested_relationship_for(parent: parent, child: child)
|
|
86
|
+
persistence_service.remove_nested_relationship_for(parent: parent, child: child, user: context.current_user)
|
|
65
87
|
else
|
|
66
88
|
errors.add(:parent, :cannot_remove_relationship)
|
|
67
89
|
false
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Hyrax
|
|
4
|
+
module Forms
|
|
5
|
+
##
|
|
6
|
+
# @api public
|
|
7
|
+
class FileSetForm < Hyrax::ChangeSet
|
|
8
|
+
include Hyrax::FormFields(:core_metadata)
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
##
|
|
12
|
+
# @return [Array<Symbol>] list of required field names as symbols
|
|
13
|
+
def required_fields
|
|
14
|
+
definitions
|
|
15
|
+
.select { |_, definition| definition[:required] }
|
|
16
|
+
.keys.map(&:to_sym)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
property :creator, required: true
|
|
21
|
+
property :license, required: true
|
|
22
|
+
|
|
23
|
+
property :based_near
|
|
24
|
+
property :contributor
|
|
25
|
+
property :date_created
|
|
26
|
+
property :description
|
|
27
|
+
property :identifier
|
|
28
|
+
property :keyword
|
|
29
|
+
property :language
|
|
30
|
+
property :publisher
|
|
31
|
+
property :related_url
|
|
32
|
+
property :subject
|
|
33
|
+
|
|
34
|
+
property :permissions, virtual: true
|
|
35
|
+
property :visibility, default: VisibilityIntention::PRIVATE
|
|
36
|
+
|
|
37
|
+
# virtual properties for embargo/lease;
|
|
38
|
+
property :embargo_release_date, virtual: true
|
|
39
|
+
property :visibility_after_embargo, virtual: true
|
|
40
|
+
property :visibility_during_embargo, virtual: true
|
|
41
|
+
property :lease_expiration_date, virtual: true
|
|
42
|
+
property :visibility_after_lease, virtual: true
|
|
43
|
+
property :visibility_during_lease, virtual: true
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Hyrax
|
|
3
|
+
module Forms
|
|
4
|
+
##
|
|
5
|
+
# Nested form for permissions.
|
|
6
|
+
#
|
|
7
|
+
# @note due to historical oddities with Hydra::AccessControls and Hydra
|
|
8
|
+
# Editor, Hyrax's views rely on `agent_name` and `access` as field
|
|
9
|
+
# names. we provide these as virtual fields and prepopulate these from
|
|
10
|
+
# `Hyrax::Permission`.
|
|
11
|
+
class Permission < Hyrax::ChangeSet
|
|
12
|
+
property :agent_name, virtual: true, prepopulator: ->(_opts) { self.agent_name = model.agent }
|
|
13
|
+
property :access, virtual: true, prepopulator: ->(_opts) { self.access = model.mode }
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# @note support a {#to_hash} method for compatibility with
|
|
17
|
+
# {Hydra::AccessControl::Permissions}
|
|
18
|
+
def to_hash
|
|
19
|
+
{ name: agent_name, access: access }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -12,7 +12,13 @@ module Hyrax
|
|
|
12
12
|
# @return [#to_s] the primary key of the associated admin_set or collection
|
|
13
13
|
# def source_id (because you might come looking for this method)
|
|
14
14
|
delegate :id, to: :source_model, prefix: :source
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
##
|
|
17
|
+
# @deprecated use PermissionTemplate#reset_access_controls instead.
|
|
18
|
+
def reset_access_controls!
|
|
19
|
+
Deprecation.warn("reset_access_controls! is deprecated; use PermissionTemplate#reset_access_controls instead.")
|
|
20
|
+
source_model.reset_access_controls!
|
|
21
|
+
end
|
|
16
22
|
|
|
17
23
|
# Stores which radio button under release "Varies" option is selected
|
|
18
24
|
attr_accessor :release_varies
|
|
@@ -67,7 +73,7 @@ module Hyrax
|
|
|
67
73
|
# Copy this access to the permissions of the Admin Set or Collection and to
|
|
68
74
|
# the WorkflowResponsibilities of the active workflow if this is an Admin Set
|
|
69
75
|
def update_access(remove_agent: false)
|
|
70
|
-
reset_access_controls!
|
|
76
|
+
source_model.reset_access_controls!
|
|
71
77
|
update_workflow_responsibilities(remove_agent: remove_agent) if source_model.is_a?(AdminSet)
|
|
72
78
|
end
|
|
73
79
|
|
|
@@ -31,18 +31,6 @@ module Hyrax
|
|
|
31
31
|
#
|
|
32
32
|
# This form wraps `Hyrax::ChangeSet` in the `HydraEditor::Form` interface.
|
|
33
33
|
class ResourceForm < Hyrax::ChangeSet
|
|
34
|
-
##
|
|
35
|
-
# Nested form for permissions.
|
|
36
|
-
#
|
|
37
|
-
# @note due to historical oddities with Hydra::AccessControls and Hydra
|
|
38
|
-
# Editor, Hyrax's views rely on `agent_name` and `access` as field
|
|
39
|
-
# names. we provide these as virtual fields and prepopulate these from
|
|
40
|
-
# `Hyrax::Permission`.
|
|
41
|
-
class Permission < Hyrax::ChangeSet
|
|
42
|
-
property :agent_name, virtual: true, prepopulator: ->(_opts) { self.agent_name = model.agent }
|
|
43
|
-
property :access, virtual: true, prepopulator: ->(_opts) { self.access = model.mode }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
34
|
##
|
|
47
35
|
# @api private
|
|
48
36
|
InWorksPopulator = lambda do |_options|
|
|
@@ -94,7 +82,7 @@ module Hyrax
|
|
|
94
82
|
collection(:permissions,
|
|
95
83
|
virtual: true,
|
|
96
84
|
default: [],
|
|
97
|
-
form: Permission,
|
|
85
|
+
form: Hyrax::Forms::Permission,
|
|
98
86
|
populator: :permission_populator,
|
|
99
87
|
prepopulator: ->(_opts) { self.permissions = Hyrax::AccessControl.for(resource: model).permissions })
|
|
100
88
|
|
|
@@ -136,10 +124,15 @@ module Hyrax
|
|
|
136
124
|
# @example
|
|
137
125
|
# monograph = Monograph.new
|
|
138
126
|
# change_set = Hyrax::Forms::ResourceForm.for(monograph)
|
|
139
|
-
def for(
|
|
140
|
-
"#{
|
|
127
|
+
def for(resource)
|
|
128
|
+
"#{resource.class.name}Form".constantize.new(resource)
|
|
141
129
|
rescue NameError => _err
|
|
142
|
-
|
|
130
|
+
case resource
|
|
131
|
+
when Hyrax::FileSet
|
|
132
|
+
Hyrax::Forms::FileSetForm.new(resource)
|
|
133
|
+
else
|
|
134
|
+
Hyrax::Forms::ResourceForm(resource.class).new(resource)
|
|
135
|
+
end
|
|
143
136
|
end
|
|
144
137
|
|
|
145
138
|
##
|
|
@@ -208,7 +201,7 @@ module Hyrax
|
|
|
208
201
|
|
|
209
202
|
# https://trailblazer.to/2.1/docs/reform.html#reform-populators-populator-collections
|
|
210
203
|
def permission_populator(collection:, index:, **)
|
|
211
|
-
Permission.new(collection[index])
|
|
204
|
+
Hyrax::Forms::Permission.new(collection[index])
|
|
212
205
|
end
|
|
213
206
|
|
|
214
207
|
def _form_field_definitions
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:disable Metrics/ClassLength
|
|
3
2
|
module Hyrax
|
|
4
3
|
module Forms
|
|
5
4
|
# @abstract
|
|
6
|
-
class WorkForm
|
|
5
|
+
class WorkForm # rubocop:disable Metrics/ClassLength
|
|
7
6
|
include HydraEditor::Form
|
|
8
7
|
include HydraEditor::Form::Permissions
|
|
9
8
|
attr_accessor :current_ability
|
|
@@ -176,6 +175,10 @@ module Hyrax
|
|
|
176
175
|
based_near_attributes: [:id, :_destroy],
|
|
177
176
|
member_of_collections_attributes: [:id, :_destroy],
|
|
178
177
|
work_members_attributes: [:id, :_destroy]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
file_set: [:visibility, :visibility_during_embargo, :embargo_release_date, :visibility_after_embargo,
|
|
181
|
+
:visibility_during_lease, :lease_expiration_date, :visibility_after_lease, :uploaded_file_id]
|
|
179
182
|
}
|
|
180
183
|
]
|
|
181
184
|
end
|
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Hyrax
|
|
3
|
-
module CollectionsHelper
|
|
3
|
+
module CollectionsHelper # rubocop:disable Metrics/ModuleLength
|
|
4
|
+
##
|
|
5
|
+
# @since 3.1.0
|
|
6
|
+
# @return [Array<SolrDocument>]
|
|
7
|
+
def available_child_collections(collection:)
|
|
8
|
+
Hyrax::Collections::NestedCollectionQueryService
|
|
9
|
+
.available_child_collections(parent: collection, scope: controller, limit_to_id: nil)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
# @since 3.1.0
|
|
14
|
+
#
|
|
15
|
+
# @note provides data for handleAddToCollection javascript
|
|
16
|
+
#
|
|
17
|
+
# @return [String] JSON document containing id/title pairs for eligible
|
|
18
|
+
# parent collections to be displayed in an "Add to Collection" dropdown
|
|
19
|
+
def available_parent_collections_data(collection:)
|
|
20
|
+
Hyrax::Collections::NestedCollectionQueryService
|
|
21
|
+
.available_parent_collections(child: collection, scope: controller, limit_to_id: nil)
|
|
22
|
+
.map do |result|
|
|
23
|
+
{ "id" => result.id, "title_first" => result.title.first }
|
|
24
|
+
end.to_json
|
|
25
|
+
end
|
|
26
|
+
|
|
4
27
|
##
|
|
5
28
|
# @since 3.0.0
|
|
6
29
|
# @return [#to_s]
|
|
@@ -97,6 +120,69 @@ module Hyrax
|
|
|
97
120
|
single_item_action_form_fields(form, document, 'remove')
|
|
98
121
|
end
|
|
99
122
|
|
|
123
|
+
##
|
|
124
|
+
# @param collection [Object]
|
|
125
|
+
def collection_type_label_for(collection:)
|
|
126
|
+
case collection
|
|
127
|
+
when Valkyrie::Resource
|
|
128
|
+
CollectionType
|
|
129
|
+
.find_by_gid!(collection.collection_type_gid)
|
|
130
|
+
.title
|
|
131
|
+
else
|
|
132
|
+
collection.collection_type.title
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
##
|
|
137
|
+
# @param collection [Object]
|
|
138
|
+
#
|
|
139
|
+
# @return [Boolean]
|
|
140
|
+
def collection_brandable?(collection:)
|
|
141
|
+
case collection
|
|
142
|
+
when Valkyrie::Resource
|
|
143
|
+
CollectionType
|
|
144
|
+
.find_by_gid!(collection.collection_type_gid)
|
|
145
|
+
.brandable?
|
|
146
|
+
else
|
|
147
|
+
collection.try(:brandable?)
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
##
|
|
152
|
+
# @param collection [Object]
|
|
153
|
+
#
|
|
154
|
+
# @return [Boolean]
|
|
155
|
+
def collection_discoverable?(collection:)
|
|
156
|
+
case collection
|
|
157
|
+
when Valkyrie::Resource
|
|
158
|
+
CollectionType
|
|
159
|
+
.find_by_gid!(collection.collection_type_gid)
|
|
160
|
+
.discoverable?
|
|
161
|
+
else
|
|
162
|
+
collection.try(:discoverable?)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
##
|
|
167
|
+
# @param collection [Object]
|
|
168
|
+
#
|
|
169
|
+
# @return [Boolean]
|
|
170
|
+
def collection_sharable?(collection:)
|
|
171
|
+
case collection
|
|
172
|
+
when Valkyrie::Resource
|
|
173
|
+
CollectionType
|
|
174
|
+
.find_by_gid!(collection.collection_type_gid)
|
|
175
|
+
.sharable?
|
|
176
|
+
else
|
|
177
|
+
collection.try(:sharable?)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
##
|
|
182
|
+
# @note this helper is primarily intended for use with blacklight facet
|
|
183
|
+
# fields. it assumes we index a `collection_type_gid` and the helper
|
|
184
|
+
# can be passed as as a `helper_method:` to `add_facet_field`.
|
|
185
|
+
#
|
|
100
186
|
# @param collection_type_gid [String] The gid of the CollectionType to be looked up
|
|
101
187
|
# @return [String] The CollectionType's title if found, else the gid
|
|
102
188
|
def collection_type_label(collection_type_gid)
|
|
@@ -112,4 +198,4 @@ module Hyrax
|
|
|
112
198
|
render 'hyrax/dashboard/collections/single_item_action_fields', form: form, document: document, action: action
|
|
113
199
|
end
|
|
114
200
|
end
|
|
115
|
-
end
|
|
201
|
+
end # rubocop:enable Metrics/ModuleLength
|
|
@@ -12,7 +12,7 @@ module Hyrax
|
|
|
12
12
|
def number_of_works(user = current_user, where: { generic_type_sim: "Work" })
|
|
13
13
|
field_pairs = field_pairs(user)
|
|
14
14
|
field_pairs.merge!(where)
|
|
15
|
-
|
|
15
|
+
Hyrax::SolrQueryService.new.with_field_pairs(field_pairs: field_pairs).count
|
|
16
16
|
rescue RSolr::Error::ConnectionRefused
|
|
17
17
|
'n/a'
|
|
18
18
|
end
|
|
@@ -20,7 +20,7 @@ module Hyrax
|
|
|
20
20
|
# @param user [User]
|
|
21
21
|
# @return [Integer] number of FileSets the user deposited
|
|
22
22
|
def number_of_files(user = current_user)
|
|
23
|
-
|
|
23
|
+
Hyrax::SolrQueryService.new.with_field_pairs(field_pairs: field_pairs(user)).count
|
|
24
24
|
rescue RSolr::Error::ConnectionRefused
|
|
25
25
|
'n/a'
|
|
26
26
|
end
|
|
@@ -28,7 +28,7 @@ module Hyrax
|
|
|
28
28
|
# @param user [User]
|
|
29
29
|
# @return [Integer] number of Collections the user created
|
|
30
30
|
def number_of_collections(user = current_user)
|
|
31
|
-
|
|
31
|
+
Hyrax::SolrQueryService.new.with_field_pairs(field_pairs: field_pairs(user)).count
|
|
32
32
|
rescue RSolr::Error::ConnectionRefused
|
|
33
33
|
'n/a'
|
|
34
34
|
end
|
|
@@ -38,9 +38,5 @@ module Hyrax
|
|
|
38
38
|
def field_pairs(user)
|
|
39
39
|
{ DepositSearchBuilder.depositor_field => user.user_key }
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
def count(query)
|
|
43
|
-
Hyrax::SolrService.count(query)
|
|
44
|
-
end
|
|
45
41
|
end
|
|
46
42
|
end
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Hyrax::FileSetHelper
|
|
3
|
+
##
|
|
4
|
+
# @todo inline the "workflow restriction" into the `can?(:download)` check.
|
|
5
|
+
#
|
|
6
|
+
# @param file_set [#id]
|
|
7
|
+
#
|
|
8
|
+
# @return [Boolean] whether to display the download link for the given file
|
|
9
|
+
# set
|
|
10
|
+
def display_media_download_link?(file_set:)
|
|
11
|
+
Hyrax.config.display_media_download_link? &&
|
|
12
|
+
can?(:download, file_set) &&
|
|
13
|
+
!workflow_restriction?(file_set.try(:parent))
|
|
14
|
+
end
|
|
15
|
+
|
|
3
16
|
def parent_path(parent)
|
|
4
17
|
if parent.is_a?(::Collection)
|
|
5
18
|
main_app.collection_path(parent)
|
|
@@ -8,12 +21,19 @@ module Hyrax::FileSetHelper
|
|
|
8
21
|
end
|
|
9
22
|
end
|
|
10
23
|
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
#
|
|
24
|
+
##
|
|
25
|
+
# @deprecated use render(media_display_partial(file_set), file_set: file_set)
|
|
26
|
+
# instead
|
|
27
|
+
#
|
|
28
|
+
# @param presenter [Object]
|
|
29
|
+
# @param locals [Hash{Symbol => Object}]
|
|
14
30
|
def media_display(presenter, locals = {})
|
|
15
|
-
|
|
16
|
-
|
|
31
|
+
Deprecation.warn("the helper `media_display` renders a partial name " \
|
|
32
|
+
"provided by `media_display_partial`. Callers " \
|
|
33
|
+
"should render `media_display_partial(file_set) directly
|
|
34
|
+
instead.")
|
|
35
|
+
|
|
36
|
+
render(media_display_partial(presenter), locals.merge(file_set: presenter))
|
|
17
37
|
end
|
|
18
38
|
|
|
19
39
|
def media_display_partial(file_set)
|
|
@@ -32,5 +52,4 @@ module Hyrax::FileSetHelper
|
|
|
32
52
|
'default'
|
|
33
53
|
end
|
|
34
54
|
end
|
|
35
|
-
# rubocop:enable Metrics/MethodLength
|
|
36
55
|
end
|