hyrax 3.4.1 → 4.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +41 -52
  3. data/.dassie/.env +1 -1
  4. data/.dassie/Gemfile +4 -4
  5. data/.dassie/app/assets/javascripts/application.js +8 -4
  6. data/.dassie/app/assets/stylesheets/application.css +1 -1
  7. data/.dassie/app/assets/stylesheets/hyrax.scss +1 -2
  8. data/.dassie/app/controllers/application_controller.rb +1 -3
  9. data/.dassie/app/controllers/catalog_controller.rb +23 -19
  10. data/.dassie/app/forms/collection_resource_form.rb +8 -0
  11. data/.dassie/app/indexers/collection_resource_indexer.rb +8 -0
  12. data/.dassie/app/models/collection_resource.rb +35 -0
  13. data/.dassie/app/models/user.rb +0 -3
  14. data/.dassie/config/application.rb +1 -1
  15. data/.dassie/config/initializers/file_services.rb +4 -0
  16. data/.dassie/config/initializers/hyrax.rb +2 -1
  17. data/.dassie/config/initializers/riiif.rb +1 -1
  18. data/.dassie/config/metadata/collection_resource.yaml +23 -0
  19. data/.dassie/db/schema.rb +5 -5
  20. data/.dassie/db/seeds.rb +2 -0
  21. data/.dassie/package.json +7 -7
  22. data/.dassie/spec/forms/collection_resource_form_spec.rb +13 -0
  23. data/.dassie/spec/indexers/collection_resource_indexer_spec.rb +14 -0
  24. data/.dassie/spec/models/collection_resource_spec.rb +13 -0
  25. data/.engine_cart.yml +2 -39
  26. data/.env +1 -0
  27. data/.regen +2 -1
  28. data/.rubocop.yml +1 -1
  29. data/.rubocop_fixme.yml +19 -2
  30. data/CONTAINERS.md +18 -13
  31. data/CONTRIBUTING.md +22 -24
  32. data/Dockerfile +2 -2
  33. data/Rakefile +0 -4
  34. data/app/actors/hyrax/actors/base_actor.rb +1 -1
  35. data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +5 -11
  36. data/app/actors/hyrax/actors/file_actor.rb +9 -37
  37. data/app/actors/hyrax/actors/file_set_actor.rb +13 -62
  38. data/app/assets/javascripts/hyrax/app.js.erb +1 -1
  39. data/app/assets/javascripts/hyrax/batch.js +2 -2
  40. data/app/assets/javascripts/hyrax/batch_edit.js +4 -4
  41. data/app/assets/javascripts/hyrax/batch_select_all.js +13 -13
  42. data/app/assets/javascripts/hyrax/browse_everything.js +4 -2
  43. data/app/assets/javascripts/hyrax/collection_types.es6 +1 -1
  44. data/app/assets/javascripts/hyrax/collections/editor.es6 +5 -1
  45. data/app/assets/javascripts/hyrax/collections_v2.es6 +13 -0
  46. data/app/assets/javascripts/hyrax/dashboard_actions.js +5 -5
  47. data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +3 -3
  48. data/app/assets/javascripts/hyrax/editor.es6 +3 -3
  49. data/app/assets/javascripts/hyrax/facets.js +6 -4
  50. data/app/assets/javascripts/hyrax/file_manager/member.es6 +1 -1
  51. data/app/assets/javascripts/hyrax/file_manager/save_manager.es6 +2 -2
  52. data/app/assets/javascripts/hyrax/file_manager/sorting.es6 +2 -2
  53. data/app/assets/javascripts/hyrax/file_manager.es6 +2 -17
  54. data/app/assets/javascripts/hyrax/notification.es6 +1 -1
  55. data/app/assets/javascripts/hyrax/permissions/registry.es6 +4 -4
  56. data/app/assets/javascripts/hyrax/permissions/user_controls.es6 +3 -1
  57. data/app/assets/javascripts/hyrax/relationships/confirm_remove_dialog.es6 +1 -1
  58. data/app/assets/javascripts/hyrax/relationships/control.es6 +2 -2
  59. data/app/assets/javascripts/hyrax/relationships/registry_entry.es6 +1 -1
  60. data/app/assets/javascripts/hyrax/reports-buttons.js +9 -9
  61. data/app/assets/javascripts/hyrax/save_work/required_fields.es6 +1 -1
  62. data/app/assets/javascripts/hyrax/save_work/save_work_control.es6 +6 -6
  63. data/app/assets/javascripts/hyrax/save_work/uploaded_files.es6 +2 -2
  64. data/app/assets/javascripts/hyrax/single_use_links_manager.js +1 -1
  65. data/app/assets/javascripts/hyrax/skip_to_content.js +1 -1
  66. data/app/assets/javascripts/hyrax/sorting.js +1 -1
  67. data/app/assets/javascripts/hyrax/trophy.js +1 -1
  68. data/app/assets/javascripts/hyrax/uploader.js +3 -3
  69. data/app/assets/javascripts/hyrax.js +1 -19
  70. data/app/assets/stylesheets/_bootstrap-default-overrides.scss +4 -4
  71. data/app/assets/stylesheets/hyrax/_accessibility.scss +1 -1
  72. data/app/assets/stylesheets/hyrax/_badge.scss +7 -0
  73. data/app/assets/stylesheets/hyrax/_batch-edit.scss +8 -8
  74. data/app/assets/stylesheets/hyrax/_browse_everything_overrides.scss +1 -1
  75. data/app/assets/stylesheets/hyrax/_buttons.scss +31 -1
  76. data/app/assets/stylesheets/hyrax/_card.scss +10 -0
  77. data/app/assets/stylesheets/hyrax/_catalog.scss +22 -48
  78. data/app/assets/stylesheets/hyrax/_collection_types.scss +1 -1
  79. data/app/assets/stylesheets/hyrax/_collections.scss +13 -13
  80. data/app/assets/stylesheets/hyrax/_facets.scss +46 -0
  81. data/app/assets/stylesheets/hyrax/_featured.scss +1 -1
  82. data/app/assets/stylesheets/hyrax/_file-listing.scss +3 -3
  83. data/app/assets/stylesheets/hyrax/_file_manager.scss +17 -17
  84. data/app/assets/stylesheets/hyrax/_file_sets.scss +1 -1
  85. data/app/assets/stylesheets/hyrax/_file_upload.scss +4 -4
  86. data/app/assets/stylesheets/hyrax/_fixedsticky.scss +1 -1
  87. data/app/assets/stylesheets/hyrax/_footer.scss +3 -3
  88. data/app/assets/stylesheets/hyrax/_form-progress.scss +9 -9
  89. data/app/assets/stylesheets/hyrax/_form.scss +3 -4
  90. data/app/assets/stylesheets/hyrax/_forms.scss +62 -29
  91. data/app/assets/stylesheets/hyrax/_header.scss +0 -17
  92. data/app/assets/stylesheets/hyrax/_home-page.scss +13 -51
  93. data/app/assets/stylesheets/hyrax/_html.scss +11 -0
  94. data/app/assets/stylesheets/hyrax/_hyrax.scss +16 -14
  95. data/app/assets/stylesheets/hyrax/_nestable.scss +1 -1
  96. data/app/assets/stylesheets/hyrax/_select_work_type.scss +2 -2
  97. data/app/assets/stylesheets/hyrax/_styles.scss +9 -14
  98. data/app/assets/stylesheets/hyrax/_users.scss +2 -2
  99. data/app/assets/stylesheets/hyrax/_variables.scss +20 -1
  100. data/app/assets/stylesheets/hyrax/_work-show.scss +21 -13
  101. data/app/assets/stylesheets/hyrax/blacklight_gallery.scss +75 -2
  102. data/app/assets/stylesheets/hyrax/dashboard.scss +70 -95
  103. data/app/assets/stylesheets/hyrax/sidebar.scss +39 -19
  104. data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +10 -3
  105. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +4 -9
  106. data/app/controllers/hyrax/batch_edits_controller.rb +1 -1
  107. data/app/controllers/hyrax/dashboard/collections_controller.rb +159 -75
  108. data/app/controllers/hyrax/dashboard/nest_collections_controller.rb +0 -32
  109. data/app/controllers/hyrax/file_sets_controller.rb +3 -0
  110. data/app/controllers/hyrax/homepage_controller.rb +0 -1
  111. data/app/controllers/hyrax/my_controller.rb +0 -6
  112. data/app/controllers/hyrax/single_use_links_controller.rb +1 -2
  113. data/app/controllers/hyrax/single_use_links_viewer_controller.rb +1 -1
  114. data/app/forms/hyrax/forms/pcdm_collection_form.rb +29 -2
  115. data/app/forms/hyrax/forms/resource_form.rb +15 -1
  116. data/app/forms/hyrax/forms/widgets/admin_set_visibility.rb +1 -1
  117. data/app/helpers/hyrax/facets_helper.rb +150 -0
  118. data/app/helpers/hyrax/hyrax_helper_behavior.rb +5 -5
  119. data/app/indexers/hyrax/basic_metadata_indexer.rb +3 -9
  120. data/app/indexers/hyrax/pcdm_collection_indexer.rb +0 -1
  121. data/app/jobs/characterize_job.rb +3 -2
  122. data/app/jobs/create_derivatives_job.rb +4 -2
  123. data/app/jobs/import_url_job.rb +4 -6
  124. data/app/jobs/ingest_local_file_job.rb +5 -13
  125. data/app/jobs/inherit_permissions_job.rb +1 -5
  126. data/app/jobs/valkyrie_ingest_job.rb +15 -77
  127. data/app/models/concerns/hyrax/collection_behavior.rb +2 -2
  128. data/app/models/concerns/hyrax/file_set_behavior.rb +1 -1
  129. data/app/models/concerns/hyrax/in_admin_set.rb +0 -7
  130. data/app/models/concerns/hyrax/user.rb +14 -3
  131. data/app/models/concerns/hyrax/work_behavior.rb +1 -2
  132. data/app/models/content_block.rb +0 -6
  133. data/app/models/featured_work_list.rb +0 -1
  134. data/app/models/hyrax/file_metadata.rb +33 -3
  135. data/app/models/hyrax/file_set.rb +1 -3
  136. data/app/models/hyrax/group.rb +19 -0
  137. data/app/models/hyrax/pcdm_collection.rb +0 -1
  138. data/app/models/hyrax/permission_template.rb +0 -35
  139. data/app/models/job_io_wrapper.rb +1 -1
  140. data/app/presenters/hyrax/admin/repository_object_presenter.rb +0 -2
  141. data/app/presenters/hyrax/collapsable_section_presenter.rb +2 -2
  142. data/app/presenters/hyrax/collection_presenter.rb +1 -1
  143. data/app/presenters/hyrax/fixity_status_presenter.rb +2 -2
  144. data/app/presenters/hyrax/member_presenter_factory.rb +2 -4
  145. data/app/presenters/hyrax/menu_presenter.rb +1 -1
  146. data/app/presenters/hyrax/permission_badge.rb +7 -7
  147. data/app/presenters/hyrax/work_show_presenter.rb +3 -3
  148. data/app/presenters/hyrax/workflow_presenter.rb +1 -1
  149. data/app/renderers/hyrax/renderers/external_link_attribute_renderer.rb +1 -1
  150. data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
  151. data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +10 -1
  152. data/app/search_builders/hyrax/single_result.rb +1 -1
  153. data/app/search_builders/hyrax/stats/work_status_search_builder.rb +1 -1
  154. data/app/services/hyrax/access_control_list.rb +7 -6
  155. data/app/services/hyrax/adapters/nesting_index_adapter.rb +4 -4
  156. data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +3 -5
  157. data/app/services/hyrax/collection_member_service.rb +1 -2
  158. data/app/services/hyrax/collections/collection_member_service.rb +3 -5
  159. data/app/services/hyrax/collections/search_service.rb +0 -1
  160. data/app/services/hyrax/custom_queries.rb +25 -0
  161. data/app/services/hyrax/file_set_csv_service.rb +1 -1
  162. data/app/services/hyrax/graph_exporter.rb +3 -8
  163. data/app/services/hyrax/iiif_authorization_service.rb +1 -1
  164. data/app/services/hyrax/listeners/member_cleanup_listener.rb +14 -18
  165. data/app/services/hyrax/multiple_membership_checker.rb +2 -0
  166. data/app/services/hyrax/search_service.rb +1 -81
  167. data/app/services/hyrax/statistics/depositors/summary.rb +1 -3
  168. data/app/services/hyrax/valkyrie_persist_derivatives.rb +50 -0
  169. data/app/services/hyrax/valkyrie_upload.rb +106 -0
  170. data/app/services/hyrax/work_query_service.rb +1 -1
  171. data/app/services/hyrax/workflow/workflow_importer.rb +7 -9
  172. data/app/services/hyrax/workflow/workflow_schema.rb +3 -5
  173. data/app/services/hyrax/working_directory.rb +2 -0
  174. data/app/strategies/hyrax/strategies/yaml_strategy.rb +4 -6
  175. data/app/uploaders/hyrax/uploaded_file_uploader.rb +4 -4
  176. data/app/validators/hyrax/collection_membership_validator.rb +16 -15
  177. data/app/views/_controls.html.erb +14 -18
  178. data/app/views/_logo.html.erb +0 -1
  179. data/app/views/_masthead.html.erb +8 -18
  180. data/app/views/_user_util_links.html.erb +16 -18
  181. data/app/views/catalog/_document.html.erb +2 -2
  182. data/app/views/catalog/_document_list.html.erb +1 -1
  183. data/app/views/catalog/_facet_limit.html.erb +1 -1
  184. data/app/views/catalog/_index_gallery_collection_wrapper.html.erb +1 -1
  185. data/app/views/catalog/_index_header_list_collection.html.erb +2 -2
  186. data/app/views/catalog/_index_header_list_default.html.erb +9 -2
  187. data/app/views/catalog/_index_list_default.html.erb +7 -5
  188. data/app/views/catalog/_search_form.html.erb +13 -15
  189. data/app/views/catalog/_thumbnail_list_collection.html.erb +2 -2
  190. data/app/views/catalog/_thumbnail_list_default.html.erb +9 -4
  191. data/app/views/catalog/facet.html.erb +21 -0
  192. data/app/views/catalog/index.html.erb +6 -4
  193. data/app/views/collections/edit_fields/_based_near.html.erb +7 -7
  194. data/app/views/hyrax/admin/admin_sets/_form.html.erb +16 -16
  195. data/app/views/hyrax/admin/admin_sets/_form_participant_table.html.erb +35 -33
  196. data/app/views/hyrax/admin/admin_sets/_form_participants.html.erb +9 -8
  197. data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +24 -24
  198. data/app/views/hyrax/admin/admin_sets/_form_workflow.erb +5 -5
  199. data/app/views/hyrax/admin/admin_sets/_show_actions.html.erb +3 -3
  200. data/app/views/hyrax/admin/admin_sets/_show_document_list_row.html.erb +9 -9
  201. data/app/views/hyrax/admin/admin_sets/index.html.erb +3 -3
  202. data/app/views/hyrax/admin/admin_sets/show.html.erb +4 -4
  203. data/app/views/hyrax/admin/analytics/_date_range_form.html.erb +3 -3
  204. data/app/views/hyrax/admin/analytics/collection_reports/_custom_range.html.erb +3 -3
  205. data/app/views/hyrax/admin/analytics/collection_reports/_monthly_summary.html.erb +3 -3
  206. data/app/views/hyrax/admin/analytics/collection_reports/_summary.html.erb +3 -3
  207. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +7 -7
  208. data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +6 -6
  209. data/app/views/hyrax/admin/analytics/collection_reports/show.html.erb +10 -10
  210. data/app/views/hyrax/admin/analytics/work_reports/_custom_range.html.erb +3 -3
  211. data/app/views/hyrax/admin/analytics/work_reports/_monthly_summary.html.erb +3 -3
  212. data/app/views/hyrax/admin/analytics/work_reports/_summary.html.erb +3 -3
  213. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +5 -5
  214. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +7 -7
  215. data/app/views/hyrax/admin/analytics/work_reports/_work_counts.html.erb +4 -4
  216. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +5 -5
  217. data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +7 -7
  218. data/app/views/hyrax/admin/analytics/work_reports/show.html.erb +10 -10
  219. data/app/views/hyrax/admin/appearances/show.html.erb +2 -2
  220. data/app/views/hyrax/admin/collection_types/_form.html.erb +24 -23
  221. data/app/views/hyrax/admin/collection_types/_form_appearance.html.erb +2 -2
  222. data/app/views/hyrax/admin/collection_types/_form_participants.html.erb +4 -4
  223. data/app/views/hyrax/admin/collection_types/_form_settings.html.erb +9 -9
  224. data/app/views/hyrax/admin/collection_types/index.html.erb +6 -6
  225. data/app/views/hyrax/admin/features/index.html.erb +3 -3
  226. data/app/views/hyrax/admin/stats/_new_users.html.erb +1 -1
  227. data/app/views/hyrax/admin/stats/show.html.erb +4 -6
  228. data/app/views/hyrax/admin/users/index.html.erb +3 -3
  229. data/app/views/hyrax/admin/workflow_roles/index.html.erb +8 -8
  230. data/app/views/hyrax/admin/workflows/index.html.erb +13 -13
  231. data/app/views/hyrax/base/_citations.html.erb +6 -6
  232. data/app/views/hyrax/base/_currently_shared.html.erb +3 -3
  233. data/app/views/hyrax/base/_file_manager_actions.html.erb +5 -3
  234. data/app/views/hyrax/base/_file_manager_member.html.erb +5 -5
  235. data/app/views/hyrax/base/_file_manager_member_resource_options.html.erb +6 -6
  236. data/app/views/hyrax/base/_file_manager_members.html.erb +1 -1
  237. data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
  238. data/app/views/hyrax/base/_form_child_work_relationships.html.erb +3 -3
  239. data/app/views/hyrax/base/_form_files.html.erb +9 -9
  240. data/app/views/hyrax/base/_form_member_of_collections.html.erb +3 -3
  241. data/app/views/hyrax/base/_form_metadata.html.erb +1 -1
  242. data/app/views/hyrax/base/_form_permission.html.erb +30 -20
  243. data/app/views/hyrax/base/_form_permission_under_embargo.html.erb +1 -1
  244. data/app/views/hyrax/base/_form_permission_under_lease.html.erb +1 -1
  245. data/app/views/hyrax/base/_form_progress.html.erb +6 -6
  246. data/app/views/hyrax/base/_form_relationships.html.erb +1 -1
  247. data/app/views/hyrax/base/_form_rendering.html.erb +1 -1
  248. data/app/views/hyrax/base/_form_representative.html.erb +1 -1
  249. data/app/views/hyrax/base/_form_share.html.erb +6 -6
  250. data/app/views/hyrax/base/_form_thumbnail.html.erb +1 -1
  251. data/app/views/hyrax/base/_form_visibility_component.html.erb +15 -15
  252. data/app/views/hyrax/base/_guts4form.html.erb +12 -20
  253. data/app/views/hyrax/base/_member.html.erb +1 -1
  254. data/app/views/hyrax/base/_metadata.html.erb +1 -1
  255. data/app/views/hyrax/base/_show_actions.html.erb +9 -9
  256. data/app/views/hyrax/base/_work_button_row.html.erb +16 -15
  257. data/app/views/hyrax/base/_workflow_actions.html.erb +10 -10
  258. data/app/views/hyrax/base/_workflow_actions_widget.erb +1 -1
  259. data/app/views/hyrax/base/file_manager.html.erb +4 -5
  260. data/app/views/hyrax/base/inspect_work.html.erb +1 -1
  261. data/app/views/hyrax/base/show.html.erb +12 -12
  262. data/app/views/hyrax/base/unavailable.html.erb +2 -2
  263. data/app/views/hyrax/batch_edits/_check_all.html.erb +0 -1
  264. data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
  265. data/app/views/hyrax/batch_edits/edit.html.erb +26 -18
  266. data/app/views/hyrax/collections/_bookmark_control.html.erb +2 -2
  267. data/app/views/hyrax/collections/_list_collections.html.erb +6 -6
  268. data/app/views/hyrax/collections/_list_works.html.erb +3 -1
  269. data/app/views/hyrax/collections/_search_form.html.erb +4 -4
  270. data/app/views/hyrax/collections/_show_document_list_row.html.erb +5 -2
  271. data/app/views/hyrax/collections/_sort_and_per_page.html.erb +3 -3
  272. data/app/views/hyrax/collections/_view_type_group.html.erb +2 -2
  273. data/app/views/hyrax/contact_form/new.html.erb +12 -13
  274. data/app/views/hyrax/content_blocks/_form.html.erb +29 -23
  275. data/app/views/hyrax/content_blocks/templates/agreement.html.erb +3 -3
  276. data/app/views/hyrax/dashboard/_admin_sets.html.erb +22 -28
  277. data/app/views/hyrax/dashboard/_index_partials/_current_proxy_rights.html.erb +2 -2
  278. data/app/views/hyrax/dashboard/_index_partials/_proxy_rights.html.erb +4 -4
  279. data/app/views/hyrax/dashboard/_index_partials/_transfers.html.erb +2 -2
  280. data/app/views/hyrax/dashboard/_repository_growth.html.erb +28 -28
  281. data/app/views/hyrax/dashboard/_resource_type_graph.html.erb +4 -4
  282. data/app/views/hyrax/dashboard/_sidebar.html.erb +3 -3
  283. data/app/views/hyrax/dashboard/_tabs.html.erb +6 -2
  284. data/app/views/hyrax/dashboard/_user_activity.html.erb +22 -19
  285. data/app/views/hyrax/dashboard/_visibility_graph.html.erb +4 -4
  286. data/app/views/hyrax/dashboard/_work_type_graph.html.erb +4 -4
  287. data/app/views/hyrax/dashboard/collections/_batch_edits_actions.html.erb +1 -1
  288. data/app/views/hyrax/dashboard/collections/_bookmark_control.html.erb +2 -2
  289. data/app/views/hyrax/dashboard/collections/_edit_actions.html.erb +1 -1
  290. data/app/views/hyrax/dashboard/collections/_form.html.erb +33 -24
  291. data/app/views/hyrax/dashboard/collections/_form_branding.html.erb +20 -19
  292. data/app/views/hyrax/dashboard/collections/_form_discovery.html.erb +8 -4
  293. data/app/views/hyrax/dashboard/collections/_form_for_select_collection.html.erb +7 -7
  294. data/app/views/hyrax/dashboard/collections/_form_share.html.erb +11 -9
  295. data/app/views/hyrax/dashboard/collections/_form_share_table.html.erb +34 -31
  296. data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +1 -1
  297. data/app/views/hyrax/dashboard/collections/_list_works.html.erb +3 -1
  298. data/app/views/hyrax/dashboard/collections/_modal_remove_from_collection.html.erb +1 -1
  299. data/app/views/hyrax/dashboard/collections/_modal_remove_sub_collection.html.erb +1 -1
  300. data/app/views/hyrax/dashboard/collections/_show_add_items_actions.html.erb +1 -1
  301. data/app/views/hyrax/dashboard/collections/_show_descriptions.html.erb +5 -3
  302. data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +4 -4
  303. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +12 -10
  304. data/app/views/hyrax/dashboard/collections/_show_parent_collection_row.html.erb +2 -2
  305. data/app/views/hyrax/dashboard/collections/_sort_and_per_page.html.erb +4 -4
  306. data/app/views/hyrax/dashboard/collections/_subcollection_list.html.erb +1 -1
  307. data/app/views/hyrax/dashboard/collections/_work_action_menu.html.erb +10 -10
  308. data/app/views/hyrax/dashboard/collections/show.html.erb +4 -4
  309. data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +21 -21
  310. data/app/views/hyrax/dashboard/profiles/_trophy_edit.html.erb +5 -5
  311. data/app/views/hyrax/dashboard/profiles/_zotero.html.erb +2 -2
  312. data/app/views/hyrax/dashboard/profiles/edit.html.erb +2 -2
  313. data/app/views/hyrax/dashboard/profiles/show.html.erb +3 -3
  314. data/app/views/hyrax/dashboard/show_admin.html.erb +36 -34
  315. data/app/views/hyrax/dashboard/show_user.html.erb +16 -16
  316. data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +11 -11
  317. data/app/views/hyrax/dashboard/sidebar/_configuration.html.erb +8 -8
  318. data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +3 -1
  319. data/app/views/hyrax/dashboard/sidebar/_tasks.html.erb +5 -1
  320. data/app/views/hyrax/dashboard/works/_list_works.html.erb +4 -1
  321. data/app/views/hyrax/depositors/index.html.erb +2 -2
  322. data/app/views/hyrax/embargoes/edit.html.erb +11 -11
  323. data/app/views/hyrax/embargoes/index.html.erb +18 -6
  324. data/app/views/hyrax/file_sets/_actions.html.erb +5 -6
  325. data/app/views/hyrax/file_sets/_descriptions.html.erb +1 -1
  326. data/app/views/hyrax/file_sets/_extra_fields_modal.html.erb +1 -1
  327. data/app/views/hyrax/file_sets/_form.html.erb +1 -1
  328. data/app/views/hyrax/file_sets/_permission_form.html.erb +33 -29
  329. data/app/views/hyrax/file_sets/_show_actions.html.erb +2 -2
  330. data/app/views/hyrax/file_sets/_show_details.html.erb +27 -17
  331. data/app/views/hyrax/file_sets/_single_use_link_rows.html.erb +2 -2
  332. data/app/views/hyrax/file_sets/_single_use_links.html.erb +2 -2
  333. data/app/views/hyrax/file_sets/_versioning.html.erb +9 -9
  334. data/app/views/hyrax/file_sets/edit.html.erb +17 -11
  335. data/app/views/hyrax/file_sets/media_display/_image.html.erb +4 -4
  336. data/app/views/hyrax/file_sets/show.html.erb +2 -2
  337. data/app/views/hyrax/homepage/_announcement.html.erb +2 -2
  338. data/app/views/hyrax/homepage/_explore_collections.html.erb +6 -4
  339. data/app/views/hyrax/homepage/_featured_fields.html.erb +1 -1
  340. data/app/views/hyrax/homepage/_featured_works.html.erb +1 -1
  341. data/app/views/hyrax/homepage/_home_content.html.erb +24 -10
  342. data/app/views/hyrax/homepage/_marketing.html.erb +1 -1
  343. data/app/views/hyrax/homepage/_recent_document.html.erb +4 -1
  344. data/app/views/hyrax/homepage/_sortable_featured.html.erb +3 -3
  345. data/app/views/hyrax/homepage/index.html.erb +4 -4
  346. data/app/views/hyrax/leases/edit.html.erb +11 -11
  347. data/app/views/hyrax/leases/index.html.erb +18 -6
  348. data/app/views/hyrax/my/_admin_set_action_menu.html.erb +5 -5
  349. data/app/views/hyrax/my/_collection_action_menu.html.erb +6 -6
  350. data/app/views/hyrax/my/_constraints.html.erb +2 -2
  351. data/app/views/hyrax/my/_document_list.html.erb +1 -1
  352. data/app/views/hyrax/my/_facet_layout.html.erb +1 -2
  353. data/app/views/hyrax/my/_facet_limit.html.erb +4 -4
  354. data/app/views/hyrax/my/_facet_pagination.html.erb +1 -25
  355. data/app/views/hyrax/my/_facet_pivot.html.erb +1 -1
  356. data/app/views/hyrax/my/_facet_selected.html.erb +1 -1
  357. data/app/views/hyrax/my/_search_form.html.erb +7 -8
  358. data/app/views/hyrax/my/_sort_and_per_page.html.erb +10 -12
  359. data/app/views/hyrax/my/_work_action_menu.html.erb +4 -5
  360. data/app/views/hyrax/my/collections/_facets.html.erb +2 -2
  361. data/app/views/hyrax/my/collections/_list_collections.html.erb +1 -1
  362. data/app/views/hyrax/my/collections/_modal_add_subcollection.html.erb +2 -2
  363. data/app/views/hyrax/my/collections/_modal_add_to_collection.html.erb +2 -2
  364. data/app/views/hyrax/my/collections/_modal_collection_types_to_create.html.erb +5 -5
  365. data/app/views/hyrax/my/collections/_modal_delete_collection.html.erb +1 -1
  366. data/app/views/hyrax/my/collections/_modal_delete_empty_collection.html.erb +1 -1
  367. data/app/views/hyrax/my/collections/_modal_delete_selected_collections.html.erb +1 -1
  368. data/app/views/hyrax/my/collections/_tabs.html.erb +11 -4
  369. data/app/views/hyrax/my/collections/index.html.erb +3 -3
  370. data/app/views/hyrax/my/facet.html.erb +17 -16
  371. data/app/views/hyrax/my/index.html.erb +2 -2
  372. data/app/views/hyrax/my/works/_batch_actions.html.erb +1 -1
  373. data/app/views/hyrax/my/works/_facets.html.erb +2 -2
  374. data/app/views/hyrax/my/works/_list_works.html.erb +6 -7
  375. data/app/views/hyrax/my/works/_tabs.html.erb +9 -4
  376. data/app/views/hyrax/my/works/index.html.erb +20 -18
  377. data/app/views/hyrax/notifications/_notifications.html.erb +1 -1
  378. data/app/views/hyrax/notifications/index.html.erb +4 -4
  379. data/app/views/hyrax/operations/index.html.erb +1 -1
  380. data/app/views/hyrax/operations/show.html.erb +2 -2
  381. data/app/views/hyrax/pages/_form.html.erb +76 -64
  382. data/app/views/hyrax/permissions/confirm.html.erb +4 -4
  383. data/app/views/hyrax/permissions/confirm_access.html.erb +4 -4
  384. data/app/views/hyrax/stats/file.html.erb +1 -1
  385. data/app/views/hyrax/stats/work.html.erb +1 -1
  386. data/app/views/hyrax/transfers/_received.html.erb +4 -4
  387. data/app/views/hyrax/transfers/index.html.erb +8 -8
  388. data/app/views/hyrax/uploads/_js_templates.html.erb +14 -14
  389. data/app/views/hyrax/uploads/_js_templates_branding.html.erb +5 -5
  390. data/app/views/hyrax/uploads/_js_templates_versioning.html.erb +15 -15
  391. data/app/views/hyrax/users/_activity.html.erb +3 -3
  392. data/app/views/hyrax/users/_contributions.html.erb +3 -3
  393. data/app/views/hyrax/users/_left_sidebar.html.erb +1 -1
  394. data/app/views/hyrax/users/_profile_tabs.html.erb +16 -8
  395. data/app/views/hyrax/users/_search_form.html.erb +2 -2
  396. data/app/views/hyrax/users/_user.html.erb +5 -5
  397. data/app/views/hyrax/users/_user_info.html.erb +4 -4
  398. data/app/views/hyrax/users/_vitals.html.erb +3 -3
  399. data/app/views/hyrax/users/show.html.erb +2 -2
  400. data/app/views/layouts/hyrax/dashboard.html.erb +4 -4
  401. data/app/views/layouts/hyrax.html.erb +4 -3
  402. data/app/views/shared/_appearance_styles.html.erb +8 -8
  403. data/app/views/shared/_footer.html.erb +1 -1
  404. data/app/views/shared/_locale_picker.html.erb +5 -8
  405. data/app/views/shared/_nav_safety_modal.html.erb +2 -2
  406. data/app/views/shared/_select_work_type_modal.html.erb +2 -2
  407. data/chart/hyrax/Chart.yaml +10 -6
  408. data/chart/hyrax/templates/_helpers.tpl +4 -0
  409. data/chart/hyrax/templates/cron-embargo.yaml +5 -0
  410. data/chart/hyrax/templates/cron-lease.yaml +5 -0
  411. data/chart/hyrax/templates/deployment-worker.yaml +11 -0
  412. data/chart/hyrax/templates/ingress.yaml +7 -6
  413. data/chart/hyrax/values.yaml +152 -0
  414. data/config/features.rb +48 -50
  415. data/config/initializers/{valkryrie_storage.rb → storage_adapter_initializer.rb} +5 -0
  416. data/config/locales/hyrax.de.yml +16 -16
  417. data/config/locales/hyrax.en.yml +4 -4
  418. data/config/locales/hyrax.es.yml +6 -6
  419. data/config/locales/hyrax.fr.yml +7 -7
  420. data/config/locales/hyrax.it.yml +6 -6
  421. data/config/locales/hyrax.pt-BR.yml +6 -6
  422. data/config/locales/hyrax.zh.yml +6 -6
  423. data/docker-compose.yml +3 -1
  424. data/documentation/developing-your-hyrax-based-app.md +1 -1
  425. data/documentation/legacyREADME.md +1 -1
  426. data/hyrax.gemspec +15 -22
  427. data/karma.conf.js +104 -0
  428. data/lib/generators/hyrax/assets_generator.rb +2 -5
  429. data/lib/generators/hyrax/collection_resource/USAGE +20 -0
  430. data/lib/generators/hyrax/collection_resource/collection_resource_generator.rb +133 -0
  431. data/lib/generators/hyrax/collection_resource/templates/collection.rb.erb +34 -0
  432. data/lib/generators/hyrax/collection_resource/templates/collection_form.rb.erb +7 -0
  433. data/lib/generators/hyrax/collection_resource/templates/collection_form_spec.rb.erb +13 -0
  434. data/lib/generators/hyrax/collection_resource/templates/collection_indexer.rb.erb +7 -0
  435. data/lib/generators/hyrax/collection_resource/templates/collection_indexer_spec.rb.erb +13 -0
  436. data/lib/generators/hyrax/collection_resource/templates/collection_metadata.yaml +22 -0
  437. data/lib/generators/hyrax/collection_resource/templates/collection_spec.rb.erb +12 -0
  438. data/lib/generators/hyrax/install_generator.rb +9 -24
  439. data/lib/generators/hyrax/templates/catalog_controller.rb +20 -13
  440. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +1 -1
  441. data/lib/generators/hyrax/templates/config/locales/hyrax.de.yml +1 -1
  442. data/lib/generators/hyrax/templates/config/locales/hyrax.en.yml +1 -1
  443. data/lib/generators/hyrax/templates/config/locales/hyrax.es.yml +1 -1
  444. data/lib/generators/hyrax/templates/config/locales/hyrax.fr.yml +1 -1
  445. data/lib/generators/hyrax/templates/config/locales/hyrax.it.yml +1 -1
  446. data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +1 -1
  447. data/lib/generators/hyrax/templates/config/locales/hyrax.zh.yml +1 -1
  448. data/lib/generators/hyrax/templates/hyrax.scss +1 -2
  449. data/lib/generators/hyrax/templates/package.json +7 -8
  450. data/lib/hyrax/configuration.rb +12 -40
  451. data/lib/hyrax/engine.rb +1 -2
  452. data/lib/hyrax/specs/capybara.rb +5 -3
  453. data/lib/hyrax/specs/shared_specs/hydra_works.rb +0 -1
  454. data/lib/hyrax/transactions/collection_update.rb +2 -0
  455. data/lib/hyrax/transactions/container.rb +10 -54
  456. data/lib/hyrax/transactions/steps/save_collection_banner.rb +59 -0
  457. data/lib/hyrax/transactions/steps/save_collection_logo.rb +109 -0
  458. data/lib/hyrax/version.rb +1 -1
  459. data/lib/valkyrie/indexing/solr/indexing_adapter.rb +1 -1
  460. data/lib/wings/active_fedora_converter/file_metadata_node.rb +48 -0
  461. data/lib/wings/active_fedora_converter/instance_builder.rb +68 -0
  462. data/lib/wings/active_fedora_converter.rb +3 -3
  463. data/lib/wings/services/custom_queries/find_file_metadata.rb +19 -8
  464. data/lib/wings/valkyrie/persister.rb +2 -1
  465. data/lib/wings/valkyrie/query_service.rb +4 -6
  466. data/package.json +11 -0
  467. data/tasks/hyrax_dev.rake +32 -0
  468. data/template.rb +1 -1
  469. data/vendor/assets/javascripts/dataTables.bootstrap4.js +184 -0
  470. data/vendor/assets/javascripts/fileupload/jquery.fileupload-ui.js +1 -1
  471. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +2 -2
  472. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +1 -1
  473. data/vendor/assets/javascripts/handlebars.js +5214 -0
  474. data/vendor/assets/javascripts/jquery-ui.js +19057 -0
  475. data/vendor/assets/javascripts/jquery.dataTables.js +15336 -0
  476. data/vendor/assets/javascripts/morris/morris.min.js +9 -1
  477. data/vendor/assets/javascripts/morris/raphael-min.js +4 -6
  478. data/vendor/assets/javascripts/nestable.js +1 -1
  479. data/vendor/assets/stylesheets/dataTables.bootstrap4.css +307 -0
  480. data/vendor/assets/stylesheets/jquery-ui.css +1315 -0
  481. data/vendor/assets/stylesheets/morris.css +3 -0
  482. metadata +126 -156
  483. data/app/actors/hyrax/actors/initialize_workflow_actor.rb +0 -35
  484. data/app/helpers/hyrax/url_helper.rb +0 -13
  485. data/app/jobs/content_depositor_change_event_job.rb +0 -48
  486. data/app/models/concerns/hyrax/with_file_sets.rb +0 -17
  487. data/app/views/catalog/_index_header_list_hyrax_pcdm_collection.html.erb +0 -4
  488. data/lib/hyrax/transactions/create_work.rb +0 -65
  489. data/lib/hyrax/transactions/destroy_work.rb +0 -28
  490. data/lib/hyrax/transactions/steps/apply_collection_permission_template.rb +0 -34
  491. data/lib/hyrax/transactions/steps/apply_permission_template.rb +0 -32
  492. data/lib/hyrax/transactions/steps/apply_visibility.rb +0 -41
  493. data/lib/hyrax/transactions/steps/destroy_work.rb +0 -27
  494. data/lib/hyrax/transactions/steps/ensure_permission_template.rb +0 -29
  495. data/lib/hyrax/transactions/steps/save_work.rb +0 -38
  496. data/lib/hyrax/transactions/update_work.rb +0 -19
  497. data/lib/wings/services/file_converter_service.rb +0 -19
  498. data/lib/wings/services/file_metadata_builder.rb +0 -94
  499. data/vendor/assets/javascripts/handlebars-v4.0.5.js +0 -4612
  500. data/vendor/assets/stylesheets/morris.js/0.5.1/morris.css +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 865d623446e36dc64e73cf82ef855955e83d8d8f730a65f439b9b89664641c3f
4
- data.tar.gz: 87aec067e009093bbd119d6d39639c5c6927b2b26173088ca7000b1241f71caa
3
+ metadata.gz: 0217d84335b2d3a3a1ed7729493eec75e67e5a2563034c9b1b4b3e025eb30520
4
+ data.tar.gz: 509e3aaf3d67a086d2361baa09de56a75d063f3df63c7b2b955027d6fd1fcbd7
5
5
  SHA512:
6
- metadata.gz: d75dbf03372ee072f394a88af8449ff947ff42b21de9b10a83428ac98af5d01783f21e7f123ee00e3c0dd7b6d3808d4e7d59f0238e1fda703da8358d2b567447
7
- data.tar.gz: 6dae952fde3a2f2fdc329775d8efe14929e23c0f92284d1848abfa8a7a8a041e4b5a197a4fa0581d3934ddc9267d0e3ca64c455a5f65b81f5287bde8110fb19e
6
+ metadata.gz: 95237e304352c8a36f8fc16994e192f8b305c12d4df7dc12c20de05072932a5516d4598a4facd58f42262d1e1a85aae9a50a21e174e32f9dbc613ac2c90c7177
7
+ data.tar.gz: 42f9ff962f2920a60f78e342cc01114ab9dfe653d5f5ec8cf743816edb5da3d71bad71e553239a67e8e017c0faf4317c004564b6f60653f40697275ba4fc1994
data/.circleci/config.yml CHANGED
@@ -1,18 +1,19 @@
1
1
  version: 2.1
2
2
  orbs:
3
- samvera: samvera/circleci-orb@0
3
+ samvera: samvera/circleci-orb@1
4
+ browser-tools: circleci/browser-tools@1.3
4
5
  jobs:
5
6
  bundle:
6
7
  parameters:
7
8
  ruby_version:
8
9
  type: string
9
- default: 2.5.8
10
+ default: 2.7.6
10
11
  bundler_version:
11
12
  type: string
12
- default: 1.17.3
13
+ default: 2.3.13
13
14
  rails_version:
14
15
  type: string
15
- default: '5.2.6'
16
+ default: 6.0.5
16
17
  executor:
17
18
  name: 'samvera/ruby'
18
19
  ruby_version: << parameters.ruby_version >>
@@ -67,13 +68,13 @@ jobs:
67
68
  parameters:
68
69
  ruby_version:
69
70
  type: string
70
- default: 2.5.8
71
+ default: 2.7.6
71
72
  bundler_version:
72
73
  type: string
73
- default: 1.17.3
74
+ default: 2.3.13
74
75
  rails_version:
75
76
  type: string
76
- default: '5.2.6'
77
+ default: 6.0.5
77
78
  executor:
78
79
  name: 'samvera/ruby_fcrepo_solr_redis_postgres'
79
80
  ruby_version: << parameters.ruby_version >>
@@ -81,7 +82,7 @@ jobs:
81
82
  environment:
82
83
  RAILS_VERSION: << parameters.rails_version >>
83
84
  NOKOGIRI_USE_SYSTEM_LIBRARIES: true
84
- ENGINE_CART_RAILS_OPTIONS: --database=postgresql --skip-git --skip-bundle --skip-listen --skip-spring --skip-keeps --skip-test --skip-bootsnap
85
+ ENGINE_CART_RAILS_OPTIONS: --database=postgresql --skip-git --skip-bundle --skip-listen --skip-spring --skip-keeps --skip-test --skip-bootsnap --skip-javascript
85
86
  DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test # Hard-coded with data from CircleCI orb, related to https://github.com/samvera-labs/samvera-circleci-orb/issues/42
86
87
  steps:
87
88
  - attach_workspace:
@@ -101,10 +102,10 @@ jobs:
101
102
  parameters:
102
103
  ruby_version:
103
104
  type: string
104
- default: 2.5.8
105
+ default: 2.7.6
105
106
  bundler_version:
106
107
  type: string
107
- default: 1.17.3
108
+ default: 2.3.13
108
109
  hyrax_valkyrie:
109
110
  type: string
110
111
  default: "false"
@@ -117,9 +118,26 @@ jobs:
117
118
  HYRAX_VALKYRIE: << parameters.hyrax_valkyrie >>
118
119
  VALKYRIE_SOLR_PORT: 8985
119
120
  DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test # Hard-coded with data from CircleCI orb, related to https://github.com/samvera-labs/samvera-circleci-orb/issues/42
121
+ KARMA_BROWSER: ChromeHeadlessCustom
122
+ RAILS_ROOT: .internal_test_app
120
123
  steps:
121
124
  - attach_workspace:
122
125
  at: ~/
126
+ - run:
127
+ name: Install system dependencies
128
+ command: |
129
+ sudo apt-get update
130
+ sudo apt-get install imagemagick librsvg2-bin
131
+ - browser-tools/install-chrome
132
+ - browser-tools/install-chromedriver
133
+ - run:
134
+ command: |
135
+ google-chrome --version
136
+ chromedriver --version
137
+ name: Check Chrome install
138
+ - run:
139
+ name: Yarn install
140
+ command: yarn install
123
141
  - samvera/install_solr_core:
124
142
  solr_config_path: .internal_test_app/solr/conf
125
143
  - samvera/install_solr_core:
@@ -150,60 +168,31 @@ jobs:
150
168
  --header 'Content-Type: application/json'
151
169
  workflows:
152
170
  version: 2
153
- ruby2-5-8:
171
+ ruby2-7-6:
154
172
  jobs:
155
173
  - bundle:
156
- ruby_version: "2.5.8"
157
- rails_version: "5.2.6"
174
+ ruby_version: "2.7.6"
175
+ rails_version: "6.0.5"
176
+ bundler_version: "2.3.13"
158
177
  - build:
159
- ruby_version: "2.5.8"
160
- rails_version: "5.2.6"
178
+ ruby_version: "2.7.6"
179
+ rails_version: "6.0.5"
180
+ bundler_version: "2.3.13"
161
181
  requires:
162
182
  - bundle
163
183
  - test:
164
- name: "ruby2-5-8"
165
- ruby_version: "2.5.8"
184
+ name: "ruby2-7-6"
185
+ ruby_version: "2.7.6"
186
+ bundler_version: "2.3.13"
166
187
  requires:
167
188
  - build
168
- ruby2-6-6:
169
- jobs:
170
- - bundle:
171
- ruby_version: "2.6.6"
172
- rails_version: "5.2.6"
173
- - build:
174
- ruby_version: "2.6.6"
175
- rails_version: "5.2.6"
176
- requires:
177
- - bundle
178
189
  - test:
179
- name: "ruby2-6-6"
180
- ruby_version: "2.6.6"
181
- requires:
182
- - build
183
- - test:
184
- name: "ruby2-6-6-valkyrie"
185
- ruby_version: "2.6.6"
190
+ name: "ruby2-7-6-valkyrie"
191
+ ruby_version: "2.7.6"
192
+ bundler_version: "2.3.13"
186
193
  hyrax_valkyrie: "true"
187
194
  requires:
188
195
  - build
189
- ruby2-7-4:
190
- jobs:
191
- - bundle:
192
- ruby_version: "2.7.4"
193
- rails_version: "5.2.6"
194
- bundler_version: "2.1.4"
195
- - build:
196
- ruby_version: "2.7.4"
197
- rails_version: "5.2.6"
198
- bundler_version: "2.1.4"
199
- requires:
200
- - bundle
201
- - test:
202
- name: "ruby2-7-4"
203
- ruby_version: "2.7.4"
204
- bundler_version: "2.1.4"
205
- requires:
206
- - build
207
196
  nurax-dev_deploy:
208
197
  jobs:
209
198
  - deploy:
data/.dassie/.env CHANGED
@@ -1,4 +1,4 @@
1
1
  MEMCACHED_HOST=memcached
2
2
  REDIS_PROVIDER=SIDEKIQ_REDIS_URL
3
- SIDEKIQ_REDIS_URL=redis://redis:6379/0
4
3
  SEED_DASSIE=true
4
+ SIDEKIQ_REDIS_URL=redis://redis:6379/0
data/.dassie/Gemfile CHANGED
@@ -8,16 +8,16 @@ else
8
8
  end
9
9
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
10
10
 
11
- ruby '2.7.4'
11
+ ruby '2.7.6'
12
12
 
13
13
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
14
- gem 'rails', '~> 5.2.4', '>= 5.2.4.4'
14
+ gem 'rails', '~> 6.0'
15
15
  # Use postgresql as the database for Active Record
16
16
  gem 'pg', '>= 0.18', '< 2.0'
17
17
  # Use Puma as the app server
18
18
  gem 'puma', '~> 4.3.8'
19
19
  # Use SCSS for stylesheets
20
- gem 'sass-rails', '~> 5.0'
20
+ gem 'sass-rails', '~> 6.0'
21
21
  # Use Uglifier as compressor for JavaScript assets
22
22
  gem 'uglifier', '>= 1.3.0'
23
23
 
@@ -52,7 +52,7 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
52
52
 
53
53
  gemspec name: 'hyrax', path: ENV.fetch('HYRAX_ENGINE_PATH', '..')
54
54
 
55
- gem 'bootstrap-sass', '~> 3.0'
55
+ gem 'bootstrap', '~> 4.0'
56
56
  gem 'devise'
57
57
  gem 'devise-guests', '~> 0.6'
58
58
  gem 'jquery-rails'
@@ -15,11 +15,15 @@
15
15
  //= require turbolinks
16
16
  //
17
17
  // Required by Blacklight
18
- //= require jquery
19
- //= require jquery_ujs
20
- //= require dataTables/jquery.dataTables
21
- //= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
18
+ //= require jquery3
19
+ //= require rails-ujs
20
+ //= require popper
21
+ //= require twitter/typeahead
22
+ //= require bootstrap
23
+ //= require jquery.dataTables
24
+ //= require dataTables.bootstrap4
22
25
  //= require blacklight/blacklight
26
+ //= require blacklight_gallery
23
27
 
24
28
  //= require_tree .
25
29
  //= require hyrax
@@ -11,6 +11,6 @@
11
11
  * It is generally better to create a new file per style scope.
12
12
  *
13
13
  *= require_tree .
14
- *= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
14
+ *= require dataTables.bootstrap4
15
15
  *= require_self
16
16
  */
@@ -4,14 +4,13 @@
4
4
  *= require_self
5
5
  */
6
6
 
7
- @import "bootstrap-sprockets";
8
7
  @import "bootstrap-default-overrides";
9
8
  @import 'bootstrap';
10
- @import 'blacklight/blacklight';
11
9
  @import "font-awesome";
12
10
  @import "blacklight_gallery/gallery";
13
11
  @import "blacklight_gallery/masonry";
14
12
  @import "blacklight_gallery/slideshow";
15
13
  @import "blacklight_gallery/osd_viewer";
14
+ @import "hyrax/blacklight_gallery";
16
15
  @import 'hyrax/hyrax';
17
16
  @import 'hyrax/login_signup';
@@ -2,13 +2,11 @@ class ApplicationController < ActionController::Base
2
2
  helper Openseadragon::OpenseadragonHelper
3
3
  # Adds a few additional behaviors into the application controller
4
4
  include Blacklight::Controller
5
- skip_after_action :discard_flash_if_xhr
6
5
  include Hydra::Controller::ControllerBehavior
7
6
 
8
7
  # Adds Hyrax behaviors into the application controller
9
8
  include Hyrax::Controller
10
9
  include Hyrax::ThemedLayoutController
11
- with_themed_layout '1_column'
12
-
13
10
 
11
+ with_themed_layout '1_column'
14
12
  end
@@ -5,8 +5,6 @@ class CatalogController < ApplicationController
5
5
 
6
6
  # This filter applies the hydra access controls
7
7
  before_action :enforce_show_permissions, only: :show
8
- # Allow all search options when in read-only mode
9
- skip_before_action :check_read_only
10
8
 
11
9
  def self.uploaded_field
12
10
  "system_create_dtsi"
@@ -17,19 +15,14 @@ class CatalogController < ApplicationController
17
15
  end
18
16
 
19
17
  configure_blacklight do |config|
20
- config.view.gallery.partials = [:index_header, :index]
21
- config.view.masonry.partials = [:index]
22
- config.view.slideshow.partials = [:index]
23
-
18
+ config.view.gallery(document_component: Blacklight::Gallery::DocumentComponent)
19
+ config.view.masonry(document_component: Blacklight::Gallery::DocumentComponent)
20
+ config.view.slideshow(document_component: Blacklight::Gallery::SlideshowComponent)
24
21
 
25
22
  config.show.tile_source_field = :content_metadata_image_iiif_info_ssm
26
23
  config.show.partials.insert(1, :openseadragon)
27
24
  config.search_builder_class = Hyrax::CatalogSearchBuilder
28
25
 
29
- # Show gallery view
30
- config.view.gallery.partials = [:index_header, :index]
31
- config.view.slideshow.partials = [:index]
32
-
33
26
  # Because too many times on Samvera tech people raise a problem regarding a failed query to SOLR.
34
27
  # Often, it's because they inadvertently exceeded the character limit of a GET request.
35
28
  config.http_method = :post
@@ -46,6 +39,17 @@ class CatalogController < ApplicationController
46
39
  config.index.display_type_field = "has_model_ssim"
47
40
  config.index.thumbnail_field = 'thumbnail_path_ss'
48
41
 
42
+ config.add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
43
+ config.add_results_collection_tool(:sort_widget)
44
+ config.add_results_collection_tool(:per_page_widget)
45
+ config.add_results_collection_tool(:view_type_group)
46
+ config.add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
47
+ config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params)
48
+ config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params)
49
+ config.add_show_tools_partial(:citation)
50
+ config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?)
51
+ config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
52
+
49
53
  # solr fields that will be treated as facets by the blacklight application
50
54
  # The ordering of the field names is the order of the display
51
55
  config.add_facet_field "human_readable_type_sim", label: "Type", limit: 5
@@ -74,22 +78,22 @@ class CatalogController < ApplicationController
74
78
  # The ordering of the field names is the order of the display
75
79
  config.add_index_field "title_tesim", label: "Title", itemprop: 'name', if: false
76
80
  config.add_index_field "description_tesim", itemprop: 'description', helper_method: :iconify_auto_link
77
- config.add_index_field "keyword_tesim", itemprop: 'keywords', link_to_search: "keyword_sim"
78
- config.add_index_field "subject_tesim", itemprop: 'about', link_to_search: "subject_sim"
79
- config.add_index_field "creator_tesim", itemprop: 'creator', link_to_search: "creator_sim"
80
- config.add_index_field "contributor_tesim", itemprop: 'contributor', link_to_search: "contributor_sim"
81
+ config.add_index_field "keyword_tesim", itemprop: 'keywords', link_to_facet: "keyword_sim"
82
+ config.add_index_field "subject_tesim", itemprop: 'about', link_to_facet: "subject_sim"
83
+ config.add_index_field "creator_tesim", itemprop: 'creator', link_to_facet: "creator_sim"
84
+ config.add_index_field "contributor_tesim", itemprop: 'contributor', link_to_facet: "contributor_sim"
81
85
  config.add_index_field "proxy_depositor_ssim", label: "Depositor", helper_method: :link_to_profile
82
86
  config.add_index_field "depositor_tesim", label: "Owner", helper_method: :link_to_profile
83
- config.add_index_field "publisher_tesim", itemprop: 'publisher', link_to_search: "publisher_sim"
84
- config.add_index_field "based_near_label_tesim", itemprop: 'contentLocation', link_to_search: "based_near_label_sim"
85
- config.add_index_field "language_tesim", itemprop: 'inLanguage', link_to_search: "language_sim"
87
+ config.add_index_field "publisher_tesim", itemprop: 'publisher', link_to_facet: "publisher_sim"
88
+ config.add_index_field "based_near_label_tesim", itemprop: 'contentLocation', link_to_facet: "based_near_label_sim"
89
+ config.add_index_field "language_tesim", itemprop: 'inLanguage', link_to_facet: "language_sim"
86
90
  config.add_index_field "date_uploaded_dtsi", itemprop: 'datePublished', helper_method: :human_readable_date
87
91
  config.add_index_field "date_modified_dtsi", itemprop: 'dateModified', helper_method: :human_readable_date
88
92
  config.add_index_field "date_created_tesim", itemprop: 'dateCreated'
89
93
  config.add_index_field "rights_statement_tesim", helper_method: :rights_statement_links
90
94
  config.add_index_field "license_tesim", helper_method: :license_links
91
- config.add_index_field "resource_type_tesim", label: "Resource Type", link_to_search: "resource_type_sim"
92
- config.add_index_field "file_format_tesim", link_to_search: "file_format_sim"
95
+ config.add_index_field "resource_type_tesim", label: "Resource Type", link_to_facet: "resource_type_sim"
96
+ config.add_index_field "file_format_tesim", link_to_facet: "file_format_sim"
93
97
  config.add_index_field "identifier_tesim", helper_method: :index_field_link, field_name: 'identifier'
94
98
  config.add_index_field Hydra.config.permissions.embargo.release_date, label: "Embargo release date", helper_method: :human_readable_date
95
99
  config.add_index_field Hydra.config.permissions.lease.expiration_date, label: "Lease expiration date", helper_method: :human_readable_date
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ class CollectionResourceForm < Hyrax::Forms::PcdmCollectionForm
6
+ include Hyrax::FormFields(:basic_metadata)
7
+ include Hyrax::FormFields(:collection_resource)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ class CollectionResourceIndexer < Hyrax::PcdmCollectionIndexer
6
+ include Hyrax::Indexer(:basic_metadata)
7
+ include Hyrax::Indexer(:collection_resource)
8
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ class CollectionResource < Hyrax::PcdmCollection
6
+ # @note Do not directly update `basic_metadata.yaml`. It is also used by works.
7
+ #
8
+ # To change metadata for collections
9
+ # * extend by adding fields to `/config/metadata/collection_resource.yaml`
10
+ # * remove all basic metadata
11
+ # * if you generated `with_basic_metadata` and now don't want any basic metadata,
12
+ # comment out or delete the schema include statement for `:basic_metadata`
13
+ # * update form and indexer classes to also remove the `:basic_metadata` schema include
14
+ # * remove some basic metadata
15
+ # * comment out or delete the schema include statement for `:basic_metadata`
16
+ # * update form and indexer classes to also remove the `:basic_metadata` schema include
17
+ # * copy fields you want to keep from `/config/metadata/basic_metadata.yaml`
18
+ # to `/config/metadata/collection_resource.yaml`
19
+ # * override some basic metadata
20
+ # * fields are not allowed to repeat, so to override any basic metadata, you
21
+ # must first comment out or delete the schema include statement for `:basic_metadata`
22
+ # * update form and indexer classes to also remove the `:basic_metadata` schema include
23
+ # * copy all fields you want to keep unchanged or to override from `/config/metadata/basic_metadata.yaml`
24
+ # to `/config/metadata/collection_resource.yaml`
25
+ # * update them in `config/metadata/collection_resource.yaml to have the desired
26
+ # characteristics
27
+ #
28
+ # Alternative:
29
+ # * comment out or delete schema include statements
30
+ # * add Valkyrie attributes to this class
31
+ # * update form and indexer to process the attributes
32
+ #
33
+ include Hyrax::Schema(:basic_metadata)
34
+ include Hyrax::Schema(:collection_resource)
35
+ end
@@ -5,9 +5,6 @@ class User < ApplicationRecord
5
5
  include Hyrax::User
6
6
  include Hyrax::UserUsageStats
7
7
 
8
- if Blacklight::Utils.needs_attr_accessible?
9
- attr_accessible :email, :password, :password_confirmation
10
- end
11
8
  # Connects this user object to Blacklights Bookmarks.
12
9
  include Blacklight::User
13
10
  # Include default devise modules. Others available are:
@@ -9,7 +9,7 @@ Bundler.require(*Rails.groups)
9
9
  module Dassie
10
10
  class Application < Rails::Application
11
11
  # Initialize configuration defaults for originally generated Rails version.
12
- config.load_defaults 5.2
12
+ config.load_defaults 6.0
13
13
 
14
14
  # Settings in config/environments/* take precedence over those specified here.
15
15
  # Application configuration can go into files in config/initializers
@@ -0,0 +1,4 @@
1
+ ActiveSupport::Reloader.to_prepare do
2
+ Hydra::Derivatives.config.output_file_service = Hyrax::ValkyriePersistDerivatives
3
+ Hydra::Derivatives.config.source_file_service = Hyrax::LocalFileService
4
+ end
@@ -54,7 +54,8 @@ Hyrax.config do |config|
54
54
  ##
55
55
  # NOTE: To Valkyrie works, use Monograph which is_a Hyrax::Work is_a Valkyrie::Resource
56
56
  # To use Valkyrie models, uncomment the following lines.
57
- # config.collection_model = 'Hyrax::PcdmCollection'
57
+ # config.collection_model = 'Hyrax::PcdmCollection' # collection without basic metadata
58
+ # config.collection_model = 'CollectionResource' # collection with basic metadata
58
59
  # config.admin_set_model = 'Hyrax::AdministrativeSet'
59
60
  end
60
61
 
@@ -20,7 +20,7 @@ ActiveSupport::Reloader.to_prepare do
20
20
  end
21
21
  end
22
22
 
23
- Riiif::Image.authorization_service = Hyrax::IIIFAuthorizationService
23
+ Riiif::Image.authorization_service = Hyrax::IiifAuthorizationService
24
24
 
25
25
  Riiif.not_found_image = Rails.root.join('app', 'assets', 'images', 'us_404.svg')
26
26
  Riiif.unauthorized_image = Rails.root.join('app', 'assets', 'images', 'us_404.svg')
@@ -0,0 +1,23 @@
1
+ # Simple yaml config-driven schema which is used to define model attributes,
2
+ # index key names, and form properties.
3
+ #
4
+ # Originally generated with no metadata via
5
+ # `rails generate hyrax:collection_resource CollectionResource`
6
+ #
7
+ # A few custom fields are added for testing purposes.
8
+
9
+ ---
10
+ attributes:
11
+ target_audience:
12
+ type: string
13
+ form:
14
+ primary: true
15
+ multiple: true
16
+ department:
17
+ type: string
18
+ form:
19
+ primary: true
20
+ course:
21
+ type: string
22
+ form:
23
+ primary: false
data/.dassie/db/schema.rb CHANGED
@@ -2,11 +2,11 @@
2
2
  # of editing this file, please use the migrations feature of Active Record to
3
3
  # incrementally modify your database, and then regenerate this schema definition.
4
4
  #
5
- # Note that this schema.rb definition is the authoritative source for your
6
- # database schema. If you need to create the application database on another
7
- # system, you should be using db:schema:load, not running all the migrations
8
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
- # you'll amass, the slower it'll run and the greater likelihood for issues).
5
+ # This file is the source Rails uses to define your schema when running `rails
6
+ # db:schema:load`. When creating a new database, `rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
data/.dassie/db/seeds.rb CHANGED
@@ -68,6 +68,8 @@ if wipe_data
68
68
  end
69
69
 
70
70
  if seed_dassie
71
+ puts 'Seeding Dassie ...'
72
+
71
73
  Hyrax::RequiredDataSeeder.new.generate_seed_data
72
74
  Hyrax::TestDataSeeders::UserSeeder.generate_seeds
73
75
  end
data/.dassie/package.json CHANGED
@@ -3,13 +3,13 @@
3
3
  "private": true,
4
4
  "repository": "git@github.com:samvera/hyrax.git",
5
5
  "dependencies": {
6
- "universalviewer": "^3.0.16"
7
- },
8
- "scripts": {
9
- "preinstall": "rm -rf ./public/uv",
10
- "postinstall": "yarn run uv-install && yarn run uv-config",
11
- "uv-install": "cp -r ./node_modules/universalviewer/dist ./public/uv",
12
- "uv-config": "cp ./config/uv/uv.html ./public/uv/uv.html & cp ./config/uv/uv-config.json ./public/uv/"
6
+ "universalviewer": "^3.1.4"
7
+ },
8
+ "scripts": {
9
+ "preinstall": "rm -rf ./public/uv",
10
+ "postinstall": "yarn run uv-install && yarn run uv-config",
11
+ "uv-install": "cp -r ./node_modules/universalviewer/dist ./public/uv",
12
+ "uv-config": "cp ./config/uv/uv.html ./public/uv/uv.html & cp ./config/uv/uv-config.json ./public/uv/"
13
13
  },
14
14
  "devDependencies": {}
15
15
  }
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ require 'rails_helper'
6
+ require 'valkyrie/specs/shared_specs'
7
+
8
+ RSpec.describe CollectionResourceForm do
9
+ let(:change_set) { described_class.new(resource) }
10
+ let(:resource) { CollectionResource.new }
11
+
12
+ it_behaves_like 'a Valkyrie::ChangeSet'
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ require 'rails_helper'
6
+ require 'hyrax/specs/shared_specs/indexers'
7
+
8
+ RSpec.describe CollectionResourceIndexer do
9
+ let(:indexer_class) { described_class }
10
+ let(:resource) { CollectionResource.new }
11
+
12
+ it_behaves_like 'a Hyrax::Resource indexer'
13
+ it_behaves_like 'a Basic metadata indexer'
14
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated via
4
+ # `rails generate hyrax:collection_resource CollectionResource`
5
+ require 'rails_helper'
6
+ require 'hyrax/specs/shared_specs/hydra_works'
7
+
8
+ RSpec.describe CollectionResource do
9
+ subject(:collection) { described_class.new }
10
+
11
+ it_behaves_like 'a Hyrax::PcdmCollection'
12
+ it_behaves_like 'a model with basic metadata'
13
+ end
data/.engine_cart.yml CHANGED
@@ -1,40 +1,3 @@
1
- # Greetings Hyrax developer, you may be surprised to see this file.
2
- # Hyrax is moving to using Postgresql for testing in CircleCI and
3
- # hopefully by Hyrax developers during local development. Previously,
4
- # we used sqlite.
5
- #
6
- # And while installing Postgresql is beyond the scope of this
7
- # community, I (Jeremy) installed Postgresql via homebrew (brew.sh),
8
- # and have used the following for testing (note `hyrax-testup` is
9
- # defined later on):
10
- #
11
- # ```console
12
- # hyrax-testup
13
- # brew services start postgresql
14
- # export DATABASE_URL="postgresql://localhost:5432/internal_development"
15
- # bundle exec rspec
16
- # ```
17
- #
18
- # But, before running that, I have a shell alias (see
19
- # https://github.com/jeremyf/dotzshrc/blob/trunk/configs/aliases.zsh)
20
- # that I call. The alias ensures that I have:
21
- #
22
- # * clean set of solr indices
23
- # * running solr indices
24
- # * running fcrepo
25
- # * running redis server
26
- #
27
- # ```console
28
- # alias hyrax-testup='cd $HOME/git/samvera/hyrax/.internal_test_app ; \
29
- # rm -rf tmp/solr-valkyrie-test/server/solr/hyrax-valkyrie-test ; \
30
- # rm -rf tmp/solr-test/server/solr/hydra-test ; \
31
- # fcrepo_wrapper --config config/fcrepo_wrapper_test.yml & \
32
- # solr_wrapper --config config/solr_wrapper_test.yml & \
33
- # solr_wrapper --config config/solr_wrapper_valkyrie_test.yml & \
34
- # redis-server &'
35
- # ```
36
- #
37
- # Best luck, and I (Jeremy) hope to add this to the Wiki at some point
38
- # once this current code is accepted into the main-line.
39
1
  rails_options:
40
- - "--database=postgresql" # Caution, as you may only get "one option" until this is merged. https://github.com/cbeer/engine_cart/pull/102
2
+ - "--database=postgresql"
3
+ - "--skip-javascript"
data/.env CHANGED
@@ -16,6 +16,7 @@ HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/
16
16
  HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine
17
17
  HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/
18
18
  IN_DOCKER=true
19
+ KARMA_BROWSER=ChromiumHeadlessCustom
19
20
  RACK_ENV=development
20
21
  RAILS_ENV=development
21
22
  RAILS_ROOT=.dassie
data/.regen CHANGED
@@ -1 +1,2 @@
1
- 41
1
+ # When updating CI regen seed, set to current date.
2
+ 2022-07-01T00
data/.rubocop.yml CHANGED
@@ -5,7 +5,7 @@ inherit_gem:
5
5
  bixby: bixby_default.yml
6
6
 
7
7
  AllCops:
8
- TargetRubyVersion: 2.4
8
+ TargetRubyVersion: 2.6
9
9
  DisplayCopNames: true
10
10
  Exclude:
11
11
  - 'db/**/*'