hydra-head 3.0.0pre1
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.
- data/.gitignore +71 -0
- data/.gitmodules +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +257 -0
- data/README.textile +150 -0
- data/README_RAILS3_CHANGES.textile +42 -0
- data/Rakefile +5 -0
- data/TESTING.textile +85 -0
- data/app/controllers/assets_controller.rb +117 -0
- data/app/controllers/contributors_controller.rb +54 -0
- data/app/controllers/file_assets_controller.rb +152 -0
- data/app/controllers/permissions_controller.rb +137 -0
- data/app/controllers/user_sessions_controller.rb +14 -0
- data/app/helpers/article_metadata_helper.rb +80 -0
- data/app/helpers/blacklight_helper.rb +192 -0
- data/app/helpers/downloads_helper.rb +19 -0
- data/app/helpers/generic_content_objects_helper.rb +16 -0
- data/app/helpers/hydra_assets_helper.rb +75 -0
- data/app/helpers/hydra_djatoka_helper.rb +23 -0
- data/app/helpers/hydra_fedora_metadata_helper.rb +365 -0
- data/app/helpers/hydra_helper.rb +155 -0
- data/app/helpers/hydra_uploader_helper.rb +18 -0
- data/app/helpers/inline_editable_metadata_helper.rb +15 -0
- data/app/helpers/javascript_includes_helper.rb +93 -0
- data/app/helpers/release_process_helper.rb +32 -0
- data/app/models/audio_asset.rb +8 -0
- data/app/models/file_asset.rb +111 -0
- data/app/models/generic_content.rb +21 -0
- data/app/models/generic_image.rb +62 -0
- data/app/models/image_asset.rb +8 -0
- data/app/models/mods_asset.rb +6 -0
- data/app/models/role_mapper.rb +22 -0
- data/app/models/superuser.rb +6 -0
- data/app/models/video_asset.rb +8 -0
- data/app/views/_add_assets_links.html.erb +13 -0
- data/app/views/_brown_sidebar.html +15 -0
- data/app/views/_user_util_links.html.erb +31 -0
- data/app/views/catalog/_citation.html.erb +11 -0
- data/app/views/catalog/_constraints_element.html.erb +34 -0
- data/app/views/catalog/_delete_partials/_default.html.erb +29 -0
- data/app/views/catalog/_document_list.html.erb +11 -0
- data/app/views/catalog/_edit_partials/_default.html.erb +64 -0
- data/app/views/catalog/_edit_partials/_default_details.html.erb +15 -0
- data/app/views/catalog/_email_form.html.erb +9 -0
- data/app/views/catalog/_facets.html.erb +37 -0
- data/app/views/catalog/_flash_msg.html.erb +17 -0
- data/app/views/catalog/_home.html.erb +6 -0
- data/app/views/catalog/_home_text.html.erb +10 -0
- data/app/views/catalog/_index_partials/_default.html.erb +20 -0
- data/app/views/catalog/_index_partials/_default_details.html.erb +11 -0
- data/app/views/catalog/_index_partials/_default_group.html.erb +15 -0
- data/app/views/catalog/_search_form.html.erb +12 -0
- data/app/views/catalog/_show_partials/_default.html.erb +23 -0
- data/app/views/catalog/_show_partials/_default_details.html.erb +12 -0
- data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
- data/app/views/catalog/_sms_form.html.erb +21 -0
- data/app/views/catalog/_sort_and_per_page.html.erb +22 -0
- data/app/views/catalog/_uva_tabs.html.erb +10 -0
- data/app/views/catalog/about.html.erb +0 -0
- data/app/views/catalog/show.html.erb +48 -0
- data/app/views/contributors/_add_contributor_split_button.html.erb +10 -0
- data/app/views/contributors/_edit_conference.html.erb +29 -0
- data/app/views/contributors/_edit_organization.html.erb +29 -0
- data/app/views/contributors/_edit_person.html.erb +42 -0
- data/app/views/contributors/_index.html.erb +12 -0
- data/app/views/contributors/_new.html.erb +10 -0
- data/app/views/contributors/_show_conference.html.erb +22 -0
- data/app/views/contributors/_show_organization.html.erb +29 -0
- data/app/views/contributors/_show_person.html.erb +17 -0
- data/app/views/contributors/new.html.erb +13 -0
- data/app/views/downloads/index.html.erb +1 -0
- data/app/views/file_assets/_deletable_result.html.erb +5 -0
- data/app/views/file_assets/_index.html.erb +15 -0
- data/app/views/file_assets/_new.html.erb +2 -0
- data/app/views/file_assets/_result.html.erb +16 -0
- data/app/views/file_assets/index.html.erb +5 -0
- data/app/views/fluid_infusion/_uploader.html.erb +81 -0
- data/app/views/fluid_infusion/_uploader_generic_content_objects.js.erb +38 -0
- data/app/views/fluid_infusion/_uploader_js.erb +45 -0
- data/app/views/generic_content_objects/_edit_description.html.erb +50 -0
- data/app/views/generic_content_objects/_new.html.erb +0 -0
- data/app/views/generic_content_objects/_show_description.html.erb +68 -0
- data/app/views/generic_content_objects/contributors/_edit_conference.html.erb +29 -0
- data/app/views/generic_content_objects/contributors/_edit_organization.html.erb +29 -0
- data/app/views/generic_content_objects/contributors/_edit_person.html.erb +37 -0
- data/app/views/generic_content_objects/contributors/_new.html.erb +10 -0
- data/app/views/generic_content_objects/contributors/_show_conference.html.erb +22 -0
- data/app/views/generic_content_objects/contributors/_show_organization.html.erb +22 -0
- data/app/views/generic_content_objects/contributors/_show_person.html.erb +38 -0
- data/app/views/generic_contents/_edit.html.erb +59 -0
- data/app/views/generic_contents/_index.html.erb +23 -0
- data/app/views/generic_contents/_show.html.erb +18 -0
- data/app/views/generic_contents/_show_content.html.erb +4 -0
- data/app/views/generic_images/_edit.html.erb +59 -0
- data/app/views/generic_images/_index.html.erb +24 -0
- data/app/views/generic_images/_show.html.erb +18 -0
- data/app/views/generic_images/_show_all.html.erb +14 -0
- data/app/views/generic_images/_show_content.html.erb +7 -0
- data/app/views/layouts/application.html.erb +57 -0
- data/app/views/layouts/hydra-head.html.erb +12 -0
- data/app/views/mods_assets/_edit.html.erb +49 -0
- data/app/views/mods_assets/_edit_description.html.erb +82 -0
- data/app/views/mods_assets/_edit_journal.html.erb +72 -0
- data/app/views/mods_assets/_index.html.erb +1 -0
- data/app/views/mods_assets/_index_list.html.erb +37 -0
- data/app/views/mods_assets/_index_table.html.erb +7 -0
- data/app/views/mods_assets/_progress_box.html.erb +82 -0
- data/app/views/mods_assets/_show.html.erb +44 -0
- data/app/views/mods_assets/_show_description.html.erb +44 -0
- data/app/views/mods_assets/_show_journal.html.erb +42 -0
- data/app/views/mods_assets/_show_permissions.html.erb +14 -0
- data/app/views/permissions/_edit_person_permissions.html.erb +35 -0
- data/app/views/permissions/_index.html.erb +55 -0
- data/app/views/permissions/_new.html.erb +18 -0
- data/app/views/permissions/index.html.erb +1 -0
- data/app/views/permissions/new.html.erb +1 -0
- data/app/views/shared/_delete_asset_confirmation.html.erb +17 -0
- data/app/views/user_sessions/_login_form.html.erb +10 -0
- data/app/views/user_sessions/logged_out.html.erb +1 -0
- data/config/routes.rb +12 -0
- data/fedora_conf/conf/fedora.fcfg +1021 -0
- data/hydra-head.gemspec +70 -0
- data/lib/application_controller.rb +25 -0
- data/lib/application_helper.rb +2 -0
- data/lib/engine.rb +30 -0
- data/lib/generators/hydra/head_generator.rb +152 -0
- data/lib/generators/hydra/templates/config/fedora.yml +17 -0
- data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +246 -0
- data/lib/generators/hydra/templates/config/initializers/fedora_config.rb +23 -0
- data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +29 -0
- data/lib/generators/hydra/templates/config/role_map_cucumber.yml +10 -0
- data/lib/generators/hydra/templates/config/role_map_development.yml +12 -0
- data/lib/generators/hydra/templates/config/role_map_production.yml +2 -0
- data/lib/generators/hydra/templates/config/role_map_test.yml +15 -0
- data/lib/generators/hydra/templates/config/solr.yml +10 -0
- data/lib/generators/hydra/templates/config/solr_mappings.yml +22 -0
- data/lib/generators/hydra/templates/fedora_conf/conf/fedora.fcfg +1021 -0
- data/lib/generators/hydra/templates/migrations/add_user_attributes_table.rb +15 -0
- data/lib/generators/hydra/templates/migrations/create_superusers.rb +12 -0
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +118 -0
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +332 -0
- data/lib/generators/hydra/templates/solr_conf/solr.xml +35 -0
- data/lib/hydra-head.rb +29 -0
- data/lib/hydra-head/engine.rb +9 -0
- data/lib/hydra-head/routes.rb +87 -0
- data/lib/hydra-head/version.rb +4 -0
- data/lib/hydra.rb +22 -0
- data/lib/hydra/access_controls_enforcement.rb +236 -0
- data/lib/hydra/access_controls_evaluation.rb +97 -0
- data/lib/hydra/assets_controller_helper.rb +144 -0
- data/lib/hydra/catalog.rb +64 -0
- data/lib/hydra/common_mods_index_methods.rb +42 -0
- data/lib/hydra/controller.rb +7 -0
- data/lib/hydra/file_assets_helper.rb +144 -0
- data/lib/hydra/fixtures.rb +43 -0
- data/lib/hydra/generic_content.rb +113 -0
- data/lib/hydra/generic_image.rb +100 -0
- data/lib/hydra/image.rb +177 -0
- data/lib/hydra/model_methods.rb +95 -0
- data/lib/hydra/model_mixins.rb +2 -0
- data/lib/hydra/model_mixins/common_metadata.rb +24 -0
- data/lib/hydra/model_mixins/mods_object.rb +16 -0
- data/lib/hydra/mods_article.rb +505 -0
- data/lib/hydra/mods_dataset.rb +165 -0
- data/lib/hydra/mods_generic_content.rb +494 -0
- data/lib/hydra/mods_image.rb +494 -0
- data/lib/hydra/repository_controller.rb +102 -0
- data/lib/hydra/rights_metadata.rb +189 -0
- data/lib/hydra/superuser_attributes.rb +12 -0
- data/lib/hydra/testing_server.rb +183 -0
- data/lib/hydra/user.rb +22 -0
- data/lib/mediashelf/active_fedora_helper.rb +72 -0
- data/lib/railties/all_tests.rake +23 -0
- data/lib/railties/hydra-fixtures.rake +184 -0
- data/lib/railties/hydra_jetty.rake +79 -0
- data/lib/railties/hyhead_cucumber.rake +127 -0
- data/lib/railties/hyhead_rspec.rake +137 -0
- data/lib/stanford/searchworks_helper.rb +1338 -0
- data/lib/stanford/solr_helper.rb +108 -0
- data/lib/uva/mods_index_methods.rb +24 -0
- data/solr_conf/conf/schema.xml +122 -0
- data/solr_conf/conf/solrconfig.xml +332 -0
- data/solr_conf/solr.xml +35 -0
- data/tasks/hydra-head-fixtures.rake +54 -0
- data/tasks/hydra-head.rake +247 -0
- data/tasks/hydra_jetty.rake +79 -0
- data/tasks/replicator.rake +27 -0
- data/tasks/solrizer-fedora.rake +53 -0
- data/tasks/solrizer.rake +13 -0
- data/test_support/etc/Gemfile +29 -0
- data/test_support/etc/rvmrc +32 -0
- data/test_support/features/button_add_assets.feature +22 -0
- data/test_support/features/button_add_generic_content.feature +11 -0
- data/test_support/features/button_add_image.feature +11 -0
- data/test_support/features/button_add_mods_asset.feature +11 -0
- data/test_support/features/contributor_add.feature +39 -0
- data/test_support/features/file_assets_list.feature +32 -0
- data/test_support/features/file_upload.feature +40 -0
- data/test_support/features/home_page.feature +9 -0
- data/test_support/features/html_validity.feature +47 -0
- data/test_support/features/mods_asset_contributors_edit.feature +80 -0
- data/test_support/features/mods_asset_create.feature +12 -0
- data/test_support/features/mods_asset_edit.feature +33 -0
- data/test_support/features/mods_asset_edit_without_permission.feature +10 -0
- data/test_support/features/mods_asset_search_result.feature +13 -0
- data/test_support/features/mods_asset_show.feature +39 -0
- data/test_support/features/permissions_add.feature +15 -0
- data/test_support/features/permissions_edit.feature +63 -0
- data/test_support/features/step_definitions/catalog_index_steps.rb +14 -0
- data/test_support/features/step_definitions/create_asset_steps.rb +7 -0
- data/test_support/features/step_definitions/edit_metadata_steps.rb +73 -0
- data/test_support/features/step_definitions/file_list_steps.rb +28 -0
- data/test_support/features/step_definitions/hydra_metadata_steps.rb +3 -0
- data/test_support/features/step_definitions/hydra_steps.rb +8 -0
- data/test_support/features/step_definitions/inline_editable_edit_steps.rb +77 -0
- data/test_support/features/step_definitions/search_steps.rb +88 -0
- data/test_support/features/step_definitions/searching_steps.rb +22 -0
- data/test_support/features/step_definitions/show_document_steps.rb +85 -0
- data/test_support/features/step_definitions/user_steps.rb +36 -0
- data/test_support/features/step_definitions/web_steps.rb +219 -0
- data/test_support/features/support/env.rb +55 -0
- data/test_support/features/support/paths.rb +80 -0
- data/test_support/features/switch_users.feature +14 -0
- data/test_support/features/view_catalog_index.feature +18 -0
- data/test_support/fixtures/empty_file.txt +0 -0
- data/test_support/fixtures/hydrangea_fixture_archivist_only_mods_article.foxml.xml +1212 -0
- data/test_support/fixtures/hydrangea_fixture_file_asset1.foxml.xml +4946 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article1.foxml.xml +234 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article2.foxml.xml +177 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article3.foxml.xml +170 -0
- data/test_support/fixtures/hydrangea_fixture_mods_dataset1.foxml.xml +187 -0
- data/test_support/fixtures/hydrangea_fixture_uploaded_svg1.foxml.xml +676 -0
- data/test_support/fixtures/image.jp2 +0 -0
- data/test_support/fixtures/libra-oa_1.foxml.xml +2324 -0
- data/test_support/fixtures/libra-oa_2.foxml.xml +2422 -0
- data/test_support/spec/controllers/assets_controller_spec.rb +113 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +148 -0
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +62 -0
- data/test_support/spec/controllers/contributors_controller_spec.rb +47 -0
- data/test_support/spec/controllers/file_assets_controller_spec.rb +189 -0
- data/test_support/spec/controllers/hydra_controller_spec.rb +15 -0
- data/test_support/spec/controllers/permissions_controller_spec.rb +80 -0
- data/test_support/spec/controllers/user_sessions_controller_spec.rb +35 -0
- data/test_support/spec/generators/hydra-head_generator_spec.rb +14 -0
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +212 -0
- data/test_support/spec/helpers/access_controls_evaluation_spec.rb +35 -0
- data/test_support/spec/helpers/assets_controller_helper_spec.rb +71 -0
- data/test_support/spec/helpers/blacklight_helper_spec.rb +64 -0
- data/test_support/spec/helpers/file_assets_helper_spec.rb +107 -0
- data/test_support/spec/helpers/hydra-repository_controller_spec.rb +32 -0
- data/test_support/spec/helpers/hydra_assets_helper_spec.rb +195 -0
- data/test_support/spec/helpers/hydra_djatoka_helper_spec.rb +32 -0
- data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +215 -0
- data/test_support/spec/helpers/hydra_helper_spec.rb +73 -0
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +95 -0
- data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +18 -0
- data/test_support/spec/helpers/javascript_includes_helper_spec.rb +43 -0
- data/test_support/spec/integration/file_asset_spec.rb +150 -0
- data/test_support/spec/lib/active_fedora_helper_spec.rb +56 -0
- data/test_support/spec/lib/catalog_spec.rb +16 -0
- data/test_support/spec/lib/common_mods_index_methods_spec.rb +28 -0
- data/test_support/spec/models/audio_asset_spec.rb +23 -0
- data/test_support/spec/models/file_asset_spec.rb +42 -0
- data/test_support/spec/models/generic_content_spec.rb +29 -0
- data/test_support/spec/models/generic_image_spec.rb +58 -0
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +162 -0
- data/test_support/spec/models/image_asset_spec.rb +23 -0
- data/test_support/spec/models/mods_asset_spec.rb +29 -0
- data/test_support/spec/models/role_mapper_spec.rb +22 -0
- data/test_support/spec/models/user_spec.rb +52 -0
- data/test_support/spec/models/video_asset_spec.rb +23 -0
- data/test_support/spec/rcov.opts +3 -0
- data/test_support/spec/spec.opts +4 -0
- data/test_support/spec/spec_helper.rb +44 -0
- data/test_support/spec/support/matchers/helper_matcher.rb +14 -0
- data/test_support/spec/support/matchers/solr_matchers.rb +60 -0
- data/test_support/spec/unit/hydra-head-engine_spec.rb +8 -0
- data/test_support/spec/unit/hydra-head_spec.rb +8 -0
- data/test_support/spec/utilities/hydra_testing_server_spec.rb +49 -0
- data/test_support/spec/views/uploader.html.erb_spec.rb +30 -0
- data/vendor/cache/RedCloth-4.2.3.gem +0 -0
- data/vendor/cache/abstract-1.0.0.gem +0 -0
- data/vendor/cache/actionmailer-3.0.9.gem +0 -0
- data/vendor/cache/actionpack-3.0.9.gem +0 -0
- data/vendor/cache/active-fedora-2.3.3.gem +0 -0
- data/vendor/cache/activemodel-3.0.9.gem +0 -0
- data/vendor/cache/activerecord-3.0.9.gem +0 -0
- data/vendor/cache/activeresource-3.0.9.gem +0 -0
- data/vendor/cache/activesupport-3.0.9.gem +0 -0
- data/vendor/cache/arel-2.0.10.gem +0 -0
- data/vendor/cache/blacklight-3.0.0.gem +0 -0
- data/vendor/cache/block_helpers-0.3.3.gem +0 -0
- data/vendor/cache/builder-2.1.2.gem +0 -0
- data/vendor/cache/capybara-1.0.0.gem +0 -0
- data/vendor/cache/childprocess-0.2.0.gem +0 -0
- data/vendor/cache/columnize-0.3.4.gem +0 -0
- data/vendor/cache/crack-0.1.8.gem +0 -0
- data/vendor/cache/cucumber-1.0.2.gem +0 -0
- data/vendor/cache/cucumber-rails-1.0.2.gem +0 -0
- data/vendor/cache/curb-0.7.15.gem +0 -0
- data/vendor/cache/daemons-1.1.4.gem +0 -0
- data/vendor/cache/database_cleaner-0.6.7.gem +0 -0
- data/vendor/cache/diff-lcs-1.1.2.gem +0 -0
- data/vendor/cache/equivalent-xml-0.2.7.gem +0 -0
- data/vendor/cache/erubis-2.6.6.gem +0 -0
- data/vendor/cache/facets-2.8.4.gem +0 -0
- data/vendor/cache/factory_girl-1.3.3.gem +0 -0
- data/vendor/cache/fastercsv-1.5.4.gem +0 -0
- data/vendor/cache/ffi-1.0.9.gem +0 -0
- data/vendor/cache/gherkin-2.4.5.gem +0 -0
- data/vendor/cache/haml-3.1.2.gem +0 -0
- data/vendor/cache/httparty-0.7.8.gem +0 -0
- data/vendor/cache/i18n-0.5.0.gem +0 -0
- data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
- data/vendor/cache/json-1.5.3.gem +0 -0
- data/vendor/cache/json_pure-1.5.3.gem +0 -0
- data/vendor/cache/kaminari-0.12.4.gem +0 -0
- data/vendor/cache/launchy-2.0.3.gem +0 -0
- data/vendor/cache/linecache-0.46.gem +0 -0
- data/vendor/cache/logger-1.2.8.gem +0 -0
- data/vendor/cache/mail-2.2.19.gem +0 -0
- data/vendor/cache/marc-0.4.3.gem +0 -0
- data/vendor/cache/mediashelf-loggable-0.4.2.gem +0 -0
- data/vendor/cache/mime-types-1.16.gem +0 -0
- data/vendor/cache/mocha-0.9.12.gem +0 -0
- data/vendor/cache/multipart-post-1.1.2.gem +0 -0
- data/vendor/cache/nokogiri-1.5.0.gem +0 -0
- data/vendor/cache/om-1.2.5.gem +0 -0
- data/vendor/cache/polyglot-0.3.1.gem +0 -0
- data/vendor/cache/rack-1.2.3.gem +0 -0
- data/vendor/cache/rack-mount-0.6.14.gem +0 -0
- data/vendor/cache/rack-test-0.5.7.gem +0 -0
- data/vendor/cache/rails-3.0.9.gem +0 -0
- data/vendor/cache/railties-3.0.9.gem +0 -0
- data/vendor/cache/rake-0.9.2.gem +0 -0
- data/vendor/cache/rbx-require-relative-0.0.5.gem +0 -0
- data/vendor/cache/rcov-0.9.9.gem +0 -0
- data/vendor/cache/rdoc-3.8.gem +0 -0
- data/vendor/cache/rsolr-1.0.2.gem +0 -0
- data/vendor/cache/rsolr-ext-1.0.3.gem +0 -0
- data/vendor/cache/rspec-2.6.0.gem +0 -0
- data/vendor/cache/rspec-core-2.6.4.gem +0 -0
- data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
- data/vendor/cache/ruby-debug-0.10.4.gem +0 -0
- data/vendor/cache/ruby-debug-base-0.10.4.gem +0 -0
- data/vendor/cache/rubyzip-0.9.4.gem +0 -0
- data/vendor/cache/sanitize-2.0.3.gem +0 -0
- data/vendor/cache/selenium-webdriver-0.2.2.gem +0 -0
- data/vendor/cache/solr-ruby-0.0.8.gem +0 -0
- data/vendor/cache/solrizer-1.1.0.gem +0 -0
- data/vendor/cache/solrizer-fedora-1.1.0.gem +0 -0
- data/vendor/cache/sqlite3-ruby-1.2.5.gem +0 -0
- data/vendor/cache/stomp-1.1.9.gem +0 -0
- data/vendor/cache/term-ansicolor-1.0.5.gem +0 -0
- data/vendor/cache/thor-0.14.6.gem +0 -0
- data/vendor/cache/treetop-1.4.9.gem +0 -0
- data/vendor/cache/trollop-1.16.2.gem +0 -0
- data/vendor/cache/tzinfo-0.3.29.gem +0 -0
- data/vendor/cache/unicode-0.4.0.gem +0 -0
- data/vendor/cache/will_paginate-2.3.15.gem +0 -0
- data/vendor/cache/xml-simple-1.1.0.gem +0 -0
- data/vendor/cache/xpath-0.1.4.gem +0 -0
- data/vendor/cache/yard-0.7.2.gem +0 -0
- metadata +1110 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
require "om"
|
|
2
|
+
module Hydra::AssetsControllerHelper
|
|
3
|
+
|
|
4
|
+
def apply_depositor_metadata(asset)
|
|
5
|
+
if asset.respond_to?(:apply_depositor_metadata) && current_user.respond_to?(:login)
|
|
6
|
+
asset.apply_depositor_metadata(current_user.login)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def set_collection_type(asset, collection)
|
|
11
|
+
if asset.respond_to?(:set_collection_type)
|
|
12
|
+
asset.set_collection_type(collection)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
#
|
|
17
|
+
# parses your params hash, massaging them into an appropriate set of params and opts to pass into ActiveFedora::Base.update_indexed_attributes
|
|
18
|
+
#
|
|
19
|
+
def prep_updater_method_args
|
|
20
|
+
logger.warn "DEPRECATED: Hydra::AssetsControllerHelper.prep_updater_method_args is deprecated. Use/override sanitize_update_params instead."
|
|
21
|
+
args = {:params=>{}, :opts=>{}}
|
|
22
|
+
|
|
23
|
+
params["asset"].each_pair do |datastream_name,fields|
|
|
24
|
+
|
|
25
|
+
args[:opts][:datastreams] = datastream_name
|
|
26
|
+
|
|
27
|
+
# TEMPORARY HACK: special case for supporting textile
|
|
28
|
+
if params["field_id"]=="abstract_0"
|
|
29
|
+
params[:field_selectors] = {"descMetadata" => {"abstract" => [:abstract]}}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
if params.fetch("field_selectors",false) && params["field_selectors"].fetch(datastream_name, false)
|
|
33
|
+
# If there is an entry in field_selectors for the datastream (implying a nokogiri datastream), retrieve the field_selector for this field.
|
|
34
|
+
# if no field selector, exists, use the field name
|
|
35
|
+
fields.each_pair do |field_name,field_values|
|
|
36
|
+
parent_select = OM.destringify( params["field_selectors"][datastream_name].fetch(field_name, field_name) )
|
|
37
|
+
args[:params][parent_select] = field_values
|
|
38
|
+
end
|
|
39
|
+
else
|
|
40
|
+
args[:params] = unescape_keys(params[:asset][datastream_name])
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
@sanitized_params = args
|
|
45
|
+
return args
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Builds a Hash that you can feed into ActiveFedora::Base.update_datstream_attributes
|
|
51
|
+
# If params[:asset] is empty, returns an empty Hash
|
|
52
|
+
# @return [Hash] a Hash that you can feed into ActiveFedora::Base.update_datstream_attributes
|
|
53
|
+
# {
|
|
54
|
+
# "descMetadata"=>{ [{:person=>0}, :role]=>{"0"=>"role1", "1"=>"role2", "2"=>"role3"} },
|
|
55
|
+
# "properties"=>{ "notes"=>"foo" }
|
|
56
|
+
# }
|
|
57
|
+
def sanitize_update_params
|
|
58
|
+
@sanitized_params ||= {}
|
|
59
|
+
|
|
60
|
+
unless params["asset"].nil?
|
|
61
|
+
params["asset"].each_pair do |datastream_name,fields|
|
|
62
|
+
|
|
63
|
+
@sanitized_params[datastream_name] = {}
|
|
64
|
+
|
|
65
|
+
# TEMPORARY HACK: special case for supporting textile
|
|
66
|
+
if params["field_id"]=="abstract_0"
|
|
67
|
+
params[:field_selectors] = {"descMetadata" => {"abstract" => [:abstract]}}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
if params.fetch("field_selectors",false) && params["field_selectors"].fetch(datastream_name, false)
|
|
71
|
+
# If there is an entry in field_selectors for the datastream (implying a nokogiri datastream), retrieve the field_selector for this field.
|
|
72
|
+
# if no field selector, exists, use the field name
|
|
73
|
+
fields.each_pair do |field_name,field_values|
|
|
74
|
+
parent_select = OM.destringify( params["field_selectors"][datastream_name].fetch(field_name, field_name) )
|
|
75
|
+
@sanitized_params[datastream_name][parent_select] = field_values
|
|
76
|
+
end
|
|
77
|
+
else
|
|
78
|
+
@sanitized_params[datastream_name] = unescape_keys(params[:asset][datastream_name])
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
return @sanitized_params
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Tidies up the response from updating the document, making it more JSON-friendly
|
|
87
|
+
# @param [Hash] response_from_update the response from updating the object's values
|
|
88
|
+
# @return [Hash] A Hash where value of "updated" is an array with fieldname / index / value Hash for each field updated
|
|
89
|
+
def tidy_response_from_update(response_from_update)
|
|
90
|
+
response = Hash["updated"=>[]]
|
|
91
|
+
last_result_value = ""
|
|
92
|
+
response_from_update.each_pair do |field_name,changed_values|
|
|
93
|
+
changed_values.each_pair do |index,value|
|
|
94
|
+
response["updated"] << {"field_name"=>field_name,"index"=>index,"value"=>value}
|
|
95
|
+
last_result_value = value
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
# If handling submission from jeditable (which will only submit one value at a time), return the value it submitted
|
|
99
|
+
if params.has_key?(:field_id)
|
|
100
|
+
response = last_result_value
|
|
101
|
+
end
|
|
102
|
+
return response
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
# Updates the document based on the provided parameters
|
|
107
|
+
# @param [ActiveFedora::Base] document
|
|
108
|
+
# @param [Hash] params should be the type expected by ActiveFedora::Base.update_datastream_attributes
|
|
109
|
+
def update_document(document, params)
|
|
110
|
+
# this will only work if there is only one datastream being updated.
|
|
111
|
+
# once ActiveFedora::MetadataDatastream supports .update_datastream_attributes, use that method instead (will also be able to pass through params["asset"] as-is without usin prep_updater_method_args!)
|
|
112
|
+
# result = document.update_indexed_attributes(params[:params], params[:opts])
|
|
113
|
+
result = document.update_datastream_attributes(params)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# moved destringify into OM gem.
|
|
117
|
+
# ie. OM.destringify( params )
|
|
118
|
+
# Note: OM now handles destringifying params internally. You probably don't have to do it!
|
|
119
|
+
|
|
120
|
+
private
|
|
121
|
+
|
|
122
|
+
def send_datastream(datastream)
|
|
123
|
+
send_data datastream.content, :filename=>datastream.label, :type=>datastream.attributes["mimeType"]
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
#underscores are escaped w/ + signs, which are unescaped by rails to spaces
|
|
127
|
+
def unescape_keys(attrs)
|
|
128
|
+
h=Hash.new
|
|
129
|
+
attrs.each do |k,v|
|
|
130
|
+
h[k.gsub(/ /, '_')]=v
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
h
|
|
134
|
+
end
|
|
135
|
+
def escape_keys(attrs)
|
|
136
|
+
h=Hash.new
|
|
137
|
+
attrs.each do |k,v|
|
|
138
|
+
h[k.gsub(/_/, '+')]=v
|
|
139
|
+
|
|
140
|
+
end
|
|
141
|
+
h
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require "hydra/access_controls_enforcement"
|
|
2
|
+
# Include this module into any of your Blacklight Catalog classes (ie. CatalogController) to add Hydra functionality
|
|
3
|
+
#
|
|
4
|
+
# The primary function of this module is to mix in a number of other Hydra Modules, including
|
|
5
|
+
# Hydra::AccessControlsEnforcement
|
|
6
|
+
#
|
|
7
|
+
# This module will only work if you also include Blacklight::Catalog in the Controller you're extending.
|
|
8
|
+
# The hydra head rails generator will create the CatalogController for you in app/controllers/catalog_controller.rb
|
|
9
|
+
# @example
|
|
10
|
+
# require 'blacklight/catalog'
|
|
11
|
+
# require 'hydra/catalog'
|
|
12
|
+
# class CustomCatalogController < ApplicationController
|
|
13
|
+
# include Blacklight::Catalog
|
|
14
|
+
# include Hydra::Catalog
|
|
15
|
+
# end
|
|
16
|
+
module Hydra::Catalog
|
|
17
|
+
|
|
18
|
+
def self.included(klass)
|
|
19
|
+
# Other modules to auto-include
|
|
20
|
+
klass.send(:include, Hydra::AccessControlsEnforcement)
|
|
21
|
+
klass.send(:include, MediaShelf::ActiveFedoraHelper)
|
|
22
|
+
klass.send(:include, Hydra::RepositoryController)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Controller filters
|
|
26
|
+
# Also see the generator (or generated CatalogController) to see more before_filters in action
|
|
27
|
+
klass.before_filter :require_solr, :require_fedora, :only=>[:show, :edit, :index, :delete]
|
|
28
|
+
klass.before_filter :load_fedora_document, :only=>[:show,:edit]
|
|
29
|
+
klass.before_filter :lookup_facets, :only=>:edit
|
|
30
|
+
|
|
31
|
+
# View Helpers
|
|
32
|
+
klass.helper :hydra
|
|
33
|
+
klass.helper :hydra_assets
|
|
34
|
+
klass.helper :hydra_uploader
|
|
35
|
+
klass.helper :article_metadata
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def edit
|
|
39
|
+
show
|
|
40
|
+
render "show"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# This will render the "delete" confirmation page and a form to submit a destroy request to the assets controller
|
|
44
|
+
def delete
|
|
45
|
+
show
|
|
46
|
+
render "show"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def load_fedora_document
|
|
50
|
+
af_base = ActiveFedora::Base.load_instance(params[:id])
|
|
51
|
+
the_model = ActiveFedora::ContentModel.known_models_for( af_base ).first
|
|
52
|
+
if the_model.nil?
|
|
53
|
+
@document_fedora = af_base
|
|
54
|
+
else
|
|
55
|
+
@document_fedora = the_model.load_instance(params[:id])
|
|
56
|
+
end
|
|
57
|
+
@file_assets = @document_fedora.file_objects(:response_format=>:solr)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def lookup_facets
|
|
61
|
+
params = {:qt=>"search",:defType=>"dismax",:q=>"*:*",:rows=>"0",:facet=>"true", :facets=>{:fields=>Blacklight.config[:facet][:field_names]}}
|
|
62
|
+
@facet_lookup = Blacklight.solr.find params
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Provides some helper methods for indexing compound or non-standard facets
|
|
2
|
+
#
|
|
3
|
+
# == Methods
|
|
4
|
+
#
|
|
5
|
+
# extract_person_full_names
|
|
6
|
+
# This method returns a Hash of person_full_name_facet values which combine Lastname, Firstname
|
|
7
|
+
# extract_person_organizations
|
|
8
|
+
# This method returns a Hash of person_full_name_facet values which extract the persons affiliation and puts it in an mods_organization_facet
|
|
9
|
+
|
|
10
|
+
module Hydra::CommonModsIndexMethods
|
|
11
|
+
# Extracts the first and last names of persons and creates Solr::Field objects with for person_full_name_facet
|
|
12
|
+
#
|
|
13
|
+
# == Returns:
|
|
14
|
+
# An array of Solr::Field objects
|
|
15
|
+
#
|
|
16
|
+
def extract_person_full_names
|
|
17
|
+
names = {}
|
|
18
|
+
self.find_by_terms(:person).each do |person|
|
|
19
|
+
name_parts = person.children.inject({}) do |hash,child|
|
|
20
|
+
hash[child.get_attribute(:type)] = child.text if ["family","given"].include? child.get_attribute(:type)
|
|
21
|
+
hash
|
|
22
|
+
end
|
|
23
|
+
::Solrizer::Extractor.insert_solr_field_value(names, "person_full_name_facet", [name_parts["family"], name_parts["given"]].join(", ") ) if name_parts.keys == ["family","given"]
|
|
24
|
+
names
|
|
25
|
+
end
|
|
26
|
+
return names
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Extracts the affiliations of persons and creates Solr::Field objects for them
|
|
30
|
+
#
|
|
31
|
+
# == Returns:
|
|
32
|
+
# An array of Solr::Field objects
|
|
33
|
+
#
|
|
34
|
+
def extract_person_organizations
|
|
35
|
+
# self.find_by_terms(:person,:affiliation).map { |org| Solr::Field.new({:mods_organization_facet=>org.text}) }
|
|
36
|
+
orgs = {}
|
|
37
|
+
self.find_by_terms(:person,:affiliation).each do |org|
|
|
38
|
+
::Solrizer::Extractor.insert_solr_field_value(orgs, "mods_organization_facet", org.text)
|
|
39
|
+
end
|
|
40
|
+
return orgs
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
module Hydra::FileAssetsHelper
|
|
2
|
+
|
|
3
|
+
# Creates a File Asset, adding the posted blob to the File Asset's datastreams and saves the File Asset
|
|
4
|
+
#
|
|
5
|
+
# @return [FileAsset] the File Asset
|
|
6
|
+
def create_and_save_file_asset_from_params
|
|
7
|
+
if params.has_key?(:Filedata)
|
|
8
|
+
@file_asset = create_asset_from_params
|
|
9
|
+
add_posted_blob_to_asset
|
|
10
|
+
@file_asset.save
|
|
11
|
+
return @file_asset
|
|
12
|
+
else
|
|
13
|
+
render :text => "400 Bad Request", :status => 400
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Puts the contents of params[:Filedata] (posted blob) into a datastream within the given @asset
|
|
18
|
+
# Sets asset label and title to filename if they're empty
|
|
19
|
+
#
|
|
20
|
+
# @param [FileAsset] the File Asset to add the blob to
|
|
21
|
+
# @return [FileAsset] the File Asset
|
|
22
|
+
def add_posted_blob_to_asset(asset=@file_asset)
|
|
23
|
+
file_name = filename_from_params
|
|
24
|
+
asset.add_file_datastream(posted_file, :label=>file_name, :mimeType=>mime_type(file_name))
|
|
25
|
+
asset.set_title_and_label( file_name, :only_if_blank=>true )
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Associate the new file asset with its container
|
|
29
|
+
def associate_file_asset_with_container(file_asset=nil, container_id=nil)
|
|
30
|
+
if container_id.nil?
|
|
31
|
+
container_id = params[:asset_id]
|
|
32
|
+
end
|
|
33
|
+
if file_asset.nil?
|
|
34
|
+
file_asset = @file_asset
|
|
35
|
+
end
|
|
36
|
+
file_asset.add_relationship(:is_part_of, container_id)
|
|
37
|
+
file_asset.datastreams["RELS-EXT"].dirty = true
|
|
38
|
+
file_asset.save
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Apply any posted file metadata to the file asset
|
|
42
|
+
def apply_posted_file_metadata
|
|
43
|
+
@metadata_update_response = update_document(@file_asset, @sanitized_params)
|
|
44
|
+
@file_asset.save
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# The posted File
|
|
49
|
+
# @return [File] the posted file. Defaults to nil if no file was posted.
|
|
50
|
+
def posted_file
|
|
51
|
+
params[:Filedata]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# A best-guess filename based on POST params
|
|
55
|
+
# If Filename was submitted, it uses that. Otherwise, it calls +original_filename+ on the posted file
|
|
56
|
+
def filename_from_params
|
|
57
|
+
if !params[:Filename].nil?
|
|
58
|
+
file_name = params[:Filename]
|
|
59
|
+
else
|
|
60
|
+
file_name = posted_file.original_filename
|
|
61
|
+
params[:Filename] = file_name
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Creates a File Asset and sets its label from params[:Filename]
|
|
66
|
+
#
|
|
67
|
+
# @return [FileAsset] the File Asset
|
|
68
|
+
def create_asset_from_params
|
|
69
|
+
file_asset = FileAsset.new
|
|
70
|
+
file_asset.label = params[:Filename]
|
|
71
|
+
|
|
72
|
+
return file_asset
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# This is pre-Hydra code that created an AudioAsset, VideoAsset or ImageAsset based on the
|
|
76
|
+
# current params in the controller.
|
|
77
|
+
#
|
|
78
|
+
# @return [Constant] the recommended Asset class
|
|
79
|
+
def asset_class_from_params
|
|
80
|
+
if params.has_key?(:type)
|
|
81
|
+
chosen_type = case params[:type]
|
|
82
|
+
when "AudioAsset"
|
|
83
|
+
AudioAsset
|
|
84
|
+
when "VideoAsset"
|
|
85
|
+
VideoAsset
|
|
86
|
+
when "ImageAsset"
|
|
87
|
+
ImageAsset
|
|
88
|
+
else
|
|
89
|
+
FileAsset
|
|
90
|
+
end
|
|
91
|
+
elsif params.has_key?(:Filename)
|
|
92
|
+
chosen_type = choose_model_by_filename( params[:Filename] )
|
|
93
|
+
else
|
|
94
|
+
chosen_type = FileAsset
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
return chosen_type
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def choose_model_by_filename(filename)
|
|
101
|
+
choose_model_by_filename_extension( File.extname(filename) )
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Rudimentary method to choose an Asset class based on a filename extension
|
|
105
|
+
#
|
|
106
|
+
# @param [String] extension
|
|
107
|
+
# @return [Constant] the recommended Asset class. Default: FileAsset
|
|
108
|
+
#
|
|
109
|
+
# Recognized extensions:
|
|
110
|
+
# AudioAsset => ".wav", ".mp3", ".aiff"
|
|
111
|
+
# VideoAsset => ".mov", ".flv", ".mp4"
|
|
112
|
+
# ImageAsset => ".jpeg", ".jpg", ".gif", ".png"
|
|
113
|
+
def choose_model_by_filename_extension(extension)
|
|
114
|
+
|
|
115
|
+
Hydra.config[:file_asset_types][:extension_mappings].each_pair do |klass, extensions|
|
|
116
|
+
if extensions.include?(extension)
|
|
117
|
+
return klass
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
return Hydra.config[:file_asset_types][:default]
|
|
122
|
+
|
|
123
|
+
# case extension
|
|
124
|
+
# when ".wav", ".mp3", ".aiff"
|
|
125
|
+
# AudioAsset
|
|
126
|
+
# when ".mov", ".flv", ".mp4", ".m4v"
|
|
127
|
+
# VideoAsset
|
|
128
|
+
# when ".jpeg", ".jpg", ".gif", ".png"
|
|
129
|
+
# ImageAsset
|
|
130
|
+
# else
|
|
131
|
+
# FileAsset
|
|
132
|
+
# end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
private
|
|
136
|
+
# Return the mimeType for a given file name
|
|
137
|
+
# @param [String] file_name The filename to use to get the mimeType
|
|
138
|
+
# @return [String] mimeType for filename passed in. Default: application/octet-stream if mimeType cannot be determined
|
|
139
|
+
def mime_type file_name
|
|
140
|
+
mime_types = MIME::Types.of(file_name)
|
|
141
|
+
mime_type = mime_types.empty? ? "application/octet-stream" : mime_types.first.content_type
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Hydra
|
|
2
|
+
|
|
3
|
+
class Fixtures
|
|
4
|
+
def self.filename_for_pid(pid)
|
|
5
|
+
File.join("test_support","fixtures","#{pid.gsub(":","_")}.foxml.xml")
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.delete(pid)
|
|
9
|
+
begin
|
|
10
|
+
ActiveFedora::Base.load_instance(pid).delete
|
|
11
|
+
1
|
|
12
|
+
rescue ActiveFedora::ObjectNotFoundError
|
|
13
|
+
logger.debug "The object #{pid} has already been deleted (or was never created)."
|
|
14
|
+
0
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.reload(pid)
|
|
19
|
+
delete(pid)
|
|
20
|
+
import_and_index(pid)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.import_and_index(pid)
|
|
24
|
+
body = import_to_fedora(filename_for_pid(pid))
|
|
25
|
+
index(pid)
|
|
26
|
+
body
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.index(pid)
|
|
30
|
+
solrizer = Solrizer::Fedora::Solrizer.new
|
|
31
|
+
solrizer.solrize(pid)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.import_to_fedora(filename)
|
|
35
|
+
file = File.new(filename, "r")
|
|
36
|
+
puts "Loading #{filename}"
|
|
37
|
+
result = foxml = Fedora::Repository.instance.ingest(file.read)
|
|
38
|
+
raise "Failed to ingest the fixture." unless result
|
|
39
|
+
result.body
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|