hyrax 4.0.0.rc3 → 5.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +116 -231
  3. data/.dassie/.env +3 -1
  4. data/.dassie/Gemfile +0 -2
  5. data/.dassie/config/analytics.yml +2 -2
  6. data/.dassie/config/environments/test.rb +1 -0
  7. data/.dassie/config/initializers/hyrax.rb +3 -1
  8. data/.dassie/config/initializers/redis_config.rb +0 -1
  9. data/.dassie/config/initializers/riiif.rb +13 -3
  10. data/.dassie/db/schema.rb +2 -2
  11. data/.dockerignore +6 -0
  12. data/.github/ISSUE_TEMPLATE.md +14 -9
  13. data/.github/PULL_REQUEST_TEMPLATE.md +25 -6
  14. data/.github/release.yml +5 -2
  15. data/.koppie/.env +3 -0
  16. data/.koppie/Gemfile +0 -2
  17. data/.koppie/README.md +11 -11
  18. data/.koppie/app/forms/collection_resource_form.rb +1 -0
  19. data/.koppie/app/indexers/collection_resource_indexer.rb +1 -0
  20. data/.koppie/app/models/collection_resource.rb +1 -0
  21. data/.koppie/config/analytics.yml +1 -0
  22. data/.koppie/config/environments/test.rb +1 -0
  23. data/.koppie/config/initializers/hyrax.rb +8 -2
  24. data/.koppie/config/initializers/redis_config.rb +0 -1
  25. data/.koppie/config/initializers/riiif.rb +13 -4
  26. data/.koppie/config/metadata/collection_resource.yaml +1 -128
  27. data/.koppie/yarn.lock +23 -23
  28. data/.regen +1 -1
  29. data/CONTAINERS.md +15 -15
  30. data/Dockerfile +6 -11
  31. data/app/actors/hyrax/actors/base_actor.rb +4 -3
  32. data/app/actors/hyrax/actors/embargo_actor.rb +5 -2
  33. data/app/actors/hyrax/actors/lease_actor.rb +5 -2
  34. data/app/assets/javascripts/hyrax/file_manager/sorting.es6 +3 -2
  35. data/app/controllers/concerns/hyrax/embargoes_controller_behavior.rb +1 -1
  36. data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +74 -0
  37. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +14 -5
  38. data/app/controllers/hyrax/admin/workflows_controller.rb +48 -3
  39. data/app/controllers/hyrax/batch_edits_controller.rb +33 -4
  40. data/app/controllers/hyrax/downloads_controller.rb +8 -1
  41. data/app/controllers/hyrax/file_sets_controller.rb +1 -0
  42. data/app/forms/hyrax/forms/file_set_edit_form.rb +1 -1
  43. data/app/forms/hyrax/forms/permission_template_form.rb +2 -0
  44. data/app/forms/hyrax/forms/resource_batch_edit_form.rb +90 -0
  45. data/app/forms/hyrax/forms/work_embargo_form.rb +1 -0
  46. data/app/forms/hyrax/forms/work_form.rb +1 -1
  47. data/app/forms/hyrax/forms/work_lease_form.rb +1 -0
  48. data/app/helpers/hyrax/dashboard_helper_behavior.rb +17 -9
  49. data/app/helpers/hyrax/membership_helper.rb +13 -1
  50. data/app/helpers/hyrax/work_form_helper.rb +0 -107
  51. data/app/indexers/hyrax/file_set_indexer.rb +6 -0
  52. data/app/indexers/hyrax/pcdm_collection_indexer.rb +8 -0
  53. data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +41 -5
  54. data/app/indexers/hyrax/valkyrie_work_indexer.rb +8 -2
  55. data/app/jobs/valkyrie_create_derivatives_job.rb +8 -7
  56. data/app/jobs/valkyrie_ingest_job.rb +0 -1
  57. data/app/models/admin_set.rb +1 -31
  58. data/app/models/concerns/hyrax/file_set/derivatives.rb +3 -2
  59. data/app/models/concerns/hyrax/solr_document_behavior.rb +1 -1
  60. data/app/models/hyrax/collection_type.rb +5 -14
  61. data/app/models/hyrax/file_metadata.rb +6 -7
  62. data/app/models/hyrax/file_set.rb +8 -0
  63. data/app/models/hyrax/resource.rb +30 -2
  64. data/app/presenters/hyrax/file_set_presenter.rb +6 -0
  65. data/app/presenters/hyrax/iiif_manifest_presenter.rb +3 -7
  66. data/app/presenters/hyrax/presenter_renderer.rb +0 -7
  67. data/app/presenters/hyrax/work_show_presenter.rb +6 -11
  68. data/app/search_builders/hyrax/file_set_search_builder.rb +1 -1
  69. data/app/search_builders/hyrax/valkyrie_abstract_type_relation.rb +37 -0
  70. data/app/search_builders/hyrax/valkyrie_work_relation.rb +9 -0
  71. data/app/services/hyrax/analytics/google.rb +23 -15
  72. data/app/services/hyrax/analytics/matomo.rb +4 -3
  73. data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +11 -9
  74. data/app/services/hyrax/custom_queries/find_by_date_range.rb +55 -0
  75. data/app/services/hyrax/custom_queries/find_count_by.rb +62 -0
  76. data/app/services/hyrax/custom_queries/find_file_metadata.rb +1 -1
  77. data/app/services/hyrax/custom_queries/find_models_by_access.rb +59 -0
  78. data/app/services/hyrax/derivative_bucketed_storage.rb +25 -0
  79. data/app/services/hyrax/derivative_path.rb +14 -4
  80. data/app/services/hyrax/embargo_manager.rb +76 -10
  81. data/app/services/hyrax/file_set_derivatives_service.rb +3 -2
  82. data/app/services/hyrax/lease_manager.rb +88 -8
  83. data/app/services/hyrax/listeners/file_metadata_listener.rb +2 -2
  84. data/app/services/hyrax/listeners/workflow_listener.rb +8 -11
  85. data/app/services/hyrax/persist_directly_contained_output_file_service.rb +24 -2
  86. data/app/services/hyrax/solr_query_service.rb +7 -6
  87. data/app/services/hyrax/statistics/depositors/summary.rb +1 -1
  88. data/app/services/hyrax/statistics/over_time.rb +1 -1
  89. data/app/services/hyrax/statistics/users/over_time.rb +3 -1
  90. data/app/services/hyrax/statistics/valkyrie_query_service.rb +49 -0
  91. data/app/services/hyrax/statistics/works/count.rb +1 -1
  92. data/app/services/hyrax/thumbnail_path_service.rb +5 -0
  93. data/app/services/hyrax/valkyrie_persist_derivatives.rb +16 -11
  94. data/app/services/hyrax/valkyrie_upload.rb +5 -3
  95. data/app/services/hyrax/versioning_service.rb +1 -0
  96. data/app/services/hyrax/visibility_intention.rb +1 -4
  97. data/app/services/hyrax/visibility_propagator.rb +1 -1
  98. data/app/services/hyrax/workflow/actionable_objects.rb +28 -3
  99. data/app/services/hyrax/workflow/grant_edit_to_depositor.rb +1 -1
  100. data/app/services/hyrax/workflow/grant_read_to_depositor.rb +1 -1
  101. data/app/services/hyrax/workflow/permission_query.rb +23 -2
  102. data/app/views/hyrax/admin/workflows/_tabs.html.erb +9 -0
  103. data/app/views/hyrax/admin/workflows/index.html.erb +53 -76
  104. data/app/views/hyrax/base/_file_manager_members.html.erb +2 -2
  105. data/app/views/hyrax/base/_form.html.erb +0 -10
  106. data/app/views/hyrax/base/_form_files.html.erb +7 -2
  107. data/app/views/hyrax/base/_form_permission_embargo.html.erb +1 -1
  108. data/app/views/hyrax/base/_form_permission_lease.html.erb +1 -1
  109. data/app/views/hyrax/base/_form_visibility_component.html.erb +2 -2
  110. data/app/views/hyrax/base/_items.html.erb +1 -1
  111. data/app/views/hyrax/base/file_manager.html.erb +1 -1
  112. data/app/views/hyrax/base/show.json.jbuilder +2 -2
  113. data/app/views/hyrax/file_sets/_versioning.html.erb +1 -1
  114. data/app/views/hyrax/file_sets/show.html.erb +5 -3
  115. data/app/views/hyrax/homepage/_explore_collections.html.erb +1 -1
  116. data/chart/hyrax/Chart.yaml +18 -14
  117. data/chart/hyrax/README.md +34 -21
  118. data/chart/hyrax/templates/_helpers.tpl +26 -1
  119. data/chart/hyrax/templates/configmap-env.yaml +12 -2
  120. data/chart/hyrax/templates/secrets.yaml +1 -1
  121. data/chart/hyrax/values.yaml +36 -14
  122. data/config/initializers/listeners.rb +4 -10
  123. data/config/initializers/storage_adapter_initializer.rb +1 -1
  124. data/config/locales/hyrax.de.yml +11 -3
  125. data/config/locales/hyrax.en.yml +13 -2
  126. data/config/locales/hyrax.es.yml +4 -1
  127. data/config/locales/hyrax.fr.yml +4 -1
  128. data/config/locales/hyrax.it.yml +5 -2
  129. data/config/locales/hyrax.pt-BR.yml +9 -2
  130. data/config/locales/hyrax.zh.yml +4 -1
  131. data/config/metadata/file_set_metadata.yaml +1 -1
  132. data/docker-compose-koppie.yml +17 -4
  133. data/docker-compose.yml +19 -6
  134. data/documentation/developing-your-hyrax-based-app.md +6 -14
  135. data/documentation/legacyREADME.md +7 -5
  136. data/hyrax.gemspec +2 -2
  137. data/karma.conf.js +8 -9
  138. data/lib/generators/hyrax/templates/config/analytics.yml +1 -0
  139. data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +1 -1
  140. data/lib/generators/hyrax/templates/config/initializers/redis_config.rb +0 -1
  141. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +15 -5
  142. data/lib/hyrax/active_fedora_dummy_model.rb +6 -1
  143. data/lib/hyrax/configuration.rb +6 -0
  144. data/lib/hyrax/engine.rb +2 -0
  145. data/lib/hyrax/publisher.rb +19 -3
  146. data/lib/hyrax/specs/capybara.rb +9 -4
  147. data/lib/hyrax/transactions/container.rb +5 -0
  148. data/lib/hyrax/transactions/steps/add_file_sets.rb +6 -0
  149. data/lib/hyrax/transactions/steps/apply_permission_template.rb +40 -0
  150. data/lib/hyrax/transactions/steps/save.rb +21 -0
  151. data/lib/hyrax/transactions/work_create.rb +1 -0
  152. data/lib/hyrax/version.rb +1 -1
  153. data/lib/hyrax.rb +1 -0
  154. data/lib/wings/active_fedora_converter/default_work.rb +7 -2
  155. data/lib/wings/active_fedora_converter/file_metadata_node.rb +1 -1
  156. data/lib/wings/active_fedora_converter.rb +47 -11
  157. data/lib/wings/model_transformer.rb +23 -4
  158. data/lib/wings/setup.rb +21 -1
  159. data/lib/wings/valkyrie/persister.rb +4 -2
  160. data/package.json +3 -1
  161. data/template.rb +1 -1
  162. metadata +15 -10
  163. data/app/forms/hyrax/forms/file_manager_form.rb +0 -35
  164. data/app/services/hyrax/collections/migration_service.rb +0 -113
  165. data/app/views/hyrax/base/_form_collections_error.html.erb +0 -1
  166. data/app/views/hyrax/base/_form_in_works_error.html.erb +0 -3
  167. data/app/views/hyrax/base/_form_ordered_members_error.html.erb +0 -3
  168. data/app/views/hyrax/base/_form_visibility_error.html.erb +0 -19
@@ -4,87 +4,64 @@
4
4
 
5
5
  <div class="row">
6
6
  <div class="col-md-12">
7
- <div class="card tabs">
8
- <ul class="nav nav-tabs" role="tablist">
9
- <li class="nav-item">
10
- <a class="nav-link active" href="#under-review" role="tab" data-toggle="tab"><%= t('.tabs.under_review') %></a>
11
- </li>
12
- <li class="nav-item">
13
- <a class="nav-link" href="#published" role="tab" data-toggle="tab"><%= t('.tabs.published') %></a>
14
- </li>
15
- </ul>
16
- <div class="tab-content">
17
- <div id="under-review" class="tab-pane show active">
18
- <div class="card labels">
19
- <div class="card-body">
20
- <div class="table-responsive">
21
- <table class="table table-sm table-striped datatable">
22
- <thead>
23
- <tr>
24
- <th width="40%">Work</th>
25
- <th width="20%">Depositor</th>
26
- <th width="20%">Submission Date</th>
27
- <th width="20%">Status</th>
28
- </tr>
29
- </thead>
30
- <tbody>
31
- <% @status_list.each do |document| %>
32
- <tr>
33
- <td>
34
- <%= link_to document, [main_app, document] %>
35
- </td>
36
- <td>
37
- <%= safe_join(document.creator, tag(:br)) %>
38
- </td>
39
- <td>
40
- <%= document.date_modified %>
41
- </td>
42
- <td>
43
- <span class="state state-pending"><%= document.workflow_state %></span>
44
- </td>
45
- </tr>
46
- <% end %>
47
- </tbody>
48
- </table>
49
- </div>
50
- </div>
51
- </div>
7
+ <div class="tabs">
8
+ <%= render 'tabs' %>
9
+ <div class="card">
10
+ <div class="card-header">
11
+ <span class="count-display">
12
+ <% if @response.viewing_under_review? %>
13
+ <%= I18n.t('hyrax.admin.workflows.index.works_under_review', total_count: @response.total_count).html_safe %>
14
+ <% else %>
15
+ <%= I18n.t('hyrax.admin.workflows.index.works_published', total_count: @response.total_count).html_safe %>
16
+ <% end %>
17
+ </span>
52
18
  </div>
53
- <div id="published" class="tab-pane">
54
- <div class="card labels">
55
- <div class="card-body">
56
- <div class="table-responsive">
57
- <table class="table table-sm table-striped datatable">
58
- <thead>
59
- <tr>
60
- <th width="40%">Work</th>
61
- <th width="20%">Depositor</th>
62
- <th width="20%">Submission Date</th>
63
- <th width="20%">Status</th>
64
- </tr>
65
- </thead>
66
- <tbody>
67
- <% @published_list.each do |document| %>
68
- <tr>
69
- <td>
70
- <%= link_to document, [main_app, document] %>
71
- </td>
72
- <td>
73
- <%= safe_join(document.creator, tag(:br)) %>
74
- </td>
75
- <td>
76
- <%= document.date_modified %>
77
- </td>
78
- <td>
79
- <span class="state state-pending"><%= document.workflow_state %></span>
80
- </td>
81
- </tr>
19
+ <div class="card-body">
20
+ <div class="row">
21
+ <div class="col-sm-12">
22
+ <div class="sort-toggle mt-2">
23
+ <%= form_tag hyrax.admin_workflows_path, method: :get, class: 'per_page' do %>
24
+ <fieldset class="col-12">
25
+ <legend class="sr-only"><%= t('hyrax.dashboard.my.sr.results_per_page') %></legend>
26
+ <%= label_tag :per_page do %>
27
+ Show <%= select_tag :per_page, options_for_select(Hyrax.config.range_for_number_of_results_to_display_per_page.map(&:to_s), h(params[:per_page])), title: "entries" %> per page
82
28
  <% end %>
83
- </tbody>
84
- </table>
29
+ <%= render Blacklight::HiddenSearchStateComponent.new(params: search_state.params_for_search.except(:per_page, :sort, :utf8)) %>
30
+ </fieldset>
31
+ <% end %>
85
32
  </div>
86
33
  </div>
87
34
  </div>
35
+ <h2 class="sr-only"><%= t('.works_listing') %></h2>
36
+ <table class="table table-sm table-striped works-list">
37
+ <thead>
38
+ <tr>
39
+ <th width="40%"><%= t(".heading.work") %></th>
40
+ <th width="20%"><%= t(".heading.depositor") %></th>
41
+ <th width="20%"><%= t(".heading.submission_date") %></th>
42
+ <th width="20%"><%= t(".heading.status") %></th>
43
+ </tr>
44
+ </thead>
45
+ <tbody>
46
+ <% @response.docs.each do |document| %>
47
+ <tr>
48
+ <td>
49
+ <%= link_to document, [main_app, document] %>
50
+ </td>
51
+ <td>
52
+ <%= safe_join(document.creator, tag(:br)) %>
53
+ </td>
54
+ <td>
55
+ <%= document.date_modified %>
56
+ </td>
57
+ <td>
58
+ <span class="state state-pending"><%= document.workflow_state %></span>
59
+ </td>
60
+ </tr>
61
+ <% end %>
62
+ </tbody>
63
+ </table>
64
+ <%= render 'hyrax/my/results_pagination' %>
88
65
  </div>
89
66
  </div>
90
67
  </div>
@@ -2,10 +2,10 @@
2
2
  id: "sortable",
3
3
  class: "list-unstyled grid d-flex flex-wrap clearfix",
4
4
  data: {
5
- id: @form.id,
5
+ id: @form.id.to_s,
6
6
  "class-name" => @form.model_name.plural,
7
7
  "singular-class-name" => @form.model_name.singular,
8
- version: @form.version
8
+ "sort_property" => @form.valkyrie_presenter? ? "member_ids" : "ordered_member_ids"
9
9
  } do %>
10
10
  <% @form.member_presenters.each do |member| %>
11
11
  <%= render "file_manager_member", node: member %>
@@ -4,16 +4,6 @@
4
4
  'param-key' => @form.model_name.param_key },
5
5
  multipart: true
6
6
  } do |f| %>
7
- <% if f.object.errors.any? %>
8
- <div class="alert alert-danger alert-dismissable" role="alert">
9
- <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
10
- <%= f.object.errors.full_messages_for(:base).send(SimpleForm.error_method) %>
11
- <%= render 'form_in_works_error', f: f %>
12
- <%= render 'form_ordered_members_error', f: f %>
13
- <%= render 'form_collections_error', f: f %>
14
- <%= render 'form_visibility_error', f: f %>
15
- </div>
16
- <% end %>
17
7
  <% if Flipflop.batch_upload? && !f.object.persisted? %>
18
8
  <% provide :metadata_tab do %>
19
9
  <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>
@@ -4,9 +4,14 @@
4
4
  <!-- The table listing the files available for upload/download -->
5
5
  <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
6
6
  <% if Hyrax.config.browse_everything? %>
7
- <%= t('hyrax.base.form_files.local_upload_browse_everything_html', contact_href: link_to(t("hyrax.upload.alert.contact_href_text"), hyrax.contact_form_index_path)) %>
7
+ <%= t('hyrax.base.form_files.local_upload_browse_everything_html',
8
+ contact_href: link_to(t("hyrax.upload.alert.contact_href_text"), hyrax.contact_form_index_path),
9
+ upload_file_limit: Hyrax.config.uploader[:maxNumberOfFiles],
10
+ upload_size_limit: Hyrax.config.uploader[:maxFileSize] / 1.megabytes) %>
8
11
  <% else %>
9
- <%= t('hyrax.base.form_files.local_upload_html') %>
12
+ <%= t('hyrax.base.form_files.local_upload_html',
13
+ upload_file_limit: Hyrax.config.uploader[:maxNumberOfFiles],
14
+ upload_size_limit: Hyrax.config.uploader[:maxFileSize] / 1.megabytes) %>
10
15
  <% end %>
11
16
  <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
12
17
  <div class="fileupload-buttonbar">
@@ -1,6 +1,6 @@
1
1
  <div class="form-inline">
2
2
  <%= visibility_badge(Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO) %>
3
3
  <%= f.input :visibility_during_embargo, wrapper: :inline, collection: visibility_options(:restrict), include_blank: false %>
4
- <%= f.input :embargo_release_date, wrapper: :inline, input_html: { value: f.object.embargo_release_date || Date.tomorrow, class: 'datepicker' } %>
4
+ <%= f.input :embargo_release_date, wrapper: :inline, input_html: { value: f.object.embargo_release_date&.to_date || Date.tomorrow, class: 'datepicker' } %>
5
5
  <%= f.input :visibility_after_embargo, wrapper: :inline, collection: visibility_options(:loosen), include_blank: false %>
6
6
  </div>
@@ -1,6 +1,6 @@
1
1
  <div class="form-inline">
2
2
  <%= visibility_badge(Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_LEASE) %>
3
3
  <%= f.input :visibility_during_lease, wrapper: :inline, collection: visibility_options(:loosen), include_blank: false %>
4
- <%= f.input :lease_expiration_date, wrapper: :inline, input_html: { value: f.object.lease_expiration_date || Date.tomorrow, class: 'datepicker' } %>
4
+ <%= f.input :lease_expiration_date, wrapper: :inline, input_html: { value: f.object.lease_expiration_date&.to_date || Date.tomorrow, class: 'datepicker' } %>
5
5
  <%= f.input :visibility_after_lease, wrapper: :inline, collection: visibility_options(:restrict), include_blank: false %>
6
6
  </div>
@@ -39,7 +39,7 @@
39
39
  <div class="form-inline">
40
40
  <%= f.input :visibility_during_embargo, wrapper: :inline, collection: visibility_options(:restrict), include_blank: false %>
41
41
  <%= t('hyrax.works.form.visibility_until') %>
42
- <%= f.date_field :embargo_release_date, wrapper: :inline, value: f.object.embargo_release_date || Date.tomorrow, class: 'datepicker form-control' %>
42
+ <%= f.date_field :embargo_release_date, wrapper: :inline, value: f.object.embargo_release_date&.to_date || Date.tomorrow, class: 'datepicker form-control' %>
43
43
  <%= f.input :visibility_after_embargo, wrapper: :inline, collection: visibility_options(:loosen), include_blank: false %>
44
44
  </div>
45
45
  </div>
@@ -55,7 +55,7 @@
55
55
  <div class="form-inline">
56
56
  <%= f.input :visibility_during_lease, wrapper: :inline, collection: visibility_options(:loosen), include_blank: false %>
57
57
  <%= t('hyrax.works.form.visibility_until') %>
58
- <%= f.date_field :lease_expiration_date, wrapper: :inline, value: f.object.lease_expiration_date || Date.tomorrow, class: 'datepicker form-control' %>
58
+ <%= f.date_field :lease_expiration_date, wrapper: :inline, value: f.object.lease_expiration_date&.to_date || Date.tomorrow, class: 'datepicker form-control' %>
59
59
  <%= f.input :visibility_after_lease, wrapper: :inline, collection: visibility_options(:restrict), include_blank: false %>
60
60
  </div>
61
61
  </div>
@@ -1,6 +1,6 @@
1
1
 
2
2
  <% array_of_ids = presenter.list_of_item_ids_to_display %>
3
- <% members = presenter.member_presenters_for(array_of_ids) %>
3
+ <% members = presenter.member_presenters(array_of_ids) %>
4
4
  <% if members.present? %>
5
5
  <table class="table table-striped related-files">
6
6
  <thead>
@@ -5,7 +5,7 @@
5
5
  </li>
6
6
  </ul>
7
7
 
8
- <% if !@form.member_presenters.empty? %>
8
+ <% if !@form.member_presenters.blank? %>
9
9
  <div class="row" data-action="file-manager">
10
10
  <div class="col-lg-3" id="file-manager-tools">
11
11
  <h2><%= t('.toolbar') %></h2>
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
- @curation_concern = Wings::ActiveFedoraConverter.convert(resource: @curation_concern) if
3
- @curation_concern.is_a? Hyrax::Resource
2
+ @curation_concern = ::Wings::ActiveFedoraConverter.convert(resource: @curation_concern) if
3
+ @curation_concern.is_a?(Hyrax::Resource) && Object.const_defined?("Wings")
4
4
 
5
5
  json.extract! @curation_concern, *[:id] + @curation_concern.class.fields.reject { |f| [:has_model].include? f }
6
6
  json.version @curation_concern.try(:etag)
@@ -41,7 +41,7 @@
41
41
  name: "update_versioning",
42
42
  id: "upload_submit",
43
43
  onclick: "confirmation_needed = false;",
44
- class: "btn btn-primary" do %>
44
+ class: "btn btn-primary text-white" do %>
45
45
  <%= t('.upload') %>
46
46
  <% end %>
47
47
 
@@ -11,8 +11,10 @@
11
11
  <%= render 'file_set_title', presenter: @presenter %>
12
12
  </header>
13
13
 
14
- <%# TODO: render 'show_descriptions' See https://github.com/samvera/hyrax/issues/1481 %>
15
- <%= render 'show_details' %>
14
+ <% @presenter.show_partials.each do |partial_path| %>
15
+ <%= render partial_path %>
16
+ <% end %>
17
+
16
18
  <%= render 'hyrax/users/activity_log', events: @presenter.events %>
17
19
  </div><!-- /columns second -->
18
20
  </div> <!-- /.row -->
@@ -22,4 +24,4 @@
22
24
  <span class='hide analytics-event' data-category="file-set-in-collection" data-action="file-set-in-collection-view" data-name="<%= collection_id %>" >
23
25
  <% end %>
24
26
  <span class='hide analytics-event' data-category="file-set-in-work" data-action="file-set-in-work-view" data-name="<%= @presenter.parent.id %>" >
25
- <span class='hide analytics-event' data-category="file-set" data-action="file-set-view" data-name="<%= @presenter.id %>" >
27
+ <span class='hide analytics-event' data-category="file-set" data-action="file-set-view" data-name="<%= @presenter.id %>" >
@@ -23,7 +23,7 @@
23
23
  <ul class="list-inline collection-highlights-list">
24
24
  <li class="list-inline-item">
25
25
  <%= link_to t('hyrax.homepage.admin_sets.link'),
26
- main_app.search_catalog_path(f: { human_readable_type_sim: ["Collection"]}),
26
+ main_app.search_catalog_path(f: { generic_type_sim: ["Collection"]}),
27
27
  class: 'btn btn-secondary' %>
28
28
  </li>
29
29
  </ul>
@@ -2,34 +2,38 @@ apiVersion: v2
2
2
  name: hyrax
3
3
  description: An open-source, Samvera-powered digital repository system
4
4
  type: application
5
- version: 3.1.0
5
+ version: 3.3.0
6
6
  appVersion: 3.3.0
7
7
  dependencies:
8
8
  - name: fcrepo
9
- version: 0.8.0
9
+ version: 1.0.0
10
10
  repository: oci://ghcr.io/samvera
11
11
  condition: fcrepo.enabled
12
12
  - name: memcached
13
- version: 6.3.13
14
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
13
+ version: 6.6.0
14
+ repository: oci://registry-1.docker.io/bitnamicharts
15
15
  condition: memcached.enabled
16
16
  - name: minio
17
- version: 12.1.14
18
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
17
+ version: 12.8.0
18
+ repository: oci://registry-1.docker.io/bitnamicharts
19
19
  condition: minio.enabled
20
20
  - name: postgresql
21
- version: 12.2.5
22
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
21
+ version: 12.9.0
22
+ repository: oci://registry-1.docker.io/bitnamicharts
23
23
  condition: postgresql.enabled
24
24
  - name: redis
25
- version: 17.8.7
26
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
25
+ version: 17.16.0
26
+ repository: oci://registry-1.docker.io/bitnamicharts
27
27
  condition: redis.enabled
28
28
  - name: solr
29
- version: 7.2.1
30
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
29
+ version: 8.0.0
30
+ repository: oci://registry-1.docker.io/bitnamicharts
31
31
  condition: solr.enabled
32
32
  - name: nginx
33
- version: 13.2.30
34
- repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
33
+ version: 15.2.0
34
+ repository: oci://registry-1.docker.io/bitnamicharts
35
35
  condition: nginx.enabled
36
+ - name: fits
37
+ version: 0.1.0
38
+ repository: https://samvera-labs.github.io/fits-charts
39
+ condition: fits.enabled
@@ -35,28 +35,30 @@ production environments.
35
35
 
36
36
  The chart populates the following environment variables:
37
37
 
38
- | Variable | Description | Condition |
39
- |-------------------|--------------------------------|------------------------|
40
- | DB_PASSWORD | Postgresql password | n/a |
41
- | DB_PORT | Postgresql service port | n/a |
42
- | DB_HOST | Postgresql hostname | n/a |
43
- | DB_USERNAME | Postgresql username | n/a |
44
- | MEMCACHED_HOST | Memcached host | `memcached.enabled` |
45
- | RACK_ENV | app environment ('production') | n/a |
46
- | RAILS_ENV | app environment ('production') | n/a |
47
- | REDIS_HOST | Redis service host | `redis.enabled` |
48
- | FCREPO_BASE_PATH | Fedora Commons root path | n/a |
49
- | FCREPO_HOST | Fedora Commons host | n/a |
50
- | FCREPO_PORT | Fedora Commons port | n/a |
51
- | FCREPO_REST_PATH | Fedora Commons REST endpoint | n/a |
52
- | SKIP_HYRAX_ENGINE_SEED | Flag to load Hyrax engine seed file | n/a |
53
- | SOLR_ADMIN_USER | Solr user for basic auth | n/a |
54
- | SOLR_ADMIN_PASSWORD | Solr password for basic auth | n/a |
55
- | SOLR_COLLECTION_NAME | The name of the solr collection to use | n/a |
38
+ | Variable | Description | Condition |
39
+ |-------------------|--------------------------------|------------------------------------------|
40
+ | CH12N_TOOL | Tool for characterization | `fits.enabled` or `externalFits.enabled` |
41
+ | DB_PASSWORD | Postgresql password | n/a |
42
+ | DB_PORT | Postgresql service port | n/a |
43
+ | DB_HOST | Postgresql hostname | n/a |
44
+ | DB_USERNAME | Postgresql username | n/a |
45
+ | MEMCACHED_HOST | Memcached host | `memcached.enabled` |
46
+ | RACK_ENV | app environment ('production') | n/a |
47
+ | RAILS_ENV | app environment ('production') | n/a |
48
+ | REDIS_HOST | Redis service host | `redis.enabled` |
49
+ | FCREPO_BASE_PATH | Fedora Commons root path | n/a |
50
+ | FCREPO_HOST | Fedora Commons host | n/a |
51
+ | FCREPO_PORT | Fedora Commons port | n/a |
52
+ | FCREPO_REST_PATH | Fedora Commons REST endpoint | n/a |
53
+ | FITS_SERVLET_URL | URL for FITS servlet | `fits.enabled` or `externalFits.enabled` |
54
+ | SKIP_HYRAX_ENGINE_SEED | Flag to load Hyrax engine seed file | n/a |
55
+ | SOLR_ADMIN_USER | Solr user for basic auth | n/a |
56
+ | SOLR_ADMIN_PASSWORD | Solr password for basic auth | n/a |
57
+ | SOLR_COLLECTION_NAME | The name of the solr collection to use | n/a |
56
58
  | SOLR_CONFIGSET_NAME | The name of the solr configset to use for config management tasks | n/a |
57
- | SOLR_HOST | Solr service host | n/a |
58
- | SOLR_PORT | Solr service port | n/a |
59
- | SOLR_URL | Solr service full URL | n/a |
59
+ | SOLR_HOST | Solr service host | n/a |
60
+ | SOLR_PORT | Solr service port | n/a |
61
+ | SOLR_URL | Solr service full URL | n/a |
60
62
 
61
63
  ## With an external SolrCloud
62
64
 
@@ -89,6 +91,17 @@ To use an existing or external `fcrepo` instance, use the chart values:
89
91
  - `fcrepo.enabled`: false
90
92
  - `externalFcrepoHost`: "myfedora.hostname.example.com"
91
93
 
94
+
95
+ # Optional Fits Service
96
+
97
+ Running fits as a servlet will result in much faster fits responses. This is because the loading cost of the
98
+ various Java components far out weighs the processing time of those components.
99
+
100
+ To enable fits as a service:
101
+
102
+ - ``fits.enabled: true` or `externalFits.enabled: true` and specify the
103
+ existing `externalFits.url`
104
+
92
105
  ## For DevOps:
93
106
 
94
107
  For those interested in trying out or contributing to this Chart, it's helpful
@@ -86,6 +86,23 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
86
86
  {{- end }}
87
87
  {{- end -}}
88
88
 
89
+
90
+ {{/*
91
+ Create default fully qualified service names.
92
+ We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
93
+ */}}
94
+ {{- define "hyrax.fits.fullname" -}}
95
+ {{- printf "%s-%s" .Release.Name "fits" | trunc 63 | trimSuffix "-" -}}
96
+ {{- end -}}
97
+
98
+ {{- define "hyrax.fits.host" -}}
99
+ {{- if .Values.fits.enabled }}
100
+ {{- include "hyrax.fits.fullname" . }}
101
+ {{- else }}
102
+ {{- .Values.externalFitsHost | default "NO_FITS_HOST_DEFINED" }}
103
+ {{- end }}
104
+ {{- end -}}
105
+
89
106
  {{- define "hyrax.memcached.fullname" -}}
90
107
  {{- printf "%s-%s" .Release.Name "memcached" | trunc 63 | trimSuffix "-" -}}
91
108
  {{- end -}}
@@ -130,6 +147,10 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
130
147
  {{- end }}
131
148
  {{- end -}}
132
149
 
150
+ {{- define "hyrax.postgresql.url" -}}
151
+ {{- printf "postgresql://%s:%s@%s/%s?pool=5" ( include "hyrax.postgresql.username" . ) ( include "hyrax.postgresql.password" . ) ( include "hyrax.postgresql.host" . ) ( include "hyrax.postgresql.database" . ) -}}
152
+ {{- end -}}
153
+
133
154
  {{- define "hyrax.redis.fullname" -}}
134
155
  {{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}}
135
156
  {{- end -}}
@@ -172,7 +193,11 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
172
193
  {{- end -}}
173
194
 
174
195
  {{- define "hyrax.solr.port" -}}
175
- {{- .Values.externalSolrPort | default "8983" }}
196
+ {{- if .Values.solr.enabled }}
197
+ {{- .Values.solr.containerPorts.http | default 8983 }}
198
+ {{- else }}
199
+ {{- .Values.externalSolrPort }}
200
+ {{- end }}
176
201
  {{- end -}}
177
202
 
178
203
  {{- define "hyrax.solr.url" -}}
@@ -8,8 +8,13 @@ metadata:
8
8
  app.kubernetes.io/instance: {{ .Release.Name }}
9
9
  app.kubernetes.io/managed-by: {{ .Release.Service }}
10
10
  data:
11
+ {{- if (or .Values.fits.enabled .Values.externalFits.enabled) }}
12
+ CH12N_TOOL: "fits_servlet"
13
+ {{- else }}
14
+ CH12N_TOOL: "fits"
15
+ {{- end }}
11
16
  DB_HOST: {{ template "hyrax.postgresql.host" . }}
12
- DB_PORT: "5432"
17
+ DB_PORT: {{ .Values.postgresql.containerPorts.postgresql | default 5432 | quote }}
13
18
  DB_USERNAME: {{ template "hyrax.postgresql.database" . }}
14
19
  {{- if .Values.memcached.enabled }}
15
20
  MEMCACHED_HOST: {{ template "hyrax.memcached.fullname" . }}
@@ -29,6 +34,11 @@ data:
29
34
  FCREPO_BASE_PATH: {{ .Values.fcrepoBasePathOverride | default (printf "/%s" (include "hyrax.fullname" .)) | quote }}
30
35
  FCREPO_PORT: {{ .Values.fcrepo.servicePort | default 8080 | quote }}
31
36
  FCREPO_REST_PATH: {{ .Values.fcrepo.restPath | default "rest" }}
37
+ {{- if .Values.fits.enabled }}
38
+ FITS_SERVLET_URL: http://{{ template "hyrax.fits.host" . }}:{{ .Values.fits.servicePort | default 8080 }}{{ .Values.fits.subPath | default "/fits" }}
39
+ {{- else if .Values.externalFits.enabled }}
40
+ FITS_SERVLET_URL: {{ .Values.externalFits.url }}
41
+ {{- end }}
32
42
  REDIS_PROVIDER: SIDEKIQ_REDIS_URL
33
43
  {{- if .Values.minio.enabled }}
34
44
  MINIO_ENDPOINT: {{ template "hyrax.minio.fullname" . }}
@@ -38,5 +48,5 @@ data:
38
48
  SOLR_COLLECTION_NAME: {{ template "hyrax.solr.collectionName" . }}
39
49
  SOLR_CONFIGSET_NAME: {{ template "hyrax.fullname" . }}
40
50
  SOLR_HOST: {{ template "hyrax.solr.host" . }}
41
- SOLR_PORT: {{ (include "hyrax.solr.port" .) | quote }}
51
+ SOLR_PORT: {{ include "hyrax.solr.port" . | quote}}
42
52
  SOLR_URL: {{ template "hyrax.solr.url" . }}
@@ -8,7 +8,7 @@ type: Opaque
8
8
  data:
9
9
  SECRET_KEY_BASE: {{ randAlphaNum 20 | b64enc | quote }}
10
10
  DB_PASSWORD: {{ include "hyrax.postgresql.password" . | b64enc }}
11
- DATABASE_URL: {{ printf "postgresql://%s:%s@%s/%s?pool=5" ( include "hyrax.postgresql.username" . ) ( include "hyrax.postgresql.password" . ) ( include "hyrax.postgresql.host" . ) ( include "hyrax.postgresql.database" . ) | b64enc }}
11
+ DATABASE_URL: {{ include "hyrax.postgresql.url" . | b64enc }}
12
12
  {{- if .Values.minio.enabled }}
13
13
  MINIO_ACCESS_KEY: {{ .Values.minio.auth.rootUser | b64enc}}
14
14
  MINIO_SECRET_KEY: {{ .Values.minio.auth.rootPassword | b64enc}}
@@ -5,7 +5,7 @@
5
5
  replicaCount: 1
6
6
 
7
7
  image:
8
- repository: samveralabs/dassie
8
+ repository: ghcr.io/samvera/hyrax/dassie
9
9
  pullPolicy: IfNotPresent
10
10
  # Overrides the image tag whose default is the chart appVersion.
11
11
  tag: ""
@@ -193,7 +193,7 @@ worker:
193
193
  enabled: true
194
194
  replicaCount: 3
195
195
  image:
196
- repository: samveralabs/dassie-worker
196
+ repository: ghcr.io/samvera/hyrax/dassie-worker
197
197
  pullPolicy: IfNotPresent
198
198
  tag: ""
199
199
  extraInitContainers: []
@@ -220,19 +220,35 @@ worker:
220
220
 
221
221
  fcrepo:
222
222
  enabled: true
223
- externalDatabaseUsername: "hyrax"
224
223
  servicePort: 8080
225
224
  postgresql:
226
225
  enabled: false
227
226
  image:
228
227
  repository: bitnami/postgresql
229
- tag: 12.3.0
228
+ tag: 12.11.0-debian-11-r12
229
+
230
+ # configuration for an external/existing fits service;
231
+ # ignored if `fits.enabled` is true
232
+ externalFits:
233
+ enabled: false
234
+ url: "" # existing FITS servlet endpoint
235
+
236
+ fits:
237
+ enabled: true
238
+ servicePort: 8080
239
+ subPath: /fits
230
240
 
231
241
  memcached:
232
242
  enabled: false
243
+ image:
244
+ repository: bitnami/memcached
245
+ tag: 1.6.15-debian-11-r12
233
246
 
234
247
  minio:
235
248
  enabled: false
249
+ image:
250
+ repository: bitnami/minio
251
+ tag: 2022.7.4-debian-11-r0
236
252
  auth:
237
253
  rootUser: hyrax-access-key
238
254
  rootPassword: hyrax-secret-key
@@ -244,7 +260,7 @@ postgresql:
244
260
  enabled: true
245
261
  image:
246
262
  repository: bitnami/postgresql
247
- tag: 12.3.0
263
+ tag: 12.11.0-debian-11-r12
248
264
  auth:
249
265
  database: hyrax
250
266
  password: hyrax_pass
@@ -262,12 +278,11 @@ postgresql:
262
278
  ## and to act as an auth proxy for Cantelope
263
279
  nginx:
264
280
  enabled: false
281
+ image:
282
+ repository: bitnami/nginx
283
+ tag: 1.23.0-debian-11-r1
265
284
  # The set up below does malicious bot / ip blocking and mounts
266
- # vaolumes to allow nginx to server assets and other public directory items
267
- # image:
268
- # registry: registry.gitlab.com
269
- # repository: notch8/scripts/bitnami-nginx
270
- # tag: 1.21.5-debian-10-r4
285
+ # volumes to allow nginx to server assets and other public directory items
271
286
  # extraVolumes:
272
287
  # - name: "uploads"
273
288
  # persistentVolumeClaim:
@@ -397,6 +412,9 @@ nginx:
397
412
 
398
413
  redis:
399
414
  enabled: true
415
+ image:
416
+ repository: bitnami/redis
417
+ tag: 7.0.2-debian-11-r7
400
418
  auth:
401
419
  password: mysecret
402
420
 
@@ -404,12 +422,14 @@ solr:
404
422
  enabled: true
405
423
  image:
406
424
  repository: bitnami/solr
407
- tag: 8.11.1
425
+ tag: 8.11.2-debian-11-r4
426
+ containerPorts:
427
+ http: 8983
408
428
  auth:
409
429
  enabled: true
410
430
  adminUsername: admin
411
431
  adminPassword: admin
412
- coreName: hyrax
432
+ coreNames: hyrax
413
433
  collection: hyrax
414
434
  cloudBootstrap: true
415
435
  cloudEnabled: true
@@ -428,9 +448,11 @@ autoscaling:
428
448
  # targetMemoryUtilizationPercentage: 80
429
449
 
430
450
  global:
451
+ # These global postgresql values are used by the fcrepo chart
431
452
  postgresql:
432
- postgresqlUsername: hyrax
433
- postgresqlPassword: hyrax_pass
453
+ auth:
454
+ username: hyrax
455
+ password: hyrax_pass
434
456
  # This is th name of the running rails server pod
435
457
  hyraxHostName: hyrax
436
458