hyrax 5.2.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.
- checksums.yaml +4 -4
- data/.dassie/.env +5 -1
- data/.dassie/Gemfile +4 -2
- data/.dassie/app/assets/images/bulkrax/removed.png +0 -0
- data/.dassie/app/assets/javascripts/application.js +2 -0
- data/.dassie/app/assets/stylesheets/application.css +1 -0
- data/.dassie/app/controllers/catalog_controller.rb +1 -0
- data/.dassie/app/forms/admin_set_resource_form.rb +6 -0
- data/.dassie/app/forms/collection_resource_form.rb +5 -2
- data/.dassie/app/forms/generic_work_resource_form.rb +5 -2
- data/.dassie/app/forms/monograph_form.rb +5 -3
- data/.dassie/app/indexers/admin_set_resource_indexer.rb +5 -0
- data/.dassie/app/indexers/collection_resource_indexer.rb +3 -3
- data/.dassie/app/indexers/generic_work_resource_indexer.rb +6 -3
- data/.dassie/app/indexers/monograph_indexer.rb +6 -2
- data/.dassie/app/models/ability.rb +8 -0
- data/.dassie/app/models/collection_resource.rb +4 -2
- data/.dassie/app/models/concerns/bulkrax/has_local_processing.rb +8 -0
- data/.dassie/app/models/generic_work_resource.rb +5 -2
- data/.dassie/app/models/monograph.rb +5 -2
- data/.dassie/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
- data/.dassie/bin/importer +142 -0
- data/.dassie/bin/web +4 -0
- data/.dassie/config/browse_everything_providers.yml +1 -1
- data/.dassie/config/bulkrax_api.yml +86 -0
- data/.dassie/config/initializers/bulkrax.rb +92 -0
- data/.dassie/config/initializers/clamav.rb +2 -0
- data/.dassie/config/initializers/hyrax.rb +7 -1
- data/.dassie/config/initializers/riiif.rb +4 -80
- data/.dassie/config/initializers/wings.rb +1 -1
- data/.dassie/config/metadata_profiles/m3_profile.yaml +929 -0
- data/.dassie/config/puma.rb +4 -2
- data/.dassie/config/routes.rb +7 -0
- data/.dassie/config/sidekiq.yml +17 -0
- data/.dassie/config/uv/uv.html +63 -81
- data/.dassie/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb +9 -0
- data/.dassie/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb +5 -0
- data/.dassie/db/migrate/20250826142438_create_bulkrax_importers.bulkrax.rb +19 -0
- data/.dassie/db/migrate/20250826142439_create_bulkrax_importer_runs.bulkrax.rb +17 -0
- data/.dassie/db/migrate/20250826142440_create_bulkrax_entries.bulkrax.rb +17 -0
- data/.dassie/db/migrate/20250826142441_add_status_to_entry.bulkrax.rb +10 -0
- data/.dassie/db/migrate/20250826142442_add_collections_to_importer_runs.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142443_change_collection_ids_on_entries.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142444_create_bulkrax_exporters.bulkrax.rb +20 -0
- data/.dassie/db/migrate/20250826142445_create_bulkrax_exporter_runs.bulkrax.rb +15 -0
- data/.dassie/db/migrate/20250826142446_change_importer_and_exporter_to_polymorphic.bulkrax.rb +19 -0
- data/.dassie/db/migrate/20250826142447_add_total_collection_records_to_importer_runs.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142448_add_children_to_importer_runs.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142449_change_total_records_to_total_work_entries.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142450_change_entry_last_error.bulkrax.rb +20 -0
- data/.dassie/db/migrate/20250826142451_add_validate_only_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142452_add_status_to_importers.bulkrax.rb +10 -0
- data/.dassie/db/migrate/20250826142453_remove_foreign_key_from_bulkrax_entries.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142454_add_status_to_exporters.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142455_add_invalid_record_to_importer_run.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142456_create_bulkrax_statuses.bulkrax.rb +19 -0
- data/.dassie/db/migrate/20250826142457_move_to_statuses.bulkrax.rb +31 -0
- data/.dassie/db/migrate/20250826142458_add_date_filter_and_status_to_bulkrax_exporters.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142459_add_workflow_status_to_bulkrax_exporter.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142460_remove_unused_last_error.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142461_increase_text_sizes.bulkrax.rb +13 -0
- data/.dassie/db/migrate/20250826142462_change_bulkrax_statuses_error_message_column_type_to_text.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142463_rename_children_counters_to_relationships.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142464_add_file_set_counters_to_importer_runs.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142465_add_import_attempts_to_entries.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142466_add_work_counters_to_importer_runs.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142467_create_bulkrax_pending_relationships.bulkrax.rb +14 -0
- data/.dassie/db/migrate/20250826142468_add_order_to_bulkrax_pending_relationships.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142469_add_include_thumbnails_to_bulkrax_exporters.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142470_add_generated_metadata_to_bulkrax_exporters.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142471_rename_bulkrax_importer_run_to_importer_run.bulkrax.rb +18 -0
- data/.dassie/db/migrate/20250826142472_add_indices_to_bulkrax.bulkrax.rb +26 -0
- data/.dassie/db/migrate/20250826142473_denormalize_status_message.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142474_update_identifier_index.bulkrax.rb +7 -0
- data/.dassie/db/migrate/20250826142475_add_index_to_metadata_bulkrax_identifier.bulkrax.rb +19 -0
- data/.dassie/db/migrate/20250826142476_add_file_name_to_uploaded_files.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142477_add_error_tracking_to_pending_relationships.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142478_add_last_imported_at_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142479_add_next_import_at_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.dassie/db/migrate/20250826142480_entry_error_denormalization.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20250826142481_faster_first_entry.bulkrax.rb +8 -0
- data/.dassie/db/migrate/20260430000001_create_hyrax_redirect_paths.hyrax.rb +13 -0
- data/.dassie/db/migrate/20260521003627_add_additional_redirect_info.hyrax.rb +32 -0
- data/.dassie/db/schema.rb +154 -1
- data/.dassie/package.json +1 -1
- data/.dassie/rspec_split_configuration.json +835 -0
- data/.dassie/solr/conf/solrconfig.xml +21 -5
- data/.github/{ISSUE_TEMPLATE.md → ISSUE_TEMPLATE/issue_template.md} +5 -0
- data/.github/workflows/lint-build-test.yml +5 -1
- data/.github/workflows/release-charts.yml +48 -0
- data/.gitignore +6 -0
- data/.koppie/.env +5 -1
- data/.koppie/Gemfile +3 -1
- data/.koppie/app/assets/images/bulkrax/removed.png +0 -0
- data/.koppie/app/assets/javascripts/application.js +2 -0
- data/.koppie/app/assets/stylesheets/application.css +1 -0
- data/.koppie/app/controllers/catalog_controller.rb +1 -1
- data/.koppie/app/forms/collection_resource_form.rb +5 -2
- data/.koppie/app/forms/file_set_form.rb +5 -0
- data/.koppie/app/forms/generic_work_form.rb +5 -3
- data/.koppie/app/forms/monograph_form.rb +5 -3
- data/.koppie/app/indexers/collection_resource_indexer.rb +5 -2
- data/.koppie/app/indexers/file_set_indexer.rb +7 -0
- data/.koppie/app/indexers/generic_work_indexer.rb +6 -3
- data/.koppie/app/indexers/monograph_indexer.rb +6 -2
- data/.koppie/app/models/ability.rb +8 -0
- data/.koppie/app/models/collection_resource.rb +4 -2
- data/.koppie/app/models/concerns/bulkrax/has_local_processing.rb +8 -0
- data/.koppie/app/models/generic_work.rb +5 -2
- data/.koppie/app/models/monograph.rb +5 -2
- data/.koppie/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
- data/.koppie/bin/importer +142 -0
- data/.koppie/bin/web +4 -0
- data/.koppie/config/browse_everything_providers.yml +2 -0
- data/.koppie/config/bulkrax_api.yml +86 -0
- data/.koppie/config/initializers/bulkrax.rb +92 -0
- data/.koppie/config/initializers/clamav.rb +2 -0
- data/.koppie/config/initializers/hyrax.rb +11 -3
- data/.koppie/config/initializers/riiif.rb +4 -82
- data/.koppie/config/metadata_profiles/m3_profile.yaml +930 -0
- data/.koppie/config/routes.rb +7 -0
- data/.koppie/config/sidekiq.yml +2 -0
- data/.koppie/config/uv/uv.html +63 -81
- data/.koppie/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb +9 -0
- data/.koppie/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb +5 -0
- data/.koppie/db/migrate/20250826142438_create_bulkrax_importers.bulkrax.rb +19 -0
- data/.koppie/db/migrate/20250826142439_create_bulkrax_importer_runs.bulkrax.rb +17 -0
- data/.koppie/db/migrate/20250826142440_create_bulkrax_entries.bulkrax.rb +17 -0
- data/.koppie/db/migrate/20250826142441_add_status_to_entry.bulkrax.rb +10 -0
- data/.koppie/db/migrate/20250826142442_add_collections_to_importer_runs.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142443_change_collection_ids_on_entries.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142444_create_bulkrax_exporters.bulkrax.rb +20 -0
- data/.koppie/db/migrate/20250826142445_create_bulkrax_exporter_runs.bulkrax.rb +15 -0
- data/.koppie/db/migrate/20250826142446_change_importer_and_exporter_to_polymorphic.bulkrax.rb +19 -0
- data/.koppie/db/migrate/20250826142447_add_total_collection_records_to_importer_runs.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142448_add_children_to_importer_runs.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142449_change_total_records_to_total_work_entries.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142450_change_entry_last_error.bulkrax.rb +20 -0
- data/.koppie/db/migrate/20250826142451_add_validate_only_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142452_add_status_to_importers.bulkrax.rb +10 -0
- data/.koppie/db/migrate/20250826142453_remove_foreign_key_from_bulkrax_entries.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142454_add_status_to_exporters.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142455_add_invalid_record_to_importer_run.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142456_create_bulkrax_statuses.bulkrax.rb +19 -0
- data/.koppie/db/migrate/20250826142457_move_to_statuses.bulkrax.rb +31 -0
- data/.koppie/db/migrate/20250826142458_add_date_filter_and_status_to_bulkrax_exporters.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142459_add_workflow_status_to_bulkrax_exporter.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142460_remove_unused_last_error.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142461_increase_text_sizes.bulkrax.rb +13 -0
- data/.koppie/db/migrate/20250826142462_change_bulkrax_statuses_error_message_column_type_to_text.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142463_rename_children_counters_to_relationships.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142464_add_file_set_counters_to_importer_runs.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142465_add_import_attempts_to_entries.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142466_add_work_counters_to_importer_runs.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142467_create_bulkrax_pending_relationships.bulkrax.rb +14 -0
- data/.koppie/db/migrate/20250826142468_add_order_to_bulkrax_pending_relationships.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142469_add_include_thumbnails_to_bulkrax_exporters.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142470_add_generated_metadata_to_bulkrax_exporters.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142471_rename_bulkrax_importer_run_to_importer_run.bulkrax.rb +18 -0
- data/.koppie/db/migrate/20250826142472_add_indices_to_bulkrax.bulkrax.rb +26 -0
- data/.koppie/db/migrate/20250826142473_denormalize_status_message.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142474_update_identifier_index.bulkrax.rb +7 -0
- data/.koppie/db/migrate/20250826142475_add_index_to_metadata_bulkrax_identifier.bulkrax.rb +19 -0
- data/.koppie/db/migrate/20250826142476_add_file_name_to_uploaded_files.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142477_add_error_tracking_to_pending_relationships.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142478_add_last_imported_at_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142479_add_next_import_at_to_bulkrax_importers.bulkrax.rb +6 -0
- data/.koppie/db/migrate/20250826142480_entry_error_denormalization.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20250826142481_faster_first_entry.bulkrax.rb +8 -0
- data/.koppie/db/migrate/20260430000001_create_hyrax_redirect_paths.hyrax.rb +13 -0
- data/.koppie/db/migrate/20260521003627_add_additional_redirect_info.hyrax.rb +32 -0
- data/.koppie/db/schema.rb +154 -1
- data/.koppie/package.json +1 -1
- data/.koppie/rspec_split_configuration.json +835 -0
- data/.koppie/solr/conf/solrconfig.xml +0 -5
- data/.koppie/yarn.lock +5587 -752
- data/.rubocop.yml +1 -0
- data/CONTAINERS.md +2 -0
- data/Dockerfile +9 -22
- data/Gemfile +0 -1
- data/Gemfile.allinson +2 -0
- data/README.md +1 -2
- data/app/actors/hyrax/actors/file_actor.rb +2 -0
- data/app/actors/hyrax/actors/file_set_actor.rb +1 -1
- data/app/assets/javascripts/hyrax/app.js.erb +143 -10
- data/app/assets/javascripts/hyrax/collection_select.js +68 -0
- data/app/assets/javascripts/hyrax/copy_permalink_button.js +28 -0
- data/app/assets/javascripts/hyrax/redirects.js +45 -0
- data/app/assets/javascripts/hyrax/relationships/control.es6 +21 -1
- data/app/assets/javascripts/hyrax/select_work_type.es6 +7 -2
- data/app/assets/javascripts/hyrax.js +3 -1
- data/app/assets/stylesheets/hyrax/_file-show.scss +1 -0
- data/app/assets/stylesheets/hyrax/_viewer.scss +8 -0
- data/app/assets/stylesheets/hyrax/dashboard.scss +22 -1
- data/app/assets/stylesheets/hyrax/sidebar.scss +98 -3
- data/app/authorities/qa/authorities/collections.rb +9 -9
- data/app/controllers/concerns/hyrax/analytics_error_handling.rb +97 -0
- data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +3 -1
- data/app/controllers/concerns/hyrax/ensure_migrated_behavior.rb +50 -0
- data/app/controllers/concerns/hyrax/flexible_catalog_behavior.rb +206 -0
- data/app/controllers/concerns/hyrax/flexible_schema_behavior.rb +17 -0
- data/app/controllers/concerns/hyrax/redirect_to_display_url.rb +54 -0
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +52 -10
- data/app/controllers/hyrax/admin/admin_sets_controller.rb +21 -13
- data/app/controllers/hyrax/admin/analytics/collection_reports_controller.rb +2 -0
- data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +1 -0
- data/app/controllers/hyrax/admin/metadata_profiles_controller.rb +66 -0
- data/app/controllers/hyrax/batch_uploads_controller.rb +2 -0
- data/app/controllers/hyrax/dashboard/collections_controller.rb +27 -6
- data/app/controllers/hyrax/dashboard/nest_collections_controller.rb +2 -1
- data/app/controllers/hyrax/dashboard_controller.rb +2 -1
- data/app/controllers/hyrax/file_sets_controller.rb +19 -1
- data/app/controllers/hyrax/homepage_controller.rb +7 -0
- data/app/controllers/hyrax/my/works_controller.rb +2 -21
- data/app/controllers/hyrax/permissions_controller.rb +4 -2
- data/app/controllers/hyrax/redirects_controller.rb +56 -0
- data/app/controllers/hyrax/single_use_links_viewer_controller.rb +2 -1
- data/app/controllers/hyrax/transcripts_controller.rb +31 -0
- data/app/controllers/hyrax/uploads_controller.rb +18 -9
- data/app/forms/concerns/hyrax/based_near_field_behavior.rb +77 -0
- data/app/forms/concerns/hyrax/flexible_form_behavior.rb +37 -0
- data/app/forms/concerns/hyrax/redirects_field_behavior.rb +95 -0
- data/app/forms/concerns/hyrax/transcripts_behavior.rb +40 -0
- data/app/forms/hyrax/forms/admin_set_form.rb +1 -1
- data/app/forms/hyrax/forms/administrative_set_form.rb +3 -0
- data/app/forms/hyrax/forms/batch_edit_form.rb +1 -3
- data/app/forms/hyrax/forms/batch_upload_form.rb +14 -0
- data/app/forms/hyrax/forms/file_set_edit_form.rb +1 -1
- data/app/forms/hyrax/forms/file_set_form.rb +6 -7
- data/app/forms/hyrax/forms/pcdm_collection_form.rb +17 -5
- data/app/forms/hyrax/forms/pcdm_object_form.rb +11 -3
- data/app/forms/hyrax/forms/resource_batch_edit_form.rb +8 -22
- data/app/forms/hyrax/forms/resource_form.rb +110 -10
- data/app/forms/hyrax/forms.rb +1 -0
- data/app/helpers/hyrax/attributes_helper.rb +109 -0
- data/app/helpers/hyrax/blacklight_override.rb +26 -0
- data/app/helpers/hyrax/collections_helper.rb +2 -0
- data/app/helpers/hyrax/file_set_form_helper.rb +24 -0
- data/app/helpers/hyrax/hyrax_helper_behavior.rb +51 -2
- data/app/helpers/hyrax/iiif_helper.rb +11 -1
- data/app/helpers/hyrax/permalink_helper.rb +37 -0
- data/app/helpers/hyrax/redirects_tab_helper.rb +29 -0
- data/app/helpers/hyrax/work_form_helper.rb +9 -5
- data/app/helpers/hyrax/works_helper.rb +14 -0
- data/app/indexers/concerns/hyrax/workflow_indexer.rb +30 -0
- data/app/indexers/hyrax/file_set_indexer.rb +1 -0
- data/app/indexers/hyrax/indexers/administrative_set_indexer.rb +2 -1
- data/app/indexers/hyrax/indexers/file_set_indexer.rb +6 -2
- data/app/indexers/hyrax/indexers/pcdm_collection_indexer.rb +11 -1
- data/app/indexers/hyrax/indexers/pcdm_object_indexer.rb +25 -4
- data/app/indexers/hyrax/indexers/redirects_indexer.rb +29 -0
- data/app/indexers/hyrax/indexers/resource_indexer.rb +4 -0
- data/app/indexers/hyrax/indexers.rb +2 -0
- data/app/inputs/controlled_vocabulary_input.rb +7 -1
- data/app/jobs/content_deposit_error_event_job.rb +14 -0
- data/app/jobs/create_work_job.rb +2 -0
- data/app/jobs/migrate_files_to_valkyrie_job.rb +7 -1
- data/app/models/batch_upload_item.rb +4 -0
- data/app/models/concerns/hyrax/ability/flexible_metadata_ability.rb +10 -0
- data/app/models/concerns/hyrax/ability.rb +3 -1
- data/app/models/concerns/hyrax/collection_behavior.rb +4 -0
- data/app/models/concerns/hyrax/file_set/transcripts.rb +16 -0
- data/app/models/concerns/hyrax/file_set_behavior.rb +9 -0
- data/app/models/concerns/hyrax/flexibility.rb +107 -0
- data/app/models/concerns/hyrax/redirects_normalization.rb +38 -0
- data/app/models/concerns/hyrax/solr_document/characterization.rb +1 -1
- data/app/models/concerns/hyrax/solr_document/metadata.rb +9 -0
- data/app/models/concerns/hyrax/solr_document/ordered_members.rb +4 -0
- data/app/models/concerns/hyrax/solr_document_behavior.rb +28 -6
- data/app/models/concerns/hyrax/suppressible.rb +1 -1
- data/app/models/concerns/hyrax/valkyrie_lazy_migration.rb +1 -1
- data/app/models/concerns/hyrax/with_embargoes_and_leases.rb +30 -0
- data/app/models/concerns/hyrax/work_behavior.rb +8 -0
- data/app/models/hyrax/administrative_set.rb +1 -1
- data/app/models/hyrax/change_set.rb +3 -1
- data/app/models/hyrax/embargo.rb +3 -1
- data/app/models/hyrax/file_set.rb +4 -2
- data/app/models/hyrax/flexible_schema.rb +219 -0
- data/app/models/hyrax/lease.rb +3 -1
- data/app/models/hyrax/pcdm_collection.rb +4 -1
- data/app/models/hyrax/redirect.rb +64 -0
- data/app/models/hyrax/redirect_path.rb +14 -0
- data/app/models/hyrax/resource.rb +22 -25
- data/app/models/hyrax/riiif/file.rb +43 -0
- data/app/models/hyrax/riiif/file_resolver.rb +65 -0
- data/app/models/hyrax/uploaded_file.rb +9 -0
- data/app/models/hyrax/virus_scanner.rb +16 -3
- data/app/models/hyrax/work.rb +4 -1
- data/app/models/job_io_wrapper.rb +12 -3
- data/app/models/user_mailbox.rb +3 -1
- data/app/presenters/hyrax/admin_set_presenter.rb +11 -0
- data/app/presenters/hyrax/annotates_content.rb +35 -0
- data/app/presenters/hyrax/collection_presenter.rb +5 -1
- data/app/presenters/hyrax/displays_content.rb +133 -0
- data/app/presenters/hyrax/displays_image.rb +11 -4
- data/app/presenters/hyrax/displays_transcripts.rb +59 -0
- data/app/presenters/hyrax/file_set_presenter.rb +8 -18
- data/app/presenters/hyrax/google_scholar_presenter.rb +39 -0
- data/app/presenters/hyrax/iiif_manifest_presenter.rb +22 -4
- data/app/presenters/hyrax/missing_method_behavior.rb +15 -0
- data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +2 -4
- data/app/presenters/hyrax/work_show_presenter.rb +56 -14
- data/app/renderers/hyrax/renderers/attribute_renderer.rb +6 -2
- data/app/renderers/hyrax/renderers/license_attribute_renderer.rb +10 -10
- data/app/renderers/hyrax/renderers/redirects_label_attribute_renderer.rb +25 -0
- data/app/renderers/hyrax/renderers/rights_statement_attribute_renderer.rb +10 -11
- data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +1 -5
- data/app/search_builders/hyrax/filter_by_type.rb +1 -1
- data/app/services/hyrax/action/create_valkyrie_work.rb +3 -2
- data/app/services/hyrax/authority_rendering_helper.rb +28 -0
- data/app/services/hyrax/authority_service.rb +107 -0
- data/app/services/hyrax/callbacks.rb +2 -2
- data/app/services/hyrax/collections/nested_collection_query_service.rb +9 -3
- data/app/services/hyrax/collections_service.rb +17 -0
- data/app/services/hyrax/custom_queries/find_by_property_value.rb +89 -0
- data/app/services/hyrax/edit_permissions_service.rb +4 -4
- data/app/services/hyrax/file_set_type_service.rb +12 -4
- data/app/services/hyrax/flexible_schema_validator_service.rb +153 -0
- data/app/services/hyrax/flexible_schema_validators/class_validator.rb +123 -0
- data/app/services/hyrax/flexible_schema_validators/core_metadata_validator.rb +211 -0
- data/app/services/hyrax/flexible_schema_validators/existing_records_validator.rb +83 -0
- data/app/services/hyrax/flexible_schema_validators/redirects_validator.rb +116 -0
- data/app/services/hyrax/flexible_schema_validators/schema_validator.rb +34 -0
- data/app/services/hyrax/flexible_schema_validators/sort_properties_validator.rb +54 -0
- data/app/services/hyrax/license_service.rb +1 -1
- data/app/services/hyrax/listeners/metadata_index_listener.rb +11 -0
- data/app/services/hyrax/m3_profile_editor.rb +32 -0
- data/app/services/hyrax/m3_schema_loader.rb +119 -0
- data/app/services/hyrax/manifest_builder_service.rb +18 -24
- data/app/services/hyrax/permalink_path.rb +25 -0
- data/app/services/hyrax/qa_select_service.rb +9 -5
- data/app/services/hyrax/redirect_path_normalizer.rb +58 -0
- data/app/services/hyrax/redirects_lookup.rb +59 -0
- data/app/services/hyrax/resource_permissions_visibility_propagator.rb +54 -0
- data/app/services/hyrax/resource_types_service.rb +3 -20
- data/app/services/hyrax/rights_statement_service.rb +1 -1
- data/app/services/hyrax/schema_loader.rb +205 -0
- data/app/services/hyrax/search_service.rb +1 -1
- data/app/services/hyrax/simple_schema_loader.rb +28 -127
- data/app/services/hyrax/solr_service.rb +39 -2
- data/app/services/hyrax/tolerant_select_service.rb +5 -3
- data/app/services/hyrax/valkyrie_upload.rb +2 -2
- data/app/services/hyrax/visibility_propagator.rb +4 -1
- data/app/services/hyrax/work_uploads_handler.rb +17 -9
- data/app/services/hyrax/workflow/workflow_factory.rb +5 -4
- data/app/services/migrate_resource_service.rb +7 -1
- data/app/uploaders/hyrax/uploaded_file_uploader.rb +2 -2
- data/app/utils/hyrax/data_destroyers/collection_branding_destroyer.rb +1 -1
- data/app/utils/hyrax/required_data_seeder.rb +1 -0
- data/app/utils/hyrax/required_data_seeders/collection_type_seeder.rb +1 -1
- data/app/utils/hyrax/required_data_seeders/flexible_profile_seeder.rb +28 -0
- data/app/validators/hyrax/controlled_vocabulary_validator.rb +64 -0
- data/app/validators/hyrax/redirect_validator.rb +128 -0
- data/app/views/catalog/_thumbnail_list_default.html.erb +2 -2
- data/app/views/collections/edit_fields/_schema_version.html.erb +1 -0
- data/app/views/hyrax/admin/admin_sets/_form_metadata.html.erb +24 -2
- data/app/views/hyrax/admin/admin_sets/_show_document_list_row.html.erb +1 -1
- data/app/views/hyrax/admin/admin_sets/show.html.erb +1 -1
- data/app/views/hyrax/admin/analytics/_analytics_error.html.erb +42 -0
- data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +11 -9
- data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +60 -57
- data/app/views/hyrax/admin/features/index.html.erb +1 -1
- data/app/views/hyrax/admin/metadata_profiles/_import_modal.html.erb +20 -0
- data/app/views/hyrax/admin/metadata_profiles/index.html.erb +54 -0
- data/app/views/hyrax/base/_attribute_rows.html.erb +4 -21
- data/app/views/hyrax/base/_citations.html.erb +1 -0
- data/app/views/hyrax/base/_currently_shared.html.erb +2 -1
- data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
- data/app/views/hyrax/base/_form_member_of_collections.html.erb +6 -6
- data/app/views/hyrax/base/_form_redirects.html.erb +125 -0
- data/app/views/hyrax/base/_form_share.html.erb +7 -2
- data/app/views/hyrax/base/_member.html.erb +1 -1
- data/app/views/hyrax/base/_social_media.html.erb +1 -1
- data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +1 -1
- data/app/views/hyrax/base/show.html.erb +3 -0
- data/app/views/hyrax/collections/_default_group.html.erb +3 -0
- data/app/views/hyrax/collections/_list_collections.html.erb +3 -0
- data/app/views/hyrax/collections/_list_works.html.erb +1 -1
- data/app/views/hyrax/collections/_show_document_list_row.html.erb +1 -1
- data/app/views/hyrax/collections/show.html.erb +4 -0
- data/app/views/hyrax/dashboard/_sidebar.html.erb +4 -2
- data/app/views/hyrax/dashboard/collections/_button_for_update_collection.html.erb +2 -1
- data/app/views/hyrax/dashboard/collections/_default_group.html.erb +3 -0
- data/app/views/hyrax/dashboard/collections/_form.html.erb +17 -0
- data/app/views/hyrax/dashboard/collections/_form_for_select_collection.html.erb +7 -10
- data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +3 -0
- data/app/views/hyrax/dashboard/collections/_list_works.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
- data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +1 -8
- data/app/views/hyrax/dashboard/profiles/_trophy_edit.html.erb +1 -1
- data/app/views/hyrax/dashboard/profiles/show.html.erb +5 -5
- data/app/views/hyrax/dashboard/sidebar/_metadata.html.erb +11 -0
- data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +1 -0
- data/app/views/hyrax/dashboard/works/_default_group.html.erb +3 -0
- data/app/views/hyrax/dashboard/works/_list_works.html.erb +4 -2
- data/app/views/hyrax/file_sets/_form.html.erb +16 -3
- data/app/views/hyrax/file_sets/_metadata.html.erb +35 -0
- data/app/views/hyrax/file_sets/_valkyrie_form.html.erb +37 -0
- data/app/views/hyrax/file_sets/edit.html.erb +14 -8
- data/app/views/hyrax/file_sets/media_display/_audio.html.erb +4 -0
- data/app/views/hyrax/file_sets/media_display/_image.html.erb +2 -2
- data/app/views/hyrax/file_sets/media_display/_video.html.erb +4 -0
- data/app/views/hyrax/homepage/_explore_collections.html.erb +1 -1
- data/app/views/hyrax/homepage/_featured_fields.html.erb +1 -1
- data/app/views/hyrax/homepage/_recent_document.html.erb +1 -1
- data/app/views/hyrax/homepage/robots.text.erb +17 -0
- data/app/views/hyrax/my/collections/_default_group.html.erb +3 -0
- data/app/views/hyrax/my/collections/_list_collections.html.erb +3 -0
- data/app/views/hyrax/my/collections/_modal_add_subcollection.html.erb +2 -2
- data/app/views/hyrax/my/collections/_modal_add_to_collection.html.erb +2 -2
- data/app/views/hyrax/my/works/_default_group.html.erb +3 -0
- data/app/views/hyrax/my/works/_list_works.html.erb +5 -2
- data/app/views/hyrax/shared/_copy_permalink.html.erb +10 -0
- data/app/views/hyrax/users/_user_info.html.erb +1 -6
- data/app/views/layouts/_head_tag_content.html.erb +2 -0
- data/app/views/layouts/hyrax/dashboard.html.erb +2 -1
- data/app/views/records/edit_fields/_contexts.html.erb +1 -0
- data/app/views/records/edit_fields/_license.html.erb +17 -5
- data/app/views/records/edit_fields/_resource_type.html.erb +16 -2
- data/app/views/records/edit_fields/_rights_statement.html.erb +17 -5
- data/app/views/records/edit_fields/_schema_version.html.erb +1 -0
- data/app/views/records/edit_fields/_transcript_ids.html.erb +18 -0
- data/app/views/records/show_fields/_rights.html.erb +1 -1
- data/app/views/shared/_citations.html.erb +46 -31
- data/app/views/shared/_schema_version.html.erb +38 -0
- data/bin/dev-entrypoint.sh +14 -4
- data/chart/hyrax/Chart.yaml +4 -4
- data/chart/hyrax/templates/ingress.yaml +3 -0
- data/chart/hyrax/values.yaml +10 -8
- data/config/features.rb +27 -0
- data/config/initializers/blacklight_dynamic_sitemap.rb +43 -0
- data/config/initializers/deprecation_patch.rb +27 -0
- data/config/initializers/hydra_works.rb +3 -0
- data/config/initializers/i18n_extensions.rb +197 -0
- data/config/initializers/storage_adapter_initializer.rb +15 -9
- data/config/locales/hyrax.de.yml +172 -54
- data/config/locales/hyrax.en.yml +183 -66
- data/config/locales/hyrax.es.yml +174 -49
- data/config/locales/hyrax.fr.yml +169 -45
- data/config/locales/hyrax.it.yml +172 -48
- data/config/locales/hyrax.pt-BR.yml +172 -54
- data/config/locales/hyrax.zh.yml +145 -21
- data/config/metadata/basic_metadata.yaml +66 -0
- data/config/metadata/batch_edit_metadata.yaml +119 -0
- data/config/metadata/file_set_metadata.yaml +19 -0
- data/config/metadata/redirects.yaml +15 -0
- data/config/metadata_profiles/m3_json_schema.json +487 -0
- data/config/metadata_profiles/m3_profile.yaml +954 -0
- data/config/routes.rb +9 -0
- data/docker-compose-allinson.yml +176 -0
- data/docker-compose-dassie.yml +14 -6
- data/docker-compose-koppie.yml +18 -10
- data/docker-compose-sirenia.yml +20 -10
- data/documentation/copy_permalink.md +29 -0
- data/documentation/developing-your-hyrax-based-app.md +2 -2
- data/documentation/file-ingest-characterization.md +763 -0
- data/documentation/flexible_metadata.md +113 -0
- data/documentation/forms/field_behaviors.md +297 -0
- data/documentation/redirects.md +428 -0
- data/hyrax.gemspec +7 -2
- data/lib/freyja/metadata_adapter.rb +1 -1
- data/lib/freyja/persister.rb +25 -1
- data/lib/generators/hyrax/collection_resource/collection_resource_generator.rb +2 -2
- data/lib/generators/hyrax/collection_resource/templates/collection.rb.erb +5 -1
- data/lib/generators/hyrax/collection_resource/templates/collection_form.rb.erb +5 -1
- data/lib/generators/hyrax/collection_resource/templates/collection_indexer.rb.erb +6 -1
- data/lib/generators/hyrax/iiif_viewer/USAGE +22 -0
- data/lib/generators/hyrax/iiif_viewer/iiif_viewer_generator.rb +49 -0
- data/lib/generators/hyrax/iiif_viewer/templates/_clover.html.erb +7 -0
- data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.css +3328 -0
- data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.html +16 -0
- data/lib/generators/hyrax/iiif_viewer/templates/clover/clover.js +237 -0
- data/lib/generators/hyrax/install_generator.rb +25 -1
- data/lib/generators/hyrax/riiif_generator.rb +1 -1
- data/lib/generators/hyrax/templates/app/views/blacklight_dynamic_sitemap/sitemap/show.xml.builder +22 -0
- data/lib/generators/hyrax/templates/config/clamav.rb +2 -0
- data/lib/generators/hyrax/templates/config/initializers/riiif.rb +4 -80
- data/lib/generators/hyrax/templates/db/migrate/20240606205215_create_hyrax_flexible_schemas.rb.erb +9 -0
- data/lib/generators/hyrax/templates/db/migrate/20240606205216_add_contexts_to_hyrax_flexible_schemas.rb.erb +5 -0
- data/lib/generators/hyrax/templates/db/migrate/20260430000001_create_hyrax_redirect_paths.rb.erb +22 -0
- data/lib/generators/hyrax/templates/db/migrate/20260521003627_add_additional_redirect_info.rb.erb +39 -0
- data/lib/generators/hyrax/templates/package.json +1 -1
- data/lib/generators/hyrax/templates/uv.html +60 -82
- data/lib/generators/hyrax/work/templates/indexer.rb.erb +1 -1
- data/lib/generators/hyrax/work/templates/model.rb.erb +5 -1
- data/lib/generators/hyrax/work_resource/templates/form.rb.erb +5 -2
- data/lib/generators/hyrax/work_resource/templates/indexer.rb.erb +6 -2
- data/lib/generators/hyrax/work_resource/templates/work.rb.erb +5 -2
- data/lib/generators/hyrax/work_resource/work_resource_generator.rb +1 -0
- data/lib/hyrax/active_fedora_dummy_model.rb +6 -0
- data/lib/hyrax/configuration.rb +197 -3
- data/lib/hyrax/deprecation.rb +31 -0
- data/lib/hyrax/engine.rb +2 -0
- data/lib/hyrax/form_fields.rb +17 -5
- data/lib/hyrax/indexer.rb +31 -2
- data/lib/hyrax/resource_sync/resource_list_writer.rb +3 -0
- data/lib/hyrax/schema.rb +15 -4
- data/lib/hyrax/specs/shared_specs/factories/administrative_sets.rb +12 -0
- data/lib/hyrax/specs/shared_specs/factories/hyrax_embargo.rb +1 -1
- data/lib/hyrax/specs/shared_specs/factories/hyrax_file_set.rb +13 -0
- data/lib/hyrax/specs/shared_specs/factories/hyrax_lease.rb +5 -1
- data/lib/hyrax/specs/shared_specs/factories/hyrax_work.rb +14 -0
- data/lib/hyrax/specs/shared_specs/simple_work.rb +41 -0
- data/lib/hyrax/specs/shared_specs.rb +1 -0
- data/lib/hyrax/transactions/collection_create.rb +2 -1
- data/lib/hyrax/transactions/collection_destroy.rb +1 -0
- data/lib/hyrax/transactions/collection_update.rb +2 -1
- data/lib/hyrax/transactions/container.rb +28 -0
- data/lib/hyrax/transactions/steps/apply_permission_template_on_update.rb +65 -0
- data/lib/hyrax/transactions/steps/apply_workflow_on_admin_set_change.rb +97 -0
- data/lib/hyrax/transactions/steps/ensure_admin_set.rb +1 -1
- data/lib/hyrax/transactions/steps/remove_redirect_paths.rb +35 -0
- data/lib/hyrax/transactions/steps/save.rb +10 -0
- data/lib/hyrax/transactions/steps/set_default_admin_set.rb +1 -1
- data/lib/hyrax/transactions/steps/sync_redirect_paths.rb +141 -0
- data/lib/hyrax/transactions/work_create.rb +2 -1
- data/lib/hyrax/transactions/work_destroy.rb +1 -0
- data/lib/hyrax/transactions/work_update.rb +4 -1
- data/lib/hyrax/version.rb +1 -1
- data/lib/hyrax.rb +61 -0
- data/lib/tasks/m3_profile_cleanup.rake +35 -0
- data/template.rb +4 -1
- metadata +313 -19
- data/.dassie/public/robots.txt +0 -1
- data/.koppie/public/robots.txt +0 -1
- data/app/forms/concerns/hyrax/basic_metadata_form_fields_behavior.rb +0 -39
- data/app/views/catalog/_thumbnail_list_collection.html.erb +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd19d0f5cbbbc68640039124372f6ad8c15ccfd58345cc05288621654fe0891f
|
|
4
|
+
data.tar.gz: c9ac807d0227d58633da1e3caa44cda797f292186a7df5ad8c53652e73aafe99
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6301bf5d853f80e62ef7c1374a1d597faed956c87ffd96fa30b16bbdf97a6768cb2e6bc6a5e3e18b058fcd67a1f51e0cb35815eb2f9fd0a44622b816e13bce0
|
|
7
|
+
data.tar.gz: a0ec7ed740da16262a6d0dce60deb326aea15eaf827cbc008ff615a0b5ff7f217edd557f01b611006f9cf545c419111cba7d9769425cb519978ea1a7c9593e40
|
data/.dassie/.env
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
ANALYTICS_START_DATE=2021-08-21
|
|
2
2
|
APP_NAME=dassie
|
|
3
|
+
BROWSE_EVERYTHING_FS_PROVIDER_PATH=/app/samvera/hyrax-engine/spec/fixtures
|
|
3
4
|
BUNDLE_GEMFILE=Gemfile.dassie
|
|
4
5
|
BUNDLE_PATH=/app/bundle
|
|
5
6
|
CH12N_TOOL=fits_servlet
|
|
@@ -17,6 +18,7 @@ FITS_SERVLET_URL=http://fits:8080/fits
|
|
|
17
18
|
HUB_URL=http://chrome:4444
|
|
18
19
|
HYRAX_ANALYTICS=false
|
|
19
20
|
HYRAX_ANALYTICS_PROVIDER=google
|
|
21
|
+
HYRAX_CLAMAV=false
|
|
20
22
|
HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/
|
|
21
23
|
HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine
|
|
22
24
|
HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/
|
|
@@ -34,10 +36,12 @@ REDIS_PROVIDER=SIDEKIQ_REDIS_URL
|
|
|
34
36
|
SEED_DASSIE=true
|
|
35
37
|
SIDEKIQ_REDIS_URL=redis://:sidekickin@redis:6379/0
|
|
36
38
|
SOLR_HOST=solr
|
|
39
|
+
SOLR_MODULES=analysis-extras,extraction
|
|
37
40
|
SOLR_PORT=8983
|
|
38
41
|
SOLR_TEST_URL=http://solr:8983/solr/hyrax_test
|
|
39
42
|
SOLR_URL=http://solr:8983/solr/hyrax
|
|
40
|
-
|
|
43
|
+
RSPEC_SPLIT_CONFIGURATION_PATH=/app/samvera/hyrax-engine/.dassie/rspec_split_configuration.json
|
|
44
|
+
TB_RSPEC_OPTIONS=--force-color --order defined --format RspecJunitFormatter --out rspec.xml
|
|
41
45
|
TB_RSPEC_FORMATTER=progress
|
|
42
46
|
VALKYRIE_FCREPO_URL=http://fedoraAdmin:fedoraAdmin@fedora6:8080/fcrepo/rest
|
|
43
47
|
VALKYRIE_ID_TYPE=string
|
data/.dassie/Gemfile
CHANGED
|
@@ -10,6 +10,8 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
|
10
10
|
|
|
11
11
|
gem 'bootsnap', '>= 1.1.0', require: false
|
|
12
12
|
gem 'bootstrap', '~> 4.0'
|
|
13
|
+
gem 'bulkrax', github: 'samvera/bulkrax', branch: 'grounded'
|
|
14
|
+
gem 'clamby', '~> 1.6', require: ENV['HYRAX_CLAMAV'] == 'true'
|
|
13
15
|
gem 'coffee-rails', '~> 4.2'
|
|
14
16
|
gem 'dalli'
|
|
15
17
|
gem 'devise'
|
|
@@ -24,7 +26,7 @@ if RUBY_PLATFORM =~ /musl/
|
|
|
24
26
|
# # Disabled due to dependency mismatches in Alpine packages (grpc 1.62.1 needs protobuf ~> 3.25)
|
|
25
27
|
# path '/usr/lib/ruby/gems/3.3.0' do
|
|
26
28
|
gem 'google-protobuf', force_ruby_platform: true
|
|
27
|
-
gem 'grpc', force_ruby_platform: true
|
|
29
|
+
gem 'grpc', '~> 1.74', force_ruby_platform: true
|
|
28
30
|
# end
|
|
29
31
|
end
|
|
30
32
|
|
|
@@ -37,7 +39,7 @@ gem 'pg', '~> 1.3'
|
|
|
37
39
|
gem 'puma'
|
|
38
40
|
gem 'rack-mini-profiler', require: ['prepend_net_http_patch']
|
|
39
41
|
gem 'rails', '6.1.7.10'
|
|
40
|
-
gem 'riiif', '~> 2.
|
|
42
|
+
gem 'riiif', '~> 2.8'
|
|
41
43
|
gem 'rsolr', '>= 1.0', '< 3'
|
|
42
44
|
gem 'sass-rails', '~> 6.0'
|
|
43
45
|
gem 'sidekiq', '~> 7.0'
|
|
Binary file
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
//
|
|
17
17
|
// Required by Blacklight
|
|
18
18
|
//= require jquery3
|
|
19
|
+
//= require jquery-ui
|
|
19
20
|
//= require rails-ujs
|
|
20
21
|
//= require popper
|
|
21
22
|
//= require twitter/typeahead
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
//= require blacklight/blacklight
|
|
26
27
|
//= require blacklight_gallery
|
|
27
28
|
|
|
29
|
+
//= require bulkrax/application
|
|
28
30
|
//= require_tree .
|
|
29
31
|
//= require hyrax
|
|
30
32
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
class CatalogController < ApplicationController
|
|
3
3
|
include Hydra::Catalog
|
|
4
4
|
include Hydra::Controller::ControllerBehavior
|
|
5
|
+
include Hyrax::FlexibleCatalogBehavior if Hyrax.config.flexible?
|
|
5
6
|
|
|
6
7
|
# This filter applies the hydra access controls
|
|
7
8
|
before_action :enforce_show_permissions, only: :show
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:collection_resource CollectionResource`
|
|
5
5
|
class CollectionResourceForm < Hyrax::Forms::PcdmCollectionForm
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if Hyrax.config.collection_include_metadata?
|
|
7
|
+
include Hyrax::FormFields(:basic_metadata)
|
|
8
|
+
include Hyrax::FormFields(:collection_resource)
|
|
9
|
+
end
|
|
10
|
+
check_if_flexible(CollectionResource)
|
|
8
11
|
end
|
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
# @see https://github.com/samvera/hyrax/wiki/Hyrax-Valkyrie-Usage-Guide#forms
|
|
7
7
|
# @see https://github.com/samvera/valkyrie/wiki/ChangeSets-and-Dirty-Tracking
|
|
8
8
|
class GenericWorkResourceForm < Hyrax::Forms::ResourceForm(GenericWorkResource)
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if Hyrax.config.work_include_metadata?
|
|
10
|
+
include Hyrax::FormFields(:basic_metadata)
|
|
11
|
+
include Hyrax::FormFields(:generic_work_resource)
|
|
12
|
+
end
|
|
13
|
+
check_if_flexible(GenericWorkResource)
|
|
11
14
|
|
|
12
15
|
# Define custom form fields using the Valkyrie::ChangeSet interface
|
|
13
16
|
#
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
# @see https://github.com/samvera/hyrax/wiki/Hyrax-Valkyrie-Usage-Guide#forms
|
|
7
7
|
# @see https://github.com/samvera/valkyrie/wiki/ChangeSets-and-Dirty-Tracking
|
|
8
8
|
class MonographForm < Hyrax::Forms::ResourceForm(Monograph)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
if Hyrax.config.work_include_metadata?
|
|
10
|
+
include Hyrax::FormFields(:basic_metadata)
|
|
11
|
+
include Hyrax::FormFields(:monograph)
|
|
12
|
+
end
|
|
13
|
+
check_if_flexible(Monograph)
|
|
12
14
|
# Define custom form fields using the Valkyrie::ChangeSet interface
|
|
13
15
|
#
|
|
14
16
|
# property :my_custom_form_field
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:collection_resource CollectionResource`
|
|
5
|
-
class CollectionResourceIndexer < Hyrax::PcdmCollectionIndexer
|
|
6
|
-
include Hyrax::Indexer(:basic_metadata)
|
|
7
|
-
|
|
5
|
+
class CollectionResourceIndexer < Hyrax::Indexers::PcdmCollectionIndexer
|
|
6
|
+
include Hyrax::Indexer(:basic_metadata) if Hyrax.config.collection_include_metadata?
|
|
7
|
+
check_if_flexible(CollectionResource)
|
|
8
8
|
end
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:work_resource GenericWorkResource`
|
|
5
5
|
class GenericWorkResourceIndexer < Hyrax::ValkyrieWorkIndexer
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if Hyrax.config.work_include_metadata?
|
|
7
|
+
include Hyrax::Indexer(:core_metadata)
|
|
8
|
+
include Hyrax::Indexer(:basic_metadata)
|
|
9
|
+
include Hyrax::Indexer(:generic_work_resource)
|
|
10
|
+
end
|
|
11
|
+
check_if_flexible(GenericWorkResource)
|
|
9
12
|
# Uncomment this block if you want to add custom indexing behavior:
|
|
10
13
|
# def to_solr
|
|
11
14
|
# super.tap do |index_document|
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:work_resource Monograph`
|
|
5
5
|
class MonographIndexer < Hyrax::ValkyrieWorkIndexer
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if Hyrax.config.work_include_metadata?
|
|
7
|
+
include Hyrax::Indexer(:core_metadata)
|
|
8
|
+
include Hyrax::Indexer(:basic_metadata)
|
|
9
|
+
include Hyrax::Indexer(:monograph)
|
|
10
|
+
end
|
|
11
|
+
check_if_flexible(Monograph)
|
|
8
12
|
|
|
9
13
|
# Uncomment this block if you want to add custom indexing behavior:
|
|
10
14
|
# def to_solr
|
|
@@ -30,8 +30,10 @@ class CollectionResource < Hyrax::PcdmCollection
|
|
|
30
30
|
# * add Valkyrie attributes to this class
|
|
31
31
|
# * update form and indexer to process the attributes
|
|
32
32
|
#
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
if Hyrax.config.collection_include_metadata?
|
|
34
|
+
include Hyrax::Schema(:basic_metadata)
|
|
35
|
+
include Hyrax::Schema(:collection_resource)
|
|
36
|
+
end
|
|
35
37
|
|
|
36
38
|
Hyrax::ValkyrieLazyMigration.migrating(self, from: ::Collection) if Hyrax.config.valkyrie_transition?
|
|
37
39
|
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bulkrax::HasLocalProcessing
|
|
4
|
+
# This method is called during build_metadata
|
|
5
|
+
# add any special processing here, for example to reset a metadata property
|
|
6
|
+
# to add a custom property from outside of the import data
|
|
7
|
+
def add_local; end
|
|
8
|
+
end
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:work_resource GenericWorkResource`
|
|
5
5
|
class GenericWorkResource < Hyrax::Work
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if Hyrax.config.work_include_metadata?
|
|
7
|
+
include Hyrax::Schema(:core_metadata)
|
|
8
|
+
include Hyrax::Schema(:basic_metadata)
|
|
9
|
+
include Hyrax::Schema(:generic_work_resource)
|
|
10
|
+
end
|
|
8
11
|
|
|
9
12
|
Hyrax::ValkyrieLazyMigration.migrating(self, from: GenericWork) if Hyrax.config.valkyrie_transition?
|
|
10
13
|
end
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
# Generated via
|
|
4
4
|
# `rails generate hyrax:work_resource Monograph`
|
|
5
5
|
class Monograph < Hyrax::Work
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if Hyrax.config.work_include_metadata?
|
|
7
|
+
include Hyrax::Schema(:core_metadata)
|
|
8
|
+
include Hyrax::Schema(:basic_metadata)
|
|
9
|
+
include Hyrax::Schema(:monograph)
|
|
10
|
+
end
|
|
8
11
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
xml.instruct! :xml, version: '1.0', encoding: 'UTF-8'
|
|
4
|
+
xml.urlset(
|
|
5
|
+
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
|
6
|
+
'xsi:schemaLocation' => 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd',
|
|
7
|
+
'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9'
|
|
8
|
+
) do
|
|
9
|
+
config = BlacklightDynamicSitemap::Engine.config
|
|
10
|
+
@sitemap_entries.each do |doc|
|
|
11
|
+
solr_doc = SolrDocument.new(doc)
|
|
12
|
+
|
|
13
|
+
xml.url do
|
|
14
|
+
# Use Hyrax's routing logic: collections go through hyrax engine, works through main_app
|
|
15
|
+
url_parts = solr_doc.collection? ? [hyrax, solr_doc] : [main_app, solr_doc]
|
|
16
|
+
xml.loc(polymorphic_url(url_parts))
|
|
17
|
+
|
|
18
|
+
last_modified = doc[config.last_modified_field]
|
|
19
|
+
xml.lastmod(config.format_last_modified&.call(last_modified) || last_modified)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative '../config/environment'
|
|
5
|
+
|
|
6
|
+
require 'slop'
|
|
7
|
+
|
|
8
|
+
def main(opts = {})
|
|
9
|
+
check_required_params
|
|
10
|
+
|
|
11
|
+
update = opts[:importer_id].present?
|
|
12
|
+
port = opts[:port].presence
|
|
13
|
+
url = build_url(opts.delete(:importer_id), opts.delete(:url), port)
|
|
14
|
+
|
|
15
|
+
headers = { 'Content-Type' => 'application/json' }
|
|
16
|
+
headers['Authorization'] = "Token: #{opts.delete(:auth_token)}"
|
|
17
|
+
params = build_params(opts)
|
|
18
|
+
|
|
19
|
+
Rails.logger.info("POST to #{url} - PARAMS #{params}")
|
|
20
|
+
|
|
21
|
+
conn = Faraday.new(
|
|
22
|
+
url: url,
|
|
23
|
+
headers: headers
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
response = if update
|
|
27
|
+
conn.put do |request|
|
|
28
|
+
request.body = params.to_json
|
|
29
|
+
end
|
|
30
|
+
else
|
|
31
|
+
conn.post do |request|
|
|
32
|
+
request.body = params.to_json
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
puts "#{response.status} - #{response.body.truncate(200)}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def check_required_params
|
|
40
|
+
if opts[:importer_id].blank? && invalid?(opts)
|
|
41
|
+
puts 'Missing required parameters'
|
|
42
|
+
help
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if opts[:auth_token].blank? # rubocop:disable Style/GuardClause
|
|
46
|
+
puts 'Missing Authentication Token --auth_token'
|
|
47
|
+
exit
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def invalid?(opts)
|
|
52
|
+
required_params.each do |p|
|
|
53
|
+
return true if opts[p.to_sym].blank?
|
|
54
|
+
end
|
|
55
|
+
return false
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def required_params
|
|
59
|
+
Bulkrax.api_definition['bulkrax']['importer'].map { |key, value| key if value['required'] == true }.compact
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def build_params(opts = {})
|
|
63
|
+
params = {}
|
|
64
|
+
params[:commit] = opts.delete(:commit)
|
|
65
|
+
parser_fields = {
|
|
66
|
+
metadata_file_name: opts.delete(:metadata_file_name),
|
|
67
|
+
metadata_format: opts.delete(:metadata_format),
|
|
68
|
+
rights_statement: opts.delete(:rights_statement),
|
|
69
|
+
override_rights_statement: opts.delete(:override_rights_statement),
|
|
70
|
+
import_file_path: opts.delete(:import_file_path),
|
|
71
|
+
metadata_prefix: opts.delete(:metadata_prefix),
|
|
72
|
+
set: opts.delete(:set),
|
|
73
|
+
collection_name: opts.delete(:collection_name)
|
|
74
|
+
}.compact
|
|
75
|
+
params[:importer] = opts.compact
|
|
76
|
+
params[:importer][:user_id] = opts.delete(:user_id)
|
|
77
|
+
params[:importer][:admin_set_id] = opts.delete(:admin_set_id)
|
|
78
|
+
params[:importer][:parser_fields] = parser_fields || {}
|
|
79
|
+
return params.compact
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def build_url(importer_id, url, port = nil)
|
|
83
|
+
if url.nil?
|
|
84
|
+
protocol = Rails.application.config.force_ssl ? 'https://' : 'http://'
|
|
85
|
+
host = Rails.application.config.action_mailer.default_url_options[:host]
|
|
86
|
+
url = "#{protocol}#{host}"
|
|
87
|
+
url = "#{url}:#{port}" if port
|
|
88
|
+
end
|
|
89
|
+
path = Bulkrax::Engine.routes.url_helpers.polymorphic_path(Bulkrax::Importer)
|
|
90
|
+
url = File.join(url, path)
|
|
91
|
+
url = File.join(url, importer_id) if importer_id
|
|
92
|
+
return url
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def version
|
|
96
|
+
puts "Bulkrax #{Bulkrax::VERSION}"
|
|
97
|
+
puts "Slop #{Slop::VERSION}"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Format the help for the CLI
|
|
101
|
+
def help
|
|
102
|
+
puts 'CREATE:'
|
|
103
|
+
puts ' bin/importer --name "My Import" --parser_klass Bulkrax::CsvParser --commit "Create and Import" --import_file_path /data/tmp/import.csv --auth_token 12345'
|
|
104
|
+
puts 'UPDATE:'
|
|
105
|
+
puts ' bin/importer --importer_id 1 --commit "Update and Re-Import (update metadata only)" --import_file_path /data/tmp/import.csv --auth_token 12345'
|
|
106
|
+
puts 'PARAMETERS:'
|
|
107
|
+
Bulkrax.api_definition['bulkrax']['importer'].each_pair do |key, value|
|
|
108
|
+
next if key == 'parser_fields'
|
|
109
|
+
puts " --#{key}"
|
|
110
|
+
value.each_pair do |k, v|
|
|
111
|
+
next if k == 'contained_in'
|
|
112
|
+
puts " #{k}: #{v}"
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
puts ' --url'
|
|
116
|
+
puts " Repository URL"
|
|
117
|
+
exit
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Setup the options
|
|
121
|
+
options = Slop.parse do |o|
|
|
122
|
+
o.on '--version', 'Print the version' do
|
|
123
|
+
version
|
|
124
|
+
exit
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
o.on '--help', 'Print help' do
|
|
128
|
+
help
|
|
129
|
+
exit
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
Bulkrax.api_definition['bulkrax']['importer'].each_pair do |key, value|
|
|
133
|
+
if value['required'].blank?
|
|
134
|
+
o.string "--#{key}", value['definition'], default: nil
|
|
135
|
+
else
|
|
136
|
+
o.string "--#{key}", value['definition']
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
o.string '--url', 'Repository URL'
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
main(options.to_hash)
|
data/.dassie/bin/web
ADDED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
file_system:
|
|
2
|
-
home: <%= ENV.fetch('BROWSE_EVERYTHING_FS_PROVIDER_PATH', Rails.root)
|
|
2
|
+
home: <%= ENV.fetch('BROWSE_EVERYTHING_FS_PROVIDER_PATH', Rails.root.join('test_files')) %>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
bulkrax:
|
|
2
|
+
importer:
|
|
3
|
+
importer_id:
|
|
4
|
+
definition: 'The ID of the Importer. Used for Update only. CLI only.'
|
|
5
|
+
name:
|
|
6
|
+
definition: 'Name for the Importer'
|
|
7
|
+
required: true
|
|
8
|
+
admin_set_id:
|
|
9
|
+
definition: 'AdminSet ID. If not supplied the default AdminSet is used.'
|
|
10
|
+
parser_fields:
|
|
11
|
+
definition: 'Contains additional information which varies depending on the parser. Some is required.'
|
|
12
|
+
type: container
|
|
13
|
+
rights_statement:
|
|
14
|
+
definition: 'Supply a URI from the application rights statements'
|
|
15
|
+
valid_values: <%= Hyrax.config.rights_statement_service_class.new.select_active_options.map(&:last) %>
|
|
16
|
+
contained_in: parser_fields
|
|
17
|
+
override_rights_statement:
|
|
18
|
+
definition: 'Override any existing rights statements: 1 for yes | 0 for no'
|
|
19
|
+
valid_values:
|
|
20
|
+
- 0
|
|
21
|
+
- 1
|
|
22
|
+
contained_in: parser_fields
|
|
23
|
+
import_file_path:
|
|
24
|
+
definition: 'Path to the import file - required for CSV and BagIt only'
|
|
25
|
+
required:
|
|
26
|
+
- 'Bulkrax::BagitParser'
|
|
27
|
+
- 'Bulkrax::CsvParser'
|
|
28
|
+
contained_in: parser_fields
|
|
29
|
+
selected_files:
|
|
30
|
+
definition: 'Used by browse everything to retrieve files from cloud URLs'
|
|
31
|
+
metadata_file_name:
|
|
32
|
+
definition: 'Filename used for metadata files - required for BagIt only'
|
|
33
|
+
required:
|
|
34
|
+
- 'Bulkrax::BagitParser'
|
|
35
|
+
contained_in: parser_fields
|
|
36
|
+
metadata_format:
|
|
37
|
+
definition: 'RDF or CSV - required for BagIt only'
|
|
38
|
+
required:
|
|
39
|
+
- 'Bulkrax::BagitParser'
|
|
40
|
+
valid_values:
|
|
41
|
+
- 'Bulkrax::RdfEntry'
|
|
42
|
+
- 'Bulkrax::CsvEntry'
|
|
43
|
+
contained_in: parser_fields
|
|
44
|
+
set:
|
|
45
|
+
definition: 'The OAI setSpec - required for OAI only'
|
|
46
|
+
required:
|
|
47
|
+
- 'Bulkrax::OaiParser'
|
|
48
|
+
contained_in: parser_fields
|
|
49
|
+
collection_name:
|
|
50
|
+
definition: 'The OAI setName - required for required for OAI only'
|
|
51
|
+
required:
|
|
52
|
+
- 'Bulkrax::OaiParser'
|
|
53
|
+
contained_in: parser_fields
|
|
54
|
+
parser_klass:
|
|
55
|
+
definition: 'Parser name eg. Bulkrax::CsvParser'
|
|
56
|
+
required: true
|
|
57
|
+
valid_values: <%= Bulkrax.parsers.map {|p|p[:class_name]} %>
|
|
58
|
+
limit:
|
|
59
|
+
definition: 'Number of records to import; blank for all'
|
|
60
|
+
frequency:
|
|
61
|
+
definition: ISO 8601 Durations <%= Bulkrax::Importer.frequency_enums.map(&:first).join('; ') %>
|
|
62
|
+
valid_values: <%= Bulkrax::Importer.frequency_enums.map(&:last) %>
|
|
63
|
+
field_mapping:
|
|
64
|
+
definition: 'See bulkrax/lib/bulkrax.rb for further information'
|
|
65
|
+
user_id:
|
|
66
|
+
definition: 'ID of the User creating the Importer. If not supplied, the batch_user will be used.'
|
|
67
|
+
base_url:
|
|
68
|
+
definition: 'Base URL for the Endpoint - required for OAI Only'
|
|
69
|
+
required:
|
|
70
|
+
- 'Bulkrax::OaiParser'
|
|
71
|
+
commit:
|
|
72
|
+
definition: 'Commit Message, Bulkrax uses commit messages to decide what action to take.'
|
|
73
|
+
required: true
|
|
74
|
+
valid_values:
|
|
75
|
+
- "Create"
|
|
76
|
+
- "Create and Import"
|
|
77
|
+
- "Update Importer"
|
|
78
|
+
- "Update and Re-Import (update metadata and replace files)"
|
|
79
|
+
- "Update and Harvest Updated Items', 'Update and Re-Harvest All Items"
|
|
80
|
+
- "Update and Re-Import (update metadata only)"
|
|
81
|
+
- "Update and Import (importer has not yet been run)"
|
|
82
|
+
auth_token:
|
|
83
|
+
definition: 'Authentication token. Required for JSON requests only.'
|
|
84
|
+
required: true
|
|
85
|
+
port:
|
|
86
|
+
definition: 'Port to use in http request. Defaults to 80. May need to set to 3000 when running in the development environment'
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
Rails.application.reloader.to_prepare do
|
|
3
|
+
Bulkrax.setup do |config|
|
|
4
|
+
# Add local parsers
|
|
5
|
+
# config.parsers += [
|
|
6
|
+
# { name: 'MODS - My Local MODS parser', class_name: 'Bulkrax::ModsXmlParser', partial: 'mods_fields' },
|
|
7
|
+
# ]
|
|
8
|
+
|
|
9
|
+
# WorkType to use as the default if none is specified in the import
|
|
10
|
+
# Default is the first returned by Hyrax.config.curation_concerns, stringified
|
|
11
|
+
# config.default_work_type = "MyWork"
|
|
12
|
+
|
|
13
|
+
# Factory Class to use when generating and saving objects
|
|
14
|
+
config.object_factory = Hyrax.config.valkyrie_transition? ? Bulkrax::ValkyrieObjectFactory : Bulkrax::ObjectFactory
|
|
15
|
+
# Use this for a Postgres-backed Valkyrized Hyrax
|
|
16
|
+
# config.object_factory = Bulkrax::ValkyrieObjectFactory
|
|
17
|
+
|
|
18
|
+
config.collection_model_class = Hyrax.config.collection_class
|
|
19
|
+
config.file_model_class = Hyrax.config.file_set_class
|
|
20
|
+
|
|
21
|
+
# Path to store pending imports
|
|
22
|
+
config.import_path = Hyrax.config.upload_path.call.join('imports').to_s
|
|
23
|
+
|
|
24
|
+
# Path to store exports before download
|
|
25
|
+
config.export_path = Hyrax.config.upload_path.call.join('exports').to_s
|
|
26
|
+
|
|
27
|
+
# Server name for oai request header
|
|
28
|
+
# config.server_name = 'my_server@name.com'
|
|
29
|
+
|
|
30
|
+
# NOTE: Creating Collections using the collection_field_mapping will no longer be supported as of Bulkrax version 3.0.
|
|
31
|
+
# Please configure Bulkrax to use related_parents_field_mapping and related_children_field_mapping instead.
|
|
32
|
+
# Field_mapping for establishing a collection relationship (FROM work TO collection)
|
|
33
|
+
# This value IS NOT used for OAI, so setting the OAI parser here will have no effect
|
|
34
|
+
# The mapping is supplied per Entry, provide the full class name as a string, eg. 'Bulkrax::CsvEntry'
|
|
35
|
+
# The default value for CSV is collection
|
|
36
|
+
# Add/replace parsers, for example:
|
|
37
|
+
# config.collection_field_mapping['Bulkrax::RdfEntry'] = 'http://opaquenamespace.org/ns/set'
|
|
38
|
+
|
|
39
|
+
# Field mappings
|
|
40
|
+
# Create a completely new set of mappings by replacing the whole set as follows
|
|
41
|
+
# config.field_mappings = {
|
|
42
|
+
# "Bulkrax::OaiDcParser" => { **individual field mappings go here*** }
|
|
43
|
+
# }
|
|
44
|
+
|
|
45
|
+
# Add to, or change existing mappings as follows
|
|
46
|
+
# e.g. to exclude date
|
|
47
|
+
# config.field_mappings["Bulkrax::OaiDcParser"]["date"] = { from: ["date"], excluded: true }
|
|
48
|
+
#
|
|
49
|
+
# e.g. to import parent-child relationships
|
|
50
|
+
# config.field_mappings['Bulkrax::CsvParser']['parents'] = { from: ['parents'], related_parents_field_mapping: true }
|
|
51
|
+
# config.field_mappings['Bulkrax::CsvParser']['children'] = { from: ['children'], related_children_field_mapping: true }
|
|
52
|
+
# (For more info on importing relationships, see Bulkrax Wiki: https://github.com/samvera-labs/bulkrax/wiki/Configuring-Bulkrax#parent-child-relationship-field-mappings)
|
|
53
|
+
#
|
|
54
|
+
# # e.g. to add the required source_identifier field
|
|
55
|
+
# # config.field_mappings["Bulkrax::CsvParser"]["source_id"] = { from: ["old_source_id"], source_identifier: true, search_field: 'source_id_sim' }
|
|
56
|
+
# If you want Bulkrax to fill in source_identifiers for you, see below
|
|
57
|
+
|
|
58
|
+
# To duplicate a set of mappings from one parser to another
|
|
59
|
+
# config.field_mappings["Bulkrax::OaiOmekaParser"] = {}
|
|
60
|
+
# config.field_mappings["Bulkrax::OaiDcParser"].each {|key,value| config.field_mappings["Bulkrax::OaiOmekaParser"][key] = value }
|
|
61
|
+
|
|
62
|
+
# Should Bulkrax make up source identifiers for you? This allow round tripping
|
|
63
|
+
# and download errored entries to still work, but does mean if you upload the
|
|
64
|
+
# same source record in two different files you WILL get duplicates.
|
|
65
|
+
# It is given two aruguments, self at the time of call and the index of the reocrd
|
|
66
|
+
# config.fill_in_blank_source_identifiers = ->(parser, index) { "b-#{parser.importer.id}-#{index}"}
|
|
67
|
+
# or use a uuid
|
|
68
|
+
# config.fill_in_blank_source_identifiers = ->(parser, index) { SecureRandom.uuid }
|
|
69
|
+
|
|
70
|
+
# Properties that should not be used in imports/exports. They are reserved for use by Hyrax.
|
|
71
|
+
# config.reserved_properties += ['my_field']
|
|
72
|
+
|
|
73
|
+
# List of Questioning Authority properties that are controlled via YAML files in
|
|
74
|
+
# the config/authorities/ directory. For example, the :rights_statement property
|
|
75
|
+
# is controlled by the active terms in config/authorities/rights_statements.yml
|
|
76
|
+
# Defaults: 'rights_statement' and 'license'
|
|
77
|
+
# config.qa_controlled_properties += ['my_field']
|
|
78
|
+
|
|
79
|
+
# Specify the delimiter regular expression for splitting an attribute's values into a multi-value array.
|
|
80
|
+
# config.multi_value_element_split_on = /\s*[:;|]\s*/.freeze
|
|
81
|
+
|
|
82
|
+
# Specify the delimiter for joining an attribute's multi-value array into a string. Note: the
|
|
83
|
+
# specific delimeter should likely be present in the multi_value_element_split_on expression.
|
|
84
|
+
# config.multi_value_element_join_on = ' | '
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Sidebar for hyrax 3+ support
|
|
88
|
+
# rubocop:disable Style/IfUnlessModifier
|
|
89
|
+
if Object.const_defined?(:Hyrax) && ::Hyrax::DashboardController&.respond_to?(:sidebar_partials)
|
|
90
|
+
Hyrax::DashboardController.sidebar_partials[:repository_content] << "hyrax/dashboard/sidebar/bulkrax_sidebar_additions"
|
|
91
|
+
end
|
|
92
|
+
end
|