hyrax 3.3.0 → 3.4.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/.dassie/config/initializers/hyrax.rb +11 -1
- data/.gitignore +3 -0
- data/.regen +1 -1
- data/.rubocop_fixme.yml +3 -1
- data/Dockerfile +2 -1
- data/app/actors/hyrax/actors/file_actor.rb +6 -4
- data/app/actors/hyrax/actors/transfer_request_actor.rb +3 -7
- data/app/assets/javascripts/hyrax/analytics_events.js +8 -2
- data/app/assets/javascripts/hyrax/autocomplete/linked_data.es6 +1 -3
- data/app/controllers/concerns/hyrax/controller.rb +21 -0
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +83 -59
- data/app/controllers/hyrax/admin/admin_sets_controller.rb +105 -19
- data/app/controllers/hyrax/admin/permission_template_accesses_controller.rb +12 -19
- data/app/controllers/hyrax/batch_edits_controller.rb +12 -3
- data/app/controllers/hyrax/batch_uploads_controller.rb +4 -0
- data/app/controllers/hyrax/citations_controller.rb +1 -1
- data/app/controllers/hyrax/dashboard/collections_controller.rb +19 -10
- data/app/forms/hyrax/forms/administrative_set_form.rb +19 -1
- data/app/forms/hyrax/forms/batch_edit_form.rb +1 -1
- data/app/forms/hyrax/forms/dashboard/nest_collection_form.rb +21 -6
- data/app/forms/hyrax/forms/pcdm_collection_form.rb +1 -0
- data/app/forms/hyrax/forms/permission_template_form.rb +17 -9
- data/app/forms/hyrax/forms/resource_form.rb +9 -5
- data/app/helpers/hyrax/collections_helper.rb +14 -0
- data/app/helpers/hyrax/membership_helper.rb +1 -1
- data/app/helpers/hyrax/trophy_helper.rb +1 -1
- data/app/helpers/hyrax/url_helper.rb +1 -1
- data/app/indexers/hyrax/administrative_set_indexer.rb +8 -2
- data/app/indexers/hyrax/deep_indexing_service.rb +1 -1
- data/app/indexers/hyrax/file_set_indexer.rb +1 -0
- data/app/indexers/hyrax/pcdm_collection_indexer.rb +3 -1
- data/app/indexers/hyrax/thumbnail_indexer.rb +31 -0
- data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +6 -6
- data/app/indexers/hyrax/valkyrie_indexer.rb +4 -2
- data/app/indexers/hyrax/valkyrie_work_indexer.rb +13 -0
- data/app/inputs/controlled_vocabulary_input.rb +2 -0
- data/app/jobs/change_depositor_event_job.rb +47 -0
- data/app/jobs/characterize_job.rb +38 -2
- data/app/jobs/concerns/hyrax/members_permission_job_behavior.rb +1 -1
- data/app/jobs/content_depositor_change_event_job.rb +2 -1
- data/app/jobs/hyrax/propagate_change_depositor_job.rb +32 -0
- data/app/jobs/inherit_permissions_job.rb +1 -1
- data/app/jobs/valkyrie_create_derivatives_job.rb +25 -0
- data/app/jobs/valkyrie_ingest_job.rb +84 -16
- data/app/models/admin_set.rb +2 -2
- data/app/models/collection_branding_info.rb +8 -6
- data/app/models/concerns/hyrax/collection_behavior.rb +2 -2
- data/app/models/concerns/hyrax/file_set/characterization.rb +7 -1
- data/app/models/concerns/hyrax/solr_document/metadata.rb +1 -0
- data/app/models/concerns/hyrax/solr_document_behavior.rb +9 -3
- data/app/models/hyrax/administrative_set.rb +36 -1
- data/app/models/hyrax/collection_type.rb +2 -2
- data/app/models/hyrax/file_metadata.rb +5 -1
- data/app/models/hyrax/file_set.rb +42 -1
- data/app/models/hyrax/pcdm_collection.rb +56 -0
- data/app/models/hyrax/permission_template.rb +11 -5
- data/app/models/hyrax/work.rb +91 -0
- data/app/models/proxy_deposit_request.rb +1 -1
- data/app/presenters/hyrax/admin_set_presenter.rb +2 -2
- data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +2 -2
- data/app/presenters/hyrax/work_show_presenter.rb +7 -3
- data/app/search_builders/hyrax/dashboard/collections_search_builder.rb +2 -2
- data/app/search_builders/hyrax/dashboard/managed_search_filters.rb +44 -4
- data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +2 -2
- data/app/search_builders/hyrax/my/collections_search_builder.rb +11 -4
- data/app/services/hyrax/access_control_list.rb +13 -0
- data/app/services/hyrax/admin_set_create_service.rb +21 -37
- data/app/services/hyrax/change_content_depositor_service.rb +2 -2
- data/app/services/hyrax/change_depositor_service.rb +70 -0
- data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +1 -1
- data/app/services/hyrax/collections/nested_collection_query_service.rb +23 -11
- data/app/services/hyrax/custom_queries/navigators/child_file_sets_navigator.rb +45 -0
- data/app/services/hyrax/custom_queries/navigators/child_filesets_navigator.rb +7 -2
- data/app/services/hyrax/custom_queries/navigators/parent_work_navigator.rb +54 -0
- data/app/services/hyrax/default_middleware_stack.rb +3 -0
- data/app/services/hyrax/file_set_derivatives_service.rb +21 -2
- data/app/services/hyrax/file_set_type_service.rb +2 -5
- data/app/services/hyrax/listeners/file_metadata_listener.rb +20 -1
- data/app/services/hyrax/listeners/member_cleanup_listener.rb +23 -3
- data/app/services/hyrax/listeners/metadata_index_listener.rb +39 -0
- data/app/services/hyrax/listeners/proxy_deposit_listener.rb +14 -8
- data/app/services/hyrax/location_service.rb +33 -0
- data/app/services/hyrax/multiple_membership_checker.rb +44 -1
- data/app/services/hyrax/resource_visibility_propagator.rb +1 -1
- data/app/services/hyrax/simple_schema_loader.rb +5 -1
- data/app/services/hyrax/solr_query_service.rb +12 -7
- data/app/services/hyrax/thumbnail_path_service.rb +1 -1
- data/app/services/hyrax/work_uploads_handler.rb +0 -10
- data/app/validators/hyrax/collection_membership_validator.rb +38 -0
- data/app/views/catalog/_index_header_list_hyrax_pcdm_collection.html.erb +4 -0
- data/app/views/hyrax/admin/admin_sets/_form_participant_table.html.erb +2 -2
- data/app/views/hyrax/admin/admin_sets/_form_participants.html.erb +2 -2
- data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +2 -2
- data/app/views/hyrax/admin/admin_sets/_form_workflow.erb +1 -1
- data/app/views/hyrax/admin/collection_types/index.html.erb +1 -1
- data/app/views/hyrax/base/_form.html.erb +1 -1
- data/app/views/hyrax/base/_form_child_work_relationships.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_default_group.html.erb +2 -2
- data/app/views/hyrax/dashboard/collections/_form.html.erb +21 -15
- data/app/views/hyrax/dashboard/collections/_form_discovery.html.erb +6 -3
- data/app/views/hyrax/dashboard/collections/_form_share.html.erb +2 -2
- data/app/views/hyrax/dashboard/collections/_form_share_table.html.erb +3 -3
- data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +2 -2
- data/app/views/hyrax/dashboard/works/_default_group.html.erb +1 -1
- data/app/views/hyrax/dashboard/works/_list_works.html.erb +1 -1
- data/app/views/hyrax/file_sets/_actions.html.erb +2 -2
- data/app/views/hyrax/my/_work_action_menu.html.erb +8 -9
- data/app/views/hyrax/my/collections/_default_group.html.erb +2 -2
- data/app/views/hyrax/my/collections/_list_collections.html.erb +2 -2
- data/app/views/hyrax/my/collections/index.html.erb +3 -2
- data/app/views/hyrax/my/works/_default_group.html.erb +1 -1
- data/app/views/hyrax/my/works/_list_works.html.erb +1 -2
- data/app/views/hyrax/my/works/index.html.erb +4 -2
- data/chart/hyrax/Chart.yaml +2 -2
- data/chart/hyrax/README.md +22 -1
- data/config/initializers/listeners.rb +0 -1
- data/config/locales/hyrax.de.yml +6 -5
- data/config/locales/hyrax.en.yml +30 -28
- data/config/locales/hyrax.es.yml +10 -9
- data/config/locales/hyrax.fr.yml +2 -1
- data/config/locales/hyrax.it.yml +3 -2
- data/config/locales/hyrax.pt-BR.yml +2 -1
- data/config/locales/hyrax.zh.yml +2 -1
- data/config/metadata/basic_metadata.yaml +2 -0
- data/config/metadata/core_metadata.yaml +1 -1
- data/docker-compose.yml +46 -42
- data/documentation/developing-your-hyrax-based-app.md +1 -1
- data/documentation/legacyREADME.md +1 -1
- data/lib/hyrax/administrative_set_name.rb +18 -0
- data/lib/hyrax/collection_name.rb +2 -0
- data/lib/hyrax/configuration.rb +10 -0
- data/lib/hyrax/controlled_vocabularies/location.rb +9 -2
- data/lib/hyrax/controlled_vocabularies/resource_label_caching.rb +42 -0
- data/lib/hyrax/controlled_vocabularies.rb +1 -0
- data/lib/hyrax/publisher.rb +45 -0
- data/lib/hyrax/specs/capybara.rb +1 -1
- data/lib/hyrax/specs/shared_specs/hydra_works.rb +11 -4
- data/lib/hyrax/specs/shared_specs/indexers.rb +117 -3
- data/lib/hyrax/transactions/admin_set_create.rb +2 -1
- data/lib/hyrax/transactions/admin_set_destroy.rb +22 -0
- data/lib/hyrax/transactions/admin_set_update.rb +21 -0
- data/lib/hyrax/transactions/collection_destroy.rb +22 -0
- data/lib/hyrax/transactions/collection_update.rb +3 -2
- data/lib/hyrax/transactions/container.rb +87 -23
- data/lib/hyrax/transactions/create_work.rb +3 -0
- data/lib/hyrax/transactions/destroy_work.rb +3 -0
- data/lib/hyrax/transactions/steps/apply_collection_permission_template.rb +2 -0
- data/lib/hyrax/transactions/steps/apply_permission_template.rb +2 -0
- data/lib/hyrax/transactions/steps/apply_visibility.rb +2 -0
- data/lib/hyrax/transactions/steps/change_depositor.rb +46 -0
- data/lib/hyrax/transactions/steps/check_for_empty_admin_set.rb +36 -0
- data/lib/hyrax/transactions/steps/delete_access_control.rb +32 -0
- data/lib/hyrax/transactions/steps/delete_resource.rb +19 -3
- data/lib/hyrax/transactions/steps/destroy_work.rb +3 -1
- data/lib/hyrax/transactions/steps/ensure_permission_template.rb +2 -0
- data/lib/hyrax/transactions/steps/save.rb +24 -6
- data/lib/hyrax/transactions/steps/save_access_control.rb +2 -2
- data/lib/hyrax/transactions/steps/save_work.rb +3 -0
- data/lib/hyrax/transactions/steps/set_user_as_creator.rb +41 -0
- data/lib/hyrax/transactions/steps/update_work_members.rb +51 -0
- data/lib/hyrax/transactions/update_work.rb +4 -3
- data/lib/hyrax/transactions/work_create.rb +1 -1
- data/lib/hyrax/transactions/work_destroy.rb +2 -1
- data/lib/hyrax/transactions/work_update.rb +19 -0
- data/lib/hyrax/version.rb +1 -1
- data/lib/wings/attribute_transformer.rb +5 -1
- data/lib/wings/setup.rb +3 -1
- data/lib/wings/valkyrie/query_service.rb +2 -1
- data/lib/wings/valkyrie/storage.rb +7 -1
- data/template.rb +1 -1
- metadata +24 -3
|
@@ -59,10 +59,11 @@ module Hyrax
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
##
|
|
62
|
+
# @param join_with [String] the connector (eg. 'AND', 'OR') used to join each clause (default: 'AND')
|
|
62
63
|
# @return [String] the combined query that can be submitted to solr
|
|
63
|
-
def build
|
|
64
|
+
def build(join_with: 'AND')
|
|
64
65
|
return 'id:NEVER_USE_THIS_ID' if @query.blank? # forces this method to always return a valid solr query
|
|
65
|
-
@query.join(
|
|
66
|
+
@query.join(padded_join_with(join_with))
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
##
|
|
@@ -106,8 +107,8 @@ module Hyrax
|
|
|
106
107
|
|
|
107
108
|
##
|
|
108
109
|
# @param field_pairs [Hash] a list of pairs of property name and values (e.g. { field1: values, field2: values })
|
|
109
|
-
# @param join_with [String] the connector used to join the field pairs (default: '
|
|
110
|
-
# @param type [String] type of query to run.
|
|
110
|
+
# @param join_with [String] the connector (eg. 'AND', 'OR') used to join the field pairs (default: 'AND')
|
|
111
|
+
# @param type [String] type of query to run (e.g. 'raw', 'field', 'terms') (default: 'field')
|
|
111
112
|
# @return [SolrQueryService] the existing service with field_pair query appended
|
|
112
113
|
def with_field_pairs(field_pairs: {}, join_with: default_join_with, type: 'field')
|
|
113
114
|
pairs_query = construct_query_for_pairs(field_pairs, join_with, type)
|
|
@@ -140,7 +141,7 @@ module Hyrax
|
|
|
140
141
|
|
|
141
142
|
# Construct a solr query from a list of pairs (e.g. { field1: values, field2: values })
|
|
142
143
|
# @param [Hash] field_pairs a list of pairs of property name and values
|
|
143
|
-
# @param [String] join_with the value we're joining the clauses with (default: '
|
|
144
|
+
# @param [String] join_with the value (e.g. 'AND', 'OR') we're joining the clauses with (default: 'AND')
|
|
144
145
|
# @param [String] type of query to run. Either 'raw' or 'field' (default: 'field')
|
|
145
146
|
# @return [String] a solr query
|
|
146
147
|
# @example
|
|
@@ -150,7 +151,7 @@ module Hyrax
|
|
|
150
151
|
clauses = pairs_to_clauses(field_pairs, type)
|
|
151
152
|
return "" if clauses.count.zero?
|
|
152
153
|
return clauses.first if clauses.count == 1
|
|
153
|
-
"(#{clauses.join(join_with)})"
|
|
154
|
+
"(#{clauses.join(padded_join_with(join_with))})"
|
|
154
155
|
end
|
|
155
156
|
|
|
156
157
|
# Construct a solr query from the model (e.g. Collection, Monograph)
|
|
@@ -184,7 +185,11 @@ module Hyrax
|
|
|
184
185
|
end
|
|
185
186
|
|
|
186
187
|
def default_join_with
|
|
187
|
-
'
|
|
188
|
+
'AND'
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def padded_join_with(join_with)
|
|
192
|
+
" #{join_with.strip} "
|
|
188
193
|
end
|
|
189
194
|
|
|
190
195
|
# @param [Array<Array>] pairs a list of (key, value) pairs. The value itself may
|
|
@@ -116,9 +116,6 @@ module Hyrax
|
|
|
116
116
|
|
|
117
117
|
ValkyrieIngestJob.perform_later(file)
|
|
118
118
|
|
|
119
|
-
# this triggers the re-index
|
|
120
|
-
Hyrax.publisher.publish('object.metadata.updated', object: file_set, user: file.user)
|
|
121
|
-
|
|
122
119
|
{ file_set: file_set, user: file.user }
|
|
123
120
|
end
|
|
124
121
|
|
|
@@ -163,13 +160,6 @@ module Hyrax
|
|
|
163
160
|
@target_permissions ||= Hyrax::AccessControlList.new(resource: work)
|
|
164
161
|
end
|
|
165
162
|
|
|
166
|
-
##
|
|
167
|
-
# @api private
|
|
168
|
-
# @return [JobIoWrapper]
|
|
169
|
-
def wrap_file(file, file_set)
|
|
170
|
-
JobIoWrapper.create_with_varied_file_handling!(user: file.user, file: file, relation: :original_file, file_set: file_set)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
163
|
##
|
|
174
164
|
# @api private
|
|
175
165
|
#
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Hyrax
|
|
3
|
+
# Validates that the record passes the multiple membership checker
|
|
4
|
+
class CollectionMembershipValidator < ActiveModel::Validator
|
|
5
|
+
def validate(record)
|
|
6
|
+
update_collections(record)
|
|
7
|
+
validation = validate_multi_membership(record)
|
|
8
|
+
return if validation == true
|
|
9
|
+
record.errors[:member_of_collection_ids] << validation
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def validate_multi_membership(record)
|
|
15
|
+
# collections-in-collections do not have multi-membership restrictions
|
|
16
|
+
return true if record.is_a? Hyrax::Forms::PcdmCollectionForm
|
|
17
|
+
|
|
18
|
+
Hyrax::MultipleMembershipChecker.new(item: record).validate
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def update_collections(record)
|
|
22
|
+
record.member_of_collection_ids = collections_ids(record)
|
|
23
|
+
record.member_of_collection_ids.uniq!
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def collections_ids(record)
|
|
27
|
+
collection_ids = []
|
|
28
|
+
if record.member_of_collections_attributes.present?
|
|
29
|
+
record.member_of_collections_attributes
|
|
30
|
+
.each do |_k, h|
|
|
31
|
+
next if h["_destroy"] == "true"
|
|
32
|
+
collection_ids << Valkyrie::ID.new(h["id"])
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
collection_ids
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h3><%= t(".#{access}.title") %></h3>
|
|
2
2
|
<p><%= t(".#{access}.help") %></p>
|
|
3
|
-
<% if @form.
|
|
3
|
+
<% if collection_permission_template_form_for(form: @form).access_grants.select(&filter).any? %>
|
|
4
4
|
<table class="table table-striped share-status">
|
|
5
5
|
<thead>
|
|
6
6
|
<tr>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</tr>
|
|
11
11
|
</thead>
|
|
12
12
|
<tbody>
|
|
13
|
-
<% @form.
|
|
13
|
+
<% collection_permission_template_form_for(form: @form).access_grants.select(&filter).each do |g| %>
|
|
14
14
|
<tr>
|
|
15
15
|
<td data-agent="<%= g.agent_id %>"><%= g.label %></td>
|
|
16
16
|
<td><%= g.agent_type.titleize %></td>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h3><%= t('.add_participants') %></h3>
|
|
6
6
|
<% access_options = options_for_select([['Manager', 'manage'], ['Depositor', 'deposit'], ['Viewer', 'view']]) %>
|
|
7
7
|
<div class="sharing-row-form">
|
|
8
|
-
<%= simple_form_for @form
|
|
8
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
9
9
|
url: [hyrax, :admin, @form, :permission_template],
|
|
10
10
|
html: { id: 'group-participants-form', class: 'form-inline' } do |f| %>
|
|
11
11
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
</div>
|
|
34
34
|
|
|
35
35
|
<div class="sharing-row-form">
|
|
36
|
-
<%= simple_form_for @form
|
|
36
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
37
37
|
url: [hyrax, :admin, @form, :permission_template],
|
|
38
38
|
html: { id: 'user-participants-form', class: 'form-inline add-users' } do |f| %>
|
|
39
39
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div id="visibility" class="tab-pane">
|
|
2
2
|
<div class="panel panel-default labels">
|
|
3
|
-
<%= simple_form_for @form
|
|
3
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
4
4
|
url: [hyrax, :admin, @form, :permission_template],
|
|
5
5
|
html: { class: 'nav-safety' } do |f| %>
|
|
6
6
|
<div class="panel-body">
|
|
@@ -62,4 +62,4 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
<% end %>
|
|
64
64
|
</div>
|
|
65
|
-
</div>
|
|
65
|
+
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div id="workflow" class="tab-pane">
|
|
2
2
|
<div class="panel panel-default labels">
|
|
3
|
-
<%= simple_form_for @form
|
|
3
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
4
4
|
url: [hyrax, :admin, @form, :permission_template],
|
|
5
5
|
html: { id: 'form_workflows', class: 'nav-safety' } do |f| %>
|
|
6
6
|
<% if f.object.available_workflows.any? %>
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
<button class="btn btn-danger btn-sm delete-collection-type"
|
|
42
42
|
data-collection-type="<%= collection_type.to_json %>"
|
|
43
43
|
data-collection-type-index="<%= hyrax.dashboard_collections_path({ 'f[collection_type_gid_ssim][]' => collection_type.to_global_id.to_s, 'f[has_model_ssim][]' => 'Collection' }) %>"
|
|
44
|
-
data-has-collections="<%= collection_type.collections? %>">
|
|
44
|
+
data-has-collections="<%= collection_type.collections.any? %>">
|
|
45
45
|
<%= t('helpers.action.delete') %>
|
|
46
46
|
</button>
|
|
47
47
|
<% end %>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<%= render 'form_visibility_error', f: f %>
|
|
15
15
|
</div>
|
|
16
16
|
<% end %>
|
|
17
|
-
<% if Flipflop.batch_upload? && f.object.
|
|
17
|
+
<% if Flipflop.batch_upload? && !f.object.persisted? %>
|
|
18
18
|
<% provide :metadata_tab do %>
|
|
19
19
|
<p class="switch-upload-type"><%= t('.batch_upload_hint') %> <%= link_to t('.batch_link'), hyrax.new_batch_upload_path(payload_concern: @form.model.class) %></p>
|
|
20
20
|
<% end %>
|
|
@@ -18,7 +18,7 @@ HTML Properties:
|
|
|
18
18
|
data: {
|
|
19
19
|
autocomplete: 'work',
|
|
20
20
|
'autocomplete-url' => Rails.application.routes.url_helpers.qa_path + '/search/find_works',
|
|
21
|
-
'exclude-work': f.object.model.id # exclude this item from the result set.
|
|
21
|
+
'exclude-work': f.object.model.id.to_s # exclude this item from the result set.
|
|
22
22
|
} %>
|
|
23
23
|
<a href="#" onclick="return false;" class="btn btn-primary" data-behavior="add-relationship"><%= t('.add') %></a>
|
|
24
24
|
</div>
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
<th><%= t("hyrax.dashboard.my.heading.access") %></th>
|
|
17
17
|
<% end %>
|
|
18
18
|
<th><%= t("hyrax.dashboard.my.heading.type") %></th>
|
|
19
|
-
<th><%= t("hyrax.dashboard.my.heading.collection.visibility") %></th>
|
|
20
|
-
<th><%= t("hyrax.dashboard.my.heading.items") %></th>
|
|
21
19
|
<th><%= t("hyrax.dashboard.my.heading.last_modified") %></th>
|
|
20
|
+
<th><%= t("hyrax.dashboard.my.heading.items") %></th>
|
|
21
|
+
<th><%= t("hyrax.dashboard.my.heading.collection.visibility") %></th>
|
|
22
22
|
<th><%= t("hyrax.dashboard.my.heading.action") %></th>
|
|
23
23
|
</tr>
|
|
24
24
|
</thead>
|
|
@@ -72,29 +72,35 @@
|
|
|
72
72
|
</div> <!-- end description -->
|
|
73
73
|
|
|
74
74
|
<% if @form.persisted? %>
|
|
75
|
-
|
|
76
|
-
<div class="
|
|
77
|
-
<div class="panel-
|
|
78
|
-
|
|
75
|
+
<% if collection_brandable?(collection: @collection) %>
|
|
76
|
+
<div id="branding" class="tab-pane">
|
|
77
|
+
<div class="panel panel-default labels">
|
|
78
|
+
<div class="panel-body">
|
|
79
|
+
<%= render 'form_branding', f: f %>
|
|
80
|
+
</div>
|
|
79
81
|
</div>
|
|
80
82
|
</div>
|
|
81
|
-
|
|
83
|
+
<% end %>
|
|
82
84
|
|
|
83
|
-
|
|
84
|
-
<div class="
|
|
85
|
-
<div class="panel-
|
|
86
|
-
|
|
85
|
+
<% if collection_discoverable?(collection: @collection) %>
|
|
86
|
+
<div id="discovery" class="tab-pane">
|
|
87
|
+
<div class="panel panel-default labels">
|
|
88
|
+
<div class="panel-body">
|
|
89
|
+
<%= render 'form_discovery', f: f %>
|
|
90
|
+
</div>
|
|
87
91
|
</div>
|
|
88
92
|
</div>
|
|
89
|
-
|
|
93
|
+
<% end %>
|
|
90
94
|
|
|
91
|
-
|
|
92
|
-
<div
|
|
93
|
-
<div class="panel-
|
|
94
|
-
|
|
95
|
+
<% if collection_sharable?(collection: @collection) %>
|
|
96
|
+
<div id="sharing" class="tab-pane">
|
|
97
|
+
<div class="panel panel-default labels" id="collection_permissions" data-param-key="<%= f.object.model_name.param_key %>">
|
|
98
|
+
<div class="panel-body">
|
|
99
|
+
<%= render 'form_share', f: f %>
|
|
100
|
+
</div>
|
|
95
101
|
</div>
|
|
96
102
|
</div>
|
|
97
|
-
|
|
103
|
+
<% end %>
|
|
98
104
|
<% end %>
|
|
99
105
|
|
|
100
106
|
<div class="panel-footer">
|
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
<div class="form-group">
|
|
7
7
|
<label class="radio">
|
|
8
|
-
|
|
8
|
+
<%= f.radio_button :visibility, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC %>
|
|
9
|
+
<strong><%= t('hyrax.visibility.open.text') %></strong> - <%= t('hyrax.visibility.open.note_html') %>
|
|
9
10
|
</label>
|
|
10
11
|
<label class="radio">
|
|
11
|
-
|
|
12
|
+
<%= f.radio_button :visibility, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED %>
|
|
13
|
+
<strong><%= t('hyrax.visibility.authenticated.text', institution: institution_name) %></strong> - <%= t('hyrax.visibility.authenticated.note_html', institution: institution_name) %>
|
|
12
14
|
</label>
|
|
13
15
|
<label class="radio">
|
|
14
|
-
|
|
16
|
+
<%= f.radio_button :visibility, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE %>
|
|
17
|
+
<strong><%= t('hyrax.visibility.restricted.text') %></strong>- <%= t('hyrax.visibility.restricted.note_html') %>
|
|
15
18
|
</label>
|
|
16
19
|
</div>
|
|
17
20
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<!-- Add group form -->
|
|
10
10
|
<div class="form-add-sharing-wrapper" data-id="<%= @form.id %>">
|
|
11
|
-
<%= simple_form_for @form
|
|
11
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
12
12
|
url: [hyrax, :dashboard, @form, :permission_template],
|
|
13
13
|
html: { id: 'group-participants-form' } do |f| %>
|
|
14
14
|
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
<!-- Add user form -->
|
|
42
42
|
<div class="form-add-sharing-wrapper" data-id="<%= @form.id %>">
|
|
43
|
-
<%= simple_form_for @form
|
|
43
|
+
<%= simple_form_for collection_permission_template_form_for(form: @form),
|
|
44
44
|
url: [hyrax, :dashboard, @form, :permission_template],
|
|
45
45
|
html: { id: 'user-participants-form' } do |f| %>
|
|
46
46
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<h3><%= t(".#{access}.title") %></h3>
|
|
2
2
|
<p><%= t(".#{access}.help") %></p>
|
|
3
|
-
<p><%= t(".#{access}.help_with_works", type_title: @
|
|
4
|
-
<% if @form.
|
|
3
|
+
<p><%= t(".#{access}.help_with_works", type_title: @collection_type.title) if @collection_type.share_applies_to_new_works? && access != 'depositors' %></p>
|
|
4
|
+
<% if collection_permission_template_form_for(form: @form).access_grants.select(&filter).any? %>
|
|
5
5
|
<table class="table table-striped share-status">
|
|
6
6
|
<thead>
|
|
7
7
|
<tr>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</tr>
|
|
12
12
|
</thead>
|
|
13
13
|
<tbody>
|
|
14
|
-
<% @form.
|
|
14
|
+
<% collection_permission_template_form_for(form: @form).access_grants.select(&filter).each do |g| %>
|
|
15
15
|
<tr>
|
|
16
16
|
<td data-agent="<%= g.agent_id %>"><%= g.label %></td>
|
|
17
17
|
<td><%= g.agent_type.titleize %></td>
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
<td class="collection_type">
|
|
62
62
|
<%= collection_presenter.collection_type_badge %>
|
|
63
63
|
</td>
|
|
64
|
-
<td><%= collection_presenter.
|
|
64
|
+
<td class="date"><%= collection_presenter.modified_date %></td>
|
|
65
65
|
<td><%= collection_presenter.total_viewable_items %></td>
|
|
66
|
-
<td
|
|
66
|
+
<td><%= collection_presenter.permission_badge %> </td>
|
|
67
67
|
<td>
|
|
68
68
|
<% if collection_presenter.solr_document.admin_set? %>
|
|
69
69
|
<%= render '/hyrax/my/admin_set_action_menu', admin_set_presenter: collection_presenter %>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<tr>
|
|
6
6
|
<th class="check-all"><label for="check_all" class="sr-only"><%= t("hyrax.dashboard.my.sr.check_all_label") %></label><%= render_check_all %></th>
|
|
7
7
|
<th><%= t("hyrax.dashboard.my.heading.title") %></th>
|
|
8
|
-
<th class="date text-center"><%= t("hyrax.dashboard.my.heading.
|
|
8
|
+
<th class="date text-center"><%= t("hyrax.dashboard.my.heading.date_modified") %></th>
|
|
9
9
|
<th class="text-center"><%= t("blacklight.search.fields.facet.suppressed_bsi") %></th>
|
|
10
10
|
<th class="text-center"><%= t("hyrax.dashboard.my.heading.work.visibility") %></th>
|
|
11
11
|
<th class="text-center"><%= t("hyrax.dashboard.my.heading.action") %></th>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
</div>
|
|
28
28
|
</td>
|
|
29
29
|
|
|
30
|
-
<td class=
|
|
30
|
+
<td class="date text-center"><%= document.date_modified %></td>
|
|
31
31
|
<td class='workflow-state text-center'><%= presenter.workflow.state_label %></td>
|
|
32
32
|
<td class='text-center'><%= render_visibility_link document %></td>
|
|
33
33
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<% if (can?(:download, file_set.id) || can?(:destroy, file_set.id) || can?(:edit, file_set.id)) && !workflow_restriction?(
|
|
1
|
+
<% if (can?(:download, file_set.id) || can?(:destroy, file_set.id) || can?(:edit, file_set.id)) && !workflow_restriction?(@parent) %>
|
|
2
2
|
<% if can?(:download, file_set.id) && !(can?(:edit, file_set.id) || can?(:destroy, file_set.id)) %>
|
|
3
3
|
<%= link_to t('.download'),
|
|
4
4
|
hyrax.download_path(file_set),
|
|
@@ -51,4 +51,4 @@
|
|
|
51
51
|
</ul>
|
|
52
52
|
</div>
|
|
53
53
|
<% end %>
|
|
54
|
-
<% end %>
|
|
54
|
+
<% end %>
|
|
@@ -12,34 +12,33 @@
|
|
|
12
12
|
|
|
13
13
|
<% if can? :edit, document.id %>
|
|
14
14
|
<li role="menuitem" tabindex="-1">
|
|
15
|
-
<%= link_to [main_app, :edit, document]
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
<%= link_to [main_app, :edit, document],
|
|
16
|
+
id: 'action-edit-work' do %>
|
|
17
|
+
<%= t("hyrax.dashboard.my.action.edit_work") %>
|
|
18
18
|
<% end %>
|
|
19
19
|
</li>
|
|
20
20
|
|
|
21
21
|
<li role="menuitem" tabindex="-1">
|
|
22
22
|
<%= link_to [main_app, document],
|
|
23
23
|
method: :delete,
|
|
24
|
+
id: 'action-delete-work',
|
|
24
25
|
data: {
|
|
25
26
|
confirm: t("hyrax.dashboard.my.action.work_confirmation", application_name: application_name) } do %>
|
|
26
|
-
|
|
27
|
-
<span> <%= t("hyrax.dashboard.my.action.delete_work") %> </span>
|
|
27
|
+
<%= t("hyrax.dashboard.my.action.delete_work") %>
|
|
28
28
|
<% end %>
|
|
29
29
|
</li>
|
|
30
30
|
<% end %>
|
|
31
31
|
|
|
32
32
|
<li role="menuitem" tabindex="-1">
|
|
33
33
|
<%= display_trophy_link(current_user, document.id) do |text| %>
|
|
34
|
-
|
|
34
|
+
<%= text %>
|
|
35
35
|
<% end %>
|
|
36
36
|
</li>
|
|
37
37
|
|
|
38
38
|
<% if can? :transfer, document.id %>
|
|
39
39
|
<li role="menuitem" tabindex="-1">
|
|
40
|
-
<%= link_to(hyrax.new_work_transfer_path(document.id), class: 'itemicon itemtransfer', title: t("hyrax.dashboard.my.action.transfer")) do %>
|
|
41
|
-
|
|
42
|
-
<span> <%= t("hyrax.dashboard.my.action.transfer") %> </span>
|
|
40
|
+
<%= link_to(hyrax.new_work_transfer_path(document.id), id: 'action-transfer-work', class: 'itemicon itemtransfer', title: t("hyrax.dashboard.my.action.transfer")) do %>
|
|
41
|
+
<%= t("hyrax.dashboard.my.action.transfer") %>
|
|
43
42
|
<% end %>
|
|
44
43
|
</li>
|
|
45
44
|
<% end %>
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<th class="check-all"><label for="check_all" class="sr-only"><%= t("hyrax.dashboard.my.sr.check_all_label") %></label><%= render_check_all %></th>
|
|
6
6
|
<th><%= t("hyrax.dashboard.my.heading.title") %></th>
|
|
7
7
|
<th><%= t("hyrax.dashboard.my.heading.type") %></th>
|
|
8
|
-
<th><%= t("hyrax.dashboard.my.heading.collection.visibility") %></th>
|
|
9
|
-
<th><%= t("hyrax.dashboard.my.heading.items") %></th>
|
|
10
8
|
<th><%= t("hyrax.dashboard.my.heading.last_modified") %></th>
|
|
9
|
+
<th><%= t("hyrax.dashboard.my.heading.items") %></th>
|
|
10
|
+
<th><%= t("hyrax.dashboard.my.heading.collection.visibility") %></th>
|
|
11
11
|
<th><%= t("hyrax.dashboard.my.heading.action") %></th>
|
|
12
12
|
</tr>
|
|
13
13
|
</thead>
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
<td class="collection_type">
|
|
61
61
|
<%= collection_presenter.collection_type_badge %>
|
|
62
62
|
</td>
|
|
63
|
-
<td><%= collection_presenter.
|
|
63
|
+
<td class="date"><%= collection_presenter.modified_date %> </td>
|
|
64
64
|
<td><%= collection_presenter.total_viewable_items %></td>
|
|
65
|
-
<td
|
|
65
|
+
<td><%= collection_presenter.permission_badge %></td>
|
|
66
66
|
<td>
|
|
67
67
|
<% if collection_presenter.solr_document.admin_set? %>
|
|
68
68
|
<%= render '/hyrax/my/admin_set_action_menu', admin_set_presenter: collection_presenter %>
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
<% if @collection_type_list_presenter.many? %>
|
|
26
26
|
<% # modal to select type %>
|
|
27
27
|
<button type="button"
|
|
28
|
+
id="add-new-collection-button"
|
|
28
29
|
class="btn btn-primary"
|
|
29
30
|
data-toggle="modal"
|
|
30
31
|
data-target="#collectiontypes-to-create"
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
</button>
|
|
34
35
|
<% else @collection_type_list_presenter.any? %>
|
|
35
36
|
<% # link directly to create collection form with type %>
|
|
36
|
-
<%= link_to(t('helpers.action.collection.new'), append_collection_type_url(new_dashboard_collection_path, @collection_type_list_presenter.first_collection_type.id), class: 'btn btn-primary') %>
|
|
37
|
+
<%= link_to(t('helpers.action.collection.new'), append_collection_type_url(new_dashboard_collection_path, @collection_type_list_presenter.first_collection_type.id), id: 'add-new-collection-button', class: 'btn btn-primary') %>
|
|
37
38
|
<% end %>
|
|
38
39
|
<% end %>
|
|
39
40
|
</section>
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
<% elsif current_page?(hyrax.dashboard_collections_path(locale: nil)) && !current_ability.admin? %>
|
|
47
48
|
<span class="count-display"><%= I18n.t('hyrax.my.count.collections.you_manage', total_count: @response.total_count).html_safe %></span>
|
|
48
49
|
<% else %>
|
|
49
|
-
<span class="count-display"><%= I18n.t('hyrax.my.count.collections.in_repo', total_count: @response.total_count).html_safe %></span>
|
|
50
|
+
<span class="count-display"><%= I18n.t('hyrax.my.count.collections.in_repo', total_count: @response.total_count).html_safe %></span>
|
|
50
51
|
<% end %>
|
|
51
52
|
</div>
|
|
52
53
|
<div class="panel-body">
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<tr>
|
|
6
6
|
<th class="check-all"><label for="check_all" class="sr-only"><%= t("hyrax.dashboard.my.sr.check_all_label") %></label><%= render_check_all %></th>
|
|
7
7
|
<th><%= t("hyrax.dashboard.my.heading.title") %></th>
|
|
8
|
-
<th class='text-center'><%= t("hyrax.dashboard.my.heading.
|
|
8
|
+
<th class='text-center'><%= t("hyrax.dashboard.my.heading.last_modified") %></th>
|
|
9
9
|
<th class='text-center'><%= t("hyrax.dashboard.my.heading.highlighted") %></th>
|
|
10
10
|
<th class='text-center'><%= t("hyrax.dashboard.my.heading.work.visibility") %></th>
|
|
11
11
|
<th class='text-center'><%= t("hyrax.dashboard.my.heading.action") %></th>
|
|
@@ -28,8 +28,7 @@
|
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
30
|
</td>
|
|
31
|
-
|
|
32
|
-
<td class="date text-center"><%= document.date_uploaded %></td>
|
|
31
|
+
<td class="date text-center"><%= document.date_modified %></td>
|
|
33
32
|
<td class='text-center'>
|
|
34
33
|
<span class="fa <%= current_user.trophies.where(work_id: document.id).exists? ? 'fa-star highlighted-work' : 'fa-star-o trophy-off' %>" aria-hidden="true"></span></td>
|
|
35
34
|
<td class='text-center'><%= render_visibility_link document %></td>
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
t(:'helpers.action.work.new'),
|
|
31
31
|
'#',
|
|
32
32
|
data: { behavior: "select-work", target: "#worktypes-to-create", 'create-type' => 'single' },
|
|
33
|
+
id: 'add-new-work-button',
|
|
33
34
|
class: 'btn btn-primary'
|
|
34
35
|
) %>
|
|
35
36
|
<% else # simple link to the first work type %>
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
<%= link_to(
|
|
44
45
|
t(:'helpers.action.work.new'),
|
|
45
46
|
new_polymorphic_path([main_app, @create_work_presenter.first_model]),
|
|
47
|
+
id: 'add-new-work-button',
|
|
46
48
|
class: 'btn btn-primary'
|
|
47
49
|
) %>
|
|
48
50
|
<% end %>
|
|
@@ -60,9 +62,9 @@
|
|
|
60
62
|
<% elsif current_page?(hyrax.dashboard_works_path(locale: nil)) && !current_ability.admin? %>
|
|
61
63
|
<span class="count-display"><%= I18n.t('hyrax.my.count.works.you_manage', total_count: @response.total_count).html_safe %></span>
|
|
62
64
|
<% else %>
|
|
63
|
-
<span class="count-display"><%= I18n.t('hyrax.my.count.works.in_repo', total_count: @response.total_count).html_safe %></span>
|
|
65
|
+
<span class="count-display"><%= I18n.t('hyrax.my.count.works.in_repo', total_count: @response.total_count).html_safe %></span>
|
|
64
66
|
<% end %>
|
|
65
|
-
</div>
|
|
67
|
+
</div>
|
|
66
68
|
<div class="panel-body">
|
|
67
69
|
<%= render 'search_header' %>
|
|
68
70
|
<h2 class="sr-only"><%= t('hyrax.my.count.works.works_listing') %></h2>
|
data/chart/hyrax/Chart.yaml
CHANGED
data/chart/hyrax/README.md
CHANGED
|
@@ -116,7 +116,7 @@ Then update the helm charts with the following:
|
|
|
116
116
|
HELM_EXPERIMENTAL_OCI=1 helm dependency update chart/hyrax
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
If your `helm` version is before 3.8, without the `HELM_EXPERIMENTAL_OCI=1` switch you might see the following error:
|
|
120
120
|
|
|
121
121
|
```sh
|
|
122
122
|
repository oci://ghcr.io/samvera is an OCI registry: this feature has been marked as experimental and is not enabled by default. Please set HELM_EXPERIMENTAL_OCI=1 in your environment to use this feature”
|
|
@@ -142,6 +142,27 @@ Some shell commands of house cleaning and destruction:
|
|
|
142
142
|
* Remove hanging docker instances: `docker rm $(docker ps -a -q) -f`
|
|
143
143
|
* Removing dangling docker images: `docker rmi $(docker images -f "dangling=true" -q)`
|
|
144
144
|
|
|
145
|
+
## Building and Pushing the Chart Package
|
|
146
|
+
|
|
147
|
+
We currently build and push new chart versions manually. This needs to happen
|
|
148
|
+
any time the chart version in [`Chart.yaml`](./Chart.yaml) is incremented.
|
|
149
|
+
|
|
150
|
+
To publish the Hyrax chart, you'll need to be in one of the GitHub groups with
|
|
151
|
+
push permissions. These groups are:
|
|
152
|
+
|
|
153
|
+
- `@samvera/admins`
|
|
154
|
+
- `@samvera/hyrax` (and all its subgroups)
|
|
155
|
+
|
|
156
|
+
To build the package, it's helpful to have a clean checkout of the current
|
|
157
|
+
`main` branch, then:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
HELM_EXPERIMENTAL_OCI=1 helm dependency update chart/hyrax
|
|
161
|
+
HELM_EXPERIMENTAL_OCI=1 helm package chart/hyrax
|
|
162
|
+
HELM_EXPERIMENTAL_OCI=1 helm push hyrax-[VERSION].tgz oci://ghcr.io/samvera/charts
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
|
|
145
166
|
[containers]: ../../CONTAINERS.md#hyrax-image
|
|
146
167
|
[dassie]: ../../.dassie/README.md
|
|
147
168
|
[dassie-image]: https://hub.docker.com/r/samveralabs/dassie
|
|
@@ -9,7 +9,6 @@ Hyrax.publisher.subscribe(Hyrax::Listeners::FileSetLifecycleNotificationListener
|
|
|
9
9
|
Hyrax.publisher.subscribe(Hyrax::Listeners::MemberCleanupListener.new)
|
|
10
10
|
Hyrax.publisher.subscribe(Hyrax::Listeners::MetadataIndexListener.new)
|
|
11
11
|
Hyrax.publisher.subscribe(Hyrax::Listeners::ObjectLifecycleListener.new)
|
|
12
|
-
Hyrax.publisher.subscribe(Hyrax::Listeners::ProxyDepositListener.new)
|
|
13
12
|
Hyrax.publisher.subscribe(Hyrax::Listeners::TrophyCleanupListener.new)
|
|
14
13
|
Hyrax.publisher.subscribe(Hyrax::Listeners::WorkflowListener.new)
|
|
15
14
|
|