hyrax 3.4.2 → 4.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +41 -61
- data/.dassie/.env +29 -0
- data/.dassie/Gemfile +4 -4
- data/.dassie/app/assets/javascripts/application.js +8 -4
- data/.dassie/app/assets/stylesheets/application.css +1 -1
- data/.dassie/app/assets/stylesheets/hyrax.scss +1 -2
- data/.dassie/app/controllers/application_controller.rb +1 -3
- data/.dassie/app/controllers/catalog_controller.rb +23 -19
- data/.dassie/app/models/user.rb +0 -3
- data/.dassie/config/application.rb +1 -1
- data/.dassie/config/initializers/riiif.rb +1 -1
- data/.dassie/db/schema.rb +5 -5
- data/.dassie/package.json +7 -7
- data/.engine_cart.yml +2 -39
- data/.github/workflows/build.yml +79 -0
- data/{.env → .koppie/.env} +21 -10
- data/.koppie/.gitignore +48 -0
- data/.koppie/.rspec +2 -0
- data/.koppie/CODE_OF_CONDUCT.md +36 -0
- data/.koppie/CONTRIBUTING.md +192 -0
- data/.koppie/Gemfile +54 -0
- data/.koppie/LICENSE +205 -0
- data/.koppie/README.md +55 -0
- data/.koppie/Rakefile +8 -0
- data/.koppie/app/assets/config/manifest.js +5 -0
- data/.koppie/app/assets/images/.keep +0 -0
- data/.koppie/app/assets/images/unauthorized.png +0 -0
- data/.koppie/app/assets/images/us_404.svg +91 -0
- data/.koppie/app/assets/javascripts/application.js +30 -0
- data/.koppie/app/assets/javascripts/blacklight_gallery.js +1 -0
- data/.koppie/app/assets/javascripts/cable.js +13 -0
- data/.koppie/app/assets/javascripts/channels/.keep +0 -0
- data/.koppie/app/assets/javascripts/openseadragon.js +2 -0
- data/.koppie/app/assets/stylesheets/application.css +48 -0
- data/.koppie/app/assets/stylesheets/hyrax.scss +17 -0
- data/.koppie/app/assets/stylesheets/openseadragon.css +3 -0
- data/.koppie/app/channels/application_cable/channel.rb +4 -0
- data/.koppie/app/channels/application_cable/connection.rb +4 -0
- data/.koppie/app/controllers/application_controller.rb +13 -0
- data/.koppie/app/controllers/catalog_controller.rb +314 -0
- data/.koppie/app/controllers/concerns/.keep +0 -0
- data/.koppie/app/controllers/hyrax/generic_works_controller.rb +17 -0
- data/.koppie/app/controllers/hyrax/monographs_controller.rb +17 -0
- data/.koppie/app/forms/collection_resource_form.rb +7 -0
- data/.koppie/app/forms/generic_work_form.rb +20 -0
- data/.koppie/app/forms/monograph_form.rb +20 -0
- data/.koppie/app/helpers/application_helper.rb +2 -0
- data/.koppie/app/helpers/hyrax_helper.rb +6 -0
- data/.koppie/app/indexers/collection_resource_indexer.rb +7 -0
- data/.koppie/app/indexers/generic_work_indexer.rb +16 -0
- data/.koppie/app/indexers/monograph_indexer.rb +16 -0
- data/.koppie/app/jobs/application_job.rb +2 -0
- data/.koppie/app/mailers/application_mailer.rb +4 -0
- data/.koppie/app/models/ability.rb +25 -0
- data/.koppie/app/models/application_record.rb +3 -0
- data/.koppie/app/models/collection.rb +1 -0
- data/.koppie/app/models/collection_resource.rb +31 -0
- data/.koppie/app/models/concerns/.keep +0 -0
- data/.koppie/app/models/file_set.rb +4 -0
- data/.koppie/app/models/generic_work.rb +8 -0
- data/.koppie/app/models/monograph.rb +8 -0
- data/.koppie/app/models/qa/local_authority.rb +2 -0
- data/.koppie/app/models/qa/local_authority_entry.rb +3 -0
- data/.koppie/app/models/qa.rb +5 -0
- data/.koppie/app/models/search_builder.rb +16 -0
- data/.koppie/app/models/solr_document.rb +28 -0
- data/.koppie/app/models/user.rb +24 -0
- data/.koppie/app/views/hyrax/generic_works/_generic_work.html.erb +2 -0
- data/.koppie/app/views/hyrax/monographs/_monograph.html.erb +2 -0
- data/.koppie/app/views/layouts/application.html.erb +15 -0
- data/.koppie/app/views/layouts/mailer.html.erb +13 -0
- data/.koppie/app/views/layouts/mailer.text.erb +1 -0
- data/.koppie/bin/bundle +3 -0
- data/.koppie/bin/rails +9 -0
- data/.koppie/bin/rake +9 -0
- data/.koppie/bin/setup +36 -0
- data/.koppie/bin/spring +17 -0
- data/.koppie/bin/update +31 -0
- data/.koppie/bin/yarn +11 -0
- data/.koppie/config/analytics.yml +12 -0
- data/.koppie/config/application.rb +33 -0
- data/.koppie/config/authorities/licenses.yml +46 -0
- data/.koppie/config/authorities/resource_types.yml +41 -0
- data/.koppie/config/authorities/rights_statements.yml +37 -0
- data/.koppie/config/blacklight.yml +9 -0
- data/.koppie/config/boot.rb +4 -0
- data/.koppie/config/browse_everything_providers.yml +25 -0
- data/.koppie/config/cable.yml +12 -0
- data/.koppie/config/credentials.yml.enc +1 -0
- data/.koppie/config/database.yml +25 -0
- data/.koppie/config/environment.rb +5 -0
- data/.koppie/config/environments/development.rb +71 -0
- data/.koppie/config/environments/production.rb +97 -0
- data/.koppie/config/environments/test.rb +46 -0
- data/.koppie/config/initializers/1_valkyrie.rb +56 -0
- data/.koppie/config/initializers/application_controller_renderer.rb +8 -0
- data/.koppie/config/initializers/assets.rb +14 -0
- data/.koppie/config/initializers/backtrace_silencers.rb +7 -0
- data/.koppie/config/initializers/clamav.rb +2 -0
- data/.koppie/config/initializers/content_security_policy.rb +25 -0
- data/.koppie/config/initializers/cookies_serializer.rb +5 -0
- data/.koppie/config/initializers/devise.rb +311 -0
- data/.koppie/config/initializers/filter_parameter_logging.rb +4 -0
- data/.koppie/config/initializers/hydra_config.rb +24 -0
- data/.koppie/config/initializers/hyrax.rb +333 -0
- data/.koppie/config/initializers/inflections.rb +16 -0
- data/.koppie/config/initializers/mailboxer.rb +22 -0
- data/.koppie/config/initializers/mime_types.rb +8 -0
- data/.koppie/config/initializers/mini_magick.rb +6 -0
- data/.koppie/config/initializers/redis_config.rb +4 -0
- data/.koppie/config/initializers/riiif.rb +29 -0
- data/.koppie/config/initializers/simple_form.rb +171 -0
- data/.koppie/config/initializers/simple_form_bootstrap.rb +151 -0
- data/.koppie/config/initializers/wrap_parameters.rb +14 -0
- data/.koppie/config/locales/blacklight.en.yml +3 -0
- data/.koppie/config/locales/devise.en.yml +65 -0
- data/.koppie/config/locales/en.yml +33 -0
- data/.koppie/config/locales/hyrax.de.yml +58 -0
- data/.koppie/config/locales/hyrax.en.yml +58 -0
- data/.koppie/config/locales/hyrax.es.yml +58 -0
- data/.koppie/config/locales/hyrax.fr.yml +58 -0
- data/.koppie/config/locales/hyrax.it.yml +58 -0
- data/.koppie/config/locales/hyrax.pt-BR.yml +58 -0
- data/.koppie/config/locales/hyrax.zh.yml +58 -0
- data/.koppie/config/metadata/collection_resource.yaml +149 -0
- data/.koppie/config/metadata/generic_work.yaml +22 -0
- data/.koppie/config/metadata/monograph.yaml +55 -0
- data/.koppie/config/puma.rb +37 -0
- data/.koppie/config/redis.yml +12 -0
- data/.koppie/config/role_map.yml +48 -0
- data/.koppie/config/routes.rb +36 -0
- data/.koppie/config/sidekiq.yml +15 -0
- data/.koppie/config/solr.yml +7 -0
- data/.koppie/config/spring.rb +6 -0
- data/.koppie/config/storage.yml +34 -0
- data/.koppie/config/tinymce.yml +13 -0
- data/.koppie/config/uv/uv-config.json +3 -0
- data/.koppie/config/uv/uv.html +87 -0
- data/.koppie/config/valkyrie_index.yml +12 -0
- data/.koppie/config/workflows/default_workflow.json +21 -0
- data/.koppie/config/workflows/mediated_deposit_workflow.json +76 -0
- data/.koppie/config.ru +5 -0
- data/.koppie/db/migrate/20210911143430_create_searches.blacklight.rb +17 -0
- data/.koppie/db/migrate/20210911143431_create_bookmarks.blacklight.rb +19 -0
- data/.koppie/db/migrate/20210911143432_add_polymorphic_type_to_bookmarks.blacklight.rb +9 -0
- data/.koppie/db/migrate/20210911143452_devise_create_users.rb +44 -0
- data/.koppie/db/migrate/20210911143456_add_devise_guests_to_users.rb +15 -0
- data/.koppie/db/migrate/20210911143532_create_version_committers.hyrax.rb +15 -0
- data/.koppie/db/migrate/20210911143533_create_checksum_audit_logs.hyrax.rb +19 -0
- data/.koppie/db/migrate/20210911143534_create_single_use_links.hyrax.rb +12 -0
- data/.koppie/db/migrate/20210911143535_add_social_to_users.hyrax.rb +13 -0
- data/.koppie/db/migrate/20210911143536_add_ldap_attrs_to_user.hyrax.rb +27 -0
- data/.koppie/db/migrate/20210911143537_add_avatars_to_users.hyrax.rb +15 -0
- data/.koppie/db/migrate/20210911143538_create_trophies.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143539_add_linkedin_to_users.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143540_create_tinymce_assets.hyrax.rb +8 -0
- data/.koppie/db/migrate/20210911143541_create_content_blocks.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143542_create_featured_works.hyrax.rb +12 -0
- data/.koppie/db/migrate/20210911143543_add_external_key_to_content_blocks.hyrax.rb +6 -0
- data/.koppie/db/migrate/20210911143544_create_proxy_deposit_rights.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143545_create_proxy_deposit_requests.hyrax.rb +15 -0
- data/.koppie/db/migrate/20210911143546_create_file_view_stats.hyrax.rb +12 -0
- data/.koppie/db/migrate/20210911143547_create_file_download_stats.hyrax.rb +12 -0
- data/.koppie/db/migrate/20210911143548_add_orcid_to_users.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143549_create_user_stats.hyrax.rb +19 -0
- data/.koppie/db/migrate/20210911143550_create_work_view_stats.hyrax.rb +12 -0
- data/.koppie/db/migrate/20210911143551_add_works_to_user_stats.hyrax.rb +13 -0
- data/.koppie/db/migrate/20210911143552_change_trophy_generic_file_id_to_work_id.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143553_change_proxy_deposit_generic_file_id_to_work_id.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143554_change_audit_log_generic_file_id_to_file_set_id.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143555_change_proxy_deposit_request_generic_file_id_to_work_id.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143556_create_uploaded_files.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143557_create_features.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143558_create_operations.hyrax.rb +23 -0
- data/.koppie/db/migrate/20210911143559_change_featured_work_generic_file_id_to_work_id.hyrax.rb +6 -0
- data/.koppie/db/migrate/20210911143560_add_arkivo_to_users.hyrax.rb +8 -0
- data/.koppie/db/migrate/20210911143561_create_sipity.hyrax.rb +163 -0
- data/.koppie/db/migrate/20210911143562_create_sipity_workflow_methods.hyrax.rb +10 -0
- data/.koppie/db/migrate/20210911143563_create_permission_template.hyrax.rb +11 -0
- data/.koppie/db/migrate/20210911143564_create_permission_template_access.hyrax.rb +11 -0
- data/.koppie/db/migrate/20210911143565_add_release_to_permission_templates.hyrax.rb +6 -0
- data/.koppie/db/migrate/20210911143566_add_permission_template_to_sipity_workflow.hyrax.rb +26 -0
- data/.koppie/db/migrate/20210911143567_tidy_up_because_of_bad_exception.hyrax.rb +13 -0
- data/.koppie/db/migrate/20210911143568_add_allows_access_grant_to_workflow.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143569_change_checksum_audit_log.hyrax.rb +18 -0
- data/.koppie/db/migrate/20210911143570_create_job_io_wrappers.hyrax.rb +15 -0
- data/.koppie/db/migrate/20210911143571_create_collection_types.hyrax.rb +17 -0
- data/.koppie/db/migrate/20210911143572_update_collection_type_column_names.hyrax.rb +9 -0
- data/.koppie/db/migrate/20210911143573_update_collection_type_column_options.hyrax.rb +17 -0
- data/.koppie/db/migrate/20210911143574_create_collection_branding_infos.hyrax.rb +15 -0
- data/.koppie/db/migrate/20210911143575_create_collection_type_participants.hyrax.rb +11 -0
- data/.koppie/db/migrate/20210911143576_rename_admin_set_id_to_source_id.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143577_add_preferred_locale_to_users.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143578_add_collection_type_sharing_options.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143579_add_unique_constraint_to_permission_template_accesses.hyrax.rb +8 -0
- data/.koppie/db/migrate/20210911143580_add_branding_to_collection_type.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143581_add_badge_color_to_collection_types.hyrax.rb +5 -0
- data/.koppie/db/migrate/20210911143582_update_single_use_links_column_names.hyrax.rb +6 -0
- data/.koppie/db/migrate/20210911143583_change_sipity_entity_specific_responsibility.hyrax.rb +9 -0
- data/.koppie/db/migrate/20210911143584_create_mailboxer.mailboxer_engine.rb +65 -0
- data/.koppie/db/migrate/20210911143585_add_conversation_optout.mailboxer_engine.rb +15 -0
- data/.koppie/db/migrate/20210911143586_add_missing_indices.mailboxer_engine.rb +20 -0
- data/.koppie/db/migrate/20210911143587_add_delivery_tracking_info_to_mailboxer_receipts.mailboxer_engine.rb +8 -0
- data/.koppie/db/migrate/20210911143588_create_qa_local_authorities.rb +10 -0
- data/.koppie/db/migrate/20210911143602_create_qa_local_authority_entries.rb +12 -0
- data/.koppie/db/migrate/20210911143623_create_minter_states.noid_rails_engine.rb +17 -0
- data/.koppie/db/migrate/20210911143624_rename_minter_state_random_to_rand.noid_rails_engine.rb +8 -0
- data/.koppie/db/migrate/20210921150120_enable_uuid_extension.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150121_create_orm_resources.valkyrie_engine.rb +19 -0
- data/.koppie/db/migrate/20210921150122_add_model_type_to_orm_resources.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150123_change_model_type_to_internal_model.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150124_create_path_gin_index.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150125_create_internal_resource_index.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150126_create_updated_at_index.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20210921150127_add_optimistic_locking_to_orm_resources.valkyrie_engine.rb +7 -0
- data/.koppie/db/migrate/20211021161136_user_roles.rb +20 -0
- data/.koppie/db/migrate/20211207172259_create_default_administrative_set.hyrax.rb +8 -0
- data/.koppie/db/schema.rb +595 -0
- data/.koppie/db/seeds.rb +79 -0
- data/.koppie/lib/assets/.keep +0 -0
- data/.koppie/lib/tasks/.keep +0 -0
- data/.koppie/log/.keep +0 -0
- data/.koppie/package.json +15 -0
- data/.koppie/public/404.html +67 -0
- data/.koppie/public/422.html +67 -0
- data/.koppie/public/500.html +66 -0
- data/.koppie/public/apple-touch-icon-precomposed.png +0 -0
- data/.koppie/public/apple-touch-icon.png +0 -0
- data/.koppie/public/branding/.keep +0 -0
- data/.koppie/public/favicon.ico +0 -0
- data/.koppie/public/robots.txt +1 -0
- data/.koppie/scripts/db-migrate-seed.sh +9 -0
- data/.koppie/scripts/entrypoint.sh +10 -0
- data/.koppie/solr/conf/_rest_managed.json +3 -0
- data/.koppie/solr/conf/admin-extra.html +31 -0
- data/.koppie/solr/conf/elevate.xml +36 -0
- data/.koppie/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/.koppie/solr/conf/protwords.txt +21 -0
- data/.koppie/solr/conf/schema.xml +367 -0
- data/.koppie/solr/conf/scripts.conf +24 -0
- data/.koppie/solr/conf/solrconfig.xml +325 -0
- data/.koppie/solr/conf/spellings.txt +2 -0
- data/.koppie/solr/conf/stopwords.txt +58 -0
- data/.koppie/solr/conf/stopwords_en.txt +58 -0
- data/.koppie/solr/conf/synonyms.txt +31 -0
- data/.koppie/solr/conf/xslt/example.xsl +132 -0
- data/.koppie/solr/conf/xslt/example_atom.xsl +67 -0
- data/.koppie/solr/conf/xslt/example_rss.xsl +66 -0
- data/.koppie/solr/conf/xslt/luke.xsl +337 -0
- data/.koppie/solr/sample_solr_documents.yml +2692 -0
- data/.koppie/spec/forms/collection_resource_form_spec.rb +13 -0
- data/.koppie/spec/indexers/collection_resource_indexer_spec.rb +14 -0
- data/.koppie/spec/indexers/generic_work_indexer_spec.rb +13 -0
- data/.koppie/spec/indexers/monograph_indexer_spec.rb +13 -0
- data/.koppie/spec/models/collection_resource_spec.rb +13 -0
- data/.koppie/spec/models/collection_spec.rb +17 -0
- data/.koppie/spec/models/file_set_spec.rb +15 -0
- data/.koppie/spec/models/generic_work_spec.rb +13 -0
- data/.koppie/spec/models/monograph_spec.rb +13 -0
- data/.koppie/spec/models/qa/local_authority_entry_spec.rb +5 -0
- data/.koppie/spec/models/qa/local_authority_spec.rb +5 -0
- data/.koppie/spec/rails_helper.rb +47 -0
- data/.koppie/spec/spec_helper.rb +19 -0
- data/.koppie/spec/views/generic_works/_generic_work.html.erb_spec.rb +7 -0
- data/.koppie/spec/views/monographs/_monograph.html.erb_spec.rb +7 -0
- data/.koppie/storage/.keep +0 -0
- data/.koppie/vendor/.keep +0 -0
- data/.koppie/yarn.lock +1497 -0
- data/.regen +2 -1
- data/.rubocop.yml +1 -1
- data/CONTAINERS.md +54 -10
- data/CONTRIBUTING.md +22 -24
- data/Dockerfile +10 -6
- data/Rakefile +0 -4
- data/app/actors/hyrax/actors/base_actor.rb +1 -1
- data/app/actors/hyrax/actors/collections_membership_actor.rb +1 -2
- data/app/actors/hyrax/actors/create_with_files_actor.rb +1 -1
- data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +7 -13
- data/app/actors/hyrax/actors/embargo_actor.rb +11 -4
- data/app/actors/hyrax/actors/file_actor.rb +9 -37
- data/app/actors/hyrax/actors/file_set_actor.rb +13 -62
- data/app/actors/hyrax/actors/lease_actor.rb +11 -4
- data/app/assets/javascripts/hyrax/app.js.erb +2 -2
- data/app/assets/javascripts/hyrax/batch.js +2 -2
- data/app/assets/javascripts/hyrax/batch_edit.js +4 -4
- data/app/assets/javascripts/hyrax/batch_select_all.js +13 -13
- data/app/assets/javascripts/hyrax/browse_everything.js +4 -2
- data/app/assets/javascripts/hyrax/collection_types.es6 +1 -1
- data/app/assets/javascripts/hyrax/collections/editor.es6 +5 -1
- data/app/assets/javascripts/hyrax/dashboard_actions.js +5 -5
- data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +3 -3
- data/app/assets/javascripts/hyrax/editor.es6 +3 -3
- data/app/assets/javascripts/hyrax/facets.js +6 -4
- data/app/assets/javascripts/hyrax/file_manager/member.es6 +1 -1
- data/app/assets/javascripts/hyrax/file_manager/save_manager.es6 +2 -2
- data/app/assets/javascripts/hyrax/file_manager/sorting.es6 +2 -2
- data/app/assets/javascripts/hyrax/file_manager.es6 +2 -17
- data/app/assets/javascripts/hyrax/notification.es6 +1 -1
- data/app/assets/javascripts/hyrax/permissions/control.es6 +8 -1
- data/app/assets/javascripts/hyrax/permissions/registry.es6 +4 -4
- data/app/assets/javascripts/hyrax/permissions/user_controls.es6 +3 -1
- data/app/assets/javascripts/hyrax/relationships/confirm_remove_dialog.es6 +1 -1
- data/app/assets/javascripts/hyrax/relationships/control.es6 +2 -2
- data/app/assets/javascripts/hyrax/relationships/registry_entry.es6 +1 -1
- data/app/assets/javascripts/hyrax/reports-buttons.js +9 -9
- data/app/assets/javascripts/hyrax/save_work/required_fields.es6 +1 -1
- data/app/assets/javascripts/hyrax/save_work/save_work_control.es6 +6 -6
- data/app/assets/javascripts/hyrax/save_work/uploaded_files.es6 +2 -2
- data/app/assets/javascripts/hyrax/single_use_links_manager.js +1 -1
- data/app/assets/javascripts/hyrax/skip_to_content.js +1 -1
- data/app/assets/javascripts/hyrax/sorting.js +1 -1
- data/app/assets/javascripts/hyrax/trophy.js +1 -1
- data/app/assets/javascripts/hyrax/uploader.js +3 -3
- data/app/assets/javascripts/hyrax.js +1 -19
- data/app/assets/stylesheets/_bootstrap-default-overrides.scss +4 -4
- data/app/assets/stylesheets/hyrax/_accessibility.scss +1 -1
- data/app/assets/stylesheets/hyrax/_badge.scss +7 -0
- data/app/assets/stylesheets/hyrax/_batch-edit.scss +8 -8
- data/app/assets/stylesheets/hyrax/_browse_everything_overrides.scss +1 -1
- data/app/assets/stylesheets/hyrax/_buttons.scss +31 -1
- data/app/assets/stylesheets/hyrax/_card.scss +10 -0
- data/app/assets/stylesheets/hyrax/_catalog.scss +22 -48
- data/app/assets/stylesheets/hyrax/_collection_types.scss +1 -1
- data/app/assets/stylesheets/hyrax/_collections.scss +13 -13
- data/app/assets/stylesheets/hyrax/_facets.scss +46 -0
- data/app/assets/stylesheets/hyrax/_featured.scss +1 -1
- data/app/assets/stylesheets/hyrax/_file-listing.scss +3 -3
- data/app/assets/stylesheets/hyrax/_file_manager.scss +17 -17
- data/app/assets/stylesheets/hyrax/_file_sets.scss +1 -1
- data/app/assets/stylesheets/hyrax/_file_upload.scss +4 -4
- data/app/assets/stylesheets/hyrax/_fixedsticky.scss +1 -1
- data/app/assets/stylesheets/hyrax/_footer.scss +3 -3
- data/app/assets/stylesheets/hyrax/_form-progress.scss +9 -9
- data/app/assets/stylesheets/hyrax/_form.scss +3 -4
- data/app/assets/stylesheets/hyrax/_forms.scss +62 -29
- data/app/assets/stylesheets/hyrax/_header.scss +0 -17
- data/app/assets/stylesheets/hyrax/_home-page.scss +13 -51
- data/app/assets/stylesheets/hyrax/_html.scss +11 -0
- data/app/assets/stylesheets/hyrax/_hyrax.scss +16 -14
- data/app/assets/stylesheets/hyrax/_nestable.scss +1 -1
- data/app/assets/stylesheets/hyrax/_select_work_type.scss +2 -2
- data/app/assets/stylesheets/hyrax/_styles.scss +9 -14
- data/app/assets/stylesheets/hyrax/_users.scss +2 -2
- data/app/assets/stylesheets/hyrax/_variables.scss +20 -1
- data/app/assets/stylesheets/hyrax/_work-show.scss +21 -13
- data/app/assets/stylesheets/hyrax/blacklight_gallery.scss +75 -2
- data/app/assets/stylesheets/hyrax/dashboard.scss +40 -122
- data/app/assets/stylesheets/hyrax/sidebar.scss +39 -19
- data/app/components/hyrax/dropdown_facet_field_component.html.erb +21 -0
- data/app/components/hyrax/dropdown_facet_field_component.rb +30 -0
- data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +15 -9
- data/app/controllers/concerns/hyrax/embargoes_controller_behavior.rb +11 -2
- data/app/controllers/concerns/hyrax/leases_controller_behavior.rb +11 -2
- data/app/controllers/concerns/hyrax/manages_embargoes.rb +13 -1
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +8 -11
- data/app/controllers/hyrax/batch_edits_controller.rb +1 -1
- data/app/controllers/hyrax/dashboard/collection_members_controller.rb +0 -1
- data/app/controllers/hyrax/dashboard/collections_controller.rb +4 -7
- data/app/controllers/hyrax/dashboard/nest_collections_controller.rb +0 -32
- data/app/controllers/hyrax/file_sets_controller.rb +4 -0
- data/app/controllers/hyrax/homepage_controller.rb +0 -1
- data/app/controllers/hyrax/my/collections_controller.rb +1 -0
- data/app/controllers/hyrax/my/works_controller.rb +1 -1
- data/app/controllers/hyrax/my_controller.rb +0 -6
- data/app/controllers/hyrax/permissions_controller.rb +1 -1
- data/app/controllers/hyrax/single_use_links_controller.rb +1 -2
- data/app/controllers/hyrax/transfers_controller.rb +0 -2
- data/app/forms/hyrax/forms/batch_upload_form.rb +1 -1
- data/app/forms/hyrax/forms/collection_form.rb +1 -1
- data/app/forms/hyrax/forms/dashboard/nest_collection_form.rb +4 -18
- data/app/forms/hyrax/forms/embargo.rb +13 -0
- data/app/forms/hyrax/forms/lease.rb +13 -0
- data/app/forms/hyrax/forms/resource_form.rb +30 -1
- data/app/forms/hyrax/forms/work_embargo_form.rb +35 -0
- data/app/forms/hyrax/forms/work_form.rb +2 -2
- data/app/forms/hyrax/forms/work_lease_form.rb +35 -0
- data/app/helpers/hyrax/collections_helper.rb +4 -32
- data/app/helpers/hyrax/embargo_helper.rb +11 -0
- data/app/helpers/hyrax/facets_helper.rb +10 -0
- data/app/helpers/hyrax/hyrax_helper_behavior.rb +20 -5
- data/app/helpers/hyrax/lease_helper.rb +11 -0
- data/app/helpers/hyrax/work_form_helper.rb +107 -0
- data/app/indexers/hyrax/basic_metadata_indexer.rb +3 -9
- data/app/indexers/hyrax/deep_indexing_service.rb +2 -2
- data/app/indexers/hyrax/pcdm_collection_indexer.rb +1 -0
- data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +1 -7
- data/app/indexers/hyrax/valkyrie_work_indexer.rb +21 -0
- data/app/jobs/characterize_job.rb +4 -3
- data/app/jobs/create_derivatives_job.rb +4 -2
- data/app/jobs/import_url_job.rb +2 -2
- data/app/jobs/ingest_local_file_job.rb +5 -13
- data/app/jobs/inherit_permissions_job.rb +1 -5
- data/app/models/concerns/hyrax/ability.rb +2 -2
- data/app/models/concerns/hyrax/collection_behavior.rb +4 -2
- data/app/models/concerns/hyrax/file_set_behavior.rb +2 -1
- data/app/models/concerns/hyrax/in_admin_set.rb +0 -7
- data/app/models/concerns/hyrax/naming.rb +1 -1
- data/app/models/concerns/hyrax/user.rb +3 -3
- data/app/models/concerns/hyrax/work_behavior.rb +0 -2
- data/app/models/content_block.rb +0 -6
- data/app/models/file_download_stat.rb +1 -1
- data/app/models/hyrax/collection_type.rb +9 -1
- data/app/models/hyrax/embargo.rb +1 -1
- data/app/models/hyrax/file_metadata.rb +1 -1
- data/app/models/hyrax/file_set.rb +2 -2
- data/app/models/hyrax/lease.rb +1 -1
- data/app/models/hyrax/permission_template.rb +0 -35
- data/app/models/hyrax/statistic.rb +1 -1
- data/app/models/hyrax/work.rb +2 -2
- data/app/models/proxy_deposit_request.rb +1 -1
- data/app/models/sipity.rb +8 -8
- data/app/presenters/hyrax/admin/repository_object_presenter.rb +0 -2
- data/app/presenters/hyrax/admin_set_presenter.rb +5 -0
- data/app/presenters/hyrax/collapsable_section_presenter.rb +2 -2
- data/app/presenters/hyrax/collection_presenter.rb +1 -1
- data/app/presenters/hyrax/displays_image.rb +1 -1
- data/app/presenters/hyrax/fixity_status_presenter.rb +2 -2
- data/app/presenters/hyrax/menu_presenter.rb +1 -1
- data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +1 -1
- data/app/presenters/hyrax/permission_badge.rb +9 -8
- data/app/presenters/hyrax/presenter_renderer.rb +1 -1
- data/app/presenters/hyrax/presents_attributes.rb +1 -1
- data/app/presenters/hyrax/version_list_presenter.rb +6 -1
- data/app/presenters/hyrax/work_show_presenter.rb +3 -0
- data/app/presenters/hyrax/workflow_presenter.rb +1 -1
- data/app/renderers/hyrax/renderers/external_link_attribute_renderer.rb +1 -1
- data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +7 -67
- data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
- data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +10 -1
- data/app/search_builders/hyrax/single_result.rb +1 -1
- data/app/search_builders/hyrax/stats/work_status_search_builder.rb +1 -1
- data/app/services/hyrax/admin_set_create_service.rb +2 -2
- data/app/services/hyrax/analytics/google.rb +1 -1
- data/app/services/hyrax/analytics/matomo.rb +1 -1
- data/app/services/hyrax/collection_member_service.rb +3 -2
- data/app/services/hyrax/collection_types/create_service.rb +1 -1
- data/app/services/hyrax/collections/migration_service.rb +8 -8
- data/app/services/hyrax/collections/nested_collection_query_service.rb +3 -113
- data/app/services/hyrax/collections/search_service.rb +0 -1
- data/app/services/hyrax/custom_queries.rb +25 -0
- data/app/services/hyrax/derivative_service.rb +37 -4
- data/app/services/hyrax/edit_permissions_service.rb +1 -14
- data/app/services/hyrax/embargo_manager.rb +9 -0
- data/app/services/hyrax/embargo_service.rb +4 -0
- data/app/services/hyrax/file_set_csv_service.rb +1 -1
- data/app/services/hyrax/file_set_file_service.rb +55 -0
- data/app/services/hyrax/graph_exporter.rb +3 -8
- data/app/services/hyrax/iiif_authorization_service.rb +1 -1
- data/app/services/hyrax/lease_manager.rb +9 -0
- data/app/services/hyrax/lease_service.rb +4 -0
- data/app/services/hyrax/listeners/workflow_listener.rb +2 -2
- data/app/services/hyrax/local_file_service.rb +3 -1
- data/app/services/hyrax/search_service.rb +1 -81
- data/app/services/hyrax/solr_service.rb +1 -1
- data/app/services/hyrax/statistics/depositors/summary.rb +2 -4
- data/app/services/hyrax/statistics/term_query.rb +1 -1
- data/app/services/hyrax/thumbnail_path_service.rb +1 -1
- data/app/services/hyrax/user_stat_importer.rb +4 -2
- data/app/services/hyrax/valkyrie_persist_derivatives.rb +1 -1
- data/app/services/hyrax/valkyrie_upload.rb +14 -2
- data/app/services/hyrax/versioning_service.rb +78 -10
- data/app/services/hyrax/visibility_map.rb +10 -2
- data/app/services/hyrax/work_query_service.rb +1 -1
- data/app/services/hyrax/work_resource_query_service.rb +45 -0
- data/app/services/hyrax/workflow/action_taken_service.rb +4 -4
- data/app/services/hyrax/workflow/notification_service.rb +2 -2
- data/app/services/hyrax/workflow/workflow_importer.rb +2 -2
- data/app/services/hyrax/working_directory.rb +5 -3
- data/app/services/hyrax/works/migration_service.rb +3 -3
- data/app/utils/hyrax/test_data_seeders/user_seeder.rb +3 -2
- data/app/validators/hyrax/collection_membership_validator.rb +2 -2
- data/app/views/_controls.html.erb +14 -18
- data/app/views/_logo.html.erb +0 -1
- data/app/views/_masthead.html.erb +8 -18
- data/app/views/_user_util_links.html.erb +16 -18
- data/app/views/catalog/_document.html.erb +2 -2
- data/app/views/catalog/_document_list.html.erb +1 -1
- data/app/views/catalog/_facet_limit.html.erb +1 -1
- data/app/views/catalog/_index_gallery_collection_wrapper.html.erb +1 -1
- data/app/views/catalog/_index_header_list_collection.html.erb +2 -2
- data/app/views/catalog/_index_header_list_default.html.erb +1 -1
- data/app/views/catalog/_index_list_default.html.erb +7 -5
- data/app/views/catalog/_search_form.html.erb +13 -15
- data/app/views/catalog/_thumbnail_list_collection.html.erb +2 -2
- data/app/views/catalog/_thumbnail_list_default.html.erb +3 -3
- data/app/views/catalog/facet.html.erb +21 -0
- data/app/views/catalog/index.html.erb +6 -4
- data/app/views/hyrax/admin/admin_sets/_form.html.erb +16 -16
- data/app/views/hyrax/admin/admin_sets/_form_participant_table.html.erb +35 -33
- data/app/views/hyrax/admin/admin_sets/_form_participants.html.erb +9 -8
- data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +24 -24
- data/app/views/hyrax/admin/admin_sets/_form_workflow.erb +5 -5
- data/app/views/hyrax/admin/admin_sets/_show_actions.html.erb +3 -3
- data/app/views/hyrax/admin/admin_sets/_show_document_list_row.html.erb +9 -9
- data/app/views/hyrax/admin/admin_sets/index.html.erb +3 -3
- data/app/views/hyrax/admin/admin_sets/show.html.erb +4 -4
- data/app/views/hyrax/admin/analytics/_date_range_form.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/collection_reports/_custom_range.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/collection_reports/_monthly_summary.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/collection_reports/_summary.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +7 -7
- data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +6 -6
- data/app/views/hyrax/admin/analytics/collection_reports/show.html.erb +10 -10
- data/app/views/hyrax/admin/analytics/work_reports/_custom_range.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/work_reports/_monthly_summary.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/work_reports/_summary.html.erb +3 -3
- data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +5 -5
- data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +7 -7
- data/app/views/hyrax/admin/analytics/work_reports/_work_counts.html.erb +4 -4
- data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +5 -5
- data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +7 -7
- data/app/views/hyrax/admin/analytics/work_reports/show.html.erb +16 -16
- data/app/views/hyrax/admin/appearances/show.html.erb +2 -2
- data/app/views/hyrax/admin/collection_types/_form.html.erb +24 -23
- data/app/views/hyrax/admin/collection_types/_form_appearance.html.erb +2 -2
- data/app/views/hyrax/admin/collection_types/_form_participants.html.erb +4 -4
- data/app/views/hyrax/admin/collection_types/_form_settings.html.erb +9 -9
- data/app/views/hyrax/admin/collection_types/index.html.erb +6 -6
- data/app/views/hyrax/admin/features/index.html.erb +3 -3
- data/app/views/hyrax/admin/stats/_new_users.html.erb +1 -1
- data/app/views/hyrax/admin/stats/show.html.erb +4 -6
- data/app/views/hyrax/admin/users/index.html.erb +3 -3
- data/app/views/hyrax/admin/workflow_roles/index.html.erb +8 -8
- data/app/views/hyrax/admin/workflows/index.html.erb +13 -13
- data/app/views/hyrax/base/_citations.html.erb +6 -6
- data/app/views/hyrax/base/_currently_shared.html.erb +3 -3
- data/app/views/hyrax/base/_file_manager_actions.html.erb +5 -3
- data/app/views/hyrax/base/_file_manager_member.html.erb +5 -5
- data/app/views/hyrax/base/_file_manager_member_resource_options.html.erb +6 -6
- data/app/views/hyrax/base/_file_manager_members.html.erb +1 -1
- data/app/views/hyrax/base/_file_manager_thumbnail.html.erb +1 -1
- data/app/views/hyrax/base/_form_child_work_relationships.html.erb +3 -3
- data/app/views/hyrax/base/_form_collections_error.html.erb +1 -1
- data/app/views/hyrax/base/_form_files.html.erb +9 -9
- data/app/views/hyrax/base/_form_in_works_error.html.erb +1 -1
- data/app/views/hyrax/base/_form_member_of_collections.html.erb +3 -3
- data/app/views/hyrax/base/_form_metadata.html.erb +1 -1
- data/app/views/hyrax/base/_form_ordered_members_error.html.erb +1 -1
- data/app/views/hyrax/base/_form_permission.html.erb +30 -20
- data/app/views/hyrax/base/_form_permission_under_embargo.html.erb +1 -1
- data/app/views/hyrax/base/_form_permission_under_lease.html.erb +1 -1
- data/app/views/hyrax/base/_form_progress.html.erb +7 -7
- data/app/views/hyrax/base/_form_relationships.html.erb +1 -1
- data/app/views/hyrax/base/_form_rendering.html.erb +1 -1
- data/app/views/hyrax/base/_form_representative.html.erb +1 -1
- data/app/views/hyrax/base/_form_share.html.erb +6 -6
- data/app/views/hyrax/base/_form_thumbnail.html.erb +1 -1
- data/app/views/hyrax/base/_form_visibility_component.html.erb +20 -16
- data/app/views/hyrax/base/_form_visibility_error.html.erb +19 -5
- data/app/views/hyrax/base/_guts4form.html.erb +12 -20
- data/app/views/hyrax/base/_member.html.erb +1 -1
- data/app/views/hyrax/base/_metadata.html.erb +1 -1
- data/app/views/hyrax/base/_show_actions.html.erb +9 -9
- data/app/views/hyrax/base/_work_button_row.html.erb +16 -15
- data/app/views/hyrax/base/_workflow_actions.html.erb +10 -10
- data/app/views/hyrax/base/_workflow_actions_widget.erb +1 -1
- data/app/views/hyrax/base/file_manager.html.erb +4 -5
- data/app/views/hyrax/base/inspect_work.html.erb +1 -1
- data/app/views/hyrax/base/show.html.erb +12 -12
- data/app/views/hyrax/base/unavailable.html.erb +2 -2
- data/app/views/hyrax/batch_edits/_check_all.html.erb +0 -1
- data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
- data/app/views/hyrax/batch_edits/edit.html.erb +26 -18
- data/app/views/hyrax/collections/_bookmark_control.html.erb +2 -2
- data/app/views/hyrax/collections/_list_collections.html.erb +6 -6
- data/app/views/hyrax/collections/_list_works.html.erb +3 -1
- data/app/views/hyrax/collections/_search_form.html.erb +4 -4
- data/app/views/hyrax/collections/_show_document_list_row.html.erb +5 -2
- data/app/views/hyrax/collections/_sort_and_per_page.html.erb +3 -3
- data/app/views/hyrax/collections/_view_type_group.html.erb +2 -2
- data/app/views/hyrax/contact_form/new.html.erb +12 -13
- data/app/views/hyrax/content_blocks/_form.html.erb +29 -23
- data/app/views/hyrax/content_blocks/templates/agreement.html.erb +3 -3
- data/app/views/hyrax/dashboard/_admin_sets.html.erb +22 -28
- data/app/views/hyrax/dashboard/_index_partials/_current_proxy_rights.html.erb +2 -2
- data/app/views/hyrax/dashboard/_index_partials/_proxy_rights.html.erb +4 -4
- data/app/views/hyrax/dashboard/_index_partials/_transfers.html.erb +2 -2
- data/app/views/hyrax/dashboard/_repository_growth.html.erb +28 -28
- data/app/views/hyrax/dashboard/_resource_type_graph.html.erb +4 -4
- data/app/views/hyrax/dashboard/_sidebar.html.erb +3 -3
- data/app/views/hyrax/dashboard/_tabs.html.erb +6 -2
- data/app/views/hyrax/dashboard/_user_activity.html.erb +22 -19
- data/app/views/hyrax/dashboard/_visibility_graph.html.erb +4 -4
- data/app/views/hyrax/dashboard/_work_type_graph.html.erb +4 -4
- data/app/views/hyrax/dashboard/collections/_batch_edits_actions.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_bookmark_control.html.erb +2 -2
- data/app/views/hyrax/dashboard/collections/_edit_actions.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_form.html.erb +30 -22
- data/app/views/hyrax/dashboard/collections/_form_branding.html.erb +19 -19
- data/app/views/hyrax/dashboard/collections/_form_discovery.html.erb +8 -4
- data/app/views/hyrax/dashboard/collections/_form_for_select_collection.html.erb +7 -7
- data/app/views/hyrax/dashboard/collections/_form_share.html.erb +11 -9
- data/app/views/hyrax/dashboard/collections/_form_share_table.html.erb +34 -31
- data/app/views/hyrax/dashboard/collections/_list_collections.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_list_works.html.erb +3 -1
- data/app/views/hyrax/dashboard/collections/_modal_remove_from_collection.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_modal_remove_sub_collection.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_show_add_items_actions.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_show_descriptions.html.erb +5 -3
- data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +4 -4
- data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +12 -10
- data/app/views/hyrax/dashboard/collections/_show_parent_collection_row.html.erb +2 -2
- data/app/views/hyrax/dashboard/collections/_sort_and_per_page.html.erb +4 -4
- data/app/views/hyrax/dashboard/collections/_subcollection_list.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_work_action_menu.html.erb +10 -10
- data/app/views/hyrax/dashboard/collections/show.html.erb +4 -4
- data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +21 -21
- data/app/views/hyrax/dashboard/profiles/_trophy_edit.html.erb +5 -5
- data/app/views/hyrax/dashboard/profiles/_zotero.html.erb +2 -2
- data/app/views/hyrax/dashboard/profiles/edit.html.erb +2 -2
- data/app/views/hyrax/dashboard/profiles/show.html.erb +3 -3
- data/app/views/hyrax/dashboard/show_admin.html.erb +36 -34
- data/app/views/hyrax/dashboard/show_user.html.erb +16 -16
- data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +10 -10
- data/app/views/hyrax/dashboard/sidebar/_configuration.html.erb +8 -8
- data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +3 -1
- data/app/views/hyrax/dashboard/sidebar/_tasks.html.erb +5 -1
- data/app/views/hyrax/dashboard/works/_list_works.html.erb +4 -1
- data/app/views/hyrax/depositors/index.html.erb +2 -2
- data/app/views/hyrax/embargoes/edit.html.erb +15 -15
- data/app/views/hyrax/embargoes/index.html.erb +18 -6
- data/app/views/hyrax/file_sets/_actions.html.erb +5 -6
- data/app/views/hyrax/file_sets/_descriptions.html.erb +1 -1
- data/app/views/hyrax/file_sets/_extra_fields_modal.html.erb +1 -1
- data/app/views/hyrax/file_sets/_form.html.erb +1 -1
- data/app/views/hyrax/file_sets/_permission_form.html.erb +34 -35
- data/app/views/hyrax/file_sets/_show_actions.html.erb +2 -2
- data/app/views/hyrax/file_sets/_show_details.html.erb +27 -17
- data/app/views/hyrax/file_sets/_single_use_link_rows.html.erb +2 -2
- data/app/views/hyrax/file_sets/_single_use_links.html.erb +2 -2
- data/app/views/hyrax/file_sets/_versioning.html.erb +9 -9
- data/app/views/hyrax/file_sets/edit.html.erb +18 -12
- data/app/views/hyrax/file_sets/media_display/_image.html.erb +4 -4
- data/app/views/hyrax/file_sets/show.html.erb +2 -2
- data/app/views/hyrax/homepage/_announcement.html.erb +2 -2
- data/app/views/hyrax/homepage/_explore_collections.html.erb +6 -4
- data/app/views/hyrax/homepage/_featured_fields.html.erb +1 -1
- data/app/views/hyrax/homepage/_featured_works.html.erb +1 -1
- data/app/views/hyrax/homepage/_home_content.html.erb +24 -10
- data/app/views/hyrax/homepage/_marketing.html.erb +1 -1
- data/app/views/hyrax/homepage/_recent_document.html.erb +4 -1
- data/app/views/hyrax/homepage/_sortable_featured.html.erb +3 -3
- data/app/views/hyrax/homepage/index.html.erb +4 -4
- data/app/views/hyrax/leases/edit.html.erb +14 -14
- data/app/views/hyrax/leases/index.html.erb +18 -6
- data/app/views/hyrax/my/_admin_set_action_menu.html.erb +5 -5
- data/app/views/hyrax/my/_collection_action_menu.html.erb +6 -6
- data/app/views/hyrax/my/_constraints.html.erb +2 -2
- data/app/views/hyrax/my/_document_list.html.erb +1 -1
- data/app/views/hyrax/my/_facet_pagination.html.erb +1 -25
- data/app/views/hyrax/my/_facet_selected.html.erb +1 -1
- data/app/views/hyrax/my/_search_form.html.erb +7 -8
- data/app/views/hyrax/my/_sort_and_per_page.html.erb +10 -12
- data/app/views/hyrax/my/_work_action_menu.html.erb +4 -5
- data/app/views/hyrax/my/collections/_facets.html.erb +7 -5
- data/app/views/hyrax/my/collections/_list_collections.html.erb +1 -1
- 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/collections/_modal_collection_types_to_create.html.erb +5 -5
- data/app/views/hyrax/my/collections/_modal_delete_collection.html.erb +1 -1
- data/app/views/hyrax/my/collections/_modal_delete_empty_collection.html.erb +1 -1
- data/app/views/hyrax/my/collections/_modal_delete_selected_collections.html.erb +1 -1
- data/app/views/hyrax/my/collections/_tabs.html.erb +11 -4
- data/app/views/hyrax/my/collections/index.html.erb +3 -3
- data/app/views/hyrax/my/facet.html.erb +17 -16
- data/app/views/hyrax/my/index.html.erb +2 -2
- data/app/views/hyrax/my/works/_batch_actions.html.erb +1 -1
- data/app/views/hyrax/my/works/_facets.html.erb +6 -2
- data/app/views/hyrax/my/works/_list_works.html.erb +6 -7
- data/app/views/hyrax/my/works/_tabs.html.erb +6 -6
- data/app/views/hyrax/my/works/index.html.erb +20 -18
- data/app/views/hyrax/notifications/_notifications.html.erb +1 -1
- data/app/views/hyrax/notifications/index.html.erb +4 -4
- data/app/views/hyrax/operations/index.html.erb +1 -1
- data/app/views/hyrax/operations/show.html.erb +2 -2
- data/app/views/hyrax/pages/_form.html.erb +76 -64
- data/app/views/hyrax/permissions/confirm.html.erb +4 -4
- data/app/views/hyrax/permissions/confirm_access.html.erb +4 -4
- data/app/views/hyrax/stats/file.html.erb +1 -1
- data/app/views/hyrax/stats/work.html.erb +1 -1
- data/app/views/hyrax/transfers/_received.html.erb +5 -5
- data/app/views/hyrax/transfers/_sent.html.erb +1 -1
- data/app/views/hyrax/transfers/index.html.erb +8 -8
- data/app/views/hyrax/transfers/new.html.erb +1 -1
- data/app/views/hyrax/uploads/_js_templates.html.erb +14 -14
- data/app/views/hyrax/uploads/_js_templates_branding.html.erb +5 -5
- data/app/views/hyrax/uploads/_js_templates_versioning.html.erb +15 -15
- data/app/views/hyrax/users/_activity.html.erb +3 -3
- data/app/views/hyrax/users/_contributions.html.erb +3 -3
- data/app/views/hyrax/users/_left_sidebar.html.erb +1 -1
- data/app/views/hyrax/users/_profile_tabs.html.erb +16 -8
- data/app/views/hyrax/users/_search_form.html.erb +2 -2
- data/app/views/hyrax/users/_user.html.erb +5 -5
- data/app/views/hyrax/users/_user_info.html.erb +4 -4
- data/app/views/hyrax/users/_vitals.html.erb +3 -3
- data/app/views/hyrax/users/show.html.erb +2 -2
- data/app/views/layouts/hyrax/dashboard.html.erb +4 -4
- data/app/views/layouts/hyrax.html.erb +4 -3
- data/app/views/shared/_appearance_styles.html.erb +8 -8
- data/app/views/shared/_footer.html.erb +1 -1
- data/app/views/shared/_locale_picker.html.erb +5 -8
- data/app/views/shared/_nav_safety_modal.html.erb +2 -2
- data/app/views/shared/_select_work_type_modal.html.erb +2 -2
- data/chart/hyrax/Chart.yaml +1 -1
- data/chart/hyrax/templates/_helpers.tpl +5 -1
- data/chart/hyrax/templates/configmap-env.yaml +1 -1
- data/chart/hyrax/values.yaml +1 -0
- data/config/features.rb +1 -1
- data/config/initializers/reform_rails_6_1_monkey_patch.rb +27 -0
- data/config/locales/hyrax.de.yml +6 -5
- data/config/locales/hyrax.en.yml +7 -4
- data/config/locales/hyrax.es.yml +7 -6
- data/config/locales/hyrax.fr.yml +9 -8
- data/config/locales/hyrax.it.yml +7 -6
- data/config/locales/hyrax.pt-BR.yml +7 -6
- data/config/locales/hyrax.zh.yml +7 -6
- data/config/metadata/basic_metadata.yaml +2 -0
- data/docker-compose-koppie.yml +163 -0
- data/docker-compose.yml +2 -4
- data/documentation/developing-your-hyrax-based-app.md +1 -1
- data/documentation/legacyREADME.md +2 -2
- data/hyrax.gemspec +15 -23
- data/karma.conf.js +104 -0
- data/lib/generators/hyrax/assets_generator.rb +2 -5
- data/lib/generators/hyrax/install_generator.rb +13 -37
- data/lib/generators/hyrax/templates/catalog_controller.rb +20 -15
- data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +8 -1
- data/lib/generators/hyrax/templates/config/initializers/riiif.rb +2 -2
- data/lib/generators/hyrax/templates/config/locales/hyrax.de.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.en.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.es.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.fr.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.it.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.zh.yml +1 -1
- data/lib/generators/hyrax/templates/hyrax.scss +1 -2
- data/lib/generators/hyrax/templates/package.json +7 -8
- data/lib/hyrax/active_fedora_dummy_model.rb +13 -0
- data/lib/hyrax/configuration.rb +25 -55
- data/lib/hyrax/controlled_vocabulary/importer/language.rb +1 -1
- data/lib/hyrax/engine.rb +7 -4
- data/lib/hyrax/errors.rb +2 -0
- data/lib/hyrax/search_state.rb +9 -0
- data/lib/hyrax/specs/capybara.rb +7 -5
- data/lib/hyrax/specs/shared_specs/factories/strategies/json_strategy.rb +4 -0
- data/lib/hyrax/specs/shared_specs/factories/strategies/valkyrie_resource.rb +10 -0
- data/lib/hyrax/specs/shared_specs/indexers.rb +5 -0
- data/lib/hyrax/transactions/container.rb +0 -54
- data/lib/hyrax/transactions/steps/remove_file_set_from_work.rb +29 -3
- data/lib/hyrax/transactions/steps/save_access_control.rb +17 -1
- data/lib/hyrax/version.rb +1 -1
- data/lib/hyrax.rb +1 -1
- data/lib/tasks/migrate.rake +5 -1
- data/lib/valkyrie/indexing/solr/indexing_adapter.rb +1 -1
- data/lib/wings/valkyrie/persister.rb +2 -1
- data/lib/wings/valkyrie/storage.rb +6 -2
- data/package.json +11 -0
- data/tasks/benchmark.rake +1 -1
- data/template.rb +1 -1
- data/vendor/assets/javascripts/dataTables.bootstrap4.js +184 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-ui.js +1 -1
- data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +2 -2
- data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +1 -1
- data/vendor/assets/javascripts/handlebars.js +5214 -0
- data/vendor/assets/javascripts/jquery-ui.js +19057 -0
- data/vendor/assets/javascripts/jquery.dataTables.js +15336 -0
- data/vendor/assets/javascripts/morris/morris.min.js +9 -1
- data/vendor/assets/javascripts/morris/raphael-min.js +4 -6
- data/vendor/assets/javascripts/nestable.js +1 -1
- data/vendor/assets/stylesheets/dataTables.bootstrap4.css +307 -0
- data/vendor/assets/stylesheets/jquery-ui.css +1315 -0
- data/vendor/assets/stylesheets/morris.css +3 -0
- metadata +375 -185
- data/app/actors/hyrax/actors/initialize_workflow_actor.rb +0 -35
- data/app/helpers/hyrax/url_helper.rb +0 -13
- data/app/indexers/hyrax/repository_reindexer.rb +0 -19
- data/app/jobs/content_depositor_change_event_job.rb +0 -48
- data/app/models/concerns/hyrax/collection_nesting.rb +0 -73
- data/app/models/concerns/hyrax/with_file_sets.rb +0 -17
- data/app/services/hyrax/adapters/nesting_index_adapter.rb +0 -193
- data/app/views/hyrax/my/_facet_layout.html.erb +0 -8
- data/app/views/hyrax/my/_facet_limit.html.erb +0 -15
- data/app/views/hyrax/my/_facet_pivot.html.erb +0 -26
- data/config/initializers/nesting_indexer_initializer.rb +0 -16
- data/lib/hyrax/transactions/create_work.rb +0 -65
- data/lib/hyrax/transactions/destroy_work.rb +0 -28
- data/lib/hyrax/transactions/steps/apply_collection_permission_template.rb +0 -34
- data/lib/hyrax/transactions/steps/apply_permission_template.rb +0 -32
- data/lib/hyrax/transactions/steps/apply_visibility.rb +0 -41
- data/lib/hyrax/transactions/steps/destroy_work.rb +0 -27
- data/lib/hyrax/transactions/steps/ensure_permission_template.rb +0 -29
- data/lib/hyrax/transactions/steps/save_work.rb +0 -38
- data/lib/hyrax/transactions/update_work.rb +0 -19
- data/lib/wings/services/file_converter_service.rb +0 -19
- data/lib/wings/services/file_metadata_builder.rb +0 -94
- data/vendor/assets/javascripts/handlebars-v4.0.5.js +0 -4612
- data/vendor/assets/stylesheets/morris.js/0.5.1/morris.css +0 -2
data/.regen
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
# When updating CI regen seed, set to current date.
|
2
|
+
2022-07-01T00
|
data/.rubocop.yml
CHANGED
data/CONTAINERS.md
CHANGED
@@ -5,10 +5,13 @@ Our goal is to provide a practical, reusable reference environment for applicati
|
|
5
5
|
|
6
6
|
The [Hyrax Engine Development](#hyrax-engine-development) is further along than the [Docker Image for Hyrax-based Applications](#docker-image-for-hyrax-based-applications) which is further along than [Deploying to Production](#deploying-to-production).
|
7
7
|
|
8
|
-
|
8
|
+
There are two options for development environments to run:
|
9
|
+
|
10
|
+
- [Dassie](#dassie-internal-test-app-with-activefedora) is the default internal test app that will run an ActiveFedora-based Hyrax web application using Fedora 4 as the backend storage. See [Troubleshooting Dassie](#troubleshooting-dassie) if you encounter any issues.
|
11
|
+
- [Koppie](#koppie-internal-test-app-with-valkyrie-connector-to-postgres) is a newer internal test app that is a Valkyrie-based Hyrax web application that runs with PostGres as backend storage. It does not run ActiveFedora or use Fedora 4. See [Troubleshooting Koppie](#troubleshooting-koppie) if you encounter any issues.
|
9
12
|
|
10
13
|
<!-- NOTE: This title is referenced in the top-level README.md. Keep that in mind if you change it. -->
|
11
|
-
## Hyrax Engine Development
|
14
|
+
## Hyrax Engine Development
|
12
15
|
|
13
16
|
We support a `docker-compose`-based development environment for folks working on
|
14
17
|
the Hyrax engine. This environment is substantially more like a Hyrax production
|
@@ -16,6 +19,8 @@ setup than the older `fedora_wrapper`/`solr_wrapper` approach.
|
|
16
19
|
|
17
20
|
First, make sure you have installed [Docker](https://www.docker.com/). Then clone [the Hyrax repository](https://github.com/samvera/hyrax).
|
18
21
|
|
22
|
+
### Dassie internal test app with ActiveFedora
|
23
|
+
|
19
24
|
Within your cloned repository, tell Docker to get started installing your development environment:
|
20
25
|
|
21
26
|
```sh
|
@@ -39,7 +44,7 @@ To stop the containers for the Hyrax-based application, type <kbd>Ctrl</kbd>+<kb
|
|
39
44
|
|
40
45
|
_**Note:** Starting and stopping Docker in this way will preserve your data between restarts._
|
41
46
|
|
42
|
-
|
47
|
+
#### Code Changes and Testing
|
43
48
|
|
44
49
|
With `docker-compose up` running, any changes you make to your cloned Hyrax code-base should show up in `http://localhost:3000`; There may be cases where you need to restart your test application (e.g. stop the containers and start them up again).
|
45
50
|
|
@@ -68,7 +73,7 @@ _**Note:**_ The `bundle exec rspec` portion of the command runs the whole test s
|
|
68
73
|
|
69
74
|
_**Note**: The `/app/samvera/hyrax-webapp` is analogous to the `.internal_test_app` that we generate as part of the Hyrax engine Continuous Integration._
|
70
75
|
|
71
|
-
|
76
|
+
#### The Docker Container Named "app"
|
72
77
|
|
73
78
|
As a developer, you may need to run commands against the Hyrax-based application and/or the Hyrax engine. Examples
|
74
79
|
of those commands are `rails db:migrate` and `rspec`. You would run `rails db:migrate` on the Hyrax-based
|
@@ -92,7 +97,7 @@ docker-compose exec -w /app/samvera/hyrax-engine app sh -c "bundle exec rake -T"
|
|
92
97
|
|
93
98
|
In the two examples, note the difference in the `-w` switch. In the first case, it's referencing the Hyrax-based application. In the latter case, it's referencing the Hyrax engine.
|
94
99
|
|
95
|
-
|
100
|
+
#### Debugging
|
96
101
|
|
97
102
|
If you are interested in running Hyrax in debug mode, this requires a somewhat different approach than running Hyrax bare-metal. You need to use `docker attach` to debug the running docker instance.
|
98
103
|
|
@@ -102,9 +107,9 @@ If you are interested in running Hyrax in debug mode, this requires a somewhat d
|
|
102
107
|
|
103
108
|
This advice comes from [Debugging Rails App With Docker Compose: How to use Byebug in a dockerized rails app](https://medium.com/gogox-technology/debugging-rails-app-with-docker-compose-39a3767962f4).
|
104
109
|
|
105
|
-
|
110
|
+
#### Troubleshooting Dassie
|
106
111
|
|
107
|
-
|
112
|
+
##### Bad Address SOLR
|
108
113
|
|
109
114
|
With `docker-compose up` running, if you see the following, then there may be issues with file permissions:
|
110
115
|
|
@@ -122,14 +127,53 @@ cp: cannot create directory '/var/solr/data/hyrax_test': Permission denied
|
|
122
127
|
|
123
128
|
The solution that appears to work is to `docker-compose down --volumes`; This will tear down the docker instance, and remove the volumes. You can then run `docker-compose up` to get back to work. _**Note:** the `--volumes` switch will remove all custom data._
|
124
129
|
|
125
|
-
|
130
|
+
##### Errors building the Docker image
|
126
131
|
|
127
132
|
If you encounter errors running `docker-compose build`, try running `bundle update` in `./hyrax` as well as within `./hyrax/.dassie`. That can help clear up the problem of a failure to build a particular gem.
|
128
133
|
|
129
|
-
|
134
|
+
##### Containers do not all start
|
130
135
|
|
131
136
|
If any of the services fail to start on `docker-compose up`, try clearing out any `Gemfile.lock` files that might exist in `./hyrax` or `./hyrax/.dassie` and run `docker-compose build` again, then `docker-compose up` again.
|
132
137
|
|
138
|
+
### Koppie Internal Test App with Valkyrie Connector to Postgres
|
139
|
+
|
140
|
+
Build docker images for Koppie: `docker compose -f docker-compose-koppie.yml build`
|
141
|
+
|
142
|
+
Start Koppie: `docker compose -f docker-compose-koppie.yml up`
|
143
|
+
|
144
|
+
This starts containers for:
|
145
|
+
|
146
|
+
- a `hyrax` test application (`.koppie`);
|
147
|
+
- Solr
|
148
|
+
- Postgresql
|
149
|
+
- Redis
|
150
|
+
- Memcached
|
151
|
+
- SideKiq (for background jobs)
|
152
|
+
|
153
|
+
It also runs database migrations. This will also bring up a development application on `http://localhost:3001`.
|
154
|
+
|
155
|
+
To stop the containers for the Hyrax-based application, type <kbd>Ctrl</kbd>+<kbd>c</kbd>. To restart the containers run `docker compose -f docker-compose-koppie.yml up`.
|
156
|
+
|
157
|
+
_**Note:** Starting and stopping Docker in this way will preserve your data between restarts._
|
158
|
+
|
159
|
+
Koppie runs as a different project than Dassie, so it should be possible to run both concurrently (assuming your workstation has enough RAM).
|
160
|
+
|
161
|
+
#### Run rails console on Koppie
|
162
|
+
|
163
|
+
Currently Koppie should not be used for running specs. See [Code Changes and Testing](#code-changes-and-testing) under Dassie instead until the specs can be updated for a valkyrie only environment.
|
164
|
+
|
165
|
+
```sh
|
166
|
+
docker compose -f docker-compose-koppie.yml up
|
167
|
+
docker compose -f docker-compose-koppie.yml exec app bundle exec rails c
|
168
|
+
```
|
169
|
+
#### Troubleshooting Koppie
|
170
|
+
|
171
|
+
If the postgres service logs show permissions errors, there may be old data from alternate versions of the postgres image. The old data volumes can deleted by using `docker compose -f docker-compose-koppie.yml down -v`
|
172
|
+
|
173
|
+
Errors such as `exec /app/samvera/hyrax-entrypoint.sh: no such file or directory` in the app, sidekiq and db_migrate services may indicate an outdated cached hyrax-base image layer was used to build the koppie image. Try `docker compose -f docker-compose-koppie.yml build --no-cache` to rebuild all the image layers.
|
174
|
+
|
175
|
+
It was also seen on a Windows 10 host and was resolved by using the git `--core.autocrlf` option when cloning the repo.
|
176
|
+
|
133
177
|
<!-- NOTE: This title is referenced in the top-level documentation/developing-your-hyrax-based-app.md. Keep that in mind if you change it. -->
|
134
178
|
## Docker Image for Hyrax-based Applications
|
135
179
|
|
@@ -185,4 +229,4 @@ helm install -n hyrax --set image.tag=(git rev-parse HEAD) dassie chart/hyrax
|
|
185
229
|
```
|
186
230
|
|
187
231
|
[ghcr]: https://docs.github.com/en/enterprise-cloud@latest/packages/working-with-a-github-packages-registry/working-with-the-container-registry
|
188
|
-
[samvera-packages]: https://github.com/orgs/samvera/packages
|
232
|
+
[samvera-packages]: https://github.com/orgs/samvera/packages
|
data/CONTRIBUTING.md
CHANGED
@@ -11,17 +11,6 @@ experience for all its members, whether they are at a formal gathering, in
|
|
11
11
|
a social setting, or taking part in activities online. Please see our
|
12
12
|
[Code of Conduct](CODE_OF_CONDUCT.md) for more information.
|
13
13
|
|
14
|
-
## Samvera Community Intellectual Property Licensing and Ownership
|
15
|
-
|
16
|
-
All code contributors must have an Individual Contributor License Agreement
|
17
|
-
(iCLA) on file with the Samvera Steering Group. If the contributor works for
|
18
|
-
an institution, the institution must have a Corporate Contributor License
|
19
|
-
Agreement (cCLA) on file.
|
20
|
-
|
21
|
-
https://wiki.lyrasis.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
|
22
|
-
|
23
|
-
You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
|
24
|
-
|
25
14
|
## Language
|
26
15
|
|
27
16
|
The language we use matters. Today, tomorrow, and for years to come
|
@@ -67,15 +56,22 @@ further details.
|
|
67
56
|
|
68
57
|
* Fork the repository on GitHub
|
69
58
|
* Create a topic branch from where you want to base your work.
|
70
|
-
* This is usually the
|
71
|
-
* To quickly create a topic branch based on
|
72
|
-
* Then checkout the new branch with `git checkout fix/
|
73
|
-
* Please avoid working directly on the `
|
59
|
+
* This is usually the `main` branch.
|
60
|
+
* To quickly create a topic branch based on `main`; `git branch fix/main/my_contribution main`
|
61
|
+
* Then checkout the new branch with `git checkout fix/main/my_contribution`.
|
62
|
+
* Please avoid working directly on the `main` branch.
|
63
|
+
* Please do not create a branch called `master`. (See note below.)
|
74
64
|
* You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
|
75
65
|
* Make sure you have added sufficient tests and documentation for your changes.
|
76
66
|
* Test functionality with RSpec; Test features / UI with Capybara.
|
77
67
|
* Run _all_ the tests to assure nothing else was accidentally broken.
|
78
68
|
|
69
|
+
NOTE: This repository follows the [Samvera Community Code of Conduct](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405212316/Code+of+Conduct)
|
70
|
+
and [language recommendations](#language).
|
71
|
+
Please ***do not*** create a branch called `master` for this repository or as part of
|
72
|
+
your pull request; the branch will either need to be removed or renamed before it can
|
73
|
+
be considered for inclusion in the code base and history of this repository.
|
74
|
+
|
79
75
|
### Documenting Code
|
80
76
|
|
81
77
|
* All new public methods, modules, and classes should include inline documentation in [YARD](http://yardoc.org/).
|
@@ -131,15 +127,15 @@ further details.
|
|
131
127
|
### Submitting Changes
|
132
128
|
|
133
129
|
* Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
|
134
|
-
* Make sure your branch is up to date with its parent branch (i.e.
|
135
|
-
* `git checkout
|
130
|
+
* Make sure your branch is up to date with its parent branch (i.e. main)
|
131
|
+
* `git checkout main`
|
136
132
|
* `git pull --rebase`
|
137
133
|
* `git checkout <your-branch>`
|
138
|
-
* `git rebase
|
134
|
+
* `git rebase main`
|
139
135
|
* It is a good idea to run your tests again.
|
140
136
|
* If you've made more than one commit take a moment to consider whether squashing commits together would help improve their logical grouping.
|
141
137
|
* [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
|
142
|
-
* `git rebase --interactive
|
138
|
+
* `git rebase --interactive main` ([See Github help](https://help.github.com/articles/interactive-rebase))
|
143
139
|
* Squashing your branch's changes into one commit is "good form" and helps the person merging your request to see everything that is going on.
|
144
140
|
* Push your changes to a topic branch in your fork of the repository.
|
145
141
|
* Submit a pull request from your fork to the project.
|
@@ -149,12 +145,14 @@ further details.
|
|
149
145
|
We adopted [Github's Pull Request Review](https://help.github.com/articles/about-pull-request-reviews/) for our repositories.
|
150
146
|
Common checks that may occur in our repositories:
|
151
147
|
|
152
|
-
1.
|
153
|
-
2.
|
148
|
+
1. [CircleCI](https://circleci.com/gh/samvera) - where our automated tests are running
|
149
|
+
2. RuboCop/Bixby - where we check for style violations
|
150
|
+
3. Approval Required - Github enforces at least one person approve a pull request. Also, all reviewers that have chimed in must approve.
|
151
|
+
4. CodeClimate - is our code remaining healthy (at least according to static code analysis)
|
154
152
|
|
155
153
|
If one or more of the required checks failed (or are incomplete), the code should not be merged (and the UI will not allow it). If all of the checks have passed, then anyone on the project (including the pull request submitter) may merge the code.
|
156
154
|
|
157
|
-
*Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (
|
155
|
+
*Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (CI tests are usually the culprit), so he does not merge the pull request. Eventually, all of the checks pass. At this point, Carolyn or anyone else may merge the pull request.*
|
158
156
|
|
159
157
|
#### Things to Consider When Reviewing
|
160
158
|
|
@@ -171,7 +169,7 @@ This is your chance for a mentoring moment of another developer. Take time to gi
|
|
171
169
|
* Do new or changed methods, modules, and classes have documentation?
|
172
170
|
* Does the commit contain more than it should? Are two separate concerns being addressed in one commit?
|
173
171
|
* Does the description of the new/changed specs match your understanding of what the spec is doing?
|
174
|
-
* Did the
|
172
|
+
* Did the Continuous Integration tests complete successfully?
|
175
173
|
|
176
174
|
If you are uncertain, bring other contributors into the conversation by assigning them as a reviewer.
|
177
175
|
|
@@ -180,4 +178,4 @@ If you are uncertain, bring other contributors into the conversation by assignin
|
|
180
178
|
* [General GitHub documentation](http://help.github.com/)
|
181
179
|
* [GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/)
|
182
180
|
* [Pro Git](http://git-scm.com/book) is both a free and excellent book about Git.
|
183
|
-
* [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
|
181
|
+
* [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
|
data/Dockerfile
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
ARG RUBY_VERSION=2.7.
|
1
|
+
ARG RUBY_VERSION=2.7.6
|
2
2
|
FROM ruby:$RUBY_VERSION-alpine3.15 as hyrax-base
|
3
3
|
|
4
4
|
ARG DATABASE_APK_PACKAGE="postgresql-dev"
|
5
5
|
ARG EXTRA_APK_PACKAGES="git"
|
6
|
+
ARG RUBYGEMS_VERSION=3.3.20
|
6
7
|
|
7
8
|
RUN apk --no-cache upgrade && \
|
8
|
-
apk --no-cache add
|
9
|
+
apk --no-cache add acl \
|
10
|
+
build-base \
|
9
11
|
curl \
|
10
12
|
gcompat \
|
11
13
|
imagemagick \
|
@@ -16,12 +18,13 @@ RUN apk --no-cache upgrade && \
|
|
16
18
|
$DATABASE_APK_PACKAGE \
|
17
19
|
$EXTRA_APK_PACKAGES
|
18
20
|
|
21
|
+
RUN setfacl -d -m o::rwx /usr/local/bundle && \
|
22
|
+
gem update --system $RUBYGEMS_VERSION
|
23
|
+
|
19
24
|
RUN addgroup -S --gid 101 app && \
|
20
25
|
adduser -S -G app -u 1001 -s /bin/sh -h /app app
|
21
26
|
USER app
|
22
27
|
|
23
|
-
RUN gem update bundler
|
24
|
-
|
25
28
|
RUN mkdir -p /app/samvera/hyrax-webapp
|
26
29
|
WORKDIR /app/samvera/hyrax-webapp
|
27
30
|
|
@@ -87,9 +90,10 @@ ENV HYRAX_ENGINE_PATH /app/samvera/hyrax-engine
|
|
87
90
|
COPY --chown=1001:101 $APP_PATH /app/samvera/hyrax-webapp
|
88
91
|
COPY --chown=1001:101 . /app/samvera/hyrax-engine
|
89
92
|
|
90
|
-
RUN
|
93
|
+
RUN bundle -v && \
|
91
94
|
bundle install --jobs "$(nproc)" && \
|
92
|
-
cd $HYRAX_ENGINE_PATH &&
|
95
|
+
cd $HYRAX_ENGINE_PATH && \
|
96
|
+
bundle install --jobs "$(nproc)"
|
93
97
|
RUN RAILS_ENV=production SECRET_KEY_BASE='fakesecret1234' DB_ADAPTER=nulldb DATABASE_URL='postgresql://fake' bundle exec rake assets:precompile
|
94
98
|
|
95
99
|
|
data/Rakefile
CHANGED
@@ -9,10 +9,6 @@ end
|
|
9
9
|
|
10
10
|
Bundler::GemHelper.install_tasks
|
11
11
|
|
12
|
-
import "#{Gem.loaded_specs['jasmine'].full_gem_path}/lib/jasmine/tasks/jasmine.rake"
|
13
|
-
|
14
|
-
# Set up the test application prior to running jasmine tasks.
|
15
|
-
task 'jasmine:require' => :setup_test_server
|
16
12
|
task :setup_test_server do
|
17
13
|
require 'engine_cart'
|
18
14
|
EngineCart.load_application!
|
@@ -37,7 +37,7 @@ module Hyrax
|
|
37
37
|
# @return [Boolean] true if destroy was successful
|
38
38
|
def destroy(env)
|
39
39
|
env.curation_concern.in_collection_ids.each do |id|
|
40
|
-
destination_collection =
|
40
|
+
destination_collection = ::Collection.find(id)
|
41
41
|
destination_collection.members.delete(env.curation_concern)
|
42
42
|
destination_collection.update_index
|
43
43
|
end
|
@@ -70,7 +70,6 @@ module Hyrax
|
|
70
70
|
# along side the FileSets on the show page
|
71
71
|
def add(env, id)
|
72
72
|
collection = Hyrax.config.collection_class.find(id)
|
73
|
-
collection.reindex_extent = Hyrax::Adapters::NestingIndexAdapter::LIMITED_REINDEX
|
74
73
|
|
75
74
|
return unless env.current_ability.can?(:deposit, collection)
|
76
75
|
env.curation_concern.member_of_collections << collection
|
@@ -108,7 +107,7 @@ module Hyrax
|
|
108
107
|
|
109
108
|
# Do not apply permissions to work if collection type is configured not to
|
110
109
|
collection = Hyrax.config.collection_class.find(collection_id)
|
111
|
-
return unless collection.share_applies_to_new_works?
|
110
|
+
return unless Hyrax::CollectionType.for(collection: collection).share_applies_to_new_works?
|
112
111
|
|
113
112
|
# Save the collection id in env for use in apply_permission_template_actor
|
114
113
|
env.attributes[:collection_id] = collection_id
|
@@ -40,7 +40,7 @@ module Hyrax
|
|
40
40
|
expected_user_id = env.user.id
|
41
41
|
files.each do |file|
|
42
42
|
if file.user_id != expected_user_id
|
43
|
-
|
43
|
+
Hyrax.logger.error "User #{env.user.user_key} attempted to ingest uploaded_file #{file.id}, but it belongs to a different user"
|
44
44
|
return false
|
45
45
|
end
|
46
46
|
end
|
@@ -62,7 +62,7 @@ module Hyrax
|
|
62
62
|
# Escape any space characters, so that this is a legal URI
|
63
63
|
uri = URI.parse(Addressable::URI.escape(file_info[:url]))
|
64
64
|
unless self.class.validate_remote_url(uri)
|
65
|
-
|
65
|
+
Hyrax.logger.error "User #{user.user_key} attempted to ingest file from url #{file_info[:url]}, which doesn't pass validation"
|
66
66
|
return false
|
67
67
|
end
|
68
68
|
auth_header = file_info.fetch(:auth_header, {})
|
@@ -84,7 +84,7 @@ module Hyrax
|
|
84
84
|
path.start_with?(dir) && path.length > dir.length
|
85
85
|
end
|
86
86
|
else
|
87
|
-
|
87
|
+
Hyrax.logger.debug "Assuming #{uri.scheme} uri is valid without a serious attempt to validate: #{uri}"
|
88
88
|
true
|
89
89
|
end
|
90
90
|
end
|
@@ -93,19 +93,13 @@ module Hyrax
|
|
93
93
|
|
94
94
|
def create_file_from_url(uri, file_name, auth_header)
|
95
95
|
import_url = URI.decode_www_form_component(uri.to_s)
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
file_set = Hyrax.persister.save(resource: Hyrax::FileSet.new(import_url: import_url, label: file_name))
|
100
|
-
use_valkyrie = true
|
101
|
-
else
|
102
|
-
file_set = ::FileSet.new(import_url: import_url, label: file_name)
|
103
|
-
end
|
104
|
-
__create_file_from_url(file_set: file_set, uri: uri, auth_header: auth_header, use_valkyrie: use_valkyrie)
|
96
|
+
file_set = ::FileSet.new(import_url: import_url, label: file_name)
|
97
|
+
|
98
|
+
__create_file_from_url(file_set: file_set, uri: uri, auth_header: auth_header)
|
105
99
|
end
|
106
100
|
|
107
|
-
def __create_file_from_url(file_set:, uri:, auth_header
|
108
|
-
actor = file_set_actor_class.new(file_set, user
|
101
|
+
def __create_file_from_url(file_set:, uri:, auth_header:)
|
102
|
+
actor = file_set_actor_class.new(file_set, user)
|
109
103
|
actor.create_metadata(visibility: curation_concern.visibility)
|
110
104
|
actor.attach_to_work(curation_concern)
|
111
105
|
file_set.save! if file_set.respond_to?(:save!)
|
@@ -12,10 +12,17 @@ module Hyrax
|
|
12
12
|
# Update the visibility of the work to match the correct state of the embargo, then clear the embargo date, etc.
|
13
13
|
# Saves the embargo and the work
|
14
14
|
def destroy
|
15
|
-
work
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
case work
|
16
|
+
when Valkyrie::Resource
|
17
|
+
embargo_manager = Hyrax::EmbargoManager.new(resource: work)
|
18
|
+
embargo_manager.release && Hyrax::AccessControlList(work).save
|
19
|
+
embargo_manager.nullify
|
20
|
+
else
|
21
|
+
work.embargo_visibility! # If the embargo has lapsed, update the current visibility.
|
22
|
+
work.deactivate_embargo!
|
23
|
+
work.embargo.save!
|
24
|
+
work.save!
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'wings/services/file_metadata_builder'
|
3
2
|
|
4
3
|
module Hyrax
|
5
4
|
module Actors
|
@@ -11,8 +10,7 @@ module Hyrax
|
|
11
10
|
# @param [FileSet] file_set the parent FileSet
|
12
11
|
# @param [Symbol, #to_sym] relation the type/use for the file
|
13
12
|
# @param [User] user the user to record as the Agent acting upon the file
|
14
|
-
def initialize(file_set, relation, user
|
15
|
-
@use_valkyrie = use_valkyrie
|
13
|
+
def initialize(file_set, relation, user)
|
16
14
|
@file_set = file_set
|
17
15
|
@relation = normalize_relation(relation)
|
18
16
|
@user = user
|
@@ -25,7 +23,14 @@ module Hyrax
|
|
25
23
|
# @see IngestJob
|
26
24
|
# @todo create a job to monitor the temp directory (or in a multi-worker system, directories!) to prune old files that have made it into the repo
|
27
25
|
def ingest_file(io)
|
28
|
-
|
26
|
+
Hydra::Works::AddFileToFileSet.call(file_set,
|
27
|
+
io,
|
28
|
+
relation,
|
29
|
+
versioning: false)
|
30
|
+
return false unless file_set.save
|
31
|
+
repository_file = related_file
|
32
|
+
create_version(repository_file, user)
|
33
|
+
CharacterizeJob.perform_later(file_set, repository_file.id, pathhint(io))
|
29
34
|
end
|
30
35
|
|
31
36
|
# Reverts file and spawns async job to characterize and create derivatives.
|
@@ -63,39 +68,6 @@ module Hyrax
|
|
63
68
|
file_set.public_send(normalize_relation(relation)) || raise("No #{relation} returned for FileSet #{file_set.id}")
|
64
69
|
end
|
65
70
|
|
66
|
-
def perform_ingest_file_through_active_fedora(io)
|
67
|
-
# Skip versioning because versions will be minted by VersionCommitter as necessary during save_characterize_and_record_committer.
|
68
|
-
Hydra::Works::AddFileToFileSet.call(file_set,
|
69
|
-
io,
|
70
|
-
relation,
|
71
|
-
versioning: false)
|
72
|
-
return false unless file_set.save
|
73
|
-
repository_file = related_file
|
74
|
-
create_version(repository_file, user)
|
75
|
-
CharacterizeJob.perform_later(file_set, repository_file.id, pathhint(io))
|
76
|
-
end
|
77
|
-
|
78
|
-
def perform_ingest_file_through_valkyrie(io) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
79
|
-
Deprecation.warn "FileActor support for Valkyrie was experimental and " \
|
80
|
-
"is slated to be removed in favor of WorkUploadsHandler."
|
81
|
-
file =
|
82
|
-
begin
|
83
|
-
Hyrax.storage_adapter.upload(resource: file_set, file: io, original_filename: io.original_name, use: relation)
|
84
|
-
rescue StandardError => err
|
85
|
-
Rails.logger.error("Failed to save file_metadata through valkyrie: #{err.message}")
|
86
|
-
return false
|
87
|
-
end
|
88
|
-
file_metadata = Hyrax.custom_queries.find_file_metadata_by(id: file.id)
|
89
|
-
create_version(file_metadata, user)
|
90
|
-
|
91
|
-
file_set.file_ids << file_metadata.id
|
92
|
-
file_set.original_file_id = file_metadata.id
|
93
|
-
Hyrax.persister.save(resource: file_set)
|
94
|
-
Hyrax.publisher.publish('object.metadata.updated', object: file_set, user: user)
|
95
|
-
CharacterizeJob.perform_later(file_set, file_metadata.id.to_s, pathhint(io))
|
96
|
-
file_metadata
|
97
|
-
end
|
98
|
-
|
99
71
|
def normalize_relation(relation)
|
100
72
|
use_valkyrie ? normalize_relation_for_valkyrie(relation) : normalize_relation_for_active_fedora(relation)
|
101
73
|
end
|
@@ -4,10 +4,9 @@ module Hyrax
|
|
4
4
|
# Actions are decoupled from controller logic so that they may be called from a controller or a background job.
|
5
5
|
class FileSetActor # rubocop:disable Metrics/ClassLength
|
6
6
|
include Lockable
|
7
|
-
attr_reader :file_set, :user, :attributes
|
7
|
+
attr_reader :file_set, :user, :attributes
|
8
8
|
|
9
|
-
def initialize(file_set, user
|
10
|
-
@use_valkyrie = use_valkyrie
|
9
|
+
def initialize(file_set, user)
|
11
10
|
@file_set = file_set
|
12
11
|
@user = user
|
13
12
|
end
|
@@ -71,42 +70,17 @@ module Hyrax
|
|
71
70
|
def attach_to_work(work, file_set_params = {})
|
72
71
|
acquire_lock_for(work.id) do
|
73
72
|
# Ensure we have an up-to-date copy of the members association, so that we append to the end of the list.
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
work.reload unless work.new_record?
|
74
|
+
file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
|
75
|
+
work.ordered_members << file_set
|
76
|
+
work.representative = file_set if work.representative_id.blank?
|
77
|
+
work.thumbnail = file_set if work.thumbnail_id.blank?
|
78
|
+
# Save the work so the association between the work and the file_set is persisted (head_id)
|
79
|
+
# NOTE: the work may not be valid, in which case this save doesn't do anything.
|
80
|
+
work.save
|
79
81
|
Hyrax.config.callback.run(:after_create_fileset, file_set, user, warn: false)
|
80
82
|
end
|
81
83
|
end
|
82
|
-
alias attach_file_to_work attach_to_work
|
83
|
-
deprecation_deprecate attach_file_to_work: "use attach_to_work instead"
|
84
|
-
|
85
|
-
def attach_to_valkyrie_work(work, file_set_params)
|
86
|
-
work = Hyrax.query_service.find_by(id: work.id) unless work.new_record
|
87
|
-
file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
|
88
|
-
fs = Hyrax.persister.save(resource: file_set)
|
89
|
-
Hyrax.publisher.publish('object.metadata.updated', object: fs, user: user)
|
90
|
-
work.member_ids << fs.id
|
91
|
-
work.representative_id = fs.id if work.representative_id.blank?
|
92
|
-
work.thumbnail_id = fs.id if work.thumbnail_id.blank?
|
93
|
-
# Save the work so the association between the work and the file_set is persisted (head_id)
|
94
|
-
# NOTE: the work may not be valid, in which case this save doesn't do anything.
|
95
|
-
Hyrax.persister.save(resource: work)
|
96
|
-
Hyrax.publisher.publish('object.metadata.updated', object: work, user: user)
|
97
|
-
end
|
98
|
-
|
99
|
-
# Adds a FileSet to the work using ore:Aggregations.
|
100
|
-
def attach_to_af_work(work, file_set_params)
|
101
|
-
work.reload unless work.new_record?
|
102
|
-
file_set.visibility = work.visibility unless assign_visibility?(file_set_params)
|
103
|
-
work.ordered_members << file_set
|
104
|
-
work.representative = file_set if work.representative_id.blank?
|
105
|
-
work.thumbnail = file_set if work.thumbnail_id.blank?
|
106
|
-
# Save the work so the association between the work and the file_set is persisted (head_id)
|
107
|
-
# NOTE: the work may not be valid, in which case this save doesn't do anything.
|
108
|
-
work.save
|
109
|
-
end
|
110
84
|
|
111
85
|
# @param [String] revision_id the revision to revert to
|
112
86
|
# @param [Symbol, #to_sym] relation
|
@@ -144,8 +118,7 @@ module Hyrax
|
|
144
118
|
end
|
145
119
|
|
146
120
|
def build_file_actor(relation)
|
147
|
-
|
148
|
-
file_actor_class.new(fs, relation, user, use_valkyrie: use_valkyrie)
|
121
|
+
file_actor_class.new(file_set, relation, user)
|
149
122
|
end
|
150
123
|
|
151
124
|
# uses create! because object must be persisted to serialize for jobs
|
@@ -194,32 +167,10 @@ module Hyrax
|
|
194
167
|
work.save!
|
195
168
|
end
|
196
169
|
|
197
|
-
# switches between using valkyrie to save or active fedora to save
|
198
170
|
def perform_save(object)
|
199
|
-
|
200
|
-
|
201
|
-
saved_resource = Hyrax.persister.save(resource: obj_to_save)
|
202
|
-
# return the same type of object that was passed in
|
203
|
-
saved_object_to_return = valkyrie_object?(object) ? saved_resource : Wings::ActiveFedoraConverter.new(resource: saved_resource).convert
|
204
|
-
else
|
205
|
-
obj_to_save.save
|
206
|
-
saved_object_to_return = obj_to_save
|
207
|
-
end
|
208
|
-
saved_object_to_return
|
209
|
-
end
|
210
|
-
|
211
|
-
# if passed a resource or if use_valkyrie==true, object to act on is the valkyrie resource
|
212
|
-
def object_to_act_on(object)
|
213
|
-
return object if valkyrie_object?(object)
|
214
|
-
use_valkyrie ? object.valkyrie_resource : object
|
215
|
-
end
|
216
|
-
|
217
|
-
# determine if the object is a valkyrie resource
|
218
|
-
def valkyrie_object?(object)
|
219
|
-
object.is_a? Valkyrie::Resource
|
171
|
+
object.save
|
172
|
+
object
|
220
173
|
end
|
221
|
-
# rubocop:enable Metrics/AbcSize
|
222
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
223
174
|
end
|
224
175
|
end
|
225
176
|
end
|
@@ -12,10 +12,17 @@ module Hyrax
|
|
12
12
|
# Update the visibility of the work to match the correct state of the lease, then clear the lease date, etc.
|
13
13
|
# Saves the lease and the work
|
14
14
|
def destroy
|
15
|
-
work
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
case work
|
16
|
+
when Valkyrie::Resource
|
17
|
+
lease_manager = Hyrax::LeaseManager.new(resource: work)
|
18
|
+
lease_manager.release && Hyrax::AccessControlList(work).save
|
19
|
+
lease_manager.nullify
|
20
|
+
else
|
21
|
+
work.lease_visibility! # If the lease has lapsed, update the current visibility.
|
22
|
+
work.deactivate_lease!
|
23
|
+
work.lease.save!
|
24
|
+
work.save!
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
@@ -92,7 +92,7 @@ Hyrax = {
|
|
92
92
|
// Popover help modals. Used on the user profile page.
|
93
93
|
popovers: function () {
|
94
94
|
$("a[data-toggle=popover]").popover({html: true})
|
95
|
-
.click
|
95
|
+
.on("click", function () {
|
96
96
|
return false;
|
97
97
|
});
|
98
98
|
},
|
@@ -104,7 +104,7 @@ Hyrax = {
|
|
104
104
|
// On the edit work page
|
105
105
|
new PermissionsControl($("#share"), 'tmpl-work-grant');
|
106
106
|
// On the edit fileset page
|
107
|
-
new PermissionsControl($("#permission"), 'tmpl-file-set-grant');
|
107
|
+
new PermissionsControl($("#permission"), 'tmpl-file-set-grant', { with_visibility_component: true });
|
108
108
|
// On the batch edit page
|
109
109
|
new PermissionsControl($("#form_permissions"), 'tmpl-work-grant');
|
110
110
|
// On the edit collection page
|
@@ -1,10 +1,10 @@
|
|
1
1
|
Blacklight.onLoad(function() {
|
2
|
-
$('#show_addl_descriptions').click
|
2
|
+
$('#show_addl_descriptions').on('click', function() {
|
3
3
|
$('#more_descriptions').show();
|
4
4
|
$('#show_addl_descriptions').hide();
|
5
5
|
return false;
|
6
6
|
});
|
7
|
-
$('#hide_addl_descriptions').click
|
7
|
+
$('#hide_addl_descriptions').on('click', function() {
|
8
8
|
$('#more_descriptions').hide();
|
9
9
|
$('#show_addl_descriptions').show();
|
10
10
|
return false;
|