curation_concerns 0.1.0 → 0.2.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/.gitignore +7 -9
- data/.rspec +1 -1
- data/.rubocop.yml +185 -0
- data/.travis.yml +0 -10
- data/CONTRIBUTING.md +117 -0
- data/Gemfile +5 -2
- data/README.md +18 -11
- data/Rakefile +23 -11
- data/VERSION +1 -1
- data/app/assets/images/audio.png +0 -0
- data/app/assets/images/loading.gif +0 -0
- data/app/assets/images/progressbar.gif +0 -0
- data/app/assets/javascripts/curation_concerns/application.js +2 -8
- data/app/assets/javascripts/curation_concerns/curation_concerns.js +1 -15
- data/app/assets/javascripts/curation_concerns/facet_mine.js +4 -10
- data/app/assets/javascripts/curation_concerns/fileupload.js +6 -0
- data/app/assets/javascripts/curation_concerns/uploader.js +183 -0
- data/app/assets/stylesheets/curation_concerns/_curation_concerns.scss +3 -0
- data/app/assets/stylesheets/curation_concerns/_positioning.scss +6 -0
- data/app/assets/stylesheets/curation_concerns/fileupload/jquery.fileupload-ui.scss +86 -0
- data/app/assets/stylesheets/curation_concerns/fileupload/thumbnail-scaling.css +3 -0
- data/app/assets/stylesheets/curation_concerns/fileupload.scss +48 -0
- data/app/assets/stylesheets/curation_concerns/modules/attributes.scss +10 -0
- data/app/assets/stylesheets/curation_concerns/modules/embargoes.scss +1 -1
- data/app/assets/stylesheets/curation_concerns/modules/forms.scss +0 -10
- data/app/assets/stylesheets/curation_concerns/modules/search_results.scss +7 -8
- data/app/controllers/concerns/curation_concerns/api.rb +77 -0
- data/app/controllers/concerns/curation_concerns/application_controller_behavior.rb +30 -12
- data/app/controllers/concerns/curation_concerns/catalog_controller.rb +9 -276
- data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +51 -40
- data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +60 -30
- data/app/controllers/concerns/curation_concerns/download_behavior.rb +51 -37
- data/app/controllers/concerns/curation_concerns/embargoes_controller_behavior.rb +29 -29
- data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +198 -0
- data/app/controllers/concerns/curation_concerns/leases_controller_behavior.rb +27 -20
- data/app/controllers/concerns/curation_concerns/manages_embargoes.rb +2 -7
- data/app/controllers/concerns/curation_concerns/parent_container.rb +20 -4
- data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +48 -0
- data/app/controllers/concerns/curation_concerns/single_use_links_viewer_controller_behavior.rb +75 -0
- data/app/controllers/concerns/curation_concerns/themed_layout_controller.rb +0 -1
- data/app/controllers/concerns/curation_concerns/upload_sets_controller_behavior.rb +38 -0
- data/app/controllers/concerns/curation_concerns/welcome_controller_behavior.rb +8 -0
- data/app/controllers/concerns/curation_concerns/without_namespace.rb +2 -1
- data/app/controllers/curation_concerns/classify_concerns_controller.rb +9 -9
- data/app/controllers/curation_concerns/file_sets_controller.rb +5 -0
- data/app/controllers/curation_concerns/permissions_controller.rb +2 -3
- data/app/controllers/curation_concerns/single_use_links_controller.rb +5 -0
- data/app/controllers/curation_concerns/single_use_links_viewer_controller.rb +21 -0
- data/app/controllers/downloads_controller.rb +0 -1
- data/app/controllers/embargoes_controller.rb +0 -2
- data/app/controllers/leases_controller.rb +0 -2
- data/app/controllers/registrations_controller.rb +1 -2
- data/app/controllers/upload_sets_controller.rb +3 -0
- data/app/controllers/welcome_controller.rb +3 -0
- data/app/forms/curation_concerns/forms/collection_edit_form.rb +18 -2
- data/app/forms/curation_concerns/forms/file_set_edit_form.rb +15 -0
- data/app/forms/curation_concerns/forms/work_form.rb +57 -0
- data/app/helpers/curation_concerns/ability_helper.rb +24 -24
- data/app/helpers/curation_concerns/catalog_helper.rb +9 -8
- data/app/helpers/curation_concerns/collections_helper.rb +9 -12
- data/app/helpers/curation_concerns/embargo_helper.rb +0 -2
- data/app/helpers/curation_concerns/file_set_helper.rb +31 -0
- data/app/helpers/curation_concerns/lease_helper.rb +0 -3
- data/app/helpers/curation_concerns/main_app_helpers.rb +1 -3
- data/app/helpers/curation_concerns/render_constraints_helper.rb +5 -5
- data/app/helpers/curation_concerns/search_paths_helper.rb +5 -7
- data/app/helpers/curation_concerns/title_helper.rb +3 -7
- data/app/helpers/curation_concerns/url_helper.rb +4 -6
- data/app/inputs/multifile_input.rb +8 -0
- data/app/jobs/visibility_copy_job.rb +22 -0
- data/app/presenters/curation_concerns/collection_presenter.rb +14 -32
- data/app/presenters/curation_concerns/embargo_presenter.rb +26 -0
- data/app/presenters/curation_concerns/file_set_presenter.rb +34 -0
- data/app/presenters/curation_concerns/lease_presenter.rb +30 -0
- data/app/presenters/curation_concerns/model_proxy.rb +27 -0
- data/app/presenters/curation_concerns/permission_badge.rb +61 -0
- data/app/presenters/curation_concerns/presenter_factory.rb +45 -0
- data/app/presenters/curation_concerns/presents_attributes.rb +25 -0
- data/app/presenters/curation_concerns/version_list_presenter.rb +18 -0
- data/app/presenters/curation_concerns/version_presenter.rb +27 -0
- data/app/presenters/curation_concerns/work_show_presenter.rb +33 -0
- data/app/renderers/curation_concerns/attribute_renderer.rb +75 -0
- data/app/search_builders/curation_concerns/deactivated_embargo_search_builder.rb +10 -0
- data/app/search_builders/curation_concerns/deactivated_lease_search_builder.rb +10 -0
- data/app/search_builders/curation_concerns/embargo_search_builder.rb +23 -0
- data/app/search_builders/curation_concerns/expired_embargo_search_builder.rb +11 -0
- data/app/search_builders/curation_concerns/expired_lease_search_builder.rb +11 -0
- data/app/search_builders/curation_concerns/lease_search_builder.rb +23 -0
- data/app/search_builders/curation_concerns/search_builder.rb +10 -16
- data/app/services/curation_concerns/curation_concern.rb +0 -5
- data/app/services/curation_concerns/embargo_service.rb +26 -4
- data/app/services/curation_concerns/lease_service.rb +14 -5
- data/app/services/curation_concerns/parent_service.rb +19 -0
- data/app/services/curation_concerns/restriction_service.rb +24 -0
- data/app/services/rights_service.rb +14 -0
- data/app/views/catalog/_action_menu_partials/_collection.html.erb +1 -1
- data/app/views/catalog/_action_menu_partials/_default.html.erb +5 -3
- data/app/views/catalog/_document_list.html.erb +1 -1
- data/app/views/catalog/index.html.erb +1 -35
- data/app/views/collections/_edit_descriptions.html.erb +3 -4
- data/app/views/collections/_form.html.erb +1 -1
- data/app/views/collections/_form_permission.html.erb +1 -1
- data/app/views/collections/_search_form.html.erb +10 -0
- data/app/views/collections/_show_actions.html.erb +3 -3
- data/app/views/collections/_sort_and_per_page.html.erb +2 -2
- data/app/views/collections/show.html.erb +6 -6
- data/app/views/curation_concerns/base/_attribute_rows.html.erb +7 -0
- data/app/views/curation_concerns/base/_attributes.html.erb +6 -13
- data/app/views/curation_concerns/base/_form.html.erb +4 -5
- data/app/views/curation_concerns/base/_form_descriptive_fields.erb +2 -4
- data/app/views/curation_concerns/base/_form_files_and_links.html.erb +3 -5
- data/app/views/curation_concerns/base/_form_permission.html.erb +13 -26
- data/app/views/curation_concerns/base/_form_permission_note.html.erb +15 -0
- data/app/views/curation_concerns/base/_form_permission_under_embargo.html.erb +2 -2
- data/app/views/curation_concerns/base/_form_permission_under_lease.html.erb +2 -2
- data/app/views/curation_concerns/base/_form_representative_image.html.erb +16 -4
- data/app/views/curation_concerns/base/_form_rights.html.erb +17 -0
- data/app/views/curation_concerns/base/_form_supplementary_fields.html.erb +4 -9
- data/app/views/curation_concerns/base/_related_files.html.erb +4 -4
- data/app/views/curation_concerns/base/_representative_media.html.erb +2 -4
- data/app/views/curation_concerns/base/_versioning.html.erb +23 -0
- data/app/views/curation_concerns/base/show.html.erb +13 -10
- data/app/views/curation_concerns/base/show.json.jbuilder +1 -0
- data/app/views/curation_concerns/base/versions.html.erb +6 -0
- data/app/views/curation_concerns/file_sets/_actions.html.erb +16 -0
- data/app/views/curation_concerns/file_sets/_file_set.html.erb +12 -0
- data/app/views/curation_concerns/{generic_files → file_sets}/_form.html.erb +7 -7
- data/app/views/curation_concerns/file_sets/_multiple_upload.html.erb +3 -0
- data/app/views/curation_concerns/{generic_files → file_sets}/edit.html.erb +0 -0
- data/app/views/curation_concerns/file_sets/jq_upload.json.jbuilder +8 -0
- data/app/views/curation_concerns/file_sets/media_display/_audio.html.erb +6 -0
- data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +4 -0
- data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +8 -0
- data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +7 -0
- data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +7 -0
- data/app/views/curation_concerns/file_sets/media_display/_video.html.erb +6 -0
- data/app/views/curation_concerns/file_sets/show.html.erb +15 -0
- data/app/views/curation_concerns/file_sets/show.json.jbuilder +1 -0
- data/app/views/curation_concerns/file_sets/upload/_alerts.html.erb +19 -0
- data/app/views/curation_concerns/file_sets/upload/_form.html.erb +6 -0
- data/app/views/curation_concerns/file_sets/upload/_form_fields.html.erb +45 -0
- data/app/views/curation_concerns/file_sets/upload/_script_templates.html.erb +61 -0
- data/app/views/curation_concerns/single_use_links/new_download.html.erb +5 -0
- data/app/views/curation_concerns/single_use_links/new_show.html.erb +5 -0
- data/app/views/curation_concerns/single_use_links_viewer/show.html.erb +10 -0
- data/app/views/error/single_use_error.html.erb +19 -0
- data/app/views/layouts/error.html.erb +33 -0
- data/app/views/leases/_list_expired_active_leases.html.erb +6 -1
- data/app/views/records/_rights_modal.html.erb +1 -0
- data/app/views/records/edit_fields/_default.html.erb +5 -0
- data/app/views/records/show_fields/_default.html.erb +6 -0
- data/app/views/shared/_add_content.html.erb +2 -14
- data/app/views/shared/_add_works.html.erb +14 -0
- data/app/views/shared/_my_actions.html.erb +9 -1
- data/app/views/shared/_site_actions.html.erb +1 -1
- data/app/views/shared/_site_search.html.erb +7 -7
- data/app/views/upload_sets/_edit.js.erb +15 -0
- data/app/views/upload_sets/_metadata.html.erb +50 -0
- data/app/views/upload_sets/_more_metadata.html.erb +7 -0
- data/app/views/upload_sets/edit.html.erb +26 -0
- data/app/views/{catalog/_home_text.html.erb → welcome/index.html.erb} +1 -0
- data/config/initializers/simple_form.rb +14 -0
- data/config/jetty.yml +5 -0
- data/config/locales/curation_concerns.en.yml +25 -4
- data/config/routes.rb +5 -0
- data/curation_concerns.gemspec +4 -6
- data/lib/curation_concerns/callbacks/registry.rb +48 -0
- data/lib/curation_concerns/callbacks.rb +26 -0
- data/lib/curation_concerns/controller_resource.rb +4 -4
- data/lib/curation_concerns/engine.rb +4 -2
- data/lib/curation_concerns/rails/routes.rb +23 -19
- data/lib/curation_concerns/single_use_error.rb +3 -0
- data/lib/curation_concerns/spec_support.rb +0 -2
- data/lib/curation_concerns/version.rb +1 -1
- data/lib/curation_concerns.rb +1 -2
- data/lib/generators/curation_concerns/install_generator.rb +34 -30
- data/lib/generators/curation_concerns/templates/catalog_controller.rb +236 -0
- data/lib/generators/curation_concerns/templates/config/authorities/rights.yml +19 -0
- data/lib/generators/curation_concerns/templates/{curation_concerns.css.scss → curation_concerns.scss} +0 -0
- data/lib/generators/curation_concerns/work/templates/actor_spec.rb.erb +1 -1
- data/lib/generators/curation_concerns/work/templates/controller_spec.rb.erb +1 -1
- data/lib/generators/curation_concerns/work/templates/form.rb.erb +8 -0
- data/lib/generators/curation_concerns/work/templates/form_spec.rb.erb +10 -0
- data/lib/generators/curation_concerns/work/templates/model.rb.erb +2 -2
- data/lib/generators/curation_concerns/work/templates/model_spec.rb.erb +1 -1
- data/lib/generators/curation_concerns/work/work_generator.rb +31 -26
- data/spec/abilities/collection_abilities_spec.rb +13 -13
- data/spec/abilities/embargo_and_lease_ability_spec.rb +23 -0
- data/spec/abilities/file_set_abilities_spec.rb +67 -0
- data/spec/abilities/generic_work_abilities_spec.rb +12 -12
- data/spec/actors/curation_concerns/embargo_actor_spec.rb +38 -0
- data/spec/actors/curation_concerns/file_set_actor_spec.rb +180 -0
- data/spec/actors/curation_concerns/lease_actor_spec.rb +39 -0
- data/spec/actors/curation_concerns/manages_embargoes_actor_spec.rb +44 -38
- data/spec/actors/curation_concerns/work_actor_spec.rb +121 -63
- data/spec/controllers/catalog_controller_spec.rb +30 -32
- data/spec/controllers/curation_concerns/classify_concerns_controller_spec.rb +2 -3
- data/spec/controllers/curation_concerns/collections_controller_spec.rb +93 -76
- data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +106 -0
- data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +237 -0
- data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +85 -0
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +84 -72
- data/spec/controllers/curation_concerns/permissions_controller_spec.rb +8 -11
- data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +79 -0
- data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +74 -0
- data/spec/controllers/downloads_controller_spec.rb +49 -24
- data/spec/controllers/embargoes_controller_spec.rb +42 -51
- data/spec/controllers/leases_controller_spec.rb +53 -42
- data/spec/controllers/upload_sets_controller_spec.rb +76 -0
- data/spec/controllers/welcome_controller_spec.rb +12 -0
- data/spec/factories/collections.rb +5 -1
- data/spec/factories/{generic_files.rb → file_sets.rb} +6 -6
- data/spec/factories/generic_works.rb +5 -6
- data/spec/factories/users.rb +2 -4
- data/spec/features/add_file_spec.rb +11 -12
- data/spec/features/catalog_search_spec.rb +43 -0
- data/spec/features/collection_spec.rb +61 -46
- data/spec/features/create_work_spec.rb +26 -19
- data/spec/features/embargo_spec.rb +13 -12
- data/spec/features/lease_spec.rb +15 -16
- data/spec/features/update_file_spec.rb +11 -13
- data/spec/features/work_generator_spec.rb +34 -26
- data/spec/{helpers/curation_concerns/.keep → fixtures/empty_file.txt} +0 -0
- data/spec/fixtures/test.pdf +0 -0
- data/spec/forms/collection_edit_form_spec.rb +53 -9
- data/spec/forms/file_set_edit_form_spec.rb +53 -0
- data/spec/forms/work_form_spec.rb +54 -0
- data/spec/helpers/catalog_helper_spec.rb +9 -10
- data/spec/helpers/configuration_helper_spec.rb +1 -2
- data/spec/helpers/curation_concerns/collections_helper_spec.rb +8 -9
- data/spec/helpers/curation_concerns/file_set_helper_spec.rb +61 -0
- data/spec/helpers/render_constraints_helper_spec.rb +4 -4
- data/spec/helpers/url_helper_spec.rb +8 -7
- data/spec/indexers/collection_indexer_spec.rb +14 -0
- data/spec/indexers/file_set_indexing_service_spec.rb +69 -0
- data/spec/indexers/generic_work_indexing_service_spec.rb +22 -0
- data/spec/inputs/multifile_input_spec.rb +32 -0
- data/spec/jobs/active_fedora_id_based_job_spec.rb +10 -8
- data/spec/jobs/audit_job_spec.rb +28 -20
- data/spec/jobs/characterize_job_spec.rb +10 -15
- data/spec/jobs/create_derivatives_job_spec.rb +11 -9
- data/spec/jobs/import_url_job_spec.rb +14 -21
- data/spec/jobs/ingest_file_job_spec.rb +45 -0
- data/spec/jobs/ingest_local_file_job_spec.rb +13 -15
- data/spec/jobs/upload_set_update_job_spec.rb +30 -0
- data/spec/jobs/visibility_copy_job_spec.rb +61 -0
- data/spec/lib/curation_concerns/callbacks/registry_spec.rb +54 -0
- data/spec/lib/curation_concerns/callbacks_spec.rb +27 -0
- data/spec/lib/curation_concerns/messages_spec.rb +29 -30
- data/spec/lib/curation_concerns/readable_permissions_spec.rb +18 -20
- data/spec/lib/curation_concerns/writable_permissions_spec.rb +2 -4
- data/spec/matchers/metadata_field_matchers.rb +1 -1
- data/spec/matchers/response_matchers.rb +2 -2
- data/spec/matchers.rb +3 -2
- data/spec/models/checksum_audit_log_spec.rb +37 -32
- data/spec/models/curation_concerns/collection_behavior_spec.rb +50 -37
- data/spec/models/curation_concerns/file_set/derivatives_spec.rb +84 -0
- data/spec/models/curation_concerns/work_behavior_spec.rb +53 -0
- data/spec/models/file_set_spec.rb +601 -0
- data/spec/models/generic_work_spec.rb +15 -14
- data/spec/models/single_use_link_spec.rb +69 -0
- data/spec/models/solr_document_spec.rb +67 -0
- data/spec/models/upload_set_spec.rb +39 -0
- data/spec/models/user_spec.rb +7 -8
- data/spec/presenters/curation_concerns/collection_presenter_spec.rb +8 -24
- data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +59 -0
- data/spec/presenters/curation_concerns/permission_badge_spec.rb +29 -0
- data/spec/presenters/curation_concerns/presenter_factory_spec.rb +29 -0
- data/spec/presenters/curation_concerns/version_list_presenter_spec.rb +32 -0
- data/spec/presenters/curation_concerns/version_presenter_spec.rb +51 -0
- data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +35 -0
- data/spec/presenters/embargo_presenter_spec.rb +48 -0
- data/spec/presenters/lease_presenter_spec.rb +48 -0
- data/spec/renderers/curation_concerns/attribute_renderer_spec.rb +14 -0
- data/spec/routing/curation_concerns/routes_spec.rb +38 -12
- data/spec/routing/route_spec.rb +38 -39
- data/spec/search_builders/curation_concerns/embargo_search_builder_spec.rb +17 -0
- data/spec/search_builders/curation_concerns/lease_search_builder_spec.rb +17 -0
- data/spec/search_builders/curation_concerns/search_builder_spec.rb +60 -0
- data/spec/services/derivative_path_spec.rb +16 -0
- data/spec/services/embargo_service_spec.rb +15 -14
- data/spec/services/file_set_audit_service_spec.rb +71 -0
- data/spec/services/lease_service_spec.rb +13 -13
- data/spec/services/lock_manager_spec.rb +12 -0
- data/spec/services/parent_service_spec.rb +13 -0
- data/spec/services/persist_derivatives_spec.rb +24 -0
- data/spec/services/persist_directly_contained_output_file_service_spec.rb +14 -0
- data/spec/services/repository_audit_service_spec.rb +8 -7
- data/spec/services/rights_service_spec.rb +17 -0
- data/spec/services/thumbnail_path_service_spec.rb +43 -0
- data/spec/services/versioning_service_spec.rb +8 -9
- data/spec/spec_helper.rb +21 -13
- data/spec/support/curation_concerns/factory_helpers.rb +1 -0
- data/spec/support/features/fixture_file_upload.rb +3 -1
- data/spec/support/features/session_helpers.rb +3 -4
- data/spec/support/features.rb +1 -4
- data/spec/support/input_support.rb +11 -0
- data/spec/support/matchers/api_responses.rb +22 -0
- data/spec/support/shared/shared_examples_has_dc_metadata.rb +0 -2
- data/spec/support/shared/shared_examples_is_embargoable.rb +1 -3
- data/spec/support/shared/shared_examples_with_access_rights.rb +13 -16
- data/spec/tasks/rake_spec.rb +9 -11
- data/spec/test_app_templates/Gemfile.extra +4 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +3 -35
- data/spec/views/catalog/index.html.erb_spec.rb +7 -10
- data/spec/views/curation_concerns/base/_attributes.html.erb_spec.rb +9 -6
- data/spec/views/curation_concerns/base/_form_permission.html.erb_spec.rb +13 -0
- data/spec/views/curation_concerns/base/show.html.erb_spec.rb +35 -15
- data/spec/views/curation_concerns/base/show.json.jbuilder_spec.rb +21 -0
- data/spec/views/curation_concerns/file_sets/_file_set.html.erb_spec.rb +37 -0
- data/spec/views/curation_concerns/file_sets/show.json.jbuilder_spec.rb +21 -0
- data/spec/views/curation_concerns/permissions/confirm.html.erb_spec.rb +6 -6
- data/spec/views/error/single_use_error.html.erb_spec.rb +8 -0
- data/spec/views/layouts/error.html.erb_spec.rb +8 -0
- data/spec/views/shared/_add_content.html.erb_spec.rb +33 -20
- data/spec/views/shared/_my_actions.html.erb_spec.rb +18 -6
- data/spec/views/single_use_links/new_download.html.erb_spec.rb +29 -0
- data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +32 -0
- data/tasks/jetty.rake +1 -1
- data/vendor/assets/javascrips/fileupload/jquery.fileupload-process.js +175 -0
- data/vendor/assets/javascrips/fileupload/jquery.fileupload-ui.js +710 -0
- data/vendor/assets/javascrips/fileupload/jquery.fileupload-validate.js +122 -0
- data/vendor/assets/javascrips/fileupload/jquery.fileupload.js +1477 -0
- data/vendor/assets/javascrips/fileupload/locale.js +27 -0
- data/vendor/assets/javascrips/fileupload/tmpl.js +87 -0
- metadata +242 -213
- data/app/assets/javascripts/curation_concerns/help_modal.js +0 -36
- data/app/assets/javascripts/curation_concerns/link_groups.js.coffee +0 -123
- data/app/assets/javascripts/curation_concerns/link_users.js.coffee +0 -126
- data/app/assets/javascripts/curation_concerns/proxy_rights.js.coffee +0 -95
- data/app/assets/javascripts/curation_concerns/proxy_submission.js +0 -23
- data/app/assets/javascripts/curation_concerns/select_works.js.coffee +0 -20
- data/app/controllers/catalog_controller.rb +0 -3
- data/app/controllers/concerns/curation_concerns/generic_files_controller_behavior.rb +0 -149
- data/app/controllers/curation_concerns/generic_files_controller.rb +0 -13
- data/app/datastreams/curation_concerns/generic_work_rdf_properties.rb +0 -57
- data/app/datastreams/generic_work_metadata.rb +0 -3
- data/app/forms/curation_concerns/forms/generic_file_edit_form.rb +0 -15
- data/app/forms/curation_concerns/forms/generic_work_edit_form.rb +0 -9
- data/app/helpers/curation_concerns/attribute_helper.rb +0 -67
- data/app/helpers/curation_concerns/generic_file_helper.rb +0 -19
- data/app/helpers/curation_concerns/thumbnail_helper.rb +0 -11
- data/app/presenters/curation_concerns/generic_file_presenter.rb +0 -14
- data/app/presenters/curation_concerns/generic_work_presenter.rb +0 -13
- data/app/views/catalog/_index_default.html.erb +0 -17
- data/app/views/collections/_form_representative_image.html.erb +0 -13
- data/app/views/collections/_identifier_and_action.html.erb +0 -15
- data/app/views/curation_concerns/base/_form_content_license.html.erb +0 -16
- data/app/views/curation_concerns/base/_form_editors.html.erb +0 -15
- data/app/views/curation_concerns/generic_files/_actions.html.erb +0 -16
- data/app/views/curation_concerns/generic_files/_generic_file.html.erb +0 -12
- data/app/views/curation_concerns/generic_files/_media_display.html.erb +0 -19
- data/app/views/curation_concerns/generic_files/jq_upload.json.jbuilder +0 -8
- data/app/views/curation_concerns/generic_files/show.html.erb +0 -15
- data/app/workers/visibility_copy_worker.rb +0 -30
- data/curation_concerns-models/.gitignore +0 -17
- data/curation_concerns-models/Gemfile +0 -4
- data/curation_concerns-models/LICENSE.md +0 -177
- data/curation_concerns-models/README.md +0 -42
- data/curation_concerns-models/Rakefile +0 -1
- data/curation_concerns-models/app/actors/concerns/curation_concerns/manages_embargoes_actor.rb +0 -99
- data/curation_concerns-models/app/actors/curation_concerns/base_actor.rb +0 -90
- data/curation_concerns-models/app/actors/curation_concerns/generic_file_actor.rb +0 -150
- data/curation_concerns-models/app/actors/curation_concerns/work_actor_behavior.rb +0 -88
- data/curation_concerns-models/app/jobs/active_fedora_id_based_job.rb +0 -22
- data/curation_concerns-models/app/jobs/active_fedora_pid_based_job.rb +0 -6
- data/curation_concerns-models/app/jobs/audit_job.rb +0 -58
- data/curation_concerns-models/app/jobs/characterize_job.rb +0 -11
- data/curation_concerns-models/app/jobs/copy_permissions_job.rb +0 -24
- data/curation_concerns-models/app/jobs/create_derivatives_job.rb +0 -15
- data/curation_concerns-models/app/jobs/import_url_job.rb +0 -56
- data/curation_concerns-models/app/jobs/ingest_local_file_job.rb +0 -48
- data/curation_concerns-models/app/jobs/resolrize_job.rb +0 -9
- data/curation_concerns-models/app/models/checksum_audit_log.rb +0 -21
- data/curation_concerns-models/app/models/concerns/curation_concerns/ability.rb +0 -34
- data/curation_concerns-models/app/models/concerns/curation_concerns/basic_metadata.rb +0 -87
- data/curation_concerns-models/app/models/concerns/curation_concerns/collection_behavior.rb +0 -47
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/belongs_to_works.rb +0 -53
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/characterization.rb +0 -89
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/content.rb +0 -8
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/export.rb +0 -343
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/full_text_indexing.rb +0 -12
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/indexing.rb +0 -14
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/versions.rb +0 -16
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file.rb +0 -5
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file_behavior.rb +0 -44
- data/curation_concerns-models/app/models/concerns/curation_concerns/generic_work_behavior.rb +0 -38
- data/curation_concerns-models/app/models/concerns/curation_concerns/has_representative.rb +0 -14
- data/curation_concerns-models/app/models/concerns/curation_concerns/human_readable_type.rb +0 -23
- data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/readable.rb +0 -19
- data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/writable.rb +0 -75
- data/curation_concerns-models/app/models/concerns/curation_concerns/permissions.rb +0 -7
- data/curation_concerns-models/app/models/concerns/curation_concerns/serializers.rb +0 -15
- data/curation_concerns-models/app/models/concerns/curation_concerns/solr_document_behavior.rb +0 -135
- data/curation_concerns-models/app/models/concerns/curation_concerns/user.rb +0 -65
- data/curation_concerns-models/app/models/concerns/curation_concerns/with_basic_metadata.rb +0 -98
- data/curation_concerns-models/app/models/concerns/curation_concerns/with_generic_files.rb +0 -29
- data/curation_concerns-models/app/models/curation_concerns/classify_concern.rb +0 -47
- data/curation_concerns-models/app/models/curation_concerns/quick_classification_query.rb +0 -31
- data/curation_concerns-models/app/models/datastreams/fits_datastream.rb +0 -148
- data/curation_concerns-models/app/models/version_committer.rb +0 -2
- data/curation_concerns-models/app/services/curation_concerns/characterization_service.rb +0 -71
- data/curation_concerns-models/app/services/curation_concerns/full_text_extraction_service.rb +0 -38
- data/curation_concerns-models/app/services/curation_concerns/generic_file_audit_service.rb +0 -85
- data/curation_concerns-models/app/services/curation_concerns/generic_file_indexing_service.rb +0 -14
- data/curation_concerns-models/app/services/curation_concerns/generic_work_indexing_service.rb +0 -16
- data/curation_concerns-models/app/services/curation_concerns/noid.rb +0 -23
- data/curation_concerns-models/app/services/curation_concerns/repository_audit_service.rb +0 -9
- data/curation_concerns-models/app/services/curation_concerns/versioning_service.rb +0 -27
- data/curation_concerns-models/config/locales/curation_concerns.en.yml +0 -6
- data/curation_concerns-models/curation_concerns-models.gemspec +0 -34
- data/curation_concerns-models/lib/curation_concerns/messages.rb +0 -66
- data/curation_concerns-models/lib/curation_concerns/models/engine.rb +0 -61
- data/curation_concerns-models/lib/curation_concerns/models/resque.rb +0 -36
- data/curation_concerns-models/lib/curation_concerns/models/utils.rb +0 -22
- data/curation_concerns-models/lib/curation_concerns/models/version.rb +0 -5
- data/curation_concerns-models/lib/curation_concerns/models.rb +0 -32
- data/curation_concerns-models/lib/generators/curation_concerns/models/abstract_migration_generator.rb +0 -30
- data/curation_concerns-models/lib/generators/curation_concerns/models/clamav_generator.rb +0 -19
- data/curation_concerns-models/lib/generators/curation_concerns/models/fulltext_generator.rb +0 -28
- data/curation_concerns-models/lib/generators/curation_concerns/models/install_generator.rb +0 -70
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/collection.rb +0 -4
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/generic_file.rb +0 -4
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/clamav.rb +0 -1
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/curation_concerns.rb +0 -123
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/mime_types.rb +0 -6
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis.yml +0 -9
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis_config.rb +0 -32
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque-pool.yml +0 -1
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_admin.rb +0 -10
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_config.rb +0 -5
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_checksum_audit_logs.rb +0 -19
- data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_version_committers.rb +0 -15
- data/curation_concerns-models/lib/tasks/curation_concerns-models_tasks.rake +0 -75
- data/curation_concerns-models/lib/tasks/migrate.rake +0 -13
- data/curation_concerns-models/lib/tasks/resque.rake +0 -13
- data/curation_concerns-models/lib/tasks/solr_reindex.rake +0 -8
- data/lib/curation_concerns/configuration.rb +0 -74
- data/lib/generators/curation_concerns/templates/curation_concerns_config.rb +0 -2
- data/solr_conf/conf/solrconfig.xml +0 -223
- data/spec/abilities/generic_file_abilities_spec.rb +0 -62
- data/spec/actors/curation_concerns/generic_file_actor_spec.rb +0 -116
- data/spec/controllers/curation_concerns/generic_files_controller_spec.rb +0 -251
- data/spec/forms/generic_file_edit_form_spec.rb +0 -33
- data/spec/helpers/thumbnail_helper_spec.rb +0 -21
- data/spec/jobs/copy_permissions_job_spec.rb +0 -49
- data/spec/jobs/curation_concerns_resque_queue_spec.rb +0 -49
- data/spec/models/curation_concerns/generic_file/derivatives_spec.rb +0 -88
- data/spec/models/curation_concerns/generic_work_behavior_spec.rb +0 -35
- data/spec/models/fits_datastream_spec.rb +0 -127
- data/spec/models/generic_file_spec.rb +0 -619
- data/spec/presenters/curation_concerns/generic_file_presenter_spec.rb +0 -16
- data/spec/services/characterization_service_spec.rb +0 -30
- data/spec/services/full_text_extraction_service_spec.rb +0 -5
- data/spec/services/generic_file_audit_service_spec.rb +0 -71
- data/spec/services/generic_file_indexing_service_spec.rb +0 -57
- data/spec/services/generic_work_indexing_service_spec.rb +0 -18
- data/spec/workers/visibility_copy_worker_spec.rb +0 -70
- data/vendor/assets/javascripts/handlebars.js +0 -2278
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.autocomplete.js +0 -602
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.core.js +0 -356
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +0 -50
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +0 -1276
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.menu.js +0 -610
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +0 -498
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.widget.js +0 -528
- data/vendor/assets/javascripts/jquery.tokeninput.js +0 -1061
- data/vendor/assets/stylesheets/jquery-ui-lightness.css +0 -474
- data/vendor/assets/stylesheets/token-input-facebook.css +0 -122
- data/vendor/assets/stylesheets/token-input-mac.css +0 -204
- data/vendor/assets/stylesheets/token-input.css +0 -127
|
@@ -10,271 +10,15 @@ module CurationConcerns::CatalogController
|
|
|
10
10
|
with_themed_layout 'catalog'
|
|
11
11
|
helper CurationConcerns::CatalogHelper
|
|
12
12
|
# These before_filters apply the hydra access controls
|
|
13
|
-
|
|
13
|
+
before_action :enforce_show_permissions, only: :show
|
|
14
14
|
# This applies appropriate access controls to all solr queries
|
|
15
15
|
CatalogController.search_params_logic += [:add_access_controls_to_solr_params]
|
|
16
16
|
self.search_params_logic += [:filter_models]
|
|
17
|
-
self.search_params_logic += [:only_generic_files_and_curation_concerns]
|
|
18
|
-
|
|
19
|
-
configure_blacklight do |config|
|
|
20
|
-
|
|
21
|
-
config.search_builder_class = CurationConcerns::SearchBuilder
|
|
22
|
-
## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params
|
|
23
|
-
config.default_solr_params = {
|
|
24
|
-
qf: search_config['qf'],
|
|
25
|
-
qt: search_config['qt'],
|
|
26
|
-
rows: search_config['rows']
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
# solr field configuration for search results/index views
|
|
30
|
-
config.index.title_field = solr_name("title", :stored_searchable)
|
|
31
|
-
config.index.display_type_field = solr_name("has_model", :symbol)
|
|
32
|
-
|
|
33
|
-
config.index.thumbnail_method = :thumbnail_tag
|
|
34
|
-
config.index.partials.delete(:thumbnail) # we render this inside _index_default.html.erb
|
|
35
|
-
|
|
36
|
-
# solr field configuration for document/show views
|
|
37
|
-
# config.show.title_field = solr_name("title", :stored_searchable)
|
|
38
|
-
# config.show.display_type_field = solr_name("has_model", :symbol)
|
|
39
|
-
|
|
40
|
-
# solr fields that will be treated as facets by the blacklight application
|
|
41
|
-
# The ordering of the field names is the order of the display
|
|
42
|
-
config.add_facet_field solr_name("human_readable_type", :facetable)
|
|
43
|
-
config.add_facet_field solr_name('creator', :facetable), limit: 5
|
|
44
|
-
config.add_facet_field solr_name("tag", :facetable), limit: 5
|
|
45
|
-
config.add_facet_field solr_name("subject", :facetable), limit: 5
|
|
46
|
-
config.add_facet_field solr_name("language", :facetable), limit: 5
|
|
47
|
-
config.add_facet_field solr_name("based_near", :facetable), limit: 5
|
|
48
|
-
config.add_facet_field solr_name("publisher", :facetable), limit: 5
|
|
49
|
-
config.add_facet_field solr_name("file_format", :facetable), limit: 5
|
|
50
|
-
config.add_facet_field "generic_type_sim", show: false, single: true
|
|
51
|
-
|
|
52
|
-
# Have BL send all facet field names to Solr, which has been the default
|
|
53
|
-
# previously. Simply remove these lines if you'd rather use Solr request
|
|
54
|
-
# handler defaults, or have no facets.
|
|
55
|
-
config.add_facet_fields_to_solr_request!
|
|
56
|
-
|
|
57
|
-
# solr fields to be displayed in the index (search results) view
|
|
58
|
-
# The ordering of the field names is the order of the display
|
|
59
|
-
config.add_index_field solr_name("description", :stored_searchable)
|
|
60
|
-
config.add_index_field solr_name("tag", :stored_searchable)
|
|
61
|
-
config.add_index_field solr_name("subject", :stored_searchable)
|
|
62
|
-
config.add_index_field solr_name("creator", :stored_searchable)
|
|
63
|
-
config.add_index_field solr_name("contributor", :stored_searchable)
|
|
64
|
-
config.add_index_field solr_name("publisher", :stored_searchable)
|
|
65
|
-
config.add_index_field solr_name("based_near", :stored_searchable)
|
|
66
|
-
config.add_index_field solr_name("language", :stored_searchable)
|
|
67
|
-
config.add_index_field solr_name("date_uploaded", :stored_sortable)
|
|
68
|
-
config.add_index_field solr_name("date_modified", :stored_sortable)
|
|
69
|
-
config.add_index_field solr_name("date_created", :stored_searchable)
|
|
70
|
-
config.add_index_field solr_name("rights", :stored_searchable)
|
|
71
|
-
config.add_index_field solr_name("human_readable_type", :stored_searchable)
|
|
72
|
-
config.add_index_field solr_name("format", :stored_searchable)
|
|
73
|
-
config.add_index_field solr_name("identifier", :stored_searchable)
|
|
74
|
-
|
|
75
|
-
# solr fields to be displayed in the show (single result) view
|
|
76
|
-
# The ordering of the field names is the order of the display
|
|
77
|
-
config.add_show_field solr_name("title", :stored_searchable)
|
|
78
|
-
config.add_show_field solr_name("description", :stored_searchable)
|
|
79
|
-
config.add_show_field solr_name("tag", :stored_searchable)
|
|
80
|
-
config.add_show_field solr_name("subject", :stored_searchable)
|
|
81
|
-
config.add_show_field solr_name("creator", :stored_searchable)
|
|
82
|
-
config.add_show_field solr_name("contributor", :stored_searchable)
|
|
83
|
-
config.add_show_field solr_name("publisher", :stored_searchable)
|
|
84
|
-
config.add_show_field solr_name("based_near", :stored_searchable)
|
|
85
|
-
config.add_show_field solr_name("language", :stored_searchable)
|
|
86
|
-
config.add_show_field solr_name("date_uploaded", :stored_sortable)
|
|
87
|
-
config.add_show_field solr_name("date_modified", :stored_sortable)
|
|
88
|
-
config.add_show_field solr_name("date_created", :stored_searchable)
|
|
89
|
-
config.add_show_field solr_name("rights", :stored_searchable)
|
|
90
|
-
config.add_show_field solr_name("human_readable_type", :stored_searchable)
|
|
91
|
-
config.add_show_field solr_name("format", :stored_searchable)
|
|
92
|
-
config.add_show_field solr_name("identifier", :stored_searchable)
|
|
93
|
-
|
|
94
|
-
# "fielded" search configuration. Used by pulldown among other places.
|
|
95
|
-
# For supported keys in hash, see rdoc for Blacklight::SearchFields
|
|
96
|
-
#
|
|
97
|
-
# Search fields will inherit the :qt solr request handler from
|
|
98
|
-
# config[:default_solr_parameters], OR can specify a different one
|
|
99
|
-
# with a :qt key/value. Below examples inherit, except for subject
|
|
100
|
-
# that specifies the same :qt as default for our own internal
|
|
101
|
-
# testing purposes.
|
|
102
|
-
#
|
|
103
|
-
# The :key is what will be used to identify this BL search field internally,
|
|
104
|
-
# as well as in URLs -- so changing it after deployment may break bookmarked
|
|
105
|
-
# urls. A display label will be automatically calculated from the :key,
|
|
106
|
-
# or can be specified manually to be different.
|
|
107
|
-
#
|
|
108
|
-
# This one uses all the defaults set by the solr request handler. Which
|
|
109
|
-
# solr request handler? The one set in config[:default_solr_parameters][:qt],
|
|
110
|
-
# since we aren't specifying it otherwise.
|
|
111
|
-
config.add_search_field('all_fields', label: 'All Fields', :include_in_advanced_search => false) do |field|
|
|
112
|
-
title_name = solr_name("title", :stored_searchable, type: :string)
|
|
113
|
-
label_name = solr_name("title", :stored_searchable, type: :string)
|
|
114
|
-
contributor_name = solr_name("contributor", :stored_searchable, type: :string)
|
|
115
|
-
field.solr_parameters = {
|
|
116
|
-
:qf => "#{title_name} #{label_name} file_format_tesim #{contributor_name}",
|
|
117
|
-
:pf => "#{title_name}"
|
|
118
|
-
}
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
# Now we see how to over-ride Solr request handler defaults, in this
|
|
123
|
-
# case for a BL "search field", which is really a dismax aggregate
|
|
124
|
-
# of Solr search fields.
|
|
125
|
-
# creator, title, description, publisher, date_created,
|
|
126
|
-
# subject, language, resource_type, format, identifier, based_near,
|
|
127
|
-
config.add_search_field('contributor') do |field|
|
|
128
|
-
# solr_parameters hash are sent to Solr as ordinary url query params.
|
|
129
|
-
|
|
130
|
-
# :solr_local_parameters will be sent using Solr LocalParams
|
|
131
|
-
# syntax, as eg {! qf=$title_qf }. This is neccesary to use
|
|
132
|
-
# Solr parameter de-referencing like $title_qf.
|
|
133
|
-
# See: http://wiki.apache.org/solr/LocalParams
|
|
134
|
-
solr_name = solr_name("contributor", :stored_searchable, type: :string)
|
|
135
|
-
field.solr_local_parameters = {
|
|
136
|
-
:qf => solr_name,
|
|
137
|
-
:pf => solr_name
|
|
138
|
-
}
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
config.add_search_field('creator') do |field|
|
|
142
|
-
solr_name = solr_name("creator", :stored_searchable, type: :string)
|
|
143
|
-
field.solr_local_parameters = {
|
|
144
|
-
:qf => solr_name,
|
|
145
|
-
:pf => solr_name
|
|
146
|
-
}
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
config.add_search_field('title') do |field|
|
|
150
|
-
solr_name = solr_name("title", :stored_searchable, type: :string)
|
|
151
|
-
field.solr_local_parameters = {
|
|
152
|
-
:qf => solr_name,
|
|
153
|
-
:pf => solr_name
|
|
154
|
-
}
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
config.add_search_field('description') do |field|
|
|
158
|
-
field.label = "Abstract or Summary"
|
|
159
|
-
solr_name = solr_name("description", :stored_searchable, type: :string)
|
|
160
|
-
field.solr_local_parameters = {
|
|
161
|
-
:qf => solr_name,
|
|
162
|
-
:pf => solr_name
|
|
163
|
-
}
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
config.add_search_field('publisher') do |field|
|
|
167
|
-
solr_name = solr_name("publisher", :stored_searchable, type: :string)
|
|
168
|
-
field.solr_local_parameters = {
|
|
169
|
-
:qf => solr_name,
|
|
170
|
-
:pf => solr_name
|
|
171
|
-
}
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
config.add_search_field('date_created') do |field|
|
|
175
|
-
solr_name = solr_name("created", :stored_searchable, type: :string)
|
|
176
|
-
field.solr_local_parameters = {
|
|
177
|
-
:qf => solr_name,
|
|
178
|
-
:pf => solr_name
|
|
179
|
-
}
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
config.add_search_field('subject') do |field|
|
|
183
|
-
solr_name = solr_name("subject", :stored_searchable, type: :string)
|
|
184
|
-
field.solr_local_parameters = {
|
|
185
|
-
:qf => solr_name,
|
|
186
|
-
:pf => solr_name
|
|
187
|
-
}
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
config.add_search_field('language') do |field|
|
|
191
|
-
solr_name = solr_name("language", :stored_searchable, type: :string)
|
|
192
|
-
field.solr_local_parameters = {
|
|
193
|
-
:qf => solr_name,
|
|
194
|
-
:pf => solr_name
|
|
195
|
-
}
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
config.add_search_field('human_readable_type') do |field|
|
|
199
|
-
solr_name = solr_name("human_readable_type", :stored_searchable, type: :string)
|
|
200
|
-
field.solr_local_parameters = {
|
|
201
|
-
:qf => solr_name,
|
|
202
|
-
:pf => solr_name
|
|
203
|
-
}
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
config.add_search_field('format') do |field|
|
|
207
|
-
field.include_in_advanced_search = false
|
|
208
|
-
solr_name = solr_name("format", :stored_searchable, type: :string)
|
|
209
|
-
field.solr_local_parameters = {
|
|
210
|
-
:qf => solr_name,
|
|
211
|
-
:pf => solr_name
|
|
212
|
-
}
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
config.add_search_field('identifier') do |field|
|
|
216
|
-
field.include_in_advanced_search = false
|
|
217
|
-
solr_name = solr_name("id", :stored_searchable, type: :string)
|
|
218
|
-
field.solr_local_parameters = {
|
|
219
|
-
:qf => solr_name,
|
|
220
|
-
:pf => solr_name
|
|
221
|
-
}
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
config.add_search_field('based_near') do |field|
|
|
225
|
-
field.label = "Location"
|
|
226
|
-
solr_name = solr_name("based_near", :stored_searchable, type: :string)
|
|
227
|
-
field.solr_local_parameters = {
|
|
228
|
-
:qf => solr_name,
|
|
229
|
-
:pf => solr_name
|
|
230
|
-
}
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
config.add_search_field('tag') do |field|
|
|
234
|
-
solr_name = solr_name("tag", :stored_searchable, type: :string)
|
|
235
|
-
field.solr_local_parameters = {
|
|
236
|
-
:qf => solr_name,
|
|
237
|
-
:pf => solr_name
|
|
238
|
-
}
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
config.add_search_field('depositor') do |field|
|
|
242
|
-
solr_name = solr_name("depositor", :stored_searchable, type: :string)
|
|
243
|
-
field.solr_local_parameters = {
|
|
244
|
-
:qf => solr_name,
|
|
245
|
-
:pf => solr_name
|
|
246
|
-
}
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
config.add_search_field('rights') do |field|
|
|
250
|
-
solr_name = solr_name("rights", :stored_searchable, type: :string)
|
|
251
|
-
field.solr_local_parameters = {
|
|
252
|
-
:qf => solr_name,
|
|
253
|
-
:pf => solr_name
|
|
254
|
-
}
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
# "sort results by" select (pulldown)
|
|
259
|
-
# label in pulldown is followed by the name of the SOLR field to sort by and
|
|
260
|
-
# whether the sort is ascending or descending (it must be asc or desc
|
|
261
|
-
# except in the relevancy case).
|
|
262
|
-
# label is key, solr field is value
|
|
263
|
-
config.add_sort_field "score desc, #{uploaded_field} desc", label: "relevance \u25BC"
|
|
264
|
-
config.add_sort_field "#{uploaded_field} desc", label: "date uploaded \u25BC"
|
|
265
|
-
config.add_sort_field "#{uploaded_field} asc", label: "date uploaded \u25B2"
|
|
266
|
-
config.add_sort_field "#{modified_field} desc", label: "date modified \u25BC"
|
|
267
|
-
config.add_sort_field "#{modified_field} asc", label: "date modified \u25B2"
|
|
268
|
-
|
|
269
|
-
# If there are more than this many search results, no spelling ("did you
|
|
270
|
-
# mean") suggestion is offered.
|
|
271
|
-
config.spell_max = 5
|
|
272
|
-
end
|
|
273
17
|
end
|
|
274
18
|
|
|
275
19
|
module ClassMethods
|
|
276
|
-
def t
|
|
277
|
-
I18n.translate
|
|
20
|
+
def t(*args)
|
|
21
|
+
I18n.translate(*args)
|
|
278
22
|
end
|
|
279
23
|
|
|
280
24
|
def uploaded_field
|
|
@@ -283,39 +27,28 @@ module CurationConcerns::CatalogController
|
|
|
283
27
|
end
|
|
284
28
|
|
|
285
29
|
def modified_field
|
|
286
|
-
solr_name('date_modified', :stored_sortable
|
|
30
|
+
solr_name('date_modified', :stored_sortable, type: :date)
|
|
287
31
|
end
|
|
288
32
|
|
|
289
33
|
def search_config
|
|
290
|
-
|
|
34
|
+
{ 'qf' => %w(title_tesim name_tesim), 'qt' => 'search', 'rows' => 10 }
|
|
291
35
|
end
|
|
292
36
|
end
|
|
293
37
|
|
|
294
|
-
|
|
295
38
|
protected
|
|
296
39
|
|
|
297
|
-
|
|
298
40
|
# Overriding Blacklight so that the search results can be displayed in a way compatible with
|
|
299
41
|
# tokenInput javascript library. This is used for suggesting "Related Works" to attach.
|
|
300
42
|
def render_search_results_as_json
|
|
301
|
-
{
|
|
43
|
+
{ 'docs' => @response['response']['docs'].map { |solr_doc| serialize_work_from_solr(solr_doc) } }
|
|
302
44
|
end
|
|
303
45
|
|
|
304
46
|
def serialize_work_from_solr(solr_doc)
|
|
305
|
-
title = solr_doc[
|
|
306
|
-
title << " (#{solr_doc[
|
|
47
|
+
title = solr_doc['title_tesim'].first
|
|
48
|
+
title << " (#{solr_doc['human_readable_type_tesim'].first})" if solr_doc['human_readable_type_tesim'].present?
|
|
307
49
|
{
|
|
308
|
-
pid: solr_doc[
|
|
50
|
+
pid: solr_doc['id'],
|
|
309
51
|
title: title
|
|
310
52
|
}
|
|
311
53
|
end
|
|
312
|
-
|
|
313
|
-
def depositor
|
|
314
|
-
#Hydra.config[:permissions][:owner] maybe it should match this config variable, but it doesn't.
|
|
315
|
-
Solrizer.solr_name('depositor', :stored_searchable, type: :string)
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
def sort_field
|
|
319
|
-
"#{Solrizer.solr_name('system_create', :sortable)} desc"
|
|
320
|
-
end
|
|
321
54
|
end
|
|
@@ -2,11 +2,13 @@ module CurationConcerns
|
|
|
2
2
|
module CollectionsControllerBehavior
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
include Hydra::CollectionsControllerBehavior
|
|
5
|
+
include Hydra::Controller::SearchBuilder
|
|
5
6
|
|
|
6
7
|
included do
|
|
7
|
-
|
|
8
|
+
before_action :filter_docs_with_read_access!, except: :show
|
|
8
9
|
self.search_params_logic += [:add_access_controls_to_solr_params, :add_advanced_parse_q_to_solr]
|
|
9
|
-
layout
|
|
10
|
+
layout 'curation_concerns/1_column'
|
|
11
|
+
skip_load_and_authorize_resource only: :show
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
def new
|
|
@@ -20,57 +22,66 @@ module CurationConcerns
|
|
|
20
22
|
end
|
|
21
23
|
|
|
22
24
|
def show
|
|
23
|
-
super
|
|
24
25
|
presenter
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# overriding the method in Hydra::Collections so the search builder can find the collection
|
|
30
|
+
def collection
|
|
31
|
+
action_name == 'show' ? @presenter : @collection
|
|
25
32
|
end
|
|
26
33
|
|
|
27
34
|
protected
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
def filter_docs_with_read_access!
|
|
37
|
+
super
|
|
38
|
+
flash.delete(:notice) if flash.notice == 'Select something first'
|
|
39
|
+
end
|
|
32
40
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
def presenter
|
|
42
|
+
@presenter ||= begin
|
|
43
|
+
_, document_list = search_results(params, self.class.search_params_logic + [:find_one])
|
|
44
|
+
curation_concern = document_list.first
|
|
45
|
+
raise CanCan::AccessDenied unless curation_concern
|
|
46
|
+
presenter_class.new(curation_concern, current_ability)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
36
49
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
def presenter_class
|
|
51
|
+
CurationConcerns::CollectionPresenter
|
|
52
|
+
end
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
contributor: [], creator: [], publisher: [], date_created: [], subject: [],
|
|
45
|
-
language: [], rights: [], resource_type: [], identifier: [], based_near: [],
|
|
46
|
-
tag: [], related_url: [])
|
|
47
|
-
)
|
|
48
|
-
end
|
|
54
|
+
def collection_member_search_builder_class
|
|
55
|
+
CurationConcerns::SearchBuilder
|
|
56
|
+
end
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
super
|
|
54
|
-
end
|
|
58
|
+
def collection_params
|
|
59
|
+
form_class.model_attributes(params[:collection])
|
|
60
|
+
end
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
format.json { render json: {id: id}, status: :destroyed, location: @collection }
|
|
62
|
+
def query_collection_members
|
|
63
|
+
params[:q] = params[:cq]
|
|
64
|
+
super
|
|
60
65
|
end
|
|
61
|
-
end
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
def after_destroy(id)
|
|
68
|
+
respond_to do |format|
|
|
69
|
+
format.html { redirect_to collections_path, notice: 'Collection was successfully deleted.' }
|
|
70
|
+
format.json { render json: { id: id }, status: :destroyed, location: @collection }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
66
73
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
def form
|
|
75
|
+
@form ||= form_class.new(@collection)
|
|
76
|
+
end
|
|
70
77
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
def form_class
|
|
79
|
+
CurationConcerns::Forms::CollectionEditForm
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Include 'catalog' and 'curation_concerns/base' in the search path for views
|
|
83
|
+
def _prefixes
|
|
84
|
+
@_prefixes ||= super + ['catalog', 'curation_concerns/base']
|
|
85
|
+
end
|
|
75
86
|
end
|
|
76
87
|
end
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
module CurationConcerns::CurationConcernController
|
|
2
2
|
extend ActiveSupport::Concern
|
|
3
|
-
include Blacklight::
|
|
3
|
+
include Blacklight::Base
|
|
4
|
+
include Hydra::Controller::SearchBuilder
|
|
4
5
|
|
|
5
6
|
included do
|
|
7
|
+
copy_blacklight_config_from(CatalogController)
|
|
6
8
|
include CurationConcerns::ThemedLayoutController
|
|
7
9
|
with_themed_layout '1_column'
|
|
8
10
|
helper CurationConcerns::AbilityHelper
|
|
@@ -10,13 +12,11 @@ module CurationConcerns::CurationConcernController
|
|
|
10
12
|
class_attribute :curation_concern_type
|
|
11
13
|
attr_accessor :curation_concern
|
|
12
14
|
helper_method :curation_concern
|
|
13
|
-
|
|
14
|
-
respond_to :html
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
module ClassMethods
|
|
18
18
|
def set_curation_concern_type(curation_concern_type)
|
|
19
|
-
load_and_authorize_resource class: curation_concern_type, instance_name: :curation_concern
|
|
19
|
+
load_and_authorize_resource class: curation_concern_type, instance_name: :curation_concern, except: :show
|
|
20
20
|
self.curation_concern_type = curation_concern_type
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -34,16 +34,49 @@ module CurationConcerns::CurationConcernController
|
|
|
34
34
|
after_create_response
|
|
35
35
|
else
|
|
36
36
|
setup_form
|
|
37
|
-
|
|
37
|
+
respond_to do |wants|
|
|
38
38
|
wants.html { render 'new', status: :unprocessable_entity }
|
|
39
|
+
wants.json { render_json_response(response_type: :unprocessable_entity, options: { errors: curation_concern.errors }) }
|
|
39
40
|
end
|
|
40
41
|
end
|
|
41
42
|
end
|
|
42
43
|
|
|
44
|
+
# Finds a solr document matching the id and sets @presenter
|
|
45
|
+
# @raises CanCan::AccessDenied if the document is not found
|
|
46
|
+
# or the user doesn't have access to it.
|
|
43
47
|
def show
|
|
48
|
+
respond_to do |wants|
|
|
49
|
+
wants.html do
|
|
50
|
+
_, document_list = search_results(params, CatalogController.search_params_logic + [:find_one])
|
|
51
|
+
curation_concern = document_list.first
|
|
52
|
+
raise CanCan::AccessDenied.new(nil, :show) unless curation_concern
|
|
53
|
+
@presenter = show_presenter.new(curation_concern, current_ability)
|
|
54
|
+
end
|
|
55
|
+
wants.json do
|
|
56
|
+
# load and authorize @curation_concern manually because it's skipped for html
|
|
57
|
+
# This has to use #find instead of #load_instance_from_solr because
|
|
58
|
+
# we want to return values like file_set_ids in the json
|
|
59
|
+
@curation_concern = curation_concern_type.find(params[:id]) unless curation_concern
|
|
60
|
+
authorize! :show, @curation_concern
|
|
61
|
+
render :show, status: :ok
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Gives the class of the show presenter. Override this if you want
|
|
67
|
+
# to use a different presenter.
|
|
68
|
+
def show_presenter
|
|
69
|
+
CurationConcerns::WorkShowPresenter
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Gives the class of the form. Override this if you want
|
|
73
|
+
# to use a different form.
|
|
74
|
+
def form_class
|
|
75
|
+
CurationConcerns.const_get("#{self.class.curation_concern_type}Form")
|
|
44
76
|
end
|
|
45
77
|
|
|
46
78
|
def edit
|
|
79
|
+
@form = form_class.new(curation_concern, current_ability)
|
|
47
80
|
end
|
|
48
81
|
|
|
49
82
|
def update
|
|
@@ -51,8 +84,12 @@ module CurationConcerns::CurationConcernController
|
|
|
51
84
|
after_update_response
|
|
52
85
|
else
|
|
53
86
|
setup_form
|
|
54
|
-
|
|
55
|
-
wants.html
|
|
87
|
+
respond_to do |wants|
|
|
88
|
+
wants.html do
|
|
89
|
+
@form = form_class.new(curation_concern, current_ability)
|
|
90
|
+
render 'edit', status: :unprocessable_entity
|
|
91
|
+
end
|
|
92
|
+
wants.json { render_json_response(response_type: :unprocessable_entity, options: { errors: curation_concern.errors }) }
|
|
56
93
|
end
|
|
57
94
|
end
|
|
58
95
|
end
|
|
@@ -66,57 +103,50 @@ module CurationConcerns::CurationConcernController
|
|
|
66
103
|
attr_writer :actor
|
|
67
104
|
|
|
68
105
|
protected
|
|
106
|
+
|
|
69
107
|
def actor
|
|
70
108
|
@actor ||= CurationConcerns::CurationConcern.actor(curation_concern, current_user, attributes_for_actor)
|
|
71
109
|
end
|
|
72
110
|
|
|
73
111
|
# Override setup_form in concrete controllers to get the form ready for display
|
|
74
112
|
def setup_form
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
end
|
|
113
|
+
return unless curation_concern.respond_to?(:contributor) && curation_concern.contributor.blank?
|
|
114
|
+
curation_concern.contributor << current_user.user_key
|
|
78
115
|
end
|
|
79
116
|
|
|
80
|
-
# def verify_acceptance_of_user_agreement!
|
|
81
|
-
# return true if contributor_agreement.is_being_accepted?
|
|
82
|
-
# # Calling the new action to make sure we are doing our best to preserve
|
|
83
|
-
# # the input values; Its a stretch but hopefully it'll work
|
|
84
|
-
# self.new
|
|
85
|
-
# respond_with(:curation_concern, curation_concern) do |wants|
|
|
86
|
-
# wants.html {
|
|
87
|
-
# flash.now[:error] = "You must accept the contributor agreement"
|
|
88
|
-
# render 'new', status: :conflict
|
|
89
|
-
# }
|
|
90
|
-
# end
|
|
91
|
-
# false
|
|
92
|
-
# end
|
|
93
|
-
|
|
94
117
|
def _prefixes
|
|
95
118
|
@_prefixes ||= super + ['curation_concerns/base']
|
|
96
119
|
end
|
|
97
120
|
|
|
98
121
|
def after_create_response
|
|
99
|
-
|
|
122
|
+
respond_to do |wants|
|
|
123
|
+
wants.html { redirect_to [main_app, :curation_concerns, curation_concern] }
|
|
124
|
+
wants.json { render :show, status: :created, location: polymorphic_path([main_app, :curation_concerns, curation_concern]) }
|
|
125
|
+
end
|
|
100
126
|
end
|
|
101
127
|
|
|
102
128
|
def after_update_response
|
|
103
|
-
#TODO visibility or lease/embargo status
|
|
129
|
+
# TODO: visibility or lease/embargo status
|
|
104
130
|
if actor.visibility_changed?
|
|
105
131
|
redirect_to main_app.confirm_curation_concerns_permission_path(curation_concern)
|
|
106
132
|
else
|
|
107
|
-
|
|
133
|
+
respond_to do |wants|
|
|
134
|
+
wants.html { redirect_to [main_app, :curation_concerns, curation_concern] }
|
|
135
|
+
wants.json { render :show, status: :ok, location: polymorphic_path([main_app, :curation_concerns, curation_concern]) }
|
|
136
|
+
end
|
|
108
137
|
end
|
|
109
138
|
end
|
|
110
139
|
|
|
111
140
|
def after_destroy_response(title)
|
|
112
141
|
flash[:notice] = "Deleted #{title}"
|
|
113
|
-
|
|
142
|
+
respond_to do |wants|
|
|
114
143
|
wants.html { redirect_to main_app.catalog_index_path }
|
|
115
|
-
|
|
144
|
+
wants.json { render_json_response(response_type: :deleted, message: "Deleted #{curation_concern.id}") }
|
|
145
|
+
end
|
|
116
146
|
end
|
|
117
147
|
|
|
118
148
|
def attributes_for_actor
|
|
119
|
-
|
|
149
|
+
form_class.model_attributes(params[hash_key_for_curation_concern])
|
|
120
150
|
end
|
|
121
151
|
|
|
122
152
|
def hash_key_for_curation_concern
|