hydra-head 4.1.3 → 5.0.0.pre1
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.
- metadata +28 -617
- data/.gitignore +0 -73
- data/.gitmodules +0 -4
- data/Gemfile +0 -14
- data/HISTORY.textile +0 -99
- data/INSTALL_PREREQ.textile +0 -3
- data/LICENSE +0 -14
- data/README.textile +0 -129
- data/Rakefile +0 -5
- data/app/assets/images/hydra/powered_by_hydra.png +0 -0
- data/app/assets/images/hydra/search-button.png +0 -0
- data/app/assets/javascripts/date-picker/booking/index.html +0 -368
- data/app/assets/javascripts/date-picker/calendarHTML.txt +0 -84
- data/app/assets/javascripts/date-picker/css/datepicker.css +0 -511
- data/app/assets/javascripts/date-picker/css/demo.css +0 -229
- data/app/assets/javascripts/date-picker/index.html +0 -798
- data/app/assets/javascripts/date-picker/js/datepicker.js +0 -2898
- data/app/assets/javascripts/date-picker/js/datepicker.packed.js +0 -1
- data/app/assets/javascripts/date-picker/js/lang/ar.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/cs.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/da.js +0 -10
- data/app/assets/javascripts/date-picker/js/lang/de.js +0 -10
- data/app/assets/javascripts/date-picker/js/lang/en.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/eo.js +0 -13
- data/app/assets/javascripts/date-picker/js/lang/es.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/et.js +0 -23
- data/app/assets/javascripts/date-picker/js/lang/fi.js +0 -7
- data/app/assets/javascripts/date-picker/js/lang/fr.js +0 -69
- data/app/assets/javascripts/date-picker/js/lang/he.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/hu.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/id.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/it.js +0 -11
- data/app/assets/javascripts/date-picker/js/lang/kr.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/lt.js +0 -8
- data/app/assets/javascripts/date-picker/js/lang/lv.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/nl.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/no.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/pl.js +0 -10
- data/app/assets/javascripts/date-picker/js/lang/pt-br.js +0 -11
- data/app/assets/javascripts/date-picker/js/lang/pt.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/ru.js +0 -11
- data/app/assets/javascripts/date-picker/js/lang/se.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/si.js +0 -9
- data/app/assets/javascripts/date-picker/js/lang/tr.js +0 -9
- data/app/assets/javascripts/date-picker/language/index.html +0 -240
- data/app/assets/javascripts/date-picker/media/Thumbs.db +0 -0
- data/app/assets/javascripts/date-picker/media/backstripes.gif +0 -0
- data/app/assets/javascripts/date-picker/media/bg_header.jpg +0 -0
- data/app/assets/javascripts/date-picker/media/bullet1.gif +0 -0
- data/app/assets/javascripts/date-picker/media/bullet2.gif +0 -0
- data/app/assets/javascripts/date-picker/media/cal-grey.gif +0 -0
- data/app/assets/javascripts/date-picker/media/cal.gif +0 -0
- data/app/assets/javascripts/date-picker/media/gradient-e5e5e5-ffffff.gif +0 -0
- data/app/assets/javascripts/hydra/hydra-head.js +0 -195
- data/app/assets/javascripts/hydra/mediashelf.datepicker.js +0 -39
- data/app/assets/javascripts/hydra/mediashelf.placeholder.js +0 -67
- data/app/assets/javascripts/jquery.form.js +0 -1076
- data/app/assets/javascripts/jquery.ui.datepicker.js +0 -1793
- data/app/assets/javascripts/spin.min.js +0 -2
- data/app/assets/stylesheets/hydra/html_refactor.css +0 -79
- data/app/assets/stylesheets/hydra/hydrangea-split-button.css +0 -18
- data/app/assets/stylesheets/hydra/hydrangea.css +0 -288
- data/app/assets/stylesheets/hydra/ie-styles.css +0 -149
- data/app/assets/stylesheets/hydra/styles.css +0 -946
- data/app/assets/stylesheets/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_217bc0_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_469bdd_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
- data/app/assets/stylesheets/redmond/jquery-ui-1.8.5.custom.css +0 -572
- data/app/controllers/downloads_controller.rb +0 -20
- data/app/controllers/hydra/application_controller.rb +0 -5
- data/app/controllers/hydra/assets_controller.rb +0 -12
- data/app/controllers/hydra/contributors_controller.rb +0 -115
- data/app/controllers/hydra/file_assets_controller.rb +0 -3
- data/app/controllers/hydra/permissions_controller.rb +0 -117
- data/app/controllers/user_sessions_controller.rb +0 -13
- data/app/helpers/application_helper.rb +0 -3
- data/app/helpers/article_metadata_helper.rb +0 -4
- data/app/helpers/blacklight_helper.rb +0 -4
- data/app/helpers/downloads_helper.rb +0 -4
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/generic_content_objects_helper.rb +0 -4
- data/app/helpers/hydra/application_helper_behavior.rb +0 -8
- data/app/helpers/hydra/article_metadata_helper_behavior.rb +0 -95
- data/app/helpers/hydra/blacklight_helper_behavior.rb +0 -128
- data/app/helpers/hydra/downloads_helper_behavior.rb +0 -24
- data/app/helpers/hydra/facets_helper_behavior.rb +0 -34
- data/app/helpers/hydra/generic_content_objects_helper_behavior.rb +0 -17
- data/app/helpers/hydra/hydra_assets_helper_behavior.rb +0 -76
- data/app/helpers/hydra/hydra_fedora_metadata_helper_behavior.rb +0 -379
- data/app/helpers/hydra/hydra_helper_behavior.rb +0 -195
- data/app/helpers/hydra/hydra_uploader_helper_behavior.rb +0 -23
- data/app/helpers/hydra/inline_editable_metadata_helper_behavior.rb +0 -21
- data/app/helpers/hydra/javascript_includes_helper_behavior.rb +0 -94
- data/app/helpers/hydra/personalization_helper_behavior.rb +0 -49
- data/app/helpers/hydra/release_process_helper_behavior.rb +0 -37
- data/app/helpers/hydra_assets_helper.rb +0 -4
- data/app/helpers/hydra_fedora_metadata_helper.rb +0 -4
- data/app/helpers/hydra_helper.rb +0 -4
- data/app/helpers/hydra_uploader_helper.rb +0 -4
- data/app/helpers/inline_editable_metadata_helper.rb +0 -4
- data/app/helpers/javascript_includes_helper.rb +0 -4
- data/app/helpers/personalization_helper.rb +0 -4
- data/app/helpers/release_process_helper.rb +0 -4
- data/app/models/file_asset.rb +0 -5
- data/app/models/generic_content.rb +0 -26
- data/app/models/generic_image.rb +0 -67
- data/app/models/hydra/datastream/properties.rb +0 -24
- data/app/models/mods_asset.rb +0 -24
- data/app/models/superuser.rb +0 -14
- data/app/models/user_attribute.rb +0 -37
- data/app/models/uses_default_partials.rb +0 -23
- data/app/views/_add_assets_links.html.erb +0 -14
- data/app/views/_flash_msg.html.erb +0 -5
- data/app/views/_user_util_links.html.erb +0 -31
- data/app/views/catalog/_citation.html.erb +0 -11
- data/app/views/catalog/_constraints_element.html.erb +0 -34
- data/app/views/catalog/_delete_partials/_default.html.erb +0 -22
- data/app/views/catalog/_document_list.html.erb +0 -11
- data/app/views/catalog/_edit_partials/_default.html.erb +0 -57
- data/app/views/catalog/_edit_partials/_default_details.html.erb +0 -13
- data/app/views/catalog/_facets.html.erb +0 -37
- data/app/views/catalog/_home.html.erb +0 -6
- data/app/views/catalog/_home_text.html.erb +0 -4
- data/app/views/catalog/_index_partials/_default.html.erb +0 -20
- data/app/views/catalog/_index_partials/_default_details.html.erb +0 -14
- data/app/views/catalog/_index_partials/_default_group.html.erb +0 -15
- data/app/views/catalog/_opensearch_response_metadata.html.erb +0 -2
- data/app/views/catalog/_show_partials/_default.html.erb +0 -21
- data/app/views/catalog/_show_partials/_default_details.html.erb +0 -15
- data/app/views/catalog/_show_partials/_facets.html.erb +0 -52
- data/app/views/catalog/_sms_form.html.erb +0 -21
- data/app/views/catalog/_sort_and_per_page.html.erb +0 -23
- data/app/views/catalog/_uva_tabs.html.erb +0 -10
- data/app/views/catalog/about.html.erb +0 -0
- data/app/views/catalog/show.html.erb +0 -40
- data/app/views/contributors/_add_contributor_split_button.html.erb +0 -10
- data/app/views/contributors/_edit_conference.html.erb +0 -29
- data/app/views/contributors/_edit_organization.html.erb +0 -29
- data/app/views/contributors/_edit_person.html.erb +0 -39
- data/app/views/contributors/_index.html.erb +0 -11
- data/app/views/contributors/_new.html.erb +0 -10
- data/app/views/contributors/_show_conference.html.erb +0 -12
- data/app/views/contributors/_show_organization.html.erb +0 -21
- data/app/views/contributors/_show_person.html.erb +0 -17
- data/app/views/contributors/new.html.erb +0 -14
- data/app/views/downloads/index.html.erb +0 -1
- data/app/views/generic_content_objects/_contributor_form.html.erb +0 -11
- data/app/views/generic_content_objects/_description_form.html.erb +0 -7
- data/app/views/generic_content_objects/_edit_description.html.erb +0 -23
- data/app/views/generic_content_objects/_new.html.erb +0 -0
- data/app/views/generic_content_objects/_show_description.html.erb +0 -41
- data/app/views/generic_contents/_edit.html.erb +0 -10
- data/app/views/generic_contents/_index.html.erb +0 -21
- data/app/views/generic_contents/_show.html.erb +0 -6
- data/app/views/generic_contents/_show_content.html.erb +0 -7
- data/app/views/generic_images/_edit.html.erb +0 -36
- data/app/views/generic_images/_index.html.erb +0 -24
- data/app/views/generic_images/_show.html.erb +0 -13
- data/app/views/generic_images/_show_all.html.erb +0 -14
- data/app/views/generic_images/_show_content.html.erb +0 -7
- data/app/views/hydra/file_assets/_asset_saved_flash.html.erb +0 -2
- data/app/views/hydra/file_assets/_deletable_result.html.erb +0 -5
- data/app/views/hydra/file_assets/_file_assets_form.html.erb +0 -11
- data/app/views/hydra/file_assets/_index.html.erb +0 -29
- data/app/views/hydra/file_assets/_new.html.erb +0 -6
- data/app/views/hydra/file_assets/_result.html.erb +0 -11
- data/app/views/hydra/file_assets/index.html.erb +0 -5
- data/app/views/hydra/permissions/_edit_person_permissions.html.erb +0 -30
- data/app/views/hydra/permissions/_index.html.erb +0 -46
- data/app/views/hydra/permissions/_new.html.erb +0 -14
- data/app/views/hydra/permissions/_permissions_form.html.erb +0 -23
- data/app/views/hydra/permissions/index.html.erb +0 -1
- data/app/views/hydra/permissions/new.html.erb +0 -1
- data/app/views/layouts/hydra-head.html.erb +0 -47
- data/app/views/mods_assets/_additional_info_form.html.erb +0 -44
- data/app/views/mods_assets/_contributor_form.html.erb +0 -14
- data/app/views/mods_assets/_edit.html.erb +0 -10
- data/app/views/mods_assets/_edit_description.html.erb +0 -73
- data/app/views/mods_assets/_edit_journal.html.erb +0 -57
- data/app/views/mods_assets/_index.html.erb +0 -1
- data/app/views/mods_assets/_index_list.html.erb +0 -37
- data/app/views/mods_assets/_index_table.html.erb +0 -7
- data/app/views/mods_assets/_progress_box.html.erb +0 -82
- data/app/views/mods_assets/_publication_form.html.erb +0 -13
- data/app/views/mods_assets/_show.html.erb +0 -39
- data/app/views/mods_assets/_show_additional_info.html.erb +0 -17
- data/app/views/mods_assets/_show_contributors.html.erb +0 -7
- data/app/views/mods_assets/_show_description.html.erb +0 -35
- data/app/views/mods_assets/_show_file_assets.html.erb +0 -22
- data/app/views/mods_assets/_show_journal.html.erb +0 -42
- data/app/views/mods_assets/_show_permissions.html.erb +0 -15
- data/app/views/mods_assets/_show_publication.html.erb +0 -8
- data/app/views/shared/_delete_asset_confirmation.html.erb +0 -17
- data/app/views/user_sessions/_login_form.html.erb +0 -10
- data/app/views/user_sessions/logged_out.html.erb +0 -1
- data/config/fedora.yml +0 -15
- data/config/jetty.yml +0 -6
- data/config/locales/hydra.en.yml +0 -7
- data/config/role_map_cucumber.yml +0 -10
- data/config/role_map_development.yml +0 -12
- data/config/role_map_production.yml +0 -2
- data/config/role_map_test.yml +0 -14
- data/config/routes.rb +0 -12
- data/config/solr.yml +0 -9
- data/config/solr_mappings.yml +0 -22
- data/db/migrate/20101105214243_add_user_attributes_table.rb +0 -15
- data/db/migrate/20101108192527_create_superusers.rb +0 -12
- data/fedora_conf/conf/development/fedora.fcfg +0 -1021
- data/fedora_conf/conf/test/fedora.fcfg +0 -1021
- data/hydra-head.gemspec +0 -41
- data/init.rb +0 -4
- data/install.rb +0 -1
- data/lib/application_helper.rb +0 -3
- data/lib/generators/hydra/assets_generator.rb +0 -50
- data/lib/generators/hydra/cucumber_support_generator.rb +0 -29
- data/lib/generators/hydra/head_generator.rb +0 -165
- data/lib/generators/hydra/hyhead_fixtures_generator.rb +0 -27
- data/lib/generators/hydra/templates/catalog_controller.rb +0 -162
- data/lib/generators/hydra/templates/config/fedora.yml +0 -14
- data/lib/generators/hydra/templates/config/initializers/action_dispatch_http_upload_monkey_patch.rb +0 -12
- data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +0 -44
- data/lib/generators/hydra/templates/config/role_map_cucumber.yml +0 -10
- data/lib/generators/hydra/templates/config/role_map_development.yml +0 -12
- data/lib/generators/hydra/templates/config/role_map_production.yml +0 -2
- data/lib/generators/hydra/templates/config/role_map_test.yml +0 -15
- data/lib/generators/hydra/templates/config/solr.yml +0 -10
- data/lib/generators/hydra/templates/config/solr_mappings.yml +0 -22
- data/lib/generators/hydra/templates/fedora_conf/conf/development/fedora.fcfg +0 -1021
- data/lib/generators/hydra/templates/fedora_conf/conf/test/fedora.fcfg +0 -1021
- data/lib/generators/hydra/templates/migrations/create_superusers.rb +0 -12
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +0 -124
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +0 -394
- data/lib/generators/hydra/templates/solr_conf/solr.xml +0 -35
- data/lib/hydra-head.rb +0 -29
- data/lib/hydra-head/controller.rb +0 -29
- data/lib/hydra-head/engine.rb +0 -29
- data/lib/hydra-head/routes.rb +0 -90
- data/lib/hydra-head/version.rb +0 -4
- data/lib/hydra.rb +0 -52
- data/lib/hydra/assets.rb +0 -7
- data/lib/hydra/assets_controller_helper.rb +0 -122
- data/lib/hydra/catalog.rb +0 -11
- data/lib/hydra/controller.rb +0 -26
- data/lib/hydra/controller/assets_controller_behavior.rb +0 -143
- data/lib/hydra/controller/catalog_controller_behavior.rb +0 -56
- data/lib/hydra/controller/controller_behavior.rb +0 -59
- data/lib/hydra/controller/file_assets_behavior.rb +0 -144
- data/lib/hydra/controller/repository_controller_behavior.rb +0 -119
- data/lib/hydra/controller/upload_behavior.rb +0 -139
- data/lib/hydra/file_assets.rb +0 -11
- data/lib/hydra/file_assets_helper.rb +0 -12
- data/lib/hydra/generic_content.rb +0 -130
- data/lib/hydra/generic_image.rb +0 -112
- data/lib/hydra/generic_user_attributes.rb +0 -41
- data/lib/hydra/global_configurable.rb +0 -46
- data/lib/hydra/model_methods.rb +0 -104
- data/lib/hydra/model_mixins.rb +0 -8
- data/lib/hydra/model_mixins/common_metadata.rb +0 -25
- data/lib/hydra/model_mixins/solr_document_extension.rb +0 -24
- data/lib/hydra/models/file_asset.rb +0 -78
- data/lib/hydra/repository_controller.rb +0 -28
- data/lib/hydra/rights_metadata.rb +0 -194
- data/lib/hydra/solr.rb +0 -9
- data/lib/hydra/submission_workflow.rb +0 -138
- data/lib/hydra/superuser_attributes.rb +0 -19
- data/lib/hydra/ui.rb +0 -6
- data/lib/hydra/ui/controller.rb +0 -46
- data/lib/hydra/workflow.rb +0 -5
- data/lib/hydra/workflow/controller.rb +0 -3
- data/lib/mediashelf/active_fedora_helper.rb +0 -73
- data/lib/prev_next_links.rb +0 -33
- data/lib/railties/active-fedora.rake +0 -1
- data/lib/railties/hydra-fixtures.rake +0 -50
- data/lib/railties/hydra_jetty.rake +0 -53
- data/lib/user_attributes_loader.rb +0 -26
- data/solr/conf/schema.xml +0 -116
- data/solr/conf/solrconfig.xml +0 -311
- data/solr/solr.xml +0 -35
- data/solr_conf/conf/schema.xml +0 -124
- data/solr_conf/conf/solrconfig.xml +0 -394
- data/solr_conf/solr.xml +0 -35
- data/tasks/active-fedora.rake +0 -1
- data/tasks/hydra-head-fixtures.rake +0 -58
- data/tasks/hydra-head.rake +0 -209
- data/tasks/hydra_jetty.rake +0 -53
- data/tasks/hyhead_rspec.rake +0 -57
- data/tasks/replicator.rake +0 -27
- data/tasks/solrizer-fedora.rake +0 -53
- data/tasks/solrizer.rake +0 -13
- data/test_support/etc/Gemfile +0 -46
- data/test_support/etc/common_metadata_asset.rb +0 -18
- data/test_support/features/absent_model_edit.feature +0 -27
- data/test_support/features/absent_model_search_result.feature +0 -18
- data/test_support/features/absent_model_show.feature +0 -27
- data/test_support/features/button_add_assets.feature +0 -22
- data/test_support/features/button_add_generic_content.feature +0 -11
- data/test_support/features/button_add_image.feature +0 -11
- data/test_support/features/button_add_mods_asset.feature +0 -11
- data/test_support/features/button_delete_asset.feature +0 -13
- data/test_support/features/contributor_add.feature +0 -44
- data/test_support/features/default_partials_edit.feature +0 -27
- data/test_support/features/default_partials_search_result.feature +0 -22
- data/test_support/features/default_partials_show.feature +0 -24
- data/test_support/features/file_upload.feature +0 -80
- data/test_support/features/generic_content_create.feature +0 -7
- data/test_support/features/generic_content_edit.feature +0 -21
- data/test_support/features/generic_content_search_result.feature +0 -22
- data/test_support/features/generic_content_show.feature +0 -20
- data/test_support/features/generic_image_create.feature +0 -7
- data/test_support/features/generic_image_edit.feature +0 -21
- data/test_support/features/generic_image_search_result.feature +0 -22
- data/test_support/features/generic_image_show.feature +0 -20
- data/test_support/features/home_page.feature +0 -9
- data/test_support/features/html_validity.feature +0 -43
- data/test_support/features/mods_asset_contributors_edit.feature +0 -88
- data/test_support/features/mods_asset_create.feature +0 -17
- data/test_support/features/mods_asset_edit.feature +0 -65
- data/test_support/features/mods_asset_edit_without_permission.feature +0 -15
- data/test_support/features/mods_asset_search_result.feature +0 -24
- data/test_support/features/mods_asset_show.feature +0 -90
- data/test_support/features/nonexistent_object_show.feature +0 -9
- data/test_support/features/permissions_add.feature +0 -16
- data/test_support/features/permissions_edit.feature +0 -65
- data/test_support/features/step_definitions/catalog_index_steps.rb +0 -14
- data/test_support/features/step_definitions/create_asset_steps.rb +0 -3
- data/test_support/features/step_definitions/edit_metadata_steps.rb +0 -72
- data/test_support/features/step_definitions/file_list_steps.rb +0 -36
- data/test_support/features/step_definitions/html_validity_steps.rb +0 -64
- data/test_support/features/step_definitions/hydra_metadata_steps.rb +0 -3
- data/test_support/features/step_definitions/hydra_steps.rb +0 -8
- data/test_support/features/step_definitions/inline_editable_edit_steps.rb +0 -77
- data/test_support/features/step_definitions/search_steps.rb +0 -88
- data/test_support/features/step_definitions/searching_steps.rb +0 -22
- data/test_support/features/step_definitions/show_document_steps.rb +0 -89
- data/test_support/features/step_definitions/user_steps.rb +0 -42
- data/test_support/features/step_definitions/web_steps.rb +0 -223
- data/test_support/features/support/env.rb +0 -57
- data/test_support/features/support/paths.rb +0 -85
- data/test_support/features/switch_users.feature +0 -14
- data/test_support/features/view_catalog_index.feature +0 -18
- data/test_support/fixtures/empty_file.txt +0 -0
- data/test_support/fixtures/hydra_test_default_partials.foxml.xml +0 -80
- data/test_support/fixtures/hydra_test_generic_content.foxml.xml +0 -138
- data/test_support/fixtures/hydra_test_generic_image.foxml.xml +0 -395
- data/test_support/fixtures/hydra_test_no_model.foxml.xml +0 -79
- data/test_support/fixtures/hydrangea_fixture_archivist_only_mods_article.foxml.xml +0 -1212
- data/test_support/fixtures/hydrangea_fixture_file_asset1.foxml.xml +0 -4946
- data/test_support/fixtures/hydrangea_fixture_mods_article1.foxml.xml +0 -234
- data/test_support/fixtures/hydrangea_fixture_mods_article2.foxml.xml +0 -177
- data/test_support/fixtures/hydrangea_fixture_mods_article3.foxml.xml +0 -170
- data/test_support/fixtures/hydrangea_fixture_mods_dataset1.foxml.xml +0 -187
- data/test_support/fixtures/hydrangea_fixture_uploaded_svg1.foxml.xml +0 -676
- data/test_support/fixtures/hydrus_admin_class1.foxml.xml +0 -176
- data/test_support/fixtures/image.jp2 +0 -0
- data/test_support/fixtures/libra-oa_1.foxml.xml +0 -2324
- data/test_support/fixtures/libra-oa_2.foxml.xml +0 -2422
- data/test_support/fixtures/libra-oa_7.foxml.xml +0 -1735
- data/test_support/fixtures/small_file.txt +0 -1
- data/test_support/spec/controllers/catalog_controller_spec.rb +0 -138
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +0 -67
- data/test_support/spec/controllers/catalog_valid_html_spec.rb +0 -123
- data/test_support/spec/controllers/contributors_controller_spec.rb +0 -67
- data/test_support/spec/controllers/file_assets_controller_spec.rb +0 -194
- data/test_support/spec/controllers/hydra-assets_controller_spec.rb +0 -151
- data/test_support/spec/controllers/hydra_controller_spec.rb +0 -43
- data/test_support/spec/controllers/hydra_ui_controller_spec.rb +0 -21
- data/test_support/spec/controllers/permissions_controller_spec.rb +0 -39
- data/test_support/spec/controllers/user_sessions_controller_spec.rb +0 -35
- data/test_support/spec/factories.rb +0 -11
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +0 -119
- data/test_support/spec/helpers/access_controls_evaluation_spec.rb +0 -26
- data/test_support/spec/helpers/assets_controller_helper_spec.rb +0 -63
- data/test_support/spec/helpers/blacklight_helper_spec.rb +0 -60
- data/test_support/spec/helpers/file_assets_helper_spec.rb +0 -116
- data/test_support/spec/helpers/generic_content_objects_helper_spec.rb +0 -17
- data/test_support/spec/helpers/hydra-repository_controller_spec.rb +0 -54
- data/test_support/spec/helpers/hydra_assets_helper_spec.rb +0 -143
- data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +0 -255
- data/test_support/spec/helpers/hydra_helper_spec.rb +0 -105
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +0 -88
- data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +0 -26
- data/test_support/spec/helpers/javascript_includes_helper_spec.rb +0 -51
- data/test_support/spec/integration/file_asset_spec.rb +0 -68
- data/test_support/spec/lib/catalog_spec.rb +0 -23
- data/test_support/spec/lib/global_configurable_spec.rb +0 -98
- data/test_support/spec/lib/hydra_submission_workflow_spec.rb +0 -141
- data/test_support/spec/lib/model_methods_spec.rb +0 -29
- data/test_support/spec/models/file_asset_spec.rb +0 -25
- data/test_support/spec/models/generic_content_spec.rb +0 -39
- data/test_support/spec/models/generic_image_spec.rb +0 -75
- data/test_support/spec/models/mods_asset_spec.rb +0 -20
- data/test_support/spec/models/solr_document_spec.rb +0 -17
- data/test_support/spec/models/user_spec.rb +0 -94
- data/test_support/spec/rcov.opts +0 -3
- data/test_support/spec/spec.opts +0 -4
- data/test_support/spec/spec_helper.rb +0 -63
- data/test_support/spec/support/matchers/helper_matcher.rb +0 -14
- data/test_support/spec/support/matchers/solr_matchers.rb +0 -60
- data/test_support/spec/unit/hydra-head-engine_spec.rb +0 -8
- data/test_support/spec/unit/hydra-head_spec.rb +0 -8
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module Hydra::GlobalConfigurable
|
|
2
|
-
|
|
3
|
-
# The config environment name used by the #config method
|
|
4
|
-
#
|
|
5
|
-
# Example:
|
|
6
|
-
# class MyThing
|
|
7
|
-
# extend Hydra::GlobalConfigurable
|
|
8
|
-
# end
|
|
9
|
-
#
|
|
10
|
-
# Now MyThing.config will be the result of:
|
|
11
|
-
# MyThing.configure(:production) {|config|}
|
|
12
|
-
#
|
|
13
|
-
# You set shared attributes by leaving the first argument blank or passing the :shared value:
|
|
14
|
-
# MyThing.configure {|config|}
|
|
15
|
-
# or
|
|
16
|
-
# MyThing.configure(:shared) {|config|}
|
|
17
|
-
|
|
18
|
-
# sets the @configs variable to a new Hash with empty Hash for :shared key and @config to nil
|
|
19
|
-
def reset_configs!
|
|
20
|
-
@config = nil
|
|
21
|
-
@configs = {:shared=>{}}
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# A hash of all environment configs
|
|
25
|
-
# The key is the environment name, the value a Hash
|
|
26
|
-
def configs
|
|
27
|
-
@configs ? @configs : (reset_configs! and @configs)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# The main config accessor. It merges the current configs[::Rails.env]
|
|
31
|
-
# with configs[:shared] and lazy-loads @config to the result.
|
|
32
|
-
def config
|
|
33
|
-
@config ||= configs[:shared].merge(configs[::Rails.env] ||= {})
|
|
34
|
-
end
|
|
35
|
-
alias_method :blacklight_config, :config
|
|
36
|
-
|
|
37
|
-
# Accepts a value for the environment to configure and a block
|
|
38
|
-
# A hash is yielded to the block
|
|
39
|
-
# If the "env" != :shared,
|
|
40
|
-
# the hash is created by deep cloning the :shared environment config.
|
|
41
|
-
# This makes it possible to create defaults in the :shared config
|
|
42
|
-
def configure(env = :shared, &blk)
|
|
43
|
-
configs[env] = {}
|
|
44
|
-
yield configs[env]
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/hydra/model_methods.rb
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# will move to lib/hydra/model/model_behavior.rb (with appropriate namespace changes) in release 5.x
|
|
2
|
-
module Hydra::ModelMethods
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
included do
|
|
6
|
-
unless self.class == Module
|
|
7
|
-
self.has_many :parts, :class_name=>'ActiveFedora::Base', :property=>:is_part_of
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
#
|
|
12
|
-
# Adds metadata about the depositor to the asset
|
|
13
|
-
# Most important behavior: if the asset has a rightsMetadata datastream, this method will add +depositor_id+ to its individual edit permissions.
|
|
14
|
-
#
|
|
15
|
-
def apply_depositor_metadata(depositor_id)
|
|
16
|
-
prop_ds = self.datastreams["properties"]
|
|
17
|
-
rights_ds = self.datastreams["rightsMetadata"]
|
|
18
|
-
|
|
19
|
-
if prop_ds
|
|
20
|
-
prop_ds.depositor = depositor_id unless prop_ds.nil?
|
|
21
|
-
end
|
|
22
|
-
rights_ds.permissions({:person=>depositor_id}, 'edit') unless rights_ds.nil?
|
|
23
|
-
return true
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
#
|
|
27
|
-
# Set the collection type (e.g. hydrangea_article) for the asset
|
|
28
|
-
#
|
|
29
|
-
def set_collection_type(collection)
|
|
30
|
-
prop_ds = self.datastreams["properties"]
|
|
31
|
-
if !prop_ds.nil? && prop_ds.respond_to?(:collection_values)
|
|
32
|
-
prop_ds.collection_values = collection
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Set the title and label on the current object
|
|
37
|
-
#
|
|
38
|
-
# @param [String] new_title
|
|
39
|
-
# @param [Hash] opts (optional) hash of configuration options
|
|
40
|
-
#
|
|
41
|
-
# @example Use :only_if_blank option to only update the values when the label is empty
|
|
42
|
-
# obj.set_title_and_label("My Title", :only_if_blank=> true)
|
|
43
|
-
def set_title_and_label(new_title, opts={})
|
|
44
|
-
if opts[:only_if_blank]
|
|
45
|
-
if self.label.nil? || self.label.empty?
|
|
46
|
-
self.label = new_title
|
|
47
|
-
self.set_title( new_title )
|
|
48
|
-
end
|
|
49
|
-
else
|
|
50
|
-
self.label = new_title
|
|
51
|
-
set_title( new_title )
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Set the title and label on the current object
|
|
56
|
-
#
|
|
57
|
-
# @param [String] new_title
|
|
58
|
-
# @param [Hash] opts (optional) hash of configuration options
|
|
59
|
-
def set_title(new_title, opts={})
|
|
60
|
-
if self.datastreams.has_key?("descMetadata")
|
|
61
|
-
desc_metadata_ds = self.datastreams["descMetadata"]
|
|
62
|
-
if desc_metadata_ds.respond_to?(:title_values)
|
|
63
|
-
desc_metadata_ds.title_values = new_title
|
|
64
|
-
else
|
|
65
|
-
desc_metadata_ds.title = new_title
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Call insert_contributor on the descMetadata datastream
|
|
71
|
-
def insert_contributor(type, opts={})
|
|
72
|
-
ds = self.datastreams["descMetadata"]
|
|
73
|
-
node, index = ds.insert_contributor(type,opts)
|
|
74
|
-
return node, index
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Call remove_contributor on the descMetadata datastream
|
|
78
|
-
def remove_contributor(type, index)
|
|
79
|
-
ds = self.datastreams["descMetadata"]
|
|
80
|
-
result = ds.remove_contributor(type,index)
|
|
81
|
-
return result
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# Call to remove file objects
|
|
85
|
-
def destroy_child_assets
|
|
86
|
-
destroyable_child_assets.each.inject([]) do |destroyed,fo|
|
|
87
|
-
destroyed << fo.pid
|
|
88
|
-
fo.delete
|
|
89
|
-
destroyed
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def destroyable_child_assets
|
|
95
|
-
return [] unless self.parts
|
|
96
|
-
self.parts.each.inject([]) do |file_assets, fo|
|
|
97
|
-
parents = fo.ids_for_outbound(:is_part_of)
|
|
98
|
-
if parents.length == 1 && parents.first.match(/#{self.pid}$/)
|
|
99
|
-
file_assets << fo
|
|
100
|
-
end
|
|
101
|
-
file_assets
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
data/lib/hydra/model_mixins.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Include this into models that you want to conform to the Hydra commonMetadata cModel
|
|
2
|
-
# See https://wiki.duraspace.org/display/hydra/Hydra+objects%2C+content+models+%28cModels%29+and+disseminators#Hydraobjects%2Ccontentmodels%28cModels%29anddisseminators-models
|
|
3
|
-
#
|
|
4
|
-
# Explicitly declares:
|
|
5
|
-
# rightsMetadata datastream using Hydra::RightsMetadata Terminology
|
|
6
|
-
#
|
|
7
|
-
# Does not explicitly declare:
|
|
8
|
-
# descMetadata datastream -- should be declared by a more specific mixin like Hydra::ModelMixins::ModsObject
|
|
9
|
-
# DC datastream -- Handled by ActiveFedora::Base
|
|
10
|
-
# RELS-EXT datastream -- Handled by ActiveFedora::Base & ActiveFedora::RelsExtDatastream
|
|
11
|
-
# optional datastreams (contentMetadata, technicalMetadata, provenanceMetadata, sourceMetadata)
|
|
12
|
-
#
|
|
13
|
-
# will move to lib/hydra/model/common_metadata_behavior in release 5.x
|
|
14
|
-
module Hydra::ModelMixins
|
|
15
|
-
module CommonMetadata
|
|
16
|
-
|
|
17
|
-
def self.included(klazz)
|
|
18
|
-
# Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
|
|
19
|
-
klazz.has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
|
20
|
-
|
|
21
|
-
# Ensure that objects assert the commonMetadata cModel
|
|
22
|
-
# klazz.relationships << :has_model => "info:fedora/hydra-cModel:commonMetadata"
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Hydra::ModelMixins
|
|
2
|
-
module SolrDocumentExtension
|
|
3
|
-
def document_type display_type = CatalogController.blacklight_config.show.display_type
|
|
4
|
-
type = self.fetch(:medium_t, nil)
|
|
5
|
-
|
|
6
|
-
type ||= self.fetch(display_type, nil) if display_type
|
|
7
|
-
|
|
8
|
-
type.first.to_s.gsub("info:fedora/afmodel:","").gsub("Hydrangea","").gsub(/^Generic/,"")
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def get_person_from_role(role, opts={})
|
|
12
|
-
i = 0
|
|
13
|
-
while i < 10
|
|
14
|
-
persons_roles = self["person_#{i}_role_t"].map{|w|w.strip.downcase} unless self["person_#{i}_role_t"].nil?
|
|
15
|
-
if persons_roles and persons_roles.include?(role.downcase)
|
|
16
|
-
return {:first=>self["person_#{i}_first_name_t"], :last=>self["person_#{i}_last_name_t"]}
|
|
17
|
-
end
|
|
18
|
-
i += 1
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
SolrDocument.use_extension Hydra::ModelMixins::SolrDocumentExtension
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# will move to lib/hydra/model/file_asset_behavior in release 5.x
|
|
2
|
-
module Hydra
|
|
3
|
-
module Models
|
|
4
|
-
# Defines Behaviors for a FileAsset Model
|
|
5
|
-
# Conforms to the Hydra genericContent cModel -- the "content" is in a datastream called content
|
|
6
|
-
# TODO: Could we just move this behavior into app/models/file_asset.rb?
|
|
7
|
-
module FileAsset
|
|
8
|
-
extend ActiveSupport::Concern
|
|
9
|
-
included do
|
|
10
|
-
include Hydra::ModelMethods
|
|
11
|
-
|
|
12
|
-
#has_relationship "is_member_of_collection", :has_collection_member, :inbound => true
|
|
13
|
-
#has_bidirectional_relationship "part_of", :is_part_of, :has_part
|
|
14
|
-
belongs_to :container, :class_name=>'ActiveFedora::Base', :property=>:is_part_of
|
|
15
|
-
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream do |m|
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# Returns a human readable filesize appropriate for the given number of bytes (ie. automatically chooses 'bytes','KB','MB','GB','TB')
|
|
21
|
-
# Based on a bit of python code posted here: http://blogmag.net/blog/read/38/Print_human_readable_file_size
|
|
22
|
-
# @param [Numeric] num file size in bits
|
|
23
|
-
def bits_to_human_readable(num)
|
|
24
|
-
['bytes','KB','MB','GB','TB'].each do |x|
|
|
25
|
-
if num < 1024.0
|
|
26
|
-
return "#{num.to_i} #{x}"
|
|
27
|
-
else
|
|
28
|
-
num = num/1024.0
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def label
|
|
35
|
-
descMetadata.title.first
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def label=(label)
|
|
39
|
-
super
|
|
40
|
-
descMetadata.title = label
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# augments add_file_datastream to also put file size (in bytes/KB/MB/GB/TB) in dc:extent
|
|
44
|
-
def add_file_datastream(file, opts={})
|
|
45
|
-
super
|
|
46
|
-
if file.respond_to?(:size)
|
|
47
|
-
size = bits_to_human_readable(file.size)
|
|
48
|
-
elsif file.kind_of?(File)
|
|
49
|
-
size = bits_to_human_readable(File.size(file))
|
|
50
|
-
else
|
|
51
|
-
size = ""
|
|
52
|
-
end
|
|
53
|
-
datastreams["descMetadata"].extent = size
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Override ActiveFedora::Base.to_solr to...
|
|
57
|
-
# Check if we are dealing with a child of FileAsset and if so when calling to_solr from Solrizer indexer we want to skip loading parent metadata again
|
|
58
|
-
#
|
|
59
|
-
# if known models greater than one (without ActiveFedora::Base) and
|
|
60
|
-
# known models contains a child of FileAsset and
|
|
61
|
-
# opts[:model_only] == true and
|
|
62
|
-
# current object class is FileAsset
|
|
63
|
-
# that means that the child already has had to_solr called which included metadata from FileAsset
|
|
64
|
-
# if any of the above is false then call to_solr as normal
|
|
65
|
-
def to_solr(solr_doc=Hash.new, opts={})
|
|
66
|
-
|
|
67
|
-
active_fedora_model_s = solr_doc["active_fedora_model_s"] if solr_doc["active_fedora_model_s"]
|
|
68
|
-
actual_class = active_fedora_model_s.constantize if active_fedora_model_s
|
|
69
|
-
if actual_class && actual_class != self.class && actual_class.superclass == ::FileAsset
|
|
70
|
-
solr_doc
|
|
71
|
-
else
|
|
72
|
-
super(solr_doc,opts)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Hydra-repository Contoller is a controller layer mixin. It is in the controller scope: request params, session etc.
|
|
2
|
-
#
|
|
3
|
-
# will move to lib/hydra/controller/repository_controller_behavior in release 5.x
|
|
4
|
-
#
|
|
5
|
-
# NOTE: Be careful when creating variables here as they may be overriding something that already exists.
|
|
6
|
-
# The ActionController docs: http://api.rubyonrails.org/classes/ActionController/Base.html
|
|
7
|
-
#
|
|
8
|
-
# Override these methods in your own controller for customizations:
|
|
9
|
-
#
|
|
10
|
-
# class HomeController < ActionController::Base
|
|
11
|
-
#
|
|
12
|
-
# include Stanford::SolrHelper
|
|
13
|
-
#
|
|
14
|
-
# def solr_search_params
|
|
15
|
-
# super.merge :per_page=>10
|
|
16
|
-
# end
|
|
17
|
-
#
|
|
18
|
-
# end
|
|
19
|
-
#
|
|
20
|
-
module Hydra::RepositoryController
|
|
21
|
-
extend ActiveSupport::Concern
|
|
22
|
-
|
|
23
|
-
included do
|
|
24
|
-
ActiveSupport::Deprecation.warn "Hydra::RepositoryController has moved to Hydra::Controller::RepositoryControllerBehavior"
|
|
25
|
-
include Hydra::Controller::RepositoryControllerBehavior
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
module Hydra
|
|
2
|
-
# @deprecated -- this will be removed in 5.x release
|
|
3
|
-
class RightsMetadata < ActiveFedora::NokogiriDatastream
|
|
4
|
-
|
|
5
|
-
def initialize(digital_object, dsid, options={})
|
|
6
|
-
ActiveSupport::Deprecation.warn("Hydra::RightsMetadata has been deprecated. Use Hydra::Datastream::RightsMetadata instead")
|
|
7
|
-
super
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
set_terminology do |t|
|
|
11
|
-
t.root(:path=>"rightsMetadata", :xmlns=>"http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1", :schema=>"http://github.com/projecthydra/schemas/tree/v1/rightsMetadata.xsd")
|
|
12
|
-
t.copyright {
|
|
13
|
-
t.machine {
|
|
14
|
-
t.uvalicense
|
|
15
|
-
t.cclicense
|
|
16
|
-
t.license
|
|
17
|
-
}
|
|
18
|
-
t.human_readable(:path=>"human")
|
|
19
|
-
t.license(:proxy=>[:machine, :license ])
|
|
20
|
-
t.cclicense(:proxy=>[:machine, :cclicense ])
|
|
21
|
-
}
|
|
22
|
-
t.access {
|
|
23
|
-
t.human_readable(:path=>"human")
|
|
24
|
-
t.machine {
|
|
25
|
-
t.group
|
|
26
|
-
t.person
|
|
27
|
-
}
|
|
28
|
-
t.person(:proxy=>[:machine, :person])
|
|
29
|
-
t.group(:proxy=>[:machine, :group])
|
|
30
|
-
# accessor :access_person, :term=>[:access, :machine, :person]
|
|
31
|
-
}
|
|
32
|
-
t.discover_access(:ref=>[:access], :attributes=>{:type=>"discover"})
|
|
33
|
-
t.read_access(:ref=>[:access], :attributes=>{:type=>"read"})
|
|
34
|
-
t.edit_access(:ref=>[:access], :attributes=>{:type=>"edit"})
|
|
35
|
-
# A bug in OM prevnts us from declaring proxy terms at the root of a Terminology
|
|
36
|
-
# t.access_person(:proxy=>[:access,:machine,:person])
|
|
37
|
-
# t.access_group(:proxy=>[:access,:machine,:group])
|
|
38
|
-
|
|
39
|
-
t.embargo {
|
|
40
|
-
t.human_readable(:path=>"human")
|
|
41
|
-
t.machine{
|
|
42
|
-
t.date(:type =>"release")
|
|
43
|
-
}
|
|
44
|
-
t.embargo_release_date(:proxy => [:machine, :date])
|
|
45
|
-
}
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Generates an empty Mods Article (used when you call ModsArticle.new without passing in existing xml)
|
|
49
|
-
def self.xml_template
|
|
50
|
-
builder = Nokogiri::XML::Builder.new do |xml|
|
|
51
|
-
xml.rightsMetadata(:version=>"0.1", "xmlns"=>"http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1") {
|
|
52
|
-
xml.copyright {
|
|
53
|
-
xml.human
|
|
54
|
-
xml.machine {
|
|
55
|
-
xml.uvalicense "no"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
xml.access(:type=>"discover") {
|
|
59
|
-
xml.human
|
|
60
|
-
xml.machine
|
|
61
|
-
}
|
|
62
|
-
xml.access(:type=>"read") {
|
|
63
|
-
xml.human
|
|
64
|
-
xml.machine
|
|
65
|
-
}
|
|
66
|
-
xml.access(:type=>"edit") {
|
|
67
|
-
xml.human
|
|
68
|
-
xml.machine
|
|
69
|
-
}
|
|
70
|
-
xml.embargo{
|
|
71
|
-
xml.human
|
|
72
|
-
xml.machine
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
end
|
|
76
|
-
return builder.doc
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Returns the permissions for the selected person/group
|
|
80
|
-
# If new_access_level is provided, updates the selected person/group access_level to the one specified
|
|
81
|
-
# A new_access_level of "none" will remove all access_levels for the selected person/group
|
|
82
|
-
# @param [Hash] selector hash in format {type => identifier}
|
|
83
|
-
# @param new_access_level (default nil)
|
|
84
|
-
# @return Hash in format {type => access_level}.
|
|
85
|
-
#
|
|
86
|
-
# ie.
|
|
87
|
-
# permissions({:person=>"person123"})
|
|
88
|
-
# => {"person123"=>"edit"}
|
|
89
|
-
# permissions({:person=>"person123"}, "read")
|
|
90
|
-
# => {"person123"=>"read"}
|
|
91
|
-
# permissions({:person=>"person123"})
|
|
92
|
-
# => {"person123"=>"read"}
|
|
93
|
-
def permissions(selector, new_access_level=nil)
|
|
94
|
-
type = selector.keys.first.to_sym
|
|
95
|
-
actor = selector.values.first
|
|
96
|
-
if new_access_level.nil?
|
|
97
|
-
xpath = self.class.terminology.xpath_for(:access, type, actor)
|
|
98
|
-
nodeset = self.find_by_terms(xpath)
|
|
99
|
-
if nodeset.empty?
|
|
100
|
-
return "none"
|
|
101
|
-
else
|
|
102
|
-
return nodeset.first.ancestors("access").first.attributes["type"].text
|
|
103
|
-
end
|
|
104
|
-
else
|
|
105
|
-
remove_all_permissions(selector)
|
|
106
|
-
unless new_access_level == "none"
|
|
107
|
-
access_type_symbol = "#{new_access_level}_access".to_sym
|
|
108
|
-
result = self.update_values([access_type_symbol, type] => {"-1"=>actor})
|
|
109
|
-
end
|
|
110
|
-
self.dirty = true
|
|
111
|
-
return new_access_level
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Reports on which groups have which permissions
|
|
117
|
-
# @return Hash in format {group_name => group_permissions, group_name => group_permissions}
|
|
118
|
-
def groups
|
|
119
|
-
return quick_search_by_type(:group)
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Reports on which groups have which permissions
|
|
123
|
-
# @return Hash in format {person_name => person_permissions, person_name => person_permissions}
|
|
124
|
-
def individuals
|
|
125
|
-
return quick_search_by_type(:person)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
# Updates permissions for all of the persons and groups in a hash
|
|
129
|
-
# @param params ex. {"group"=>{"group1"=>"discover","group2"=>"edit"}, "person"=>{"person1"=>"read","person2"=>"discover"}}
|
|
130
|
-
# Currently restricts actor type to group or person. Any others will be ignored
|
|
131
|
-
def update_permissions(params)
|
|
132
|
-
params.fetch("group", {}).each_pair {|group_id, access_level| self.permissions({"group"=>group_id}, access_level)}
|
|
133
|
-
params.fetch("person", {}).each_pair {|group_id, access_level| self.permissions({"person"=>group_id}, access_level)}
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# @param [Symbol] type (either :group or :person)
|
|
137
|
-
# @return
|
|
138
|
-
# This method limits the response to known access levels. Probably runs a bit faster than .permissions().
|
|
139
|
-
def quick_search_by_type(type)
|
|
140
|
-
result = {}
|
|
141
|
-
[{:discover_access=>"discover"},{:read_access=>"read"},{:edit_access=>"edit"}].each do |access_levels_hash|
|
|
142
|
-
access_level = access_levels_hash.keys.first
|
|
143
|
-
access_level_name = access_levels_hash.values.first
|
|
144
|
-
self.find_by_terms(*[access_level, type]).each do |entry|
|
|
145
|
-
result[entry.text] = access_level_name
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
return result
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
attr_reader :embargo_release_date
|
|
152
|
-
def embargo_release_date=(release_date)
|
|
153
|
-
release_date = release_date.to_s if release_date.is_a? Date
|
|
154
|
-
begin
|
|
155
|
-
Date.parse(release_date)
|
|
156
|
-
rescue
|
|
157
|
-
return "INVALID DATE"
|
|
158
|
-
end
|
|
159
|
-
self.update_values({[:embargo,:machine,:date]=>release_date})
|
|
160
|
-
end
|
|
161
|
-
def embargo_release_date(opts={})
|
|
162
|
-
embargo_release_date = self.find_by_terms(*[:embargo,:machine,:date]).first ? self.find_by_terms(*[:embargo,:machine,:date]).first.text : nil
|
|
163
|
-
if embargo_release_date.present? && opts[:format] && opts[:format] == :solr_date
|
|
164
|
-
embargo_release_date << "T23:59:59Z"
|
|
165
|
-
end
|
|
166
|
-
embargo_release_date
|
|
167
|
-
end
|
|
168
|
-
def under_embargo?
|
|
169
|
-
(embargo_release_date && Date.today < embargo_release_date.to_date) ? true : false
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def to_solr(solr_doc=Hash.new)
|
|
173
|
-
super(solr_doc)
|
|
174
|
-
::Solrizer::Extractor.insert_solr_field_value(solr_doc, "embargo_release_date_dt", embargo_release_date(:format=>:solr_date)) if embargo_release_date
|
|
175
|
-
solr_doc
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
private
|
|
183
|
-
# Purge all access given group/person
|
|
184
|
-
def remove_all_permissions(selector)
|
|
185
|
-
return unless ng_xml
|
|
186
|
-
type = selector.keys.first.to_sym
|
|
187
|
-
actor = selector.values.first
|
|
188
|
-
xpath = self.class.terminology.xpath_for(:access, type, actor)
|
|
189
|
-
nodes_to_purge = self.find_by_terms(xpath)
|
|
190
|
-
nodes_to_purge.each {|node| node.remove}
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
end
|
|
194
|
-
end
|