hyrax 5.1.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. checksums.yaml +4 -4
  2. data/.dassie/.env +5 -1
  3. data/.dassie/Gemfile +5 -3
  4. data/.dassie/app/assets/images/bulkrax/removed.png +0 -0
  5. data/.dassie/app/assets/javascripts/application.js +2 -0
  6. data/.dassie/app/assets/stylesheets/application.css +1 -0
  7. data/.dassie/app/controllers/catalog_controller.rb +1 -0
  8. data/.dassie/app/forms/admin_set_resource_form.rb +6 -0
  9. data/.dassie/app/forms/collection_resource_form.rb +5 -2
  10. data/.dassie/app/forms/generic_work_resource_form.rb +5 -2
  11. data/.dassie/app/forms/monograph_form.rb +5 -3
  12. data/.dassie/app/indexers/admin_set_resource_indexer.rb +5 -0
  13. data/.dassie/app/indexers/collection_resource_indexer.rb +3 -3
  14. data/.dassie/app/indexers/generic_work_resource_indexer.rb +6 -3
  15. data/.dassie/app/indexers/monograph_indexer.rb +6 -2
  16. data/.dassie/app/models/ability.rb +8 -0
  17. data/.dassie/app/models/collection_resource.rb +4 -2
  18. data/.dassie/app/models/concerns/bulkrax/has_local_processing.rb +8 -0
  19. data/.dassie/app/models/generic_work_resource.rb +5 -2
  20. data/.dassie/app/models/monograph.rb +5 -2
  21. data/.dassie/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
  22. data/.dassie/bin/importer +142 -0
  23. data/.dassie/bin/web +4 -0
  24. data/.dassie/config/application.rb +1 -1
  25. data/.dassie/config/browse_everything_providers.yml +1 -1
  26. data/.dassie/config/bulkrax_api.yml +86 -0
  27. data/.dassie/config/initializers/bulkrax.rb +92 -0
  28. data/.dassie/config/initializers/clamav.rb +2 -0
  29. data/.dassie/config/initializers/devise.rb +1 -0
  30. data/.dassie/config/initializers/hyrax.rb +7 -1
  31. data/.dassie/config/initializers/riiif.rb +4 -80
  32. data/.dassie/config/initializers/wings.rb +1 -1
  33. data/.dassie/config/metadata_profiles/m3_profile.yaml +929 -0
  34. data/.dassie/config/puma.rb +4 -2
  35. data/.dassie/config/routes.rb +7 -0
  36. data/.dassie/config/sidekiq.yml +17 -0
  37. data/.dassie/config/uv/uv.html +63 -81
  38. data/.dassie/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb +9 -0
  39. data/.dassie/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb +5 -0
  40. data/.dassie/db/migrate/20250826142438_create_bulkrax_importers.bulkrax.rb +19 -0
  41. data/.dassie/db/migrate/20250826142439_create_bulkrax_importer_runs.bulkrax.rb +17 -0
  42. data/.dassie/db/migrate/20250826142440_create_bulkrax_entries.bulkrax.rb +17 -0
  43. data/.dassie/db/migrate/20250826142441_add_status_to_entry.bulkrax.rb +10 -0
  44. data/.dassie/db/migrate/20250826142442_add_collections_to_importer_runs.bulkrax.rb +7 -0
  45. data/.dassie/db/migrate/20250826142443_change_collection_ids_on_entries.bulkrax.rb +6 -0
  46. data/.dassie/db/migrate/20250826142444_create_bulkrax_exporters.bulkrax.rb +20 -0
  47. data/.dassie/db/migrate/20250826142445_create_bulkrax_exporter_runs.bulkrax.rb +15 -0
  48. data/.dassie/db/migrate/20250826142446_change_importer_and_exporter_to_polymorphic.bulkrax.rb +19 -0
  49. data/.dassie/db/migrate/20250826142447_add_total_collection_records_to_importer_runs.bulkrax.rb +6 -0
  50. data/.dassie/db/migrate/20250826142448_add_children_to_importer_runs.bulkrax.rb +7 -0
  51. data/.dassie/db/migrate/20250826142449_change_total_records_to_total_work_entries.bulkrax.rb +7 -0
  52. data/.dassie/db/migrate/20250826142450_change_entry_last_error.bulkrax.rb +20 -0
  53. data/.dassie/db/migrate/20250826142451_add_validate_only_to_bulkrax_importers.bulkrax.rb +6 -0
  54. data/.dassie/db/migrate/20250826142452_add_status_to_importers.bulkrax.rb +10 -0
  55. data/.dassie/db/migrate/20250826142453_remove_foreign_key_from_bulkrax_entries.bulkrax.rb +6 -0
  56. data/.dassie/db/migrate/20250826142454_add_status_to_exporters.bulkrax.rb +8 -0
  57. data/.dassie/db/migrate/20250826142455_add_invalid_record_to_importer_run.bulkrax.rb +6 -0
  58. data/.dassie/db/migrate/20250826142456_create_bulkrax_statuses.bulkrax.rb +19 -0
  59. data/.dassie/db/migrate/20250826142457_move_to_statuses.bulkrax.rb +31 -0
  60. data/.dassie/db/migrate/20250826142458_add_date_filter_and_status_to_bulkrax_exporters.bulkrax.rb +8 -0
  61. data/.dassie/db/migrate/20250826142459_add_workflow_status_to_bulkrax_exporter.bulkrax.rb +6 -0
  62. data/.dassie/db/migrate/20250826142460_remove_unused_last_error.bulkrax.rb +8 -0
  63. data/.dassie/db/migrate/20250826142461_increase_text_sizes.bulkrax.rb +13 -0
  64. data/.dassie/db/migrate/20250826142462_change_bulkrax_statuses_error_message_column_type_to_text.bulkrax.rb +6 -0
  65. data/.dassie/db/migrate/20250826142463_rename_children_counters_to_relationships.bulkrax.rb +7 -0
  66. data/.dassie/db/migrate/20250826142464_add_file_set_counters_to_importer_runs.bulkrax.rb +8 -0
  67. data/.dassie/db/migrate/20250826142465_add_import_attempts_to_entries.bulkrax.rb +6 -0
  68. data/.dassie/db/migrate/20250826142466_add_work_counters_to_importer_runs.bulkrax.rb +7 -0
  69. data/.dassie/db/migrate/20250826142467_create_bulkrax_pending_relationships.bulkrax.rb +14 -0
  70. data/.dassie/db/migrate/20250826142468_add_order_to_bulkrax_pending_relationships.bulkrax.rb +6 -0
  71. data/.dassie/db/migrate/20250826142469_add_include_thumbnails_to_bulkrax_exporters.bulkrax.rb +6 -0
  72. data/.dassie/db/migrate/20250826142470_add_generated_metadata_to_bulkrax_exporters.bulkrax.rb +6 -0
  73. data/.dassie/db/migrate/20250826142471_rename_bulkrax_importer_run_to_importer_run.bulkrax.rb +18 -0
  74. data/.dassie/db/migrate/20250826142472_add_indices_to_bulkrax.bulkrax.rb +26 -0
  75. data/.dassie/db/migrate/20250826142473_denormalize_status_message.bulkrax.rb +8 -0
  76. data/.dassie/db/migrate/20250826142474_update_identifier_index.bulkrax.rb +7 -0
  77. data/.dassie/db/migrate/20250826142475_add_index_to_metadata_bulkrax_identifier.bulkrax.rb +19 -0
  78. data/.dassie/db/migrate/20250826142476_add_file_name_to_uploaded_files.bulkrax.rb +6 -0
  79. data/.dassie/db/migrate/20250826142477_add_error_tracking_to_pending_relationships.bulkrax.rb +6 -0
  80. data/.dassie/db/migrate/20250826142478_add_last_imported_at_to_bulkrax_importers.bulkrax.rb +6 -0
  81. data/.dassie/db/migrate/20250826142479_add_next_import_at_to_bulkrax_importers.bulkrax.rb +6 -0
  82. data/.dassie/db/migrate/20250826142480_entry_error_denormalization.bulkrax.rb +8 -0
  83. data/.dassie/db/migrate/20250826142481_faster_first_entry.bulkrax.rb +8 -0
  84. data/.dassie/db/migrate/20260430000001_create_hyrax_redirect_paths.hyrax.rb +13 -0
  85. data/.dassie/db/migrate/20260521003627_add_additional_redirect_info.hyrax.rb +32 -0
  86. data/.dassie/db/schema.rb +263 -109
  87. data/.dassie/package.json +1 -1
  88. data/.dassie/rspec_split_configuration.json +835 -0
  89. data/.dassie/solr/conf/solrconfig.xml +21 -5
  90. data/.github/{ISSUE_TEMPLATE.md → ISSUE_TEMPLATE/issue_template.md} +5 -0
  91. data/.github/workflows/lint-build-test.yml +6 -2
  92. data/.github/workflows/release-charts.yml +48 -0
  93. data/.gitignore +6 -0
  94. data/.koppie/.env +5 -1
  95. data/.koppie/Gemfile +3 -1
  96. data/.koppie/app/assets/images/bulkrax/removed.png +0 -0
  97. data/.koppie/app/assets/javascripts/application.js +2 -0
  98. data/.koppie/app/assets/stylesheets/application.css +1 -0
  99. data/.koppie/app/controllers/catalog_controller.rb +1 -1
  100. data/.koppie/app/forms/collection_resource_form.rb +5 -2
  101. data/.koppie/app/forms/file_set_form.rb +5 -0
  102. data/.koppie/app/forms/generic_work_form.rb +5 -3
  103. data/.koppie/app/forms/monograph_form.rb +5 -3
  104. data/.koppie/app/indexers/collection_resource_indexer.rb +5 -2
  105. data/.koppie/app/indexers/file_set_indexer.rb +7 -0
  106. data/.koppie/app/indexers/generic_work_indexer.rb +6 -3
  107. data/.koppie/app/indexers/monograph_indexer.rb +6 -2
  108. data/.koppie/app/models/ability.rb +8 -0
  109. data/.koppie/app/models/collection_resource.rb +4 -2
  110. data/.koppie/app/models/concerns/bulkrax/has_local_processing.rb +8 -0
  111. data/.koppie/app/models/generic_work.rb +5 -2
  112. data/.koppie/app/models/monograph.rb +5 -2
  113. data/.koppie/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
  114. data/.koppie/bin/importer +142 -0
  115. data/.koppie/bin/web +4 -0
  116. data/.koppie/config/browse_everything_providers.yml +2 -0
  117. data/.koppie/config/bulkrax_api.yml +86 -0
  118. data/.koppie/config/initializers/bulkrax.rb +92 -0
  119. data/.koppie/config/initializers/clamav.rb +2 -0
  120. data/.koppie/config/initializers/devise.rb +1 -1
  121. data/.koppie/config/initializers/hyrax.rb +11 -3
  122. data/.koppie/config/initializers/riiif.rb +4 -82
  123. data/.koppie/config/metadata_profiles/m3_profile.yaml +930 -0
  124. data/.koppie/config/routes.rb +7 -0
  125. data/.koppie/config/sidekiq.yml +2 -0
  126. data/.koppie/config/uv/uv.html +63 -81
  127. data/.koppie/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb +9 -0
  128. data/.koppie/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb +5 -0
  129. data/.koppie/db/migrate/20250826142438_create_bulkrax_importers.bulkrax.rb +19 -0
  130. data/.koppie/db/migrate/20250826142439_create_bulkrax_importer_runs.bulkrax.rb +17 -0
  131. data/.koppie/db/migrate/20250826142440_create_bulkrax_entries.bulkrax.rb +17 -0
  132. data/.koppie/db/migrate/20250826142441_add_status_to_entry.bulkrax.rb +10 -0
  133. data/.koppie/db/migrate/20250826142442_add_collections_to_importer_runs.bulkrax.rb +7 -0
  134. data/.koppie/db/migrate/20250826142443_change_collection_ids_on_entries.bulkrax.rb +6 -0
  135. data/.koppie/db/migrate/20250826142444_create_bulkrax_exporters.bulkrax.rb +20 -0
  136. data/.koppie/db/migrate/20250826142445_create_bulkrax_exporter_runs.bulkrax.rb +15 -0
  137. data/.koppie/db/migrate/20250826142446_change_importer_and_exporter_to_polymorphic.bulkrax.rb +19 -0
  138. data/.koppie/db/migrate/20250826142447_add_total_collection_records_to_importer_runs.bulkrax.rb +6 -0
  139. data/.koppie/db/migrate/20250826142448_add_children_to_importer_runs.bulkrax.rb +7 -0
  140. data/.koppie/db/migrate/20250826142449_change_total_records_to_total_work_entries.bulkrax.rb +7 -0
  141. data/.koppie/db/migrate/20250826142450_change_entry_last_error.bulkrax.rb +20 -0
  142. data/.koppie/db/migrate/20250826142451_add_validate_only_to_bulkrax_importers.bulkrax.rb +6 -0
  143. data/.koppie/db/migrate/20250826142452_add_status_to_importers.bulkrax.rb +10 -0
  144. data/.koppie/db/migrate/20250826142453_remove_foreign_key_from_bulkrax_entries.bulkrax.rb +6 -0
  145. data/.koppie/db/migrate/20250826142454_add_status_to_exporters.bulkrax.rb +8 -0
  146. data/.koppie/db/migrate/20250826142455_add_invalid_record_to_importer_run.bulkrax.rb +6 -0
  147. data/.koppie/db/migrate/20250826142456_create_bulkrax_statuses.bulkrax.rb +19 -0
  148. data/.koppie/db/migrate/20250826142457_move_to_statuses.bulkrax.rb +31 -0
  149. data/.koppie/db/migrate/20250826142458_add_date_filter_and_status_to_bulkrax_exporters.bulkrax.rb +8 -0
  150. data/.koppie/db/migrate/20250826142459_add_workflow_status_to_bulkrax_exporter.bulkrax.rb +6 -0
  151. data/.koppie/db/migrate/20250826142460_remove_unused_last_error.bulkrax.rb +8 -0
  152. data/.koppie/db/migrate/20250826142461_increase_text_sizes.bulkrax.rb +13 -0
  153. data/.koppie/db/migrate/20250826142462_change_bulkrax_statuses_error_message_column_type_to_text.bulkrax.rb +6 -0
  154. data/.koppie/db/migrate/20250826142463_rename_children_counters_to_relationships.bulkrax.rb +7 -0
  155. data/.koppie/db/migrate/20250826142464_add_file_set_counters_to_importer_runs.bulkrax.rb +8 -0
  156. data/.koppie/db/migrate/20250826142465_add_import_attempts_to_entries.bulkrax.rb +6 -0
  157. data/.koppie/db/migrate/20250826142466_add_work_counters_to_importer_runs.bulkrax.rb +7 -0
  158. data/.koppie/db/migrate/20250826142467_create_bulkrax_pending_relationships.bulkrax.rb +14 -0
  159. data/.koppie/db/migrate/20250826142468_add_order_to_bulkrax_pending_relationships.bulkrax.rb +6 -0
  160. data/.koppie/db/migrate/20250826142469_add_include_thumbnails_to_bulkrax_exporters.bulkrax.rb +6 -0
  161. data/.koppie/db/migrate/20250826142470_add_generated_metadata_to_bulkrax_exporters.bulkrax.rb +6 -0
  162. data/.koppie/db/migrate/20250826142471_rename_bulkrax_importer_run_to_importer_run.bulkrax.rb +18 -0
  163. data/.koppie/db/migrate/20250826142472_add_indices_to_bulkrax.bulkrax.rb +26 -0
  164. data/.koppie/db/migrate/20250826142473_denormalize_status_message.bulkrax.rb +8 -0
  165. data/.koppie/db/migrate/20250826142474_update_identifier_index.bulkrax.rb +7 -0
  166. data/.koppie/db/migrate/20250826142475_add_index_to_metadata_bulkrax_identifier.bulkrax.rb +19 -0
  167. data/.koppie/db/migrate/20250826142476_add_file_name_to_uploaded_files.bulkrax.rb +6 -0
  168. data/.koppie/db/migrate/20250826142477_add_error_tracking_to_pending_relationships.bulkrax.rb +6 -0
  169. data/.koppie/db/migrate/20250826142478_add_last_imported_at_to_bulkrax_importers.bulkrax.rb +6 -0
  170. data/.koppie/db/migrate/20250826142479_add_next_import_at_to_bulkrax_importers.bulkrax.rb +6 -0
  171. data/.koppie/db/migrate/20250826142480_entry_error_denormalization.bulkrax.rb +8 -0
  172. data/.koppie/db/migrate/20250826142481_faster_first_entry.bulkrax.rb +8 -0
  173. data/.koppie/db/migrate/20260430000001_create_hyrax_redirect_paths.hyrax.rb +13 -0
  174. data/.koppie/db/migrate/20260521003627_add_additional_redirect_info.hyrax.rb +32 -0
  175. data/.koppie/db/schema.rb +154 -1
  176. data/.koppie/package.json +1 -1
  177. data/.koppie/rspec_split_configuration.json +835 -0
  178. data/.koppie/solr/conf/solrconfig.xml +0 -5
  179. data/.koppie/yarn.lock +5587 -752
  180. data/.rubocop.yml +1 -0
  181. data/CONTAINERS.md +12 -10
  182. data/Dockerfile +9 -22
  183. data/Gemfile +1 -1
  184. data/Gemfile.allinson +2 -0
  185. data/README.md +1 -2
  186. data/app/actors/hyrax/actors/file_actor.rb +2 -0
  187. data/app/actors/hyrax/actors/file_set_actor.rb +1 -1
  188. data/app/assets/javascripts/hyrax/app.js.erb +143 -10
  189. data/app/assets/javascripts/hyrax/collection_select.js +68 -0
  190. data/app/assets/javascripts/hyrax/copy_permalink_button.js +28 -0
  191. data/app/assets/javascripts/hyrax/redirects.js +45 -0
  192. data/app/assets/javascripts/hyrax/relationships/control.es6 +21 -1
  193. data/app/assets/javascripts/hyrax/select_work_type.es6 +7 -2
  194. data/app/assets/javascripts/hyrax.js +3 -1
  195. data/app/assets/stylesheets/hyrax/_file-show.scss +1 -0
  196. data/app/assets/stylesheets/hyrax/_viewer.scss +8 -0
  197. data/app/assets/stylesheets/hyrax/dashboard.scss +22 -1
  198. data/app/assets/stylesheets/hyrax/sidebar.scss +98 -3
  199. data/app/authorities/qa/authorities/collections.rb +9 -9
  200. data/app/controllers/concerns/hyrax/analytics_error_handling.rb +97 -0
  201. data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +3 -1
  202. data/app/controllers/concerns/hyrax/ensure_migrated_behavior.rb +50 -0
  203. data/app/controllers/concerns/hyrax/flexible_catalog_behavior.rb +206 -0
  204. data/app/controllers/concerns/hyrax/flexible_schema_behavior.rb +17 -0
  205. data/app/controllers/concerns/hyrax/redirect_to_display_url.rb +54 -0
  206. data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +1 -0
  207. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +54 -11
  208. data/app/controllers/hyrax/admin/admin_sets_controller.rb +21 -13
  209. data/app/controllers/hyrax/admin/analytics/collection_reports_controller.rb +2 -0
  210. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +5 -4
  211. data/app/controllers/hyrax/admin/metadata_profiles_controller.rb +66 -0
  212. data/app/controllers/hyrax/batch_uploads_controller.rb +2 -0
  213. data/app/controllers/hyrax/dashboard/collections_controller.rb +27 -6
  214. data/app/controllers/hyrax/dashboard/nest_collections_controller.rb +2 -1
  215. data/app/controllers/hyrax/dashboard_controller.rb +2 -1
  216. data/app/controllers/hyrax/file_sets_controller.rb +20 -2
  217. data/app/controllers/hyrax/homepage_controller.rb +7 -0
  218. data/app/controllers/hyrax/my/works_controller.rb +2 -21
  219. data/app/controllers/hyrax/permissions_controller.rb +4 -2
  220. data/app/controllers/hyrax/redirects_controller.rb +56 -0
  221. data/app/controllers/hyrax/single_use_links_viewer_controller.rb +2 -1
  222. data/app/controllers/hyrax/transcripts_controller.rb +31 -0
  223. data/app/controllers/hyrax/uploads_controller.rb +18 -9
  224. data/app/forms/concerns/hyrax/based_near_field_behavior.rb +77 -0
  225. data/app/forms/concerns/hyrax/flexible_form_behavior.rb +37 -0
  226. data/app/forms/concerns/hyrax/redirects_field_behavior.rb +95 -0
  227. data/app/forms/concerns/hyrax/transcripts_behavior.rb +40 -0
  228. data/app/forms/hyrax/forms/admin_set_form.rb +1 -1
  229. data/app/forms/hyrax/forms/administrative_set_form.rb +3 -0
  230. data/app/forms/hyrax/forms/batch_edit_form.rb +1 -3
  231. data/app/forms/hyrax/forms/batch_upload_form.rb +14 -0
  232. data/app/forms/hyrax/forms/file_set_edit_form.rb +1 -1
  233. data/app/forms/hyrax/forms/file_set_form.rb +6 -7
  234. data/app/forms/hyrax/forms/pcdm_collection_form.rb +17 -5
  235. data/app/forms/hyrax/forms/pcdm_object_form.rb +11 -3
  236. data/app/forms/hyrax/forms/resource_batch_edit_form.rb +8 -22
  237. data/app/forms/hyrax/forms/resource_form.rb +110 -10
  238. data/app/forms/hyrax/forms.rb +1 -0
  239. data/app/helpers/hyrax/attributes_helper.rb +109 -0
  240. data/app/helpers/hyrax/blacklight_override.rb +26 -0
  241. data/app/helpers/hyrax/collections_helper.rb +2 -0
  242. data/app/helpers/hyrax/file_set_form_helper.rb +24 -0
  243. data/app/helpers/hyrax/hyrax_helper_behavior.rb +53 -4
  244. data/app/helpers/hyrax/iiif_helper.rb +11 -1
  245. data/app/helpers/hyrax/permalink_helper.rb +37 -0
  246. data/app/helpers/hyrax/redirects_tab_helper.rb +29 -0
  247. data/app/helpers/hyrax/trophy_helper.rb +1 -1
  248. data/app/helpers/hyrax/work_form_helper.rb +9 -5
  249. data/app/helpers/hyrax/works_helper.rb +14 -0
  250. data/app/indexers/concerns/hyrax/workflow_indexer.rb +30 -0
  251. data/app/indexers/hyrax/file_set_indexer.rb +1 -0
  252. data/app/indexers/hyrax/indexers/administrative_set_indexer.rb +2 -1
  253. data/app/indexers/hyrax/indexers/file_set_indexer.rb +6 -2
  254. data/app/indexers/hyrax/indexers/pcdm_collection_indexer.rb +11 -1
  255. data/app/indexers/hyrax/indexers/pcdm_object_indexer.rb +25 -4
  256. data/app/indexers/hyrax/indexers/redirects_indexer.rb +29 -0
  257. data/app/indexers/hyrax/indexers/resource_indexer.rb +4 -0
  258. data/app/indexers/hyrax/indexers.rb +2 -0
  259. data/app/inputs/controlled_vocabulary_input.rb +7 -1
  260. data/app/jobs/concerns/hyrax/queued_job_behavior.rb +22 -0
  261. data/app/jobs/content_deposit_error_event_job.rb +14 -0
  262. data/app/jobs/create_work_job.rb +2 -0
  263. data/app/jobs/hyrax/propagate_change_depositor_job.rb +1 -1
  264. data/app/jobs/hyrax/queued_delete_job.rb +11 -0
  265. data/app/jobs/hyrax/queued_indexing_job.rb +11 -0
  266. data/app/jobs/migrate_files_to_valkyrie_job.rb +39 -21
  267. data/app/jobs/migrate_sipity_entity_job.rb +21 -0
  268. data/app/models/batch_upload_item.rb +4 -0
  269. data/app/models/concerns/hyrax/ability/flexible_metadata_ability.rb +10 -0
  270. data/app/models/concerns/hyrax/ability.rb +7 -3
  271. data/app/models/concerns/hyrax/collection_behavior.rb +4 -0
  272. data/app/models/concerns/hyrax/file_set/transcripts.rb +16 -0
  273. data/app/models/concerns/hyrax/file_set_behavior.rb +9 -0
  274. data/app/models/concerns/hyrax/flexibility.rb +107 -0
  275. data/app/models/concerns/hyrax/redirects_normalization.rb +38 -0
  276. data/app/models/concerns/hyrax/solr_document/characterization.rb +1 -1
  277. data/app/models/concerns/hyrax/solr_document/metadata.rb +9 -0
  278. data/app/models/concerns/hyrax/solr_document/ordered_members.rb +4 -0
  279. data/app/models/concerns/hyrax/solr_document_behavior.rb +28 -3
  280. data/app/models/concerns/hyrax/suppressible.rb +1 -1
  281. data/app/models/concerns/hyrax/valkyrie_lazy_migration.rb +1 -1
  282. data/app/models/concerns/hyrax/with_embargoes_and_leases.rb +30 -0
  283. data/app/models/concerns/hyrax/work_behavior.rb +8 -0
  284. data/app/models/hyrax/administrative_set.rb +1 -1
  285. data/app/models/hyrax/change_set.rb +3 -1
  286. data/app/models/hyrax/embargo.rb +3 -1
  287. data/app/models/hyrax/file_metadata.rb +22 -7
  288. data/app/models/hyrax/file_set.rb +4 -2
  289. data/app/models/hyrax/flexible_schema.rb +219 -0
  290. data/app/models/hyrax/lease.rb +3 -1
  291. data/app/models/hyrax/pcdm_collection.rb +4 -1
  292. data/app/models/hyrax/redirect.rb +64 -0
  293. data/app/models/hyrax/redirect_path.rb +14 -0
  294. data/app/models/hyrax/resource.rb +22 -25
  295. data/app/models/hyrax/riiif/file.rb +43 -0
  296. data/app/models/hyrax/riiif/file_resolver.rb +65 -0
  297. data/app/models/hyrax/uploaded_file.rb +9 -0
  298. data/app/models/hyrax/virus_scanner.rb +16 -3
  299. data/app/models/hyrax/work.rb +4 -1
  300. data/app/models/job_io_wrapper.rb +12 -3
  301. data/app/models/user_mailbox.rb +3 -1
  302. data/app/presenters/hyrax/admin_set_presenter.rb +11 -0
  303. data/app/presenters/hyrax/annotates_content.rb +35 -0
  304. data/app/presenters/hyrax/collection_presenter.rb +5 -1
  305. data/app/presenters/hyrax/displays_content.rb +133 -0
  306. data/app/presenters/hyrax/displays_image.rb +11 -4
  307. data/app/presenters/hyrax/displays_transcripts.rb +59 -0
  308. data/app/presenters/hyrax/file_set_presenter.rb +8 -18
  309. data/app/presenters/hyrax/google_scholar_presenter.rb +39 -0
  310. data/app/presenters/hyrax/iiif_manifest_presenter.rb +22 -4
  311. data/app/presenters/hyrax/missing_method_behavior.rb +15 -0
  312. data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +2 -4
  313. data/app/presenters/hyrax/work_show_presenter.rb +56 -14
  314. data/app/renderers/hyrax/renderers/attribute_renderer.rb +6 -2
  315. data/app/renderers/hyrax/renderers/license_attribute_renderer.rb +10 -10
  316. data/app/renderers/hyrax/renderers/redirects_label_attribute_renderer.rb +25 -0
  317. data/app/renderers/hyrax/renderers/rights_statement_attribute_renderer.rb +10 -11
  318. data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +1 -5
  319. data/app/search_builders/hyrax/filter_by_type.rb +1 -1
  320. data/app/services/hyrax/action/create_valkyrie_work.rb +3 -2
  321. data/app/services/hyrax/analytics/ga4/base.rb +1 -1
  322. data/app/services/hyrax/analytics/ga4.rb +5 -1
  323. data/app/services/hyrax/authority_rendering_helper.rb +28 -0
  324. data/app/services/hyrax/authority_service.rb +107 -0
  325. data/app/services/hyrax/callbacks.rb +2 -2
  326. data/app/services/hyrax/change_depositor_service.rb +1 -1
  327. data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +21 -13
  328. data/app/services/hyrax/collections/nested_collection_query_service.rb +9 -3
  329. data/app/services/hyrax/collections_service.rb +17 -0
  330. data/app/services/hyrax/custom_queries/find_by_property_value.rb +89 -0
  331. data/app/services/hyrax/custom_queries/find_ids_by_model.rb +31 -6
  332. data/app/services/hyrax/edit_permissions_service.rb +11 -10
  333. data/app/services/hyrax/file_set_type_service.rb +12 -4
  334. data/app/services/hyrax/flexible_schema_validator_service.rb +153 -0
  335. data/app/services/hyrax/flexible_schema_validators/class_validator.rb +123 -0
  336. data/app/services/hyrax/flexible_schema_validators/core_metadata_validator.rb +211 -0
  337. data/app/services/hyrax/flexible_schema_validators/existing_records_validator.rb +83 -0
  338. data/app/services/hyrax/flexible_schema_validators/redirects_validator.rb +116 -0
  339. data/app/services/hyrax/flexible_schema_validators/schema_validator.rb +34 -0
  340. data/app/services/hyrax/flexible_schema_validators/sort_properties_validator.rb +54 -0
  341. data/app/services/hyrax/license_service.rb +1 -1
  342. data/app/services/hyrax/listeners/metadata_index_listener.rb +11 -0
  343. data/app/services/hyrax/m3_profile_editor.rb +32 -0
  344. data/app/services/hyrax/m3_schema_loader.rb +119 -0
  345. data/app/services/hyrax/manifest_builder_service.rb +18 -24
  346. data/app/services/hyrax/permalink_path.rb +25 -0
  347. data/app/services/hyrax/qa_select_service.rb +9 -5
  348. data/app/services/hyrax/redirect_path_normalizer.rb +58 -0
  349. data/app/services/hyrax/redirects_lookup.rb +59 -0
  350. data/app/services/hyrax/resource_permissions_visibility_propagator.rb +54 -0
  351. data/app/services/hyrax/resource_types_service.rb +3 -20
  352. data/app/services/hyrax/rights_statement_service.rb +1 -1
  353. data/app/services/hyrax/schema_loader.rb +205 -0
  354. data/app/services/hyrax/search_service.rb +1 -1
  355. data/app/services/hyrax/simple_schema_loader.rb +28 -127
  356. data/app/services/hyrax/solr_service.rb +39 -2
  357. data/app/services/hyrax/tolerant_select_service.rb +5 -3
  358. data/app/services/hyrax/valkyrie_upload.rb +2 -2
  359. data/app/services/hyrax/visibility_propagator.rb +4 -1
  360. data/app/services/hyrax/work_uploads_handler.rb +17 -9
  361. data/app/services/hyrax/workflow/workflow_factory.rb +5 -4
  362. data/app/services/migrate_resource_service.rb +8 -2
  363. data/app/uploaders/hyrax/uploaded_file_uploader.rb +2 -2
  364. data/app/utils/hyrax/data_destroyers/collection_branding_destroyer.rb +1 -1
  365. data/app/utils/hyrax/required_data_seeder.rb +1 -0
  366. data/app/utils/hyrax/required_data_seeders/collection_type_seeder.rb +1 -1
  367. data/app/utils/hyrax/required_data_seeders/flexible_profile_seeder.rb +28 -0
  368. data/app/validators/hyrax/controlled_vocabulary_validator.rb +64 -0
  369. data/app/validators/hyrax/redirect_validator.rb +128 -0
  370. data/app/views/_user_util_links.html.erb +2 -1
  371. data/app/views/catalog/_thumbnail_list_default.html.erb +2 -2
  372. data/app/views/collections/edit_fields/_schema_version.html.erb +1 -0
  373. data/app/views/hyrax/admin/admin_sets/_form_metadata.html.erb +24 -2
  374. data/app/views/hyrax/admin/admin_sets/_show_document_list_row.html.erb +1 -1
  375. data/app/views/hyrax/admin/admin_sets/show.html.erb +1 -1
  376. data/app/views/hyrax/admin/analytics/_analytics_error.html.erb +42 -0
  377. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +3 -7
  378. data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +11 -9
  379. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +3 -6
  380. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +2 -3
  381. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +1 -6
  382. data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +60 -57
  383. data/app/views/hyrax/admin/features/index.html.erb +1 -1
  384. data/app/views/hyrax/admin/metadata_profiles/_import_modal.html.erb +20 -0
  385. data/app/views/hyrax/admin/metadata_profiles/index.html.erb +54 -0
  386. data/app/views/hyrax/base/_attribute_rows.html.erb +4 -21
  387. data/app/views/hyrax/base/_citations.html.erb +1 -0
  388. data/app/views/hyrax/base/_currently_shared.html.erb +2 -1
  389. data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
  390. data/app/views/hyrax/base/_form_member_of_collections.html.erb +6 -6
  391. data/app/views/hyrax/base/_form_redirects.html.erb +125 -0
  392. data/app/views/hyrax/base/_form_share.html.erb +7 -2
  393. data/app/views/hyrax/base/_member.html.erb +1 -1
  394. data/app/views/hyrax/base/_social_media.html.erb +3 -1
  395. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +1 -1
  396. data/app/views/hyrax/base/show.html.erb +3 -0
  397. data/app/views/hyrax/collections/_default_group.html.erb +3 -0
  398. data/app/views/hyrax/collections/_list_collections.html.erb +3 -0
  399. data/app/views/hyrax/collections/_list_works.html.erb +1 -1
  400. data/app/views/hyrax/collections/_show_document_list_row.html.erb +1 -1
  401. data/app/views/hyrax/collections/show.html.erb +4 -0
  402. data/app/views/hyrax/dashboard/_sidebar.html.erb +4 -2
  403. data/app/views/hyrax/dashboard/collections/_button_for_update_collection.html.erb +2 -1
  404. data/app/views/hyrax/dashboard/collections/_default_group.html.erb +3 -0
  405. data/app/views/hyrax/dashboard/collections/_form.html.erb +17 -0
  406. data/app/views/hyrax/dashboard/collections/_form_for_select_collection.html.erb +7 -10
  407. data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +3 -0
  408. data/app/views/hyrax/dashboard/collections/_list_works.html.erb +1 -1
  409. data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +13 -12
  410. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
  411. data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +1 -8
  412. data/app/views/hyrax/dashboard/profiles/_trophy_edit.html.erb +1 -1
  413. data/app/views/hyrax/dashboard/profiles/show.html.erb +5 -5
  414. data/app/views/hyrax/dashboard/sidebar/_metadata.html.erb +11 -0
  415. data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +1 -0
  416. data/app/views/hyrax/dashboard/works/_default_group.html.erb +3 -0
  417. data/app/views/hyrax/dashboard/works/_list_works.html.erb +4 -2
  418. data/app/views/hyrax/file_sets/_form.html.erb +16 -3
  419. data/app/views/hyrax/file_sets/_metadata.html.erb +35 -0
  420. data/app/views/hyrax/file_sets/_valkyrie_form.html.erb +37 -0
  421. data/app/views/hyrax/file_sets/edit.html.erb +14 -8
  422. data/app/views/hyrax/file_sets/media_display/_audio.html.erb +4 -0
  423. data/app/views/hyrax/file_sets/media_display/_image.html.erb +2 -2
  424. data/app/views/hyrax/file_sets/media_display/_video.html.erb +4 -0
  425. data/app/views/hyrax/homepage/_explore_collections.html.erb +1 -1
  426. data/app/views/hyrax/homepage/_featured_fields.html.erb +1 -1
  427. data/app/views/hyrax/homepage/_recent_document.html.erb +1 -1
  428. data/app/views/hyrax/homepage/robots.text.erb +17 -0
  429. data/app/views/hyrax/my/_admin_set_action_menu.html.erb +31 -27
  430. data/app/views/hyrax/my/_collection_action_menu.html.erb +40 -35
  431. data/app/views/hyrax/my/_work_action_menu.html.erb +23 -22
  432. data/app/views/hyrax/my/collections/_default_group.html.erb +3 -0
  433. data/app/views/hyrax/my/collections/_list_collections.html.erb +3 -0
  434. data/app/views/hyrax/my/collections/_modal_add_subcollection.html.erb +2 -2
  435. data/app/views/hyrax/my/collections/_modal_add_to_collection.html.erb +2 -2
  436. data/app/views/hyrax/my/works/_default_group.html.erb +3 -0
  437. data/app/views/hyrax/my/works/_list_works.html.erb +5 -2
  438. data/app/views/hyrax/shared/_copy_permalink.html.erb +10 -0
  439. data/app/views/hyrax/users/_user_info.html.erb +1 -6
  440. data/app/views/layouts/_head_tag_content.html.erb +2 -0
  441. data/app/views/layouts/hyrax/dashboard.html.erb +2 -1
  442. data/app/views/records/edit_fields/_contexts.html.erb +1 -0
  443. data/app/views/records/edit_fields/_license.html.erb +17 -5
  444. data/app/views/records/edit_fields/_resource_type.html.erb +16 -2
  445. data/app/views/records/edit_fields/_rights_statement.html.erb +17 -5
  446. data/app/views/records/edit_fields/_schema_version.html.erb +1 -0
  447. data/app/views/records/edit_fields/_transcript_ids.html.erb +18 -0
  448. data/app/views/records/show_fields/_rights.html.erb +1 -1
  449. data/app/views/shared/_citations.html.erb +46 -31
  450. data/app/views/shared/_schema_version.html.erb +38 -0
  451. data/bin/dev-entrypoint.sh +14 -4
  452. data/chart/hyrax/Chart.yaml +4 -4
  453. data/chart/hyrax/templates/ingress.yaml +3 -0
  454. data/chart/hyrax/values.yaml +10 -8
  455. data/config/features.rb +77 -40
  456. data/config/initializers/blacklight_dynamic_sitemap.rb +43 -0
  457. data/config/initializers/deprecation_patch.rb +27 -0
  458. data/config/initializers/hydra_works.rb +3 -0
  459. data/config/initializers/i18n_extensions.rb +197 -0
  460. data/config/initializers/indexing_adapter_initializer.rb +4 -0
  461. data/config/initializers/new_framework_defaults_7_2.rb +6 -4
  462. data/config/initializers/reform_rails_6_1_monkey_patch.rb +29 -0
  463. data/config/initializers/storage_adapter_initializer.rb +15 -9
  464. data/config/locales/hyrax.de.yml +172 -54
  465. data/config/locales/hyrax.en.yml +183 -66
  466. data/config/locales/hyrax.es.yml +174 -49
  467. data/config/locales/hyrax.fr.yml +169 -45
  468. data/config/locales/hyrax.it.yml +172 -48
  469. data/config/locales/hyrax.pt-BR.yml +172 -54
  470. data/config/locales/hyrax.zh.yml +145 -21
  471. data/config/metadata/basic_metadata.yaml +66 -0
  472. data/config/metadata/batch_edit_metadata.yaml +119 -0
  473. data/config/metadata/core_metadata.yaml +1 -0
  474. data/config/metadata/file_set_metadata.yaml +19 -0
  475. data/config/metadata/redirects.yaml +15 -0
  476. data/config/metadata_profiles/m3_json_schema.json +487 -0
  477. data/config/metadata_profiles/m3_profile.yaml +954 -0
  478. data/config/routes.rb +9 -0
  479. data/docker-compose-allinson.yml +176 -0
  480. data/docker-compose-dassie.yml +18 -10
  481. data/docker-compose-koppie.yml +18 -10
  482. data/docker-compose-sirenia.yml +20 -10
  483. data/documentation/copy_permalink.md +29 -0
  484. data/documentation/developing-your-hyrax-based-app.md +2 -2
  485. data/documentation/file-ingest-characterization.md +763 -0
  486. data/documentation/flexible_metadata.md +113 -0
  487. data/documentation/forms/field_behaviors.md +297 -0
  488. data/documentation/redirects.md +428 -0
  489. data/hyrax.gemspec +9 -4
  490. data/lib/freyja/metadata_adapter.rb +1 -1
  491. data/lib/freyja/persister.rb +36 -5
  492. data/lib/generators/hyrax/collection_resource/collection_resource_generator.rb +2 -2
  493. data/lib/generators/hyrax/collection_resource/templates/collection.rb.erb +5 -1
  494. data/lib/generators/hyrax/collection_resource/templates/collection_form.rb.erb +5 -1
  495. data/lib/generators/hyrax/collection_resource/templates/collection_indexer.rb.erb +6 -1
  496. data/lib/generators/hyrax/iiif_viewer/USAGE +22 -0
  497. data/lib/generators/hyrax/iiif_viewer/iiif_viewer_generator.rb +49 -0
  498. data/lib/generators/hyrax/iiif_viewer/templates/_clover.html.erb +7 -0
  499. data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.css +3328 -0
  500. data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.html +16 -0
  501. data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.js +237 -0
  502. data/lib/generators/hyrax/install_generator.rb +25 -1
  503. data/lib/generators/hyrax/riiif_generator.rb +1 -1
  504. data/lib/generators/hyrax/templates/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
  505. data/lib/generators/hyrax/templates/config/clamav.rb +2 -0
  506. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +4 -80
  507. data/lib/generators/hyrax/templates/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb.erb +9 -0
  508. data/lib/generators/hyrax/templates/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb.erb +5 -0
  509. data/lib/generators/hyrax/templates/db/migrate/20260430000001_create_hyrax_redirect_paths.rb.erb +22 -0
  510. data/lib/generators/hyrax/templates/db/migrate/20260521003627_add_additional_redirect_info.rb.erb +39 -0
  511. data/lib/generators/hyrax/templates/package.json +1 -1
  512. data/lib/generators/hyrax/templates/uv.html +60 -82
  513. data/lib/generators/hyrax/work/templates/indexer.rb.erb +1 -1
  514. data/lib/generators/hyrax/work/templates/model.rb.erb +5 -1
  515. data/lib/generators/hyrax/work_resource/templates/form.rb.erb +5 -2
  516. data/lib/generators/hyrax/work_resource/templates/indexer.rb.erb +6 -2
  517. data/lib/generators/hyrax/work_resource/templates/work.rb.erb +5 -2
  518. data/lib/generators/hyrax/work_resource/work_resource_generator.rb +1 -0
  519. data/lib/hyrax/active_fedora_dummy_model.rb +6 -0
  520. data/lib/hyrax/configuration.rb +219 -10
  521. data/lib/hyrax/controlled_vocabulary/importer/language.rb +5 -1
  522. data/lib/hyrax/deprecation.rb +31 -0
  523. data/lib/hyrax/engine.rb +2 -0
  524. data/lib/hyrax/form_fields.rb +17 -5
  525. data/lib/hyrax/indexer.rb +31 -2
  526. data/lib/hyrax/resource_sync/resource_list_writer.rb +3 -0
  527. data/lib/hyrax/schema.rb +15 -4
  528. data/lib/hyrax/specs/shared_specs/factories/administrative_sets.rb +12 -0
  529. data/lib/hyrax/specs/shared_specs/factories/hyrax_embargo.rb +1 -1
  530. data/lib/hyrax/specs/shared_specs/factories/hyrax_file_set.rb +13 -0
  531. data/lib/hyrax/specs/shared_specs/factories/hyrax_lease.rb +5 -1
  532. data/lib/hyrax/specs/shared_specs/factories/hyrax_work.rb +14 -0
  533. data/lib/hyrax/specs/shared_specs/simple_work.rb +41 -0
  534. data/lib/hyrax/specs/shared_specs.rb +1 -0
  535. data/lib/hyrax/transactions/collection_create.rb +2 -1
  536. data/lib/hyrax/transactions/collection_destroy.rb +1 -0
  537. data/lib/hyrax/transactions/collection_update.rb +2 -1
  538. data/lib/hyrax/transactions/container.rb +28 -0
  539. data/lib/hyrax/transactions/steps/add_file_sets.rb +2 -1
  540. data/lib/hyrax/transactions/steps/apply_permission_template_on_update.rb +65 -0
  541. data/lib/hyrax/transactions/steps/apply_workflow_on_admin_set_change.rb +97 -0
  542. data/lib/hyrax/transactions/steps/ensure_admin_set.rb +1 -1
  543. data/lib/hyrax/transactions/steps/remove_redirect_paths.rb +35 -0
  544. data/lib/hyrax/transactions/steps/save.rb +10 -0
  545. data/lib/hyrax/transactions/steps/set_default_admin_set.rb +1 -1
  546. data/lib/hyrax/transactions/steps/sync_redirect_paths.rb +141 -0
  547. data/lib/hyrax/transactions/work_create.rb +2 -1
  548. data/lib/hyrax/transactions/work_destroy.rb +1 -0
  549. data/lib/hyrax/transactions/work_update.rb +4 -1
  550. data/lib/hyrax/version.rb +1 -1
  551. data/lib/hyrax.rb +62 -0
  552. data/lib/tasks/m3_profile_cleanup.rake +35 -0
  553. data/lib/valkyrie/indexing/redis_queue/indexing_adapter.rb +144 -0
  554. data/lib/wings/valkyrie/query_service.rb +3 -4
  555. data/template.rb +4 -1
  556. metadata +327 -25
  557. data/.dassie/public/robots.txt +0 -1
  558. data/.github/workflows/main.yml +0 -17
  559. data/.koppie/public/robots.txt +0 -1
  560. data/app/forms/concerns/hyrax/basic_metadata_form_fields_behavior.rb +0 -39
  561. data/app/views/catalog/_thumbnail_list_collection.html.erb +0 -4
@@ -0,0 +1,37 @@
1
+ <%= simple_form_for [main_app, form_object], url: main_app.hyrax_file_set_path(form_object), html: { multipart: true, class: 'nav-safety', data: { behavior: 'file-set-form', 'param-key' => form_object.model_name.param_key } } do |f| %>
2
+ <% if curation_concern.flexible? %>
3
+ <div class="col-md-3 pull-right">
4
+ <%= render('shared/schema_version', f: f) %>
5
+ </div>
6
+ <% end %>
7
+ <div id="base-terms" class="<%= curation_concern.flexible? ? 'col-md-9' : 'col-md-12' %>">
8
+ <% f.object.primary_terms.each do |term| %>
9
+ <% next if [:contexts, :schema_version].include?(term) %>
10
+ <%= render_edit_field_partial(term, f: f, curation_concern: curation_concern) %>
11
+ <% end %>
12
+ </div>
13
+ <% if f.object.display_additional_fields? %>
14
+ <%= link_to t('hyrax.collection.form.additional_fields'),
15
+ '#extended-terms',
16
+ class: 'btn btn-secondary additional-fields',
17
+ data: { toggle: 'collapse' },
18
+ role: "button",
19
+ 'aria-expanded'=> "false",
20
+ 'aria-controls'=> "extended-terms" %>
21
+ <div id="extended-terms" class="collapse">
22
+ <% f.object.secondary_terms.each do |term| %>
23
+ <%= render_edit_field_partial(term, f: f, curation_concern: curation_concern) %>
24
+ <% end %>
25
+ </div>
26
+ <% end %>
27
+
28
+ <div class="row">
29
+ <div class="col-md-12 form-actions">
30
+ <%= f.submit(
31
+ (curation_concern.persisted? ? t('.save') : t('.attach_to', parent: @parent.human_readable_type)),
32
+ class: 'btn btn-primary'
33
+ ) %>
34
+ <%= link_to t('.cancel'), main_app.hyrax_file_set_path(form_object), class: 'btn btn-link' %>
35
+ </div>
36
+ </div>
37
+ <% end %>
@@ -1,12 +1,12 @@
1
1
  <%= render "shared/nav_safety_modal" %>
2
- <% provide :page_title, title_presenter(curation_concern).page_title %>
2
+ <% provide :page_title, title_presenter(@presenter).page_title %>
3
3
  <% provide :page_header do %>
4
4
  <h1><span class="fa fa-edit" aria-hidden="true"></span><%= t('.header', file_set: curation_concern) %></h1>
5
5
  <% end %>
6
6
 
7
7
  <div class="row">
8
8
  <div class="col-12 col-sm-4">
9
- <%= render media_display_partial(@presenter.solr_document), file_set: @presenter.solr_document %>
9
+ <%= render media_display_partial(@presenter.solr_document), file_set: @presenter %>
10
10
  </div>
11
11
  <div class="col-12 col-sm-8">
12
12
  <div class="card tabs">
@@ -16,11 +16,13 @@
16
16
  <i class="fa fa-tags" aria-hidden="true"></i> <%= t('.descriptions') %>
17
17
  </a>
18
18
  </li>
19
- <li id="edit_versioning_link" class="nav-item">
20
- <a href="#versioning_display" data-toggle="tab" class="nav-link nav-safety-confirm">
21
- <i class="fa fa-sitemap" aria-hidden="true"></i> <%= t('.versions') %>
22
- </a>
23
- </li>
19
+ <% if @version_list.supports_multiple_versions? %>
20
+ <li id="edit_versioning_link" class="nav-item">
21
+ <a href="#versioning_display" data-toggle="tab" class="nav-link nav-safety-confirm">
22
+ <i class="fa fa-sitemap" aria-hidden="true"></i> <%= t('.versions') %>
23
+ </a>
24
+ </li>
25
+ <% end %>
24
26
  <li id="edit_permissions_link" class="nav-item">
25
27
  <a href="#permissions_display" data-toggle="tab" class="nav-link nav-safety-confirm">
26
28
  <i class="fa fa-key" aria-hidden="true"></i> <%= t('.permissions') %>
@@ -31,7 +33,11 @@
31
33
  <div class="tab-content">
32
34
  <div id="descriptions_display" class="tab-pane show active">
33
35
  <h2><%= t('.descriptions') %></h2>
34
- <%= render "form" %>
36
+ <% if @form.is_a?(Hyrax::Forms::ResourceForm) %>
37
+ <%= render "valkyrie_form", form_object: @form %>
38
+ <% else %>
39
+ <%= render "form", form_object: @form %>
40
+ <% end %>
35
41
  </div>
36
42
  <%= render "permission", file_set: curation_concern, form_object: @form %>
37
43
  <%= render "versioning", file_set: curation_concern %>
@@ -5,6 +5,10 @@
5
5
  <source src="<%= hyrax.download_path(file_set, file: 'ogg', mime_type: 'audio/ogg') %>" type="audio/ogg" />
6
6
  <source src="<%= hyrax.download_path(file_set, file: 'mp3', mime_type: 'audio/mpeg') %>" type="audio/mpeg" />
7
7
  <%= t('hyrax.file_set.show.downloadable_content.audio_tag_not_supported') %>
8
+ <% file_set.transcripts.each do |transcript| %>
9
+ <track kind="captions" src="<%= file_set.transcript_url(transcript, host: request.base_url) %>"
10
+ srclang="<%= file_set.language_code(transcript.language) %>" label="<%= transcript.title_or_label %>" />
11
+ <% end %>
8
12
  </audio>
9
13
  <%= link_to t('hyrax.file_set.show.downloadable_content.audio_link'),
10
14
  hyrax.download_path(file_set),
@@ -3,7 +3,7 @@
3
3
  <h2 class="sr-only"><%= t('hyrax.file_set.show.downloadable_content.heading') %></h2>
4
4
  <%= document_presenter(file_set)&.thumbnail&.thumbnail_tag(
5
5
  class: "representative-media",
6
- alt: "",
6
+ alt: file_set.alt_text_for_view,
7
7
  role: "presentation") %>
8
8
  <%= link_to t('hyrax.file_set.show.downloadable_content.image_link'),
9
9
  hyrax.download_path(file_set),
@@ -15,7 +15,7 @@
15
15
  <div>
16
16
  <%= document_presenter(file_set)&.thumbnail&.thumbnail_tag(
17
17
  class: "representative-media",
18
- alt: "",
18
+ alt: file_set&.alt_text_for_view,
19
19
  role: "presentation") %>
20
20
  </div>
21
21
  <% end %>
@@ -5,6 +5,10 @@
5
5
  <source src="<%= hyrax.download_path(file_set, file: 'webm', mime_type: 'video/webm') %>" type="video/webm" />
6
6
  <source src="<%= hyrax.download_path(file_set, file: 'mp4', mime_type: 'video/mp4') %>" type="video/mp4" />
7
7
  <%= t('hyrax.file_set.show.downloadable_content.video_tag_not_supported') %>
8
+ <% file_set.transcripts.each do |transcript| %>
9
+ <track kind="captions" src="<%= file_set.transcript_url(transcript, host: request.base_url) %>"
10
+ srclang="<%= file_set.language_code(transcript.language) %>" label="<%= transcript.title_or_label %>" />
11
+ <% end %>
8
12
  </video>
9
13
  <%= link_to t('hyrax.file_set.show.downloadable_content.video_link'),
10
14
  hyrax.download_path(file_set),
@@ -8,7 +8,7 @@
8
8
  <div class="media-heading">
9
9
  <%= link_to [hyrax, collection] do %>
10
10
  <%= document_presenter(collection)&.thumbnail&.thumbnail_tag(
11
- { class: 'd-none d-md-block file_listing_thumbnail', alt: "#{collection.title_or_label} #{ t('hyrax.homepage.admin_sets.thumbnail')}" },
11
+ { class: 'd-none d-md-block file_listing_thumbnail', alt: thumbnail_alt_text_for(collection, block_name: 'default_collection_image_text') },
12
12
  { suppress_link: true }
13
13
  ) + collection.title_or_label %>
14
14
  <% end %>
@@ -3,7 +3,7 @@
3
3
  <span class="sr-only"><%= t('hyrax.homepage.featured_works.document.title_label') %></span>
4
4
  <h3>
5
5
  <%= link_to [main_app, featured] do %>
6
- <%= render_thumbnail_tag(featured, {width: 90, alt: "#{featured.title.first.to_s} #{ t('hyrax.homepage.admin_sets.thumbnail')}" }, {suppress_link: true})%><%= featured.title.first %>
6
+ <%= render_thumbnail_tag(featured, {width: 90, alt: thumbnail_alt_text_for(featured.solr_document) }, {suppress_link: true})%><%= featured.title.first %>
7
7
  <% end %>
8
8
  </h3>
9
9
  </div>
@@ -5,7 +5,7 @@
5
5
  <h3>
6
6
  <%= link_to [main_app, recent_document] do %>
7
7
  <%= document_presenter(recent_document)&.thumbnail&.thumbnail_tag(
8
- { width: 90, alt: "#{recent_document} #{ t('hyrax.homepage.admin_sets.thumbnail')}" },
8
+ { width: 90, alt: thumbnail_alt_text_for(recent_document) },
9
9
  { suppress_link: true }
10
10
  ) %><%= recent_document %>
11
11
  <% end %>
@@ -0,0 +1,17 @@
1
+ # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-agent: *
5
+ # Disallow: /
6
+ User-agent: *
7
+ # Disable crawling filters - it'll just slow down discovery of useful resources - better that they page.
8
+ Disallow: /catalog*f[
9
+ Disallow: /catalog*f%5B
10
+ # Bots can't log in.
11
+ Disallow: /users
12
+ Disallow: /dashboard
13
+ Disallow: /embargoes
14
+ Disallow: /leases
15
+ Disallow: /admin
16
+ # Tell them where they should look!
17
+ Sitemap: <%= "#{request.base_url}/sitemap" %>
@@ -7,39 +7,43 @@
7
7
  <%= t("hyrax.dashboard.my.action.select") %>
8
8
  </button>
9
9
  <ul role="menu" id="<%= ul_id %>" class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenu_<%= id %>">
10
- <li class="dropdown-item" role="menuitem" tabindex="-1">
11
- <%= link_to hyrax.admin_admin_set_path(id),
12
- class: 'itemicon itemedit',
13
- title: t("hyrax.dashboard.my.action.view_admin_set") do %>
10
+ <%= link_to hyrax.admin_admin_set_path(id),
11
+ class: 'itemicon itemedit',
12
+ role: 'menuitem',
13
+ title: t("hyrax.dashboard.my.action.view_admin_set") do %>
14
+ <li class="dropdown-item" tabindex="-1">
14
15
  <%= t("hyrax.dashboard.my.action.view_admin_set") %>
15
- <% end %>
16
- </li>
16
+ </li>
17
+ <% end %>
17
18
  <% if can? :edit, admin_set_presenter.solr_document %>
18
- <li class="dropdown-item" role="menuitem" tabindex="-1">
19
- <%= link_to hyrax.edit_admin_admin_set_path(id),
20
- class: 'itemicon itemedit',
21
- title: t("hyrax.dashboard.my.action.edit_admin_set") do %>
19
+ <%= link_to hyrax.edit_admin_admin_set_path(id),
20
+ class: 'itemicon itemedit',
21
+ role: 'menuitem',
22
+ title: t("hyrax.dashboard.my.action.edit_admin_set") do %>
23
+ <li class="dropdown-item" tabindex="-1">
22
24
  <%= t("hyrax.dashboard.my.action.edit_admin_set") %>
23
- <% end %>
24
- </li>
25
+ </li>
26
+ <% end %>
25
27
  <% else %>
26
- <li class="dropdown-item" role="menuitem" tabindex="-1">
27
- <%= link_to "#",
28
- class: 'itemicon itemedit edit-collection-deny-button',
29
- title: t("hyrax.dashboard.my.action.edit_collection") do %>
28
+ <%= link_to "#",
29
+ class: 'itemicon itemedit edit-collection-deny-button',
30
+ role: 'menuitem',
31
+ title: t("hyrax.dashboard.my.action.edit_collection") do %>
32
+ <li class="dropdown-item" tabindex="-1">
30
33
  <%= t("hyrax.dashboard.my.action.edit_collection") %>
31
- <% end %>
32
- </li>
34
+ </li>
35
+ <% end %>
33
36
  <% end %>
34
- <li class="dropdown-item" role="menuitem" tabindex="-1">
35
- <%= link_to "#",
36
- class: 'itemicon itemtrash delete-collection-button',
37
- title: t("hyrax.dashboard.my.action.delete_admin_set"),
38
- data: { totalitems: admin_set_presenter.total_items ,
39
- membership: admin_set_presenter.collection_type_is_require_membership? ,
40
- hasaccess: (can?(:edit, admin_set_presenter.solr_document)) } do %>
37
+ <%= link_to "#",
38
+ class: 'itemicon itemtrash delete-collection-button',
39
+ role: 'menuitem',
40
+ title: t("hyrax.dashboard.my.action.delete_admin_set"),
41
+ data: { totalitems: admin_set_presenter.total_items,
42
+ membership: admin_set_presenter.collection_type_is_require_membership?,
43
+ hasaccess: (can?(:edit, admin_set_presenter.solr_document)) } do %>
44
+ <li class="dropdown-item" tabindex="-1">
41
45
  <%= t("hyrax.dashboard.my.action.delete_admin_set") %>
42
- <% end %>
43
- </li>
46
+ </li>
47
+ <% end %>
44
48
  </ul>
45
49
  </div>
@@ -7,52 +7,57 @@
7
7
  <%= t("hyrax.dashboard.my.action.select") %>
8
8
  </button>
9
9
  <ul role="menu" id="<%= ul_id %>" class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenu_<%= id %>">
10
- <li class="dropdown-item" role="menuitem" tabindex="-1">
11
- <%= link_to hyrax.dashboard_collection_path(id),
12
- class: 'itemicon itemedit',
13
- title: t("hyrax.dashboard.my.action.view_collection") do %>
10
+ <%= link_to hyrax.dashboard_collection_path(id),
11
+ class: 'itemicon itemedit',
12
+ role: 'menuitem',
13
+ title: t("hyrax.dashboard.my.action.view_collection") do %>
14
+ <li class="dropdown-item" tabindex="-1">
14
15
  <%= t("hyrax.dashboard.my.action.view_collection") %>
15
- <% end %>
16
- </li>
16
+ </li>
17
+ <% end %>
17
18
  <% if can? :edit, collection_presenter.solr_document %>
18
- <li class="dropdown-item" role="menuitem" tabindex="-1">
19
- <%= link_to hyrax.edit_dashboard_collection_path(id),
20
- class: 'itemicon itemedit',
21
- title: t("hyrax.dashboard.my.action.edit_collection") do %>
19
+ <%= link_to hyrax.edit_dashboard_collection_path(id),
20
+ class: 'itemicon itemedit',
21
+ role: 'menuitem',
22
+ title: t("hyrax.dashboard.my.action.edit_collection") do %>
23
+ <li class="dropdown-item" tabindex="-1">
22
24
  <%= t("hyrax.dashboard.my.action.edit_collection") %>
23
- <% end %>
24
- </li>
25
+ </li>
26
+ <% end %>
25
27
  <% else %>
26
- <li class="dropdown-item" role="menuitem" tabindex="-1">
27
- <%= link_to "#",
28
- class: 'itemicon itemedit edit-collection-deny-button',
29
- title: t("hyrax.dashboard.my.action.edit_collection") do %>
28
+ <%= link_to "#",
29
+ class: 'itemicon itemedit edit-collection-deny-button',
30
+ role: 'menuitem',
31
+ title: t("hyrax.dashboard.my.action.edit_collection") do %>
32
+ <li class="dropdown-item" tabindex="-1">
30
33
  <%= t("hyrax.dashboard.my.action.edit_collection") %>
31
- <% end %>
32
- </li>
34
+ </li>
35
+ <% end %>
33
36
  <% end %>
34
- <li class="dropdown-item" role="menuitem" tabindex="-1">
35
- <%= link_to "#",
36
- class: 'itemicon itemtrash delete-collection-button',
37
- title: t("hyrax.dashboard.my.action.delete_collection"),
38
- data: { totalitems: collection_presenter.total_items ,
39
- membership: collection_presenter.collection_type_is_require_membership? ,
40
- hasaccess: (can?(:edit, collection_presenter.solr_document)) } do %>
37
+ <%= link_to "#",
38
+ class: 'itemicon itemtrash delete-collection-button',
39
+ role: 'menuitem',
40
+ title: t("hyrax.dashboard.my.action.delete_collection"),
41
+ data: { totalitems: collection_presenter.total_items ,
42
+ membership: collection_presenter.collection_type_is_require_membership? ,
43
+ hasaccess: (can?(:edit, collection_presenter.solr_document)) } do %>
44
+ <li class="dropdown-item" tabindex="-1">
41
45
  <%= t("hyrax.dashboard.my.action.delete_collection") %>
42
- <% end %>
43
- </li>
46
+ </li>
47
+ <% end %>
44
48
 
45
49
  <% if collection_presenter.collection_type_is_nestable? %>
46
50
  <% # The user should have deposit access to the parent we are adding, and read access to the child (the collection we are linking here). %>
47
- <li class="dropdown-item" role="menuitem" tabindex="-1">
48
- <%= link_to "#",
49
- class: 'itemicon add-to-collection',
50
- title: t("hyrax.dashboard.my.action.add_to_collection"),
51
- data: { nestable: collection_presenter.collection_type_is_nestable? ,
52
- hasaccess: (can?(:read, collection_presenter.solr_document)) } do %>
51
+ <%= link_to "#",
52
+ class: 'itemicon add-to-collection',
53
+ role: 'menuitem',
54
+ title: t("hyrax.dashboard.my.action.add_to_collection"),
55
+ data: { nestable: collection_presenter.collection_type_is_nestable? ,
56
+ hasaccess: (can?(:read, collection_presenter.solr_document)) } do %>
57
+ <li class="dropdown-item" tabindex="-1">
53
58
  <%= t("hyrax.dashboard.my.action.add_to_collection") %>
54
- <% end %>
55
- </li>
59
+ </li>
60
+ <% end %>
56
61
  <% end %>
57
62
  </ul>
58
63
  </div>
@@ -8,38 +8,39 @@
8
8
  </button>
9
9
 
10
10
  <ul role="menu" id="<%= ul_id %>" class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenu_<%= document.id %>">
11
-
12
11
  <% if can? :edit, document.id %>
13
- <li class="dropdown-item" role="menuitem" tabindex="-1">
14
- <%= link_to [main_app, :edit, document],
15
- id: 'action-edit-work' do %>
12
+ <%= link_to [main_app, :edit, document],
13
+ id: 'action-edit-work', role: 'menuitem' do %>
14
+ <li class="dropdown-item" tabindex="-1">
16
15
  <%= t("hyrax.dashboard.my.action.edit_work") %>
17
- <% end %>
18
- </li>
16
+ </li>
17
+ <% end %>
19
18
 
20
- <li class="dropdown-item" role="menuitem" tabindex="-1">
21
- <%= link_to [main_app, document],
22
- method: :delete,
23
- id: 'action-delete-work',
24
- data: {
25
- confirm: t("hyrax.dashboard.my.action.work_confirmation", application_name: application_name) } do %>
19
+ <%= link_to [main_app, document],
20
+ method: :delete,
21
+ id: 'action-delete-work',
22
+ role: 'menuitem',
23
+ data: {
24
+ confirm: t("hyrax.dashboard.my.action.work_confirmation", application_name: application_name) } do %>
25
+ <li class="dropdown-item" tabindex="-1">
26
26
  <%= t("hyrax.dashboard.my.action.delete_work") %>
27
- <% end %>
28
- </li>
27
+ </li>
28
+ <% end %>
29
29
  <% end %>
30
30
 
31
- <li class="dropdown-item" role="menuitem" tabindex="-1">
32
- <%= display_trophy_link(current_user, document.id) do |text| %>
31
+ <%= display_trophy_link(current_user, document.id, role: 'menuitem' ) do |text| %>
32
+ <li class="dropdown-item" tabindex="-1">
33
33
  <%= text %>
34
- <% end %>
35
- </li>
34
+ </li>
35
+ <% end %>
36
36
 
37
37
  <% if can? :transfer, document.id %>
38
- <li class="dropdown-item" role="menuitem" tabindex="-1">
39
- <%= link_to(hyrax.new_work_transfer_path(document.id), id: 'action-transfer-work', class: 'itemicon itemtransfer', title: t("hyrax.dashboard.my.action.transfer")) do %>
38
+ <%= link_to(hyrax.new_work_transfer_path(document.id), id: 'action-transfer-work', role: 'menuitem',
39
+ class: 'itemicon itemtransfer', title: t("hyrax.dashboard.my.action.transfer")) do %>
40
+ <li class="dropdown-item" tabindex="-1">
40
41
  <%= t("hyrax.dashboard.my.action.transfer") %>
41
- <% end %>
42
- </li>
42
+ </li>
43
+ <% end %>
43
44
  <% end %>
44
45
  </ul>
45
46
  </div>
@@ -4,6 +4,9 @@
4
4
  <tr>
5
5
  <th class="check-all"><label for="check_all" class="sr-only"><%= t("hyrax.dashboard.my.sr.check_all_label") %></label><%= render_check_all %></th>
6
6
  <th><%= t("hyrax.dashboard.my.heading.title") %></th>
7
+ <% if Hyrax.config.collection_flexible? %>
8
+ <th><%= t("hyrax.dashboard.my.heading.profile_version") %></th>
9
+ <% end %>
7
10
  <th><%= t("hyrax.dashboard.my.heading.type") %></th>
8
11
  <th><%= t("hyrax.dashboard.my.heading.last_modified") %></th>
9
12
  <th><%= t("hyrax.dashboard.my.heading.items") %></th>
@@ -57,6 +57,9 @@
57
57
  </div>
58
58
  </div>
59
59
  </td>
60
+ <% if Hyrax.config.collection_flexible? %>
61
+ <td class='text-center'><%= collection_presenter.schema_version.to_f if collection_presenter.schema_version %></td>
62
+ <% end %>
60
63
  <td class="collection_type">
61
64
  <%= collection_presenter.collection_type_badge %>
62
65
  </td>
@@ -11,8 +11,8 @@
11
11
  <div class="modal-ajax-alert"></div>
12
12
  <label><%= t('hyrax.collection.actions.nest_collections.select_label') %></label>
13
13
  <input type="hidden" name="source" value="<%= source %>" />
14
- <select name="child_id">
15
- <option value="none"><%= t("hyrax.dashboard.my.action.select") %></option>
14
+ <select name="child_id" class="form-control collection-select2" data-placeholder="<%= t('hyrax.dashboard.my.action.select') %>">
15
+ <option value=""></option>
16
16
  <% available_child_collections(collection: presenter).each do |coll| %>
17
17
  <option value="<%= coll.id %>"><%= coll.title.first %></option>
18
18
  <% end %>
@@ -13,8 +13,8 @@
13
13
 
14
14
  <label><%= t('hyrax.collection.actions.nested_subcollection.select_label') %></label>
15
15
  <input type="hidden" name="source" value="<%= source %>" />
16
- <select name="parent_id">
17
- <option value="none"><%= t("hyrax.dashboard.my.action.select") %></option>
16
+ <select name="parent_id" class="form-control collection-select2" data-placeholder="<%= t('hyrax.dashboard.my.action.select') %>">
17
+ <option value=""></option>
18
18
  </select>
19
19
  </div>
20
20
 
@@ -5,6 +5,9 @@
5
5
  <tr>
6
6
  <th class="check-all"><label for="check_all" class="sr-only"><%= t("hyrax.dashboard.my.sr.check_all_label") %></label><%= render_check_all %></th>
7
7
  <th><%= t("hyrax.dashboard.my.heading.title") %></th>
8
+ <% if Hyrax.config.flexible? %>
9
+ <th class='text-center'><%= t("hyrax.dashboard.my.heading.profile_version") %></th>
10
+ <% end %>
8
11
  <th class='text-center'><%= t("hyrax.dashboard.my.heading.last_modified") %></th>
9
12
  <th class='text-center'><%= t("hyrax.dashboard.my.heading.highlighted") %></th>
10
13
  <th class='text-center'><%= t("hyrax.dashboard.my.heading.work.visibility") %></th>
@@ -9,8 +9,8 @@
9
9
  <div class='media'>
10
10
  <%= link_to [main_app, document], class: 'mr-2' do %>
11
11
  <%= document_presenter(document)&.thumbnail&.thumbnail_tag(
12
- { class: 'd-none d-md-block file_listing_thumbnail', alt: "#{document.title_or_label} #{t('hyrax.homepage.admin_sets.thumbnail')}" },
13
- { suppress_link: true }
12
+ { class: 'd-none d-md-block file_listing_thumbnail', alt: thumbnail_alt_text_for(document) },
13
+ { suppress_link: true }
14
14
  ) %>
15
15
  <% end %>
16
16
 
@@ -27,6 +27,9 @@
27
27
  </div>
28
28
  </div>
29
29
  </td>
30
+ <% if Hyrax.config.flexible? %>
31
+ <td class='text-center'><%= document.schema_version.to_f if document.schema_version %></td>
32
+ <% end %>
30
33
  <td class="date text-center"><%= document.date_modified %></td>
31
34
  <td class='text-center'>
32
35
  <span class="fa <%= current_user.trophies.where(work_id: document.id).exists? ? 'fa-star highlighted-work' : 'fa-star-o trophy-off' %>" aria-hidden="true"></span></td>
@@ -0,0 +1,10 @@
1
+ <% if copy_permalink_enabled? %>
2
+ <% label = t('hyrax.copy_permalink.button') %>
3
+ <button type="button"
4
+ class="btn btn-secondary btn-sm copy-permalink-button"
5
+ data-clipboard-text="<%= permalink_for(presenter) %>"
6
+ data-success-text="<%= t('hyrax.copy_permalink.success') %>"
7
+ title="<%= label %>">
8
+ <%= label %>
9
+ </button>
10
+ <% end %>
@@ -17,12 +17,7 @@
17
17
 
18
18
  <% if user.twitter_handle.present? %>
19
19
  <dt><span class="fa fa-twitter" aria-hidden="true"></span> Twitter Handle</dt>
20
- <dd><%= link_to user.twitter_handle, "http://twitter.com/#{user.twitter_handle}", {target:'_blank'} %></dd>
21
- <% end %>
22
-
23
- <% if user.googleplus_handle.present? %>
24
- <dt><span class="fa fa-google-plus" aria-hidden="true"></span> Google+ Handle</dt>
25
- <dd><%= link_to user.googleplus_handle, "http://google.com/+#{user.googleplus_handle}", {target:'_blank'} %></dd>
20
+ <dd><%= link_to user.twitter_handle, "http://x.com/#{user.twitter_handle}", {target:'_blank'} %></dd>
26
21
  <% end %>
27
22
 
28
23
  <% if user.linkedin_handle.present? %>
@@ -15,6 +15,8 @@ signed in %>
15
15
  <%= yield :twitter_meta %>
16
16
  <!-- Google Scholar metadata -->
17
17
  <%= yield :gscholar_meta %>
18
+ <!-- Canonical URL -->
19
+ <%= yield :canonical_url %>
18
20
 
19
21
  <title><%= content_for?(:page_title) ? yield(:page_title) : default_page_title %></title>
20
22
 
@@ -15,6 +15,7 @@
15
15
  <div class="sidebar maximized">
16
16
  <%= render 'hyrax/dashboard/sidebar' %>
17
17
  </div>
18
+ <div class="sidebar-backdrop" aria-hidden="true"></div>
18
19
  <div class="main-content maximized<%= " admin-stats" if request.fullpath.include? '/admin/stats' %>">
19
20
  <%= render_breadcrumbs builder: Hyrax.config.breadcrumb_builder %>
20
21
  <%= render '/flash_msg' %>
@@ -26,7 +27,7 @@
26
27
  </div>
27
28
  <% end %>
28
29
 
29
- <a name="skip-to-content" id="skip-to-content"></a>
30
+ <div id="skip-to-content"></div>
30
31
  <%= render 'shared/read_only' if Flipflop.read_only? %>
31
32
  <%= content_for?(:content) ? yield(:content) : yield %>
32
33
 
@@ -0,0 +1 @@
1
+ <%= f.input key, as: :hidden %>
@@ -1,6 +1,18 @@
1
1
  <% license_service = Hyrax.config.license_service_class.new %>
2
- <%= f.input :license, as: :multi_value_select,
3
- collection: license_service.select_active_options,
4
- include_blank: true,
5
- item_helper: license_service.method(:include_current_value),
6
- input_html: { class: 'form-control' } %>
2
+ <% if f.object.multiple? :license %>
3
+ <%= f.input :license, as: :multi_value_select,
4
+ collection: license_service.select_active_options,
5
+ include_blank: true,
6
+ item_helper: license_service.method(:include_current_value),
7
+ input_html: { class: 'form-control' } %>
8
+ <% else %>
9
+ <% base_options = license_service.select_active_options %>
10
+ <% current_values = Array.wrap(f.object[:license]).select(&:present?) %>
11
+ <% augmented_options = current_values.reduce(base_options) do |opts, value|
12
+ license_service.include_current_value(value, nil, opts, { class: [] }).first
13
+ end %>
14
+ <%= f.input :license, as: :select,
15
+ collection: augmented_options,
16
+ include_blank: true,
17
+ input_html: { class: 'form-control' } %>
18
+ <% end %>
@@ -1,2 +1,16 @@
1
- <%= f.input :resource_type, as: :select, collection: Hyrax::ResourceTypesService.select_options,
2
- input_html: { class: 'form-control', multiple: true } %>
1
+ <% base_options = Hyrax::ResourceTypesService.select_options %>
2
+ <% current_values = Array.wrap(f.object[:resource_type]).select(&:present?) %>
3
+ <% augmented_options = current_values.reduce(base_options) do |opts, value|
4
+ Hyrax::ResourceTypesService.include_current_value(value, nil, opts, { class: [] }).first
5
+ end %>
6
+ <% if f.object.multiple? :resource_type %>
7
+ <%= f.input :resource_type, as: :select,
8
+ collection: augmented_options,
9
+ include_blank: !f.object.required?(:resource_type),
10
+ input_html: { class: 'form-control', multiple: true, name: "#{f.object_name}[resource_type][]" } %>
11
+ <% else %>
12
+ <%= f.input :resource_type, as: :select,
13
+ collection: augmented_options,
14
+ include_blank: true,
15
+ input_html: { class: 'form-control' } %>
16
+ <% end %>
@@ -1,6 +1,18 @@
1
1
  <% rights_statements = Hyrax.config.rights_statement_service_class.new %>
2
- <%= f.input :rights_statement,
3
- collection: rights_statements.select_active_options,
4
- include_blank: true,
5
- item_helper: rights_statements.method(:include_current_value),
6
- input_html: { class: 'form-control' } %>
2
+ <% if f.object.multiple? :rights_statement %>
3
+ <%= f.input :rights_statement, as: :multi_value_select,
4
+ collection: rights_statements.select_active_options,
5
+ include_blank: true,
6
+ item_helper: rights_statements.method(:include_current_value),
7
+ input_html: { class: 'form-control' } %>
8
+ <% else %>
9
+ <% base_options = rights_statements.select_active_options %>
10
+ <% current_values = Array.wrap(f.object[:rights_statement]).select(&:present?) %>
11
+ <% augmented_options = current_values.reduce(base_options) do |opts, value|
12
+ rights_statements.include_current_value(value, nil, opts, { class: [] }).first
13
+ end %>
14
+ <%= f.input :rights_statement, as: :select,
15
+ collection: augmented_options,
16
+ include_blank: true,
17
+ input_html: { class: 'form-control' } %>
18
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render('shared/schema_version', f: f) if f.object.flexible? %>