hyrax 3.6.0 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (497) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +41 -61
  3. data/.dassie/Gemfile +4 -4
  4. data/.dassie/app/assets/javascripts/application.js +8 -4
  5. data/.dassie/app/assets/stylesheets/application.css +1 -1
  6. data/.dassie/app/assets/stylesheets/hyrax.scss +1 -2
  7. data/.dassie/app/controllers/application_controller.rb +1 -3
  8. data/.dassie/app/controllers/catalog_controller.rb +23 -19
  9. data/.dassie/app/models/user.rb +0 -3
  10. data/.dassie/config/analytics.yml +2 -4
  11. data/.dassie/config/application.rb +1 -1
  12. data/.dassie/config/initializers/riiif.rb +1 -1
  13. data/.dassie/db/schema.rb +5 -5
  14. data/.dassie/package.json +7 -7
  15. data/.engine_cart.yml +2 -39
  16. data/.env +1 -0
  17. data/.github/workflows/main.yml +17 -0
  18. data/.github/workflows/release.yml +17 -0
  19. data/.regen +1 -1
  20. data/.rubocop.yml +1 -1
  21. data/CONTRIBUTING.md +22 -24
  22. data/Dockerfile +1 -1
  23. data/Rakefile +0 -4
  24. data/app/actors/hyrax/actors/base_actor.rb +1 -1
  25. data/app/actors/hyrax/actors/collections_membership_actor.rb +1 -1
  26. data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +5 -11
  27. data/app/actors/hyrax/actors/embargo_actor.rb +4 -11
  28. data/app/actors/hyrax/actors/file_actor.rb +9 -37
  29. data/app/actors/hyrax/actors/file_set_actor.rb +13 -62
  30. data/app/actors/hyrax/actors/lease_actor.rb +4 -11
  31. data/app/assets/javascripts/hyrax/analytics_events.js +38 -88
  32. data/app/assets/javascripts/hyrax/app.js.erb +2 -2
  33. data/app/assets/javascripts/hyrax/batch.js +2 -2
  34. data/app/assets/javascripts/hyrax/batch_edit.js +4 -4
  35. data/app/assets/javascripts/hyrax/batch_select_all.js +13 -13
  36. data/app/assets/javascripts/hyrax/browse_everything.js +4 -2
  37. data/app/assets/javascripts/hyrax/collection_types.es6 +1 -1
  38. data/app/assets/javascripts/hyrax/collections/editor.es6 +5 -1
  39. data/app/assets/javascripts/hyrax/dashboard_actions.js +5 -5
  40. data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +3 -3
  41. data/app/assets/javascripts/hyrax/editor.es6 +3 -3
  42. data/app/assets/javascripts/hyrax/facets.js +6 -4
  43. data/app/assets/javascripts/hyrax/file_manager/member.es6 +1 -1
  44. data/app/assets/javascripts/hyrax/file_manager/save_manager.es6 +2 -2
  45. data/app/assets/javascripts/hyrax/file_manager/sorting.es6 +2 -2
  46. data/app/assets/javascripts/hyrax/file_manager.es6 +2 -17
  47. data/app/assets/javascripts/hyrax/notification.es6 +1 -1
  48. data/app/assets/javascripts/hyrax/permissions/control.es6 +1 -8
  49. data/app/assets/javascripts/hyrax/permissions/registry.es6 +4 -4
  50. data/app/assets/javascripts/hyrax/permissions/user_controls.es6 +3 -1
  51. data/app/assets/javascripts/hyrax/relationships/confirm_remove_dialog.es6 +1 -1
  52. data/app/assets/javascripts/hyrax/relationships/control.es6 +2 -2
  53. data/app/assets/javascripts/hyrax/relationships/registry_entry.es6 +1 -1
  54. data/app/assets/javascripts/hyrax/reports-buttons.js +9 -9
  55. data/app/assets/javascripts/hyrax/save_work/required_fields.es6 +1 -1
  56. data/app/assets/javascripts/hyrax/save_work/save_work_control.es6 +6 -6
  57. data/app/assets/javascripts/hyrax/save_work/uploaded_files.es6 +2 -2
  58. data/app/assets/javascripts/hyrax/single_use_links_manager.js +1 -1
  59. data/app/assets/javascripts/hyrax/skip_to_content.js +1 -1
  60. data/app/assets/javascripts/hyrax/sorting.js +1 -1
  61. data/app/assets/javascripts/hyrax/trophy.js +1 -1
  62. data/app/assets/javascripts/hyrax/uploader.js +3 -3
  63. data/app/assets/javascripts/hyrax.js +1 -19
  64. data/app/assets/stylesheets/_bootstrap-default-overrides.scss +4 -4
  65. data/app/assets/stylesheets/hyrax/_accessibility.scss +1 -1
  66. data/app/assets/stylesheets/hyrax/_badge.scss +7 -0
  67. data/app/assets/stylesheets/hyrax/_batch-edit.scss +8 -8
  68. data/app/assets/stylesheets/hyrax/_browse_everything_overrides.scss +1 -1
  69. data/app/assets/stylesheets/hyrax/_buttons.scss +31 -1
  70. data/app/assets/stylesheets/hyrax/_card.scss +10 -0
  71. data/app/assets/stylesheets/hyrax/_catalog.scss +22 -48
  72. data/app/assets/stylesheets/hyrax/_collection_types.scss +1 -1
  73. data/app/assets/stylesheets/hyrax/_collections.scss +13 -13
  74. data/app/assets/stylesheets/hyrax/_facets.scss +46 -0
  75. data/app/assets/stylesheets/hyrax/_featured.scss +1 -1
  76. data/app/assets/stylesheets/hyrax/_file-listing.scss +3 -3
  77. data/app/assets/stylesheets/hyrax/_file_manager.scss +17 -17
  78. data/app/assets/stylesheets/hyrax/_file_sets.scss +1 -1
  79. data/app/assets/stylesheets/hyrax/_file_upload.scss +4 -4
  80. data/app/assets/stylesheets/hyrax/_fixedsticky.scss +1 -1
  81. data/app/assets/stylesheets/hyrax/_footer.scss +3 -3
  82. data/app/assets/stylesheets/hyrax/_form-progress.scss +9 -9
  83. data/app/assets/stylesheets/hyrax/_form.scss +3 -4
  84. data/app/assets/stylesheets/hyrax/_forms.scss +62 -29
  85. data/app/assets/stylesheets/hyrax/_header.scss +0 -17
  86. data/app/assets/stylesheets/hyrax/_home-page.scss +13 -51
  87. data/app/assets/stylesheets/hyrax/_html.scss +11 -0
  88. data/app/assets/stylesheets/hyrax/_hyrax.scss +16 -14
  89. data/app/assets/stylesheets/hyrax/_nestable.scss +1 -1
  90. data/app/assets/stylesheets/hyrax/_select_work_type.scss +2 -2
  91. data/app/assets/stylesheets/hyrax/_styles.scss +9 -14
  92. data/app/assets/stylesheets/hyrax/_users.scss +2 -2
  93. data/app/assets/stylesheets/hyrax/_variables.scss +20 -1
  94. data/app/assets/stylesheets/hyrax/_work-show.scss +21 -13
  95. data/app/assets/stylesheets/hyrax/blacklight_gallery.scss +75 -2
  96. data/app/assets/stylesheets/hyrax/dashboard.scss +70 -95
  97. data/app/assets/stylesheets/hyrax/sidebar.scss +39 -19
  98. data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +9 -0
  99. data/app/controllers/concerns/hyrax/embargoes_controller_behavior.rb +2 -11
  100. data/app/controllers/concerns/hyrax/leases_controller_behavior.rb +2 -11
  101. data/app/controllers/concerns/hyrax/manages_embargoes.rb +1 -13
  102. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +4 -9
  103. data/app/controllers/hyrax/admin/analytics/collection_reports_controller.rb +2 -2
  104. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +1 -1
  105. data/app/controllers/hyrax/admin/strategies_controller.rb +1 -1
  106. data/app/controllers/hyrax/admin/workflows_controller.rb +3 -48
  107. data/app/controllers/hyrax/batch_edits_controller.rb +1 -1
  108. data/app/controllers/hyrax/dashboard/collections_controller.rb +2 -1
  109. data/app/controllers/hyrax/dashboard/nest_collections_controller.rb +0 -32
  110. data/app/controllers/hyrax/downloads_controller.rb +1 -16
  111. data/app/controllers/hyrax/file_sets_controller.rb +4 -10
  112. data/app/controllers/hyrax/homepage_controller.rb +0 -1
  113. data/app/controllers/hyrax/my_controller.rb +0 -6
  114. data/app/controllers/hyrax/permissions_controller.rb +1 -1
  115. data/app/controllers/hyrax/single_use_links_controller.rb +1 -2
  116. data/app/controllers/hyrax/transfers_controller.rb +2 -0
  117. data/app/controllers/hyrax/workflow_actions_controller.rb +2 -3
  118. data/app/forms/hyrax/forms/collection_form.rb +1 -1
  119. data/app/forms/hyrax/forms/dashboard/nest_collection_form.rb +0 -2
  120. data/app/forms/hyrax/forms/file_set_edit_form.rb +1 -1
  121. data/app/forms/hyrax/forms/file_set_form.rb +35 -8
  122. data/app/forms/hyrax/forms/resource_form.rb +32 -36
  123. data/app/helpers/hyrax/embargo_helper.rb +0 -11
  124. data/app/helpers/hyrax/facets_helper.rb +150 -0
  125. data/app/helpers/hyrax/hyrax_helper_behavior.rb +5 -5
  126. data/app/helpers/hyrax/lease_helper.rb +0 -11
  127. data/app/indexers/hyrax/basic_metadata_indexer.rb +3 -9
  128. data/app/indexers/hyrax/pcdm_collection_indexer.rb +0 -1
  129. data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +8 -2
  130. data/app/jobs/characterize_job.rb +4 -7
  131. data/app/jobs/content_event_job.rb +1 -1
  132. data/app/jobs/create_derivatives_job.rb +4 -2
  133. data/app/jobs/ingest_local_file_job.rb +5 -13
  134. data/app/jobs/inherit_permissions_job.rb +1 -5
  135. data/app/models/admin_set.rb +0 -8
  136. data/app/models/concerns/hyrax/collection_behavior.rb +2 -3
  137. data/app/models/concerns/hyrax/collection_nesting.rb +1 -10
  138. data/app/models/concerns/hyrax/file_set_behavior.rb +1 -2
  139. data/app/models/concerns/hyrax/in_admin_set.rb +0 -7
  140. data/app/models/concerns/hyrax/user.rb +3 -3
  141. data/app/models/concerns/hyrax/work_behavior.rb +1 -3
  142. data/app/models/content_block.rb +0 -6
  143. data/app/models/hyrax/embargo.rb +1 -1
  144. data/app/models/hyrax/file_metadata.rb +1 -1
  145. data/app/models/hyrax/file_set.rb +3 -3
  146. data/app/models/hyrax/lease.rb +1 -1
  147. data/app/models/hyrax/permission_template.rb +0 -35
  148. data/app/models/proxy_deposit_request.rb +1 -1
  149. data/app/presenters/hyrax/admin/repository_object_presenter.rb +0 -2
  150. data/app/presenters/hyrax/collapsable_section_presenter.rb +2 -2
  151. data/app/presenters/hyrax/collection_presenter.rb +1 -1
  152. data/app/presenters/hyrax/fixity_status_presenter.rb +2 -2
  153. data/app/presenters/hyrax/menu_presenter.rb +1 -1
  154. data/app/presenters/hyrax/permission_badge.rb +8 -9
  155. data/app/presenters/hyrax/version_list_presenter.rb +1 -6
  156. data/app/presenters/hyrax/workflow_presenter.rb +1 -1
  157. data/app/renderers/hyrax/renderers/external_link_attribute_renderer.rb +1 -1
  158. data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +5 -13
  159. data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
  160. data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +10 -1
  161. data/app/search_builders/hyrax/single_result.rb +1 -1
  162. data/app/search_builders/hyrax/stats/work_status_search_builder.rb +1 -1
  163. data/app/services/hyrax/adapters/nesting_index_adapter.rb +1 -1
  164. data/app/services/hyrax/analytics/google.rb +15 -23
  165. data/app/services/hyrax/analytics/matomo.rb +3 -4
  166. data/app/services/hyrax/collection_member_service.rb +1 -2
  167. data/app/services/hyrax/collections/nested_collection_query_service.rb +1 -1
  168. data/app/services/hyrax/collections/search_service.rb +0 -1
  169. data/app/services/hyrax/custom_queries.rb +25 -0
  170. data/app/services/hyrax/edit_permissions_service.rb +3 -21
  171. data/app/services/hyrax/embargo_manager.rb +0 -9
  172. data/app/services/hyrax/file_set_csv_service.rb +1 -1
  173. data/app/services/hyrax/graph_exporter.rb +3 -8
  174. data/app/services/hyrax/iiif_authorization_service.rb +1 -1
  175. data/app/services/hyrax/lease_manager.rb +0 -9
  176. data/app/services/hyrax/listeners/file_metadata_listener.rb +0 -11
  177. data/app/services/hyrax/search_service.rb +1 -81
  178. data/app/services/hyrax/solr_query_service.rb +4 -4
  179. data/app/services/hyrax/statistics/depositors/summary.rb +1 -3
  180. data/app/services/hyrax/user_stat_importer.rb +0 -2
  181. data/app/services/hyrax/valkyrie_upload.rb +13 -1
  182. data/app/services/hyrax/versioning_service.rb +9 -77
  183. data/app/services/hyrax/visibility_propagator.rb +5 -5
  184. data/app/services/hyrax/work_query_service.rb +1 -1
  185. data/app/services/hyrax/workflow/actionable_objects.rb +3 -28
  186. data/app/services/hyrax/workflow/permission_query.rb +2 -23
  187. data/app/services/hyrax/working_directory.rb +2 -0
  188. data/app/views/_controls.html.erb +14 -18
  189. data/app/views/_logo.html.erb +0 -1
  190. data/app/views/_masthead.html.erb +8 -18
  191. data/app/views/_user_util_links.html.erb +16 -18
  192. data/app/views/catalog/_document.html.erb +2 -2
  193. data/app/views/catalog/_document_list.html.erb +1 -1
  194. data/app/views/catalog/_facet_limit.html.erb +1 -1
  195. data/app/views/catalog/_index_gallery_collection_wrapper.html.erb +1 -1
  196. data/app/views/catalog/_index_header_list_collection.html.erb +2 -2
  197. data/app/views/catalog/_index_header_list_default.html.erb +1 -1
  198. data/app/views/catalog/_index_list_default.html.erb +7 -5
  199. data/app/views/catalog/_search_form.html.erb +13 -15
  200. data/app/views/catalog/_thumbnail_list_collection.html.erb +2 -2
  201. data/app/views/catalog/_thumbnail_list_default.html.erb +3 -3
  202. data/app/views/catalog/facet.html.erb +21 -0
  203. data/app/views/catalog/index.html.erb +6 -4
  204. data/app/views/hyrax/admin/admin_sets/_form.html.erb +16 -16
  205. data/app/views/hyrax/admin/admin_sets/_form_participant_table.html.erb +35 -33
  206. data/app/views/hyrax/admin/admin_sets/_form_participants.html.erb +9 -8
  207. data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +24 -24
  208. data/app/views/hyrax/admin/admin_sets/_form_workflow.erb +5 -5
  209. data/app/views/hyrax/admin/admin_sets/_show_actions.html.erb +3 -3
  210. data/app/views/hyrax/admin/admin_sets/_show_document_list_row.html.erb +9 -9
  211. data/app/views/hyrax/admin/admin_sets/index.html.erb +3 -3
  212. data/app/views/hyrax/admin/admin_sets/show.html.erb +4 -4
  213. data/app/views/hyrax/admin/analytics/_date_range_form.html.erb +3 -3
  214. data/app/views/hyrax/admin/analytics/collection_reports/_custom_range.html.erb +3 -3
  215. data/app/views/hyrax/admin/analytics/collection_reports/_monthly_summary.html.erb +3 -3
  216. data/app/views/hyrax/admin/analytics/collection_reports/_summary.html.erb +3 -3
  217. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +7 -7
  218. data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +7 -7
  219. data/app/views/hyrax/admin/analytics/collection_reports/show.html.erb +10 -10
  220. data/app/views/hyrax/admin/analytics/work_reports/_custom_range.html.erb +3 -3
  221. data/app/views/hyrax/admin/analytics/work_reports/_monthly_summary.html.erb +3 -3
  222. data/app/views/hyrax/admin/analytics/work_reports/_summary.html.erb +3 -3
  223. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +5 -5
  224. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +7 -7
  225. data/app/views/hyrax/admin/analytics/work_reports/_work_counts.html.erb +4 -4
  226. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +5 -5
  227. data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +8 -8
  228. data/app/views/hyrax/admin/analytics/work_reports/show.html.erb +10 -10
  229. data/app/views/hyrax/admin/appearances/show.html.erb +2 -2
  230. data/app/views/hyrax/admin/collection_types/_form.html.erb +24 -23
  231. data/app/views/hyrax/admin/collection_types/_form_appearance.html.erb +2 -2
  232. data/app/views/hyrax/admin/collection_types/_form_participants.html.erb +4 -4
  233. data/app/views/hyrax/admin/collection_types/_form_settings.html.erb +9 -9
  234. data/app/views/hyrax/admin/collection_types/index.html.erb +6 -6
  235. data/app/views/hyrax/admin/features/index.html.erb +3 -3
  236. data/app/views/hyrax/admin/stats/_new_users.html.erb +1 -1
  237. data/app/views/hyrax/admin/stats/show.html.erb +4 -6
  238. data/app/views/hyrax/admin/users/index.html.erb +3 -3
  239. data/app/views/hyrax/admin/workflow_roles/index.html.erb +8 -8
  240. data/app/views/hyrax/admin/workflows/index.html.erb +80 -55
  241. data/app/views/hyrax/base/_citations.html.erb +6 -6
  242. data/app/views/hyrax/base/_currently_shared.html.erb +3 -3
  243. data/app/views/hyrax/base/_file_manager_actions.html.erb +5 -3
  244. data/app/views/hyrax/base/_file_manager_member.html.erb +5 -5
  245. data/app/views/hyrax/base/_file_manager_member_resource_options.html.erb +6 -6
  246. data/app/views/hyrax/base/_file_manager_members.html.erb +1 -1
  247. data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
  248. data/app/views/hyrax/base/_form_child_work_relationships.html.erb +3 -3
  249. data/app/views/hyrax/base/_form_files.html.erb +9 -9
  250. data/app/views/hyrax/base/_form_member_of_collections.html.erb +3 -3
  251. data/app/views/hyrax/base/_form_metadata.html.erb +1 -1
  252. data/app/views/hyrax/base/_form_permission.html.erb +30 -20
  253. data/app/views/hyrax/base/_form_permission_under_embargo.html.erb +1 -1
  254. data/app/views/hyrax/base/_form_permission_under_lease.html.erb +1 -1
  255. data/app/views/hyrax/base/_form_progress.html.erb +7 -7
  256. data/app/views/hyrax/base/_form_relationships.html.erb +1 -1
  257. data/app/views/hyrax/base/_form_rendering.html.erb +1 -1
  258. data/app/views/hyrax/base/_form_representative.html.erb +1 -1
  259. data/app/views/hyrax/base/_form_share.html.erb +6 -6
  260. data/app/views/hyrax/base/_form_thumbnail.html.erb +1 -1
  261. data/app/views/hyrax/base/_form_visibility_component.html.erb +16 -20
  262. data/app/views/hyrax/base/_guts4form.html.erb +12 -20
  263. data/app/views/hyrax/base/_member.html.erb +1 -1
  264. data/app/views/hyrax/base/_metadata.html.erb +1 -1
  265. data/app/views/hyrax/base/_show_actions.html.erb +10 -10
  266. data/app/views/hyrax/base/_work_button_row.html.erb +17 -16
  267. data/app/views/hyrax/base/_workflow_actions.html.erb +10 -10
  268. data/app/views/hyrax/base/_workflow_actions_widget.erb +1 -1
  269. data/app/views/hyrax/base/file_manager.html.erb +4 -5
  270. data/app/views/hyrax/base/inspect_work.html.erb +1 -1
  271. data/app/views/hyrax/base/show.html.erb +12 -12
  272. data/app/views/hyrax/base/unavailable.html.erb +2 -2
  273. data/app/views/hyrax/batch_edits/_check_all.html.erb +0 -1
  274. data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
  275. data/app/views/hyrax/batch_edits/edit.html.erb +26 -18
  276. data/app/views/hyrax/collections/_bookmark_control.html.erb +2 -2
  277. data/app/views/hyrax/collections/_list_collections.html.erb +6 -6
  278. data/app/views/hyrax/collections/_list_works.html.erb +3 -1
  279. data/app/views/hyrax/collections/_search_form.html.erb +4 -4
  280. data/app/views/hyrax/collections/_show_document_list_row.html.erb +5 -2
  281. data/app/views/hyrax/collections/_sort_and_per_page.html.erb +3 -3
  282. data/app/views/hyrax/collections/_view_type_group.html.erb +2 -2
  283. data/app/views/hyrax/contact_form/new.html.erb +12 -13
  284. data/app/views/hyrax/content_blocks/_form.html.erb +29 -23
  285. data/app/views/hyrax/content_blocks/templates/agreement.html.erb +3 -3
  286. data/app/views/hyrax/dashboard/_admin_sets.html.erb +22 -28
  287. data/app/views/hyrax/dashboard/_index_partials/_current_proxy_rights.html.erb +2 -2
  288. data/app/views/hyrax/dashboard/_index_partials/_proxy_rights.html.erb +4 -4
  289. data/app/views/hyrax/dashboard/_index_partials/_transfers.html.erb +2 -2
  290. data/app/views/hyrax/dashboard/_repository_growth.html.erb +28 -28
  291. data/app/views/hyrax/dashboard/_resource_type_graph.html.erb +4 -4
  292. data/app/views/hyrax/dashboard/_sidebar.html.erb +3 -3
  293. data/app/views/hyrax/dashboard/_tabs.html.erb +6 -2
  294. data/app/views/hyrax/dashboard/_user_activity.html.erb +22 -19
  295. data/app/views/hyrax/dashboard/_visibility_graph.html.erb +4 -4
  296. data/app/views/hyrax/dashboard/_work_type_graph.html.erb +4 -4
  297. data/app/views/hyrax/dashboard/collections/_batch_edits_actions.html.erb +1 -1
  298. data/app/views/hyrax/dashboard/collections/_bookmark_control.html.erb +2 -2
  299. data/app/views/hyrax/dashboard/collections/_edit_actions.html.erb +1 -1
  300. data/app/views/hyrax/dashboard/collections/_form.html.erb +30 -22
  301. data/app/views/hyrax/dashboard/collections/_form_branding.html.erb +19 -19
  302. data/app/views/hyrax/dashboard/collections/_form_discovery.html.erb +8 -4
  303. data/app/views/hyrax/dashboard/collections/_form_for_select_collection.html.erb +7 -7
  304. data/app/views/hyrax/dashboard/collections/_form_share.html.erb +11 -9
  305. data/app/views/hyrax/dashboard/collections/_form_share_table.html.erb +34 -31
  306. data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +1 -1
  307. data/app/views/hyrax/dashboard/collections/_list_works.html.erb +3 -1
  308. data/app/views/hyrax/dashboard/collections/_modal_remove_from_collection.html.erb +1 -1
  309. data/app/views/hyrax/dashboard/collections/_modal_remove_sub_collection.html.erb +1 -1
  310. data/app/views/hyrax/dashboard/collections/_show_add_items_actions.html.erb +1 -1
  311. data/app/views/hyrax/dashboard/collections/_show_descriptions.html.erb +5 -3
  312. data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +4 -4
  313. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +12 -10
  314. data/app/views/hyrax/dashboard/collections/_show_parent_collection_row.html.erb +2 -2
  315. data/app/views/hyrax/dashboard/collections/_sort_and_per_page.html.erb +4 -4
  316. data/app/views/hyrax/dashboard/collections/_subcollection_list.html.erb +1 -1
  317. data/app/views/hyrax/dashboard/collections/_work_action_menu.html.erb +10 -10
  318. data/app/views/hyrax/dashboard/collections/show.html.erb +4 -4
  319. data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +21 -21
  320. data/app/views/hyrax/dashboard/profiles/_trophy_edit.html.erb +5 -5
  321. data/app/views/hyrax/dashboard/profiles/_zotero.html.erb +2 -2
  322. data/app/views/hyrax/dashboard/profiles/edit.html.erb +2 -2
  323. data/app/views/hyrax/dashboard/profiles/show.html.erb +3 -3
  324. data/app/views/hyrax/dashboard/show_admin.html.erb +36 -34
  325. data/app/views/hyrax/dashboard/show_user.html.erb +16 -16
  326. data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +11 -11
  327. data/app/views/hyrax/dashboard/sidebar/_configuration.html.erb +8 -8
  328. data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +3 -1
  329. data/app/views/hyrax/dashboard/sidebar/_tasks.html.erb +5 -1
  330. data/app/views/hyrax/dashboard/works/_list_works.html.erb +4 -1
  331. data/app/views/hyrax/depositors/index.html.erb +2 -2
  332. data/app/views/hyrax/embargoes/edit.html.erb +14 -14
  333. data/app/views/hyrax/embargoes/index.html.erb +18 -6
  334. data/app/views/hyrax/file_sets/_actions.html.erb +5 -6
  335. data/app/views/hyrax/file_sets/_descriptions.html.erb +1 -1
  336. data/app/views/hyrax/file_sets/_extra_fields_modal.html.erb +1 -1
  337. data/app/views/hyrax/file_sets/_form.html.erb +1 -1
  338. data/app/views/hyrax/file_sets/_permission.html.erb +1 -1
  339. data/app/views/hyrax/file_sets/_permission_form.html.erb +39 -30
  340. data/app/views/hyrax/file_sets/_show_actions.html.erb +3 -3
  341. data/app/views/hyrax/file_sets/_show_details.html.erb +27 -17
  342. data/app/views/hyrax/file_sets/_single_use_link_rows.html.erb +2 -2
  343. data/app/views/hyrax/file_sets/_single_use_links.html.erb +2 -2
  344. data/app/views/hyrax/file_sets/_versioning.html.erb +9 -9
  345. data/app/views/hyrax/file_sets/edit.html.erb +19 -13
  346. data/app/views/hyrax/file_sets/media_display/_image.html.erb +4 -4
  347. data/app/views/hyrax/file_sets/show.html.erb +2 -2
  348. data/app/views/hyrax/homepage/_announcement.html.erb +2 -2
  349. data/app/views/hyrax/homepage/_explore_collections.html.erb +6 -4
  350. data/app/views/hyrax/homepage/_featured_fields.html.erb +1 -1
  351. data/app/views/hyrax/homepage/_featured_works.html.erb +1 -1
  352. data/app/views/hyrax/homepage/_home_content.html.erb +24 -10
  353. data/app/views/hyrax/homepage/_marketing.html.erb +1 -1
  354. data/app/views/hyrax/homepage/_recent_document.html.erb +4 -1
  355. data/app/views/hyrax/homepage/_sortable_featured.html.erb +3 -3
  356. data/app/views/hyrax/homepage/index.html.erb +4 -4
  357. data/app/views/hyrax/leases/edit.html.erb +14 -14
  358. data/app/views/hyrax/leases/index.html.erb +18 -6
  359. data/app/views/hyrax/my/_admin_set_action_menu.html.erb +5 -5
  360. data/app/views/hyrax/my/_collection_action_menu.html.erb +6 -6
  361. data/app/views/hyrax/my/_constraints.html.erb +2 -2
  362. data/app/views/hyrax/my/_document_list.html.erb +1 -1
  363. data/app/views/hyrax/my/_facet_layout.html.erb +1 -2
  364. data/app/views/hyrax/my/_facet_limit.html.erb +4 -4
  365. data/app/views/hyrax/my/_facet_pagination.html.erb +1 -25
  366. data/app/views/hyrax/my/_facet_pivot.html.erb +1 -1
  367. data/app/views/hyrax/my/_facet_selected.html.erb +1 -1
  368. data/app/views/hyrax/my/_search_form.html.erb +7 -8
  369. data/app/views/hyrax/my/_sort_and_per_page.html.erb +10 -12
  370. data/app/views/hyrax/my/_work_action_menu.html.erb +4 -5
  371. data/app/views/hyrax/my/collections/_facets.html.erb +2 -2
  372. data/app/views/hyrax/my/collections/_list_collections.html.erb +1 -1
  373. data/app/views/hyrax/my/collections/_modal_add_subcollection.html.erb +2 -2
  374. data/app/views/hyrax/my/collections/_modal_add_to_collection.html.erb +2 -2
  375. data/app/views/hyrax/my/collections/_modal_collection_types_to_create.html.erb +5 -5
  376. data/app/views/hyrax/my/collections/_modal_delete_collection.html.erb +1 -1
  377. data/app/views/hyrax/my/collections/_modal_delete_empty_collection.html.erb +1 -1
  378. data/app/views/hyrax/my/collections/_modal_delete_selected_collections.html.erb +1 -1
  379. data/app/views/hyrax/my/collections/_tabs.html.erb +11 -4
  380. data/app/views/hyrax/my/collections/index.html.erb +3 -3
  381. data/app/views/hyrax/my/facet.html.erb +17 -16
  382. data/app/views/hyrax/my/index.html.erb +2 -2
  383. data/app/views/hyrax/my/works/_batch_actions.html.erb +1 -1
  384. data/app/views/hyrax/my/works/_facets.html.erb +2 -2
  385. data/app/views/hyrax/my/works/_list_works.html.erb +6 -7
  386. data/app/views/hyrax/my/works/_tabs.html.erb +6 -6
  387. data/app/views/hyrax/my/works/index.html.erb +20 -18
  388. data/app/views/hyrax/notifications/_notifications.html.erb +1 -1
  389. data/app/views/hyrax/notifications/index.html.erb +4 -4
  390. data/app/views/hyrax/operations/index.html.erb +1 -1
  391. data/app/views/hyrax/operations/show.html.erb +2 -2
  392. data/app/views/hyrax/pages/_form.html.erb +76 -64
  393. data/app/views/hyrax/permissions/confirm.html.erb +4 -4
  394. data/app/views/hyrax/permissions/confirm_access.html.erb +4 -4
  395. data/app/views/hyrax/stats/file.html.erb +1 -1
  396. data/app/views/hyrax/stats/work.html.erb +1 -1
  397. data/app/views/hyrax/transfers/_received.html.erb +4 -4
  398. data/app/views/hyrax/transfers/index.html.erb +8 -8
  399. data/app/views/hyrax/transfers/new.html.erb +1 -1
  400. data/app/views/hyrax/uploads/_js_templates.html.erb +14 -14
  401. data/app/views/hyrax/uploads/_js_templates_branding.html.erb +5 -5
  402. data/app/views/hyrax/uploads/_js_templates_versioning.html.erb +15 -15
  403. data/app/views/hyrax/users/_activity.html.erb +3 -3
  404. data/app/views/hyrax/users/_contributions.html.erb +3 -3
  405. data/app/views/hyrax/users/_left_sidebar.html.erb +1 -1
  406. data/app/views/hyrax/users/_profile_tabs.html.erb +16 -8
  407. data/app/views/hyrax/users/_search_form.html.erb +2 -2
  408. data/app/views/hyrax/users/_user.html.erb +5 -5
  409. data/app/views/hyrax/users/_user_info.html.erb +4 -4
  410. data/app/views/hyrax/users/_vitals.html.erb +3 -3
  411. data/app/views/hyrax/users/show.html.erb +2 -2
  412. data/app/views/layouts/_head_tag_content.html.erb +2 -5
  413. data/app/views/layouts/hyrax/dashboard.html.erb +4 -4
  414. data/app/views/layouts/hyrax.html.erb +4 -3
  415. data/app/views/shared/_appearance_styles.html.erb +8 -8
  416. data/app/views/shared/_footer.html.erb +1 -1
  417. data/app/views/shared/_locale_picker.html.erb +5 -8
  418. data/app/views/shared/_nav_safety_modal.html.erb +2 -2
  419. data/app/views/shared/_select_work_type_modal.html.erb +2 -2
  420. data/config/locales/hyrax.de.yml +5 -6
  421. data/config/locales/hyrax.en.yml +4 -15
  422. data/config/locales/hyrax.es.yml +6 -7
  423. data/config/locales/hyrax.fr.yml +8 -9
  424. data/config/locales/hyrax.it.yml +6 -7
  425. data/config/locales/hyrax.pt-BR.yml +6 -7
  426. data/config/locales/hyrax.zh.yml +6 -7
  427. data/docker-compose.yml +2 -1
  428. data/documentation/developing-your-hyrax-based-app.md +2 -2
  429. data/documentation/legacyREADME.md +3 -3
  430. data/hyrax.gemspec +13 -24
  431. data/karma.conf.js +104 -0
  432. data/lib/generators/hyrax/assets_generator.rb +2 -5
  433. data/lib/generators/hyrax/install_generator.rb +9 -33
  434. data/lib/generators/hyrax/templates/catalog_controller.rb +20 -13
  435. data/lib/generators/hyrax/templates/config/analytics.yml +0 -3
  436. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +1 -1
  437. data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +1 -1
  438. data/lib/generators/hyrax/templates/hyrax.scss +1 -2
  439. data/lib/generators/hyrax/templates/package.json +7 -8
  440. data/lib/hyrax/active_fedora_dummy_model.rb +0 -13
  441. data/lib/hyrax/configuration.rb +2 -49
  442. data/lib/hyrax/engine.rb +1 -2
  443. data/lib/hyrax/errors.rb +0 -2
  444. data/lib/hyrax/publisher.rb +0 -4
  445. data/lib/hyrax/specs/capybara.rb +5 -3
  446. data/lib/hyrax/specs/shared_specs/factories/strategies/valkyrie_resource.rb +0 -6
  447. data/lib/hyrax/specs/shared_specs/indexers.rb +0 -5
  448. data/lib/hyrax/transactions/container.rb +0 -54
  449. data/lib/hyrax/version.rb +1 -1
  450. data/lib/valkyrie/indexing/solr/indexing_adapter.rb +1 -1
  451. data/lib/wings/valkyrie/persister.rb +2 -1
  452. data/lib/wings/valkyrie/storage.rb +2 -6
  453. data/package.json +11 -0
  454. data/tasks/hyrax_dev.rake +32 -0
  455. data/template.rb +1 -1
  456. data/vendor/assets/javascripts/dataTables.bootstrap4.js +184 -0
  457. data/vendor/assets/javascripts/fileupload/jquery.fileupload-ui.js +1 -1
  458. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +2 -2
  459. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +1 -1
  460. data/vendor/assets/javascripts/handlebars.js +5214 -0
  461. data/vendor/assets/javascripts/jquery-ui.js +19057 -0
  462. data/vendor/assets/javascripts/jquery.dataTables.js +15336 -0
  463. data/vendor/assets/javascripts/morris/morris.min.js +9 -1
  464. data/vendor/assets/javascripts/morris/raphael-min.js +4 -6
  465. data/vendor/assets/javascripts/nestable.js +1 -1
  466. data/vendor/assets/stylesheets/dataTables.bootstrap4.css +307 -0
  467. data/vendor/assets/stylesheets/jquery-ui.css +1315 -0
  468. data/vendor/assets/stylesheets/morris.css +3 -0
  469. metadata +95 -218
  470. data/app/actors/hyrax/actors/initialize_workflow_actor.rb +0 -35
  471. data/app/forms/hyrax/forms/embargo.rb +0 -13
  472. data/app/forms/hyrax/forms/lease.rb +0 -13
  473. data/app/forms/hyrax/forms/pcdm_object_form.rb +0 -46
  474. data/app/forms/hyrax/forms/work_embargo_form.rb +0 -35
  475. data/app/forms/hyrax/forms/work_lease_form.rb +0 -35
  476. data/app/helpers/hyrax/url_helper.rb +0 -13
  477. data/app/jobs/content_depositor_change_event_job.rb +0 -48
  478. data/app/models/concerns/hyrax/with_file_sets.rb +0 -17
  479. data/app/services/hyrax/analytics/ga4.rb +0 -204
  480. data/app/services/hyrax/file_set_file_service.rb +0 -55
  481. data/app/services/hyrax/work_resource_query_service.rb +0 -45
  482. data/app/views/hyrax/admin/workflows/_tabs.html.erb +0 -9
  483. data/app/views/shared/_ga4.html.erb +0 -10
  484. data/config/metadata/file_set_metadata.yaml +0 -130
  485. data/lib/hyrax/transactions/create_work.rb +0 -65
  486. data/lib/hyrax/transactions/destroy_work.rb +0 -28
  487. data/lib/hyrax/transactions/steps/apply_collection_permission_template.rb +0 -34
  488. data/lib/hyrax/transactions/steps/apply_permission_template.rb +0 -32
  489. data/lib/hyrax/transactions/steps/apply_visibility.rb +0 -41
  490. data/lib/hyrax/transactions/steps/destroy_work.rb +0 -27
  491. data/lib/hyrax/transactions/steps/ensure_permission_template.rb +0 -29
  492. data/lib/hyrax/transactions/steps/save_work.rb +0 -38
  493. data/lib/hyrax/transactions/update_work.rb +0 -19
  494. data/lib/wings/services/file_converter_service.rb +0 -19
  495. data/lib/wings/services/file_metadata_builder.rb +0 -94
  496. data/vendor/assets/javascripts/handlebars-v4.0.5.js +0 -4612
  497. data/vendor/assets/stylesheets/morris.js/0.5.1/morris.css +0 -2
data/CONTRIBUTING.md CHANGED
@@ -11,17 +11,6 @@ experience for all its members, whether they are at a formal gathering, in
11
11
  a social setting, or taking part in activities online. Please see our
12
12
  [Code of Conduct](CODE_OF_CONDUCT.md) for more information.
13
13
 
14
- ## Samvera Community Intellectual Property Licensing and Ownership
15
-
16
- All code contributors must have an Individual Contributor License Agreement
17
- (iCLA) on file with the Samvera Steering Group. If the contributor works for
18
- an institution, the institution must have a Corporate Contributor License
19
- Agreement (cCLA) on file.
20
-
21
- https://wiki.lyrasis.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
22
-
23
- You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
24
-
25
14
  ## Language
26
15
 
27
16
  The language we use matters. Today, tomorrow, and for years to come
@@ -67,15 +56,22 @@ further details.
67
56
 
68
57
  * Fork the repository on GitHub
69
58
  * Create a topic branch from where you want to base your work.
70
- * This is usually the master branch.
71
- * To quickly create a topic branch based on master; `git branch fix/master/my_contribution master`
72
- * Then checkout the new branch with `git checkout fix/master/my_contribution`.
73
- * Please avoid working directly on the `master` branch.
59
+ * This is usually the `main` branch.
60
+ * To quickly create a topic branch based on `main`; `git branch fix/main/my_contribution main`
61
+ * Then checkout the new branch with `git checkout fix/main/my_contribution`.
62
+ * Please avoid working directly on the `main` branch.
63
+ * Please do not create a branch called `master`. (See note below.)
74
64
  * You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
75
65
  * Make sure you have added sufficient tests and documentation for your changes.
76
66
  * Test functionality with RSpec; Test features / UI with Capybara.
77
67
  * Run _all_ the tests to assure nothing else was accidentally broken.
78
68
 
69
+ NOTE: This repository follows the [Samvera Community Code of Conduct](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405212316/Code+of+Conduct)
70
+ and [language recommendations](#language).
71
+ Please ***do not*** create a branch called `master` for this repository or as part of
72
+ your pull request; the branch will either need to be removed or renamed before it can
73
+ be considered for inclusion in the code base and history of this repository.
74
+
79
75
  ### Documenting Code
80
76
 
81
77
  * All new public methods, modules, and classes should include inline documentation in [YARD](http://yardoc.org/).
@@ -131,15 +127,15 @@ further details.
131
127
  ### Submitting Changes
132
128
 
133
129
  * Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
134
- * Make sure your branch is up to date with its parent branch (i.e. master)
135
- * `git checkout master`
130
+ * Make sure your branch is up to date with its parent branch (i.e. main)
131
+ * `git checkout main`
136
132
  * `git pull --rebase`
137
133
  * `git checkout <your-branch>`
138
- * `git rebase master`
134
+ * `git rebase main`
139
135
  * It is a good idea to run your tests again.
140
136
  * If you've made more than one commit take a moment to consider whether squashing commits together would help improve their logical grouping.
141
137
  * [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
142
- * `git rebase --interactive master` ([See Github help](https://help.github.com/articles/interactive-rebase))
138
+ * `git rebase --interactive main` ([See Github help](https://help.github.com/articles/interactive-rebase))
143
139
  * Squashing your branch's changes into one commit is "good form" and helps the person merging your request to see everything that is going on.
144
140
  * Push your changes to a topic branch in your fork of the repository.
145
141
  * Submit a pull request from your fork to the project.
@@ -149,12 +145,14 @@ further details.
149
145
  We adopted [Github's Pull Request Review](https://help.github.com/articles/about-pull-request-reviews/) for our repositories.
150
146
  Common checks that may occur in our repositories:
151
147
 
152
- 1. Travis CI - where our automated tests are running
153
- 2. Approval Required - Github enforces at least one person approve a pull request. Also, all reviewers that have chimed in must approve.
148
+ 1. [CircleCI](https://circleci.com/gh/samvera) - where our automated tests are running
149
+ 2. RuboCop/Bixby - where we check for style violations
150
+ 3. Approval Required - Github enforces at least one person approve a pull request. Also, all reviewers that have chimed in must approve.
151
+ 4. CodeClimate - is our code remaining healthy (at least according to static code analysis)
154
152
 
155
153
  If one or more of the required checks failed (or are incomplete), the code should not be merged (and the UI will not allow it). If all of the checks have passed, then anyone on the project (including the pull request submitter) may merge the code.
156
154
 
157
- *Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (Travis CI is usually the culprit), so he does not merge the pull request. Eventually, all of the checks pass. At this point, Carolyn or anyone else may merge the pull request.*
155
+ *Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (CI tests are usually the culprit), so he does not merge the pull request. Eventually, all of the checks pass. At this point, Carolyn or anyone else may merge the pull request.*
158
156
 
159
157
  #### Things to Consider When Reviewing
160
158
 
@@ -171,7 +169,7 @@ This is your chance for a mentoring moment of another developer. Take time to gi
171
169
  * Do new or changed methods, modules, and classes have documentation?
172
170
  * Does the commit contain more than it should? Are two separate concerns being addressed in one commit?
173
171
  * Does the description of the new/changed specs match your understanding of what the spec is doing?
174
- * Did the Travis tests complete successfully?
172
+ * Did the Continuous Integration tests complete successfully?
175
173
 
176
174
  If you are uncertain, bring other contributors into the conversation by assigning them as a reviewer.
177
175
 
@@ -180,4 +178,4 @@ If you are uncertain, bring other contributors into the conversation by assignin
180
178
  * [General GitHub documentation](http://help.github.com/)
181
179
  * [GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/)
182
180
  * [Pro Git](http://git-scm.com/book) is both a free and excellent book about Git.
183
- * [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
181
+ * [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- ARG RUBY_VERSION=2.7.5
1
+ ARG RUBY_VERSION=2.7.6
2
2
  FROM ruby:$RUBY_VERSION-alpine3.15 as hyrax-base
3
3
 
4
4
  ARG DATABASE_APK_PACKAGE="postgresql-dev"
data/Rakefile CHANGED
@@ -9,10 +9,6 @@ end
9
9
 
10
10
  Bundler::GemHelper.install_tasks
11
11
 
12
- import "#{Gem.loaded_specs['jasmine'].full_gem_path}/lib/jasmine/tasks/jasmine.rake"
13
-
14
- # Set up the test application prior to running jasmine tasks.
15
- task 'jasmine:require' => :setup_test_server
16
12
  task :setup_test_server do
17
13
  require 'engine_cart'
18
14
  EngineCart.load_application!
@@ -37,7 +37,7 @@ module Hyrax
37
37
  # @return [Boolean] true if destroy was successful
38
38
  def destroy(env)
39
39
  env.curation_concern.in_collection_ids.each do |id|
40
- destination_collection = Hyrax.config.collection_class.find(id)
40
+ destination_collection = ::Collection.find(id)
41
41
  destination_collection.members.delete(env.curation_concern)
42
42
  destination_collection.update_index
43
43
  end
@@ -70,7 +70,7 @@ module Hyrax
70
70
  # along side the FileSets on the show page
71
71
  def add(env, id)
72
72
  collection = Hyrax.config.collection_class.find(id)
73
- collection.try(:reindex_extent=, Hyrax::Adapters::NestingIndexAdapter::LIMITED_REINDEX)
73
+ collection.reindex_extent = Hyrax::Adapters::NestingIndexAdapter::LIMITED_REINDEX
74
74
 
75
75
  return unless env.current_ability.can?(:deposit, collection)
76
76
  env.curation_concern.member_of_collections << collection
@@ -93,19 +93,13 @@ module Hyrax
93
93
 
94
94
  def create_file_from_url(uri, file_name, auth_header)
95
95
  import_url = URI.decode_www_form_component(uri.to_s)
96
- use_valkyrie = false
97
- case curation_concern
98
- when Valkyrie::Resource
99
- file_set = Hyrax.persister.save(resource: Hyrax::FileSet.new(import_url: import_url, label: file_name))
100
- use_valkyrie = true
101
- else
102
- file_set = ::FileSet.new(import_url: import_url, label: file_name)
103
- end
104
- __create_file_from_url(file_set: file_set, uri: uri, auth_header: auth_header, use_valkyrie: use_valkyrie)
96
+ file_set = ::FileSet.new(import_url: import_url, label: file_name)
97
+
98
+ __create_file_from_url(file_set: file_set, uri: uri, auth_header: auth_header)
105
99
  end
106
100
 
107
- def __create_file_from_url(file_set:, uri:, auth_header:, use_valkyrie: Hyrax.config.use_valkyrie?)
108
- actor = file_set_actor_class.new(file_set, user, use_valkyrie: use_valkyrie)
101
+ def __create_file_from_url(file_set:, uri:, auth_header:)
102
+ actor = file_set_actor_class.new(file_set, user)
109
103
  actor.create_metadata(visibility: curation_concern.visibility)
110
104
  actor.attach_to_work(curation_concern)
111
105
  file_set.save! if file_set.respond_to?(:save!)
@@ -12,17 +12,10 @@ module Hyrax
12
12
  # Update the visibility of the work to match the correct state of the embargo, then clear the embargo date, etc.
13
13
  # Saves the embargo and the work
14
14
  def destroy
15
- case work
16
- when Valkyrie::Resource
17
- embargo_manager = Hyrax::EmbargoManager.new(resource: work)
18
- embargo_manager.release && Hyrax::AccessControlList(work).save
19
- embargo_manager.nullify
20
- else
21
- work.embargo_visibility! # If the embargo has lapsed, update the current visibility.
22
- work.deactivate_embargo!
23
- work.embargo.save!
24
- work.save!
25
- end
15
+ work.embargo_visibility! # If the embargo has lapsed, update the current visibility.
16
+ work.deactivate_embargo!
17
+ work.embargo.save!
18
+ work.save!
26
19
  end
27
20
  end
28
21
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require 'wings/services/file_metadata_builder'
3
2
 
4
3
  module Hyrax
5
4
  module Actors
@@ -11,8 +10,7 @@ module Hyrax
11
10
  # @param [FileSet] file_set the parent FileSet
12
11
  # @param [Symbol, #to_sym] relation the type/use for the file
13
12
  # @param [User] user the user to record as the Agent acting upon the file
14
- def initialize(file_set, relation, user, use_valkyrie: Hyrax.config.query_index_from_valkyrie)
15
- @use_valkyrie = use_valkyrie
13
+ def initialize(file_set, relation, user)
16
14
  @file_set = file_set
17
15
  @relation = normalize_relation(relation)
18
16
  @user = user
@@ -25,7 +23,14 @@ module Hyrax
25
23
  # @see IngestJob
26
24
  # @todo create a job to monitor the temp directory (or in a multi-worker system, directories!) to prune old files that have made it into the repo
27
25
  def ingest_file(io)
28
- use_valkyrie ? perform_ingest_file_through_valkyrie(io) : perform_ingest_file_through_active_fedora(io)
26
+ Hydra::Works::AddFileToFileSet.call(file_set,
27
+ io,
28
+ relation,
29
+ versioning: false)
30
+ return false unless file_set.save
31
+ repository_file = related_file
32
+ create_version(repository_file, user)
33
+ CharacterizeJob.perform_later(file_set, repository_file.id, pathhint(io))
29
34
  end
30
35
 
31
36
  # Reverts file and spawns async job to characterize and create derivatives.
@@ -63,39 +68,6 @@ module Hyrax
63
68
  file_set.public_send(normalize_relation(relation)) || raise("No #{relation} returned for FileSet #{file_set.id}")
64
69
  end
65
70
 
66
- def perform_ingest_file_through_active_fedora(io)
67
- # Skip versioning because versions will be minted by VersionCommitter as necessary during save_characterize_and_record_committer.
68
- Hydra::Works::AddFileToFileSet.call(file_set,
69
- io,
70
- relation,
71
- versioning: false)
72
- return false unless file_set.save
73
- repository_file = related_file
74
- create_version(repository_file, user)
75
- CharacterizeJob.perform_later(file_set, repository_file.id, pathhint(io))
76
- end
77
-
78
- def perform_ingest_file_through_valkyrie(io) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
79
- Deprecation.warn "FileActor support for Valkyrie was experimental and " \
80
- "is slated to be removed in favor of WorkUploadsHandler."
81
- file =
82
- begin
83
- Hyrax.storage_adapter.upload(resource: file_set, file: io, original_filename: io.original_name, use: relation)
84
- rescue StandardError => err
85
- Rails.logger.error("Failed to save file_metadata through valkyrie: #{err.message}")
86
- return false
87
- end
88
- file_metadata = Hyrax.custom_queries.find_file_metadata_by(id: file.id)
89
- create_version(file_metadata, user)
90
-
91
- file_set.file_ids << file_metadata.id
92
- file_set.original_file_id = file_metadata.id
93
- Hyrax.persister.save(resource: file_set)
94
- Hyrax.publisher.publish('object.metadata.updated', object: file_set, user: user)
95
- CharacterizeJob.perform_later(file_set, file_metadata.id.to_s, pathhint(io))
96
- file_metadata
97
- end
98
-
99
71
  def normalize_relation(relation)
100
72
  use_valkyrie ? normalize_relation_for_valkyrie(relation) : normalize_relation_for_active_fedora(relation)
101
73
  end
@@ -4,10 +4,9 @@ module Hyrax
4
4
  # Actions are decoupled from controller logic so that they may be called from a controller or a background job.
5
5
  class FileSetActor # rubocop:disable Metrics/ClassLength
6
6
  include Lockable
7
- attr_reader :file_set, :user, :attributes, :use_valkyrie
7
+ attr_reader :file_set, :user, :attributes
8
8
 
9
- def initialize(file_set, user, use_valkyrie: Hyrax.config.query_index_from_valkyrie)
10
- @use_valkyrie = use_valkyrie
9
+ def initialize(file_set, user)
11
10
  @file_set = file_set
12
11
  @user = user
13
12
  end
@@ -71,42 +70,17 @@ module Hyrax
71
70
  def attach_to_work(work, file_set_params = {})
72
71
  acquire_lock_for(work.id) do
73
72
  # Ensure we have an up-to-date copy of the members association, so that we append to the end of the list.
74
- if valkyrie_object?(work)
75
- attach_to_valkyrie_work(work, file_set_params)
76
- else
77
- attach_to_af_work(work, file_set_params)
78
- end
73
+ work.reload unless work.new_record?
74
+ file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
75
+ work.ordered_members << file_set
76
+ work.representative = file_set if work.representative_id.blank?
77
+ work.thumbnail = file_set if work.thumbnail_id.blank?
78
+ # Save the work so the association between the work and the file_set is persisted (head_id)
79
+ # NOTE: the work may not be valid, in which case this save doesn't do anything.
80
+ work.save
79
81
  Hyrax.config.callback.run(:after_create_fileset, file_set, user, warn: false)
80
82
  end
81
83
  end
82
- alias attach_file_to_work attach_to_work
83
- deprecation_deprecate attach_file_to_work: "use attach_to_work instead"
84
-
85
- def attach_to_valkyrie_work(work, file_set_params)
86
- work = Hyrax.query_service.find_by(id: work.id) unless work.new_record
87
- file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
88
- fs = Hyrax.persister.save(resource: file_set)
89
- Hyrax.publisher.publish('object.metadata.updated', object: fs, user: user)
90
- work.member_ids << fs.id
91
- work.representative_id = fs.id if work.representative_id.blank?
92
- work.thumbnail_id = fs.id if work.thumbnail_id.blank?
93
- # Save the work so the association between the work and the file_set is persisted (head_id)
94
- # NOTE: the work may not be valid, in which case this save doesn't do anything.
95
- Hyrax.persister.save(resource: work)
96
- Hyrax.publisher.publish('object.metadata.updated', object: work, user: user)
97
- end
98
-
99
- # Adds a FileSet to the work using ore:Aggregations.
100
- def attach_to_af_work(work, file_set_params)
101
- work.reload unless work.new_record?
102
- file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
103
- work.ordered_members << file_set
104
- work.representative = file_set if work.representative_id.blank?
105
- work.thumbnail = file_set if work.thumbnail_id.blank?
106
- # Save the work so the association between the work and the file_set is persisted (head_id)
107
- # NOTE: the work may not be valid, in which case this save doesn't do anything.
108
- work.save
109
- end
110
84
 
111
85
  # @param [String] revision_id the revision to revert to
112
86
  # @param [Symbol, #to_sym] relation
@@ -144,8 +118,7 @@ module Hyrax
144
118
  end
145
119
 
146
120
  def build_file_actor(relation)
147
- fs = use_valkyrie ? file_set.valkyrie_resource : file_set
148
- file_actor_class.new(fs, relation, user, use_valkyrie: use_valkyrie)
121
+ file_actor_class.new(file_set, relation, user)
149
122
  end
150
123
 
151
124
  # uses create! because object must be persisted to serialize for jobs
@@ -194,32 +167,10 @@ module Hyrax
194
167
  work.save!
195
168
  end
196
169
 
197
- # switches between using valkyrie to save or active fedora to save
198
170
  def perform_save(object)
199
- obj_to_save = object_to_act_on(object)
200
- if valkyrie_object?(obj_to_save)
201
- saved_resource = Hyrax.persister.save(resource: obj_to_save)
202
- # return the same type of object that was passed in
203
- saved_object_to_return = valkyrie_object?(object) ? saved_resource : Wings::ActiveFedoraConverter.new(resource: saved_resource).convert
204
- else
205
- obj_to_save.save
206
- saved_object_to_return = obj_to_save
207
- end
208
- saved_object_to_return
209
- end
210
-
211
- # if passed a resource or if use_valkyrie==true, object to act on is the valkyrie resource
212
- def object_to_act_on(object)
213
- return object if valkyrie_object?(object)
214
- use_valkyrie ? object.valkyrie_resource : object
215
- end
216
-
217
- # determine if the object is a valkyrie resource
218
- def valkyrie_object?(object)
219
- object.is_a? Valkyrie::Resource
171
+ object.save
172
+ object
220
173
  end
221
- # rubocop:enable Metrics/AbcSize
222
- # rubocop:enable Metrics/CyclomaticComplexity
223
174
  end
224
175
  end
225
176
  end
@@ -12,17 +12,10 @@ module Hyrax
12
12
  # Update the visibility of the work to match the correct state of the lease, then clear the lease date, etc.
13
13
  # Saves the lease and the work
14
14
  def destroy
15
- case work
16
- when Valkyrie::Resource
17
- lease_manager = Hyrax::LeaseManager.new(resource: work)
18
- lease_manager.release && Hyrax::AccessControlList(work).save
19
- lease_manager.nullify
20
- else
21
- work.lease_visibility! # If the lease has lapsed, update the current visibility.
22
- work.deactivate_lease!
23
- work.lease.save!
24
- work.save!
25
- end
15
+ work.lease_visibility! # If the lease has lapsed, update the current visibility.
16
+ work.deactivate_lease!
17
+ work.lease.save!
18
+ work.save!
26
19
  end
27
20
  end
28
21
  end
@@ -1,125 +1,75 @@
1
1
  class TrackingTags {
2
2
  constructor(provider) {
3
3
  this.provider = provider
4
- switch(this.provider) {
5
- case 'matomo':
6
- this.tracker = new MatomoTagTracker();
7
- break;
8
- case 'google':
9
- this.tracker = new UATagTracker();
10
- break;
11
- case 'ga4':
12
- this.tracker = new GA4TagTracker();
13
- break;
14
- default:
15
- console.error('Unsupport analytics provider ' + this.provider + ', supported values are: matomo, google, ga4');
16
- }
17
- }
18
-
19
- // Track an event with the configured provider
20
- trackTagEvent(category, action, name) {
21
- this.tracker.trackEvent(category, action, name);
22
4
  }
23
5
 
24
- // Track a page view with the configured provider
25
- trackPageView() {
26
- this.tracker.trackPageView();
27
- }
28
-
29
- // Deprecated: use trackTagEvent and trackPageView instead.
30
6
  analytics() {
31
- return this;
32
- }
33
-
34
- // Deprecated: use trackTagEvent and trackPageView instead.
35
- push(params) {
36
- if (params[0] == 'trackPageView' || params[0] == '_trackPageView') {
37
- this.tracker.trackPageView();
38
- } else {
39
- this.tracker.trackTagEvent(params[1], params[2], params[3]);
7
+ if(this.provider === "matomo") {
8
+ return _paq;
9
+ }
10
+ else {
11
+ return _gaq;
40
12
  }
41
13
  }
42
14
 
43
- // Deprecated
44
15
  pageView() {
45
- return 'trackPageView';
16
+ if(this.provider === "matomo") {
17
+ return 'trackPageView'
18
+ } else {
19
+ return '_trackPageview'
20
+ }
46
21
  }
47
22
 
48
- // Deprecated
49
23
  trackEvent() {
50
- return 'trackEvent';
51
- }
52
- }
53
-
54
- class GA4TagTracker {
55
- trackEvent(category, action, name) {
56
- gtag('event', action, {
57
- 'category': category,
58
- 'label': name
59
- });
60
- }
61
-
62
- trackPageView() {
63
- // No operation necessary, this event is automatically collected
64
- }
65
- }
66
-
67
- class UATagTracker {
68
- trackEvent(category, action, name) {
69
- _gaq.push(['_trackEvent', category, action, name]);
70
- }
71
-
72
- trackPageView() {
73
- _gaq.push(['_trackPageView']);
74
- }
75
- }
76
-
77
- class MatomoTagTracker {
78
- trackEvent(category, action, name) {
79
- _paq.push(['trackEvent', category, action, name]);
80
- }
81
-
82
- trackPageView() {
83
- _paq.push(['trackPageView']);
24
+ if(this.provider === "matomo") {
25
+ return 'trackEvent'
26
+ } else {
27
+ return '_trackEvent'
28
+ }
84
29
  }
85
30
  }
86
31
 
87
32
  function trackPageView() {
88
- window.trackingTags.trackPageView();
33
+ window.trackingTags.analytics().push([window.trackingTags.pageView()]);
89
34
  }
90
35
 
91
36
  function trackAnalyticsEvents() {
92
37
  $('span.analytics-event').each(function(){
93
- var eventSpan = $(this);
94
- window.trackingTags.trackTagEvent(eventSpan.data('category'), eventSpan.data('action'), eventSpan.data('name'));
38
+ var eventSpan = $(this)
39
+ window.trackingTags.analytics().push([window.trackingTags.trackEvent(), eventSpan.data('category'), eventSpan.data('action'), eventSpan.data('name')]);
95
40
  })
96
41
  }
97
42
 
98
43
  function setupTracking() {
99
- var provider = $('meta[name="analytics-provider"]').prop('content')
100
- if (provider === undefined) {
101
- return;
102
- }
103
- window.trackingTags = new TrackingTags(provider);
104
- trackPageView();
105
- trackAnalyticsEvents();
44
+ var provider = $('meta[name="analytics-provider"]').prop('content')
45
+ if (provider === undefined) {
46
+ return;
47
+ }
48
+ window.trackingTags = new TrackingTags(provider)
49
+ trackPageView()
50
+ trackAnalyticsEvents()
106
51
  }
107
52
 
108
53
  if (typeof Turbolinks !== 'undefined') {
109
54
  $(document).on('turbolinks:load', function() {
110
- setupTracking();
111
- });
55
+ setupTracking()
56
+ })
112
57
  } else {
113
58
  $(document).on('ready', function() {
114
- setupTracking();
115
- });
59
+ setupTracking()
60
+ })
116
61
  }
117
62
 
118
63
  $(document).on('click', '#file_download', function(e) {
119
- window.trackingTags.trackTagEvent('file-set', 'file-set-download', $(this).data('label'));
120
- window.trackingTags.trackTagEvent('file-set-in-work', 'file-set-in-work-download', $(this).data('work-id'));
64
+ var provider = $('meta[name="analytics-provider"]').prop('content')
65
+ if (provider === undefined) {
66
+ return;
67
+ }
68
+ window.trackingTags = new TrackingTags(provider)
69
+ window.trackingTags.analytics().push([trackingTags.trackEvent(), 'file-set', 'file-set-download', $(this).data('label')]);
70
+ window.trackingTags.analytics().push([trackingTags.trackEvent(), 'file-set-in-work', 'file-set-in-work-download', $(this).data('work-id')]);
121
71
  $(this).data('collection-ids').forEach(function (collection) {
122
- window.trackingTags.trackTagEvent('file-set-in-collection', 'file-set-in-collection-download', collection);
123
- window.trackingTags.trackTagEvent('work-in-collection', 'work-in-collection-download', collection);
72
+ window.trackingTags.analytics().push([trackingTags.trackEvent(), 'file-set-in-collection', 'file-set-in-collection-download', collection]);
73
+ window.trackingTags.analytics().push([trackingTags.trackEvent(), 'work-in-collection', 'work-in-collection-download', collection]);
124
74
  });
125
75
  });
@@ -92,7 +92,7 @@ Hyrax = {
92
92
  // Popover help modals. Used on the user profile page.
93
93
  popovers: function () {
94
94
  $("a[data-toggle=popover]").popover({html: true})
95
- .click(function () {
95
+ .on("click", function () {
96
96
  return false;
97
97
  });
98
98
  },
@@ -104,7 +104,7 @@ Hyrax = {
104
104
  // On the edit work page
105
105
  new PermissionsControl($("#share"), 'tmpl-work-grant');
106
106
  // On the edit fileset page
107
- new PermissionsControl($("#permission"), 'tmpl-file-set-grant', { with_visibility_component: true });
107
+ new PermissionsControl($("#permission"), 'tmpl-file-set-grant');
108
108
  // On the batch edit page
109
109
  new PermissionsControl($("#form_permissions"), 'tmpl-work-grant');
110
110
  // On the edit collection page
@@ -1,10 +1,10 @@
1
1
  Blacklight.onLoad(function() {
2
- $('#show_addl_descriptions').click(function() {
2
+ $('#show_addl_descriptions').on('click', function() {
3
3
  $('#more_descriptions').show();
4
4
  $('#show_addl_descriptions').hide();
5
5
  return false;
6
6
  });
7
- $('#hide_addl_descriptions').click(function() {
7
+ $('#hide_addl_descriptions').on('click', function() {
8
8
  $('#more_descriptions').hide();
9
9
  $('#show_addl_descriptions').show();
10
10
  return false;
@@ -9,7 +9,7 @@ function batch_edit_init () {
9
9
  var key = Pair[0];
10
10
  var val = Pair[1];
11
11
  if (Result[key] != null) {
12
- if(!$.isArray(Result[key])) Result[key] = [Result[key]];
12
+ if(!Array.isArray(Result[key])) Result[key] = [Result[key]];
13
13
  Result[key].push(val);
14
14
  } else
15
15
  Result[key] = val;
@@ -159,9 +159,9 @@ function batch_edit_init () {
159
159
  setTimeout(ajaxManager.runNow(), 100);
160
160
  }
161
161
 
162
- $("#permissions_visibility_save").click(runSave);
163
- $("#permissions_roles_save").click(runSave);
164
- $(".field-save").click(runSave);
162
+ $("#permissions_visibility_save").on('click', runSave);
163
+ $("#permissions_roles_save").on( 'click', runSave);
164
+ $(".field-save").on('click', runSave);
165
165
  }
166
166
 
167
167
  Blacklight.onLoad(function() {