worthwhile 0.0.1.alpha → 0.0.1
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 +3 -1
- data/.rspec +1 -0
- data/.travis.yml +19 -0
- data/Gemfile +7 -11
- data/README.md +8 -12
- data/Rakefile +17 -2
- data/app/actors/concerns/worthwhile/manages_embargoes_actor.rb +79 -0
- data/app/actors/curation_concern/base_actor.rb +68 -0
- data/app/actors/curation_concern/generic_file_actor.rb +40 -0
- data/app/actors/curation_concern/generic_work_actor.rb +92 -0
- data/app/actors/curation_concern/linked_resource_actor.rb +4 -0
- data/app/assets/images/default.png +0 -0
- data/app/assets/images/nope.png +0 -0
- data/app/assets/javascripts/.gitkeep +0 -0
- data/app/assets/javascripts/modernizr.js +3 -0
- data/app/assets/javascripts/worthwhile/.gitkeep +0 -0
- data/app/assets/javascripts/worthwhile/accept_contributor_agreement.js +15 -0
- data/app/assets/javascripts/worthwhile/application.js +18 -0
- data/app/assets/javascripts/worthwhile/browse_everything_implement.js +7 -0
- data/app/assets/javascripts/worthwhile/embargoes.js +17 -0
- data/app/assets/javascripts/worthwhile/facet_mine.js +22 -0
- data/app/assets/javascripts/worthwhile/help_modal.js +36 -0
- data/app/assets/javascripts/worthwhile/link_groups.js.coffee +123 -0
- data/app/assets/javascripts/worthwhile/link_users.js.coffee +126 -0
- data/app/assets/javascripts/worthwhile/manage_repeating_fields.js +74 -0
- data/app/assets/javascripts/worthwhile/proxy_rights.js.coffee +95 -0
- data/app/assets/javascripts/worthwhile/proxy_submission.js +23 -0
- data/app/assets/javascripts/worthwhile/select_works.js.coffee +20 -0
- data/app/assets/javascripts/worthwhile/worthwhile.js +45 -0
- data/app/assets/stylesheets/worthwhile.css.scss +23 -0
- data/app/assets/stylesheets/worthwhile/_global-variables.css.scss +5 -0
- data/app/assets/stylesheets/worthwhile/_modules.css.scss +14 -0
- data/app/assets/stylesheets/worthwhile/_positioning.css.scss +138 -0
- data/app/assets/stylesheets/worthwhile/_theme.css.scss +46 -0
- data/app/assets/stylesheets/worthwhile/_typography.css.scss +142 -0
- data/app/assets/stylesheets/worthwhile/_variables_bootstrap.css.scss +7 -0
- data/app/assets/stylesheets/worthwhile/_worthwhile.css.scss +7 -0
- data/app/assets/stylesheets/worthwhile/downloads.css.scss +3 -0
- data/app/assets/stylesheets/worthwhile/help_requests.css.scss +3 -0
- data/app/assets/stylesheets/worthwhile/modules/accessibility.css.scss +50 -0
- data/app/assets/stylesheets/worthwhile/modules/accordion.css.scss +33 -0
- data/app/assets/stylesheets/worthwhile/modules/attributes.css.scss +26 -0
- data/app/assets/stylesheets/worthwhile/modules/classify_work.css.scss +100 -0
- data/app/assets/stylesheets/worthwhile/modules/collections.css.scss +42 -0
- data/app/assets/stylesheets/worthwhile/modules/embargoes.css.scss +15 -0
- data/app/assets/stylesheets/worthwhile/modules/emphatic_action_area.css.scss +14 -0
- data/app/assets/stylesheets/worthwhile/modules/forms.css.scss +116 -0
- data/app/assets/stylesheets/worthwhile/modules/multi_value_fields.css.scss +52 -0
- data/app/assets/stylesheets/worthwhile/modules/pagination.css.scss +4 -0
- data/app/assets/stylesheets/worthwhile/modules/search_results.css.scss +55 -0
- data/app/assets/stylesheets/worthwhile/modules/site_actions.css.scss +53 -0
- data/app/assets/stylesheets/worthwhile/modules/site_search.css.scss +46 -0
- data/app/controllers/catalog_controller.rb +3 -0
- data/app/controllers/collections_controller.rb +59 -0
- data/app/controllers/concerns/worthwhile/application_controller_behavior.rb +23 -0
- data/app/controllers/concerns/worthwhile/catalog_controller.rb +347 -0
- data/app/controllers/concerns/worthwhile/curation_concern_controller.rb +131 -0
- data/app/controllers/concerns/worthwhile/files_controller.rb +149 -0
- data/app/controllers/concerns/worthwhile/manages_embargoes.rb +22 -0
- data/app/controllers/concerns/worthwhile/parent_container.rb +31 -0
- data/app/controllers/concerns/worthwhile/themed_layout_controller.rb +31 -0
- data/app/controllers/concerns/worthwhile/without_namespace.rb +15 -0
- data/app/controllers/curation_concern/generic_files_controller.rb +6 -0
- data/app/controllers/curation_concern/generic_works_controller.rb +6 -0
- data/app/controllers/curation_concern/linked_resources_controller.rb +68 -0
- data/app/controllers/curation_concern/permissions_controller.rb +19 -0
- data/app/controllers/downloads_controller.rb +4 -0
- data/app/controllers/embargoes_controller.rb +44 -0
- data/app/controllers/leases_controller.rb +34 -0
- data/app/controllers/registrations_controller.rb +20 -0
- data/app/controllers/sessions_controller.rb +4 -0
- data/app/controllers/worthwhile/application_controller.rb +7 -0
- data/app/controllers/worthwhile/classify_concerns_controller.rb +35 -0
- data/app/datastreams/generic_work_metadata.rb +3 -0
- data/app/datastreams/worthwhile/generic_work_rdf_properties.rb +57 -0
- data/app/datastreams/worthwhile/properties_datastream.rb +28 -0
- data/app/helpers/curate/collections_helper.rb +133 -0
- data/app/helpers/worthwhile/ability_helper.rb +46 -0
- data/app/helpers/worthwhile/attribute_helper.rb +67 -0
- data/app/helpers/worthwhile/catalog_helper.rb +38 -0
- data/app/helpers/worthwhile/collections_helper.rb +19 -0
- data/app/helpers/worthwhile/embargo_helper.rb +17 -0
- data/app/helpers/worthwhile/generic_file_helper.rb +19 -0
- data/app/helpers/worthwhile/lease_helper.rb +18 -0
- data/app/helpers/worthwhile/main_app_helpers.rb +14 -0
- data/app/helpers/worthwhile/render_constraints_helper.rb +42 -0
- data/app/helpers/worthwhile/search_paths_helper.rb +13 -0
- data/app/helpers/worthwhile/thumbnail_helper.rb +11 -0
- data/app/helpers/worthwhile/title_helper.rb +23 -0
- data/app/helpers/worthwhile/url_helper.rb +16 -0
- data/app/inputs/multi_value_input.rb +72 -0
- data/app/models/collection.rb +15 -0
- data/app/models/concerns/curation_concern/collection_model.rb +62 -0
- data/app/models/concerns/curation_concern/curatable.rb +77 -0
- data/app/models/concerns/curation_concern/has_representative.rb +14 -0
- data/app/models/concerns/curation_concern/human_readable_type.rb +23 -0
- data/app/models/concerns/curation_concern/with_basic_metadata.rb +49 -0
- data/app/models/concerns/curation_concern/with_editors.rb +44 -0
- data/app/models/concerns/curation_concern/with_generic_files.rb +23 -0
- data/app/models/concerns/curation_concern/with_linked_resources.rb +21 -0
- data/app/models/concerns/curation_concern/work.rb +24 -0
- data/app/models/concerns/worthwhile/ability.rb +34 -0
- data/app/models/concerns/worthwhile/generic_file/versioned_content.rb +18 -0
- data/app/models/concerns/worthwhile/generic_file_base.rb +64 -0
- data/app/models/concerns/worthwhile/solr_document_behavior.rb +140 -0
- data/app/models/generic_work.rb +5 -0
- data/app/models/worthwhile/classify_concern.rb +47 -0
- data/app/models/worthwhile/content_version.rb +23 -0
- data/app/models/worthwhile/contributor_agreement.rb +23 -0
- data/app/models/worthwhile/generic_file.rb +5 -0
- data/app/models/worthwhile/linked_resource.rb +41 -0
- data/app/models/worthwhile/quick_classification_query.rb +31 -0
- data/app/services/worthwhile/curation_concern.rb +21 -0
- data/app/services/worthwhile/embargo_service.rb +26 -0
- data/app/services/worthwhile/lease_service.rb +23 -0
- data/app/views/catalog/_action_menu_partials/_collection.html.erb +27 -0
- data/app/views/catalog/_action_menu_partials/_default.html.erb +27 -0
- data/app/views/catalog/_document.html.erb +3 -0
- data/app/views/catalog/_document_list.html.erb +5 -0
- data/app/views/catalog/_home_text.html.erb +8 -0
- data/app/views/catalog/_index_default.html.erb +17 -0
- data/app/views/catalog/_index_header_list_default.html.erb +17 -0
- data/app/views/catalog/_navbar.html.erb +12 -0
- data/app/views/catalog/_show_partials/_default.html.erb +22 -0
- data/app/views/catalog/_show_partials/_default_details.html.erb +15 -0
- data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
- data/app/views/catalog/index.html.erb +48 -0
- data/app/views/collections/_batch_edits_actions.html.erb +3 -0
- data/app/views/collections/_button_for_creating_empty_collection.html.erb +3 -0
- data/app/views/collections/_collection.html.erb +1 -0
- data/app/views/collections/_dashboard_document_list.html.erb +6 -0
- data/app/views/collections/_document_list.html.erb +7 -0
- data/app/views/collections/_edit_actions.html.erb +5 -0
- data/app/views/collections/_edit_descriptions.html.erb +20 -0
- data/app/views/collections/_form.html.erb +26 -0
- data/app/views/collections/_form_for_select_collection.html.erb +34 -0
- data/app/views/collections/_form_permission.html.erb +36 -0
- data/app/views/collections/_form_required_information.html.erb +11 -0
- data/app/views/collections/_identifier_and_action.html.erb +15 -0
- data/app/views/collections/_media_display.html.erb +1 -0
- data/app/views/collections/_paginate.html.erb +6 -0
- data/app/views/collections/_search_collection_dashboard_form.html.erb +10 -0
- data/app/views/collections/_show_actions.html.erb +8 -0
- data/app/views/collections/_show_descriptions.html.erb +10 -0
- data/app/views/collections/_show_fields.html.erb +0 -0
- data/app/views/collections/_single_item_action_fields.html.erb +6 -0
- data/app/views/collections/_sort_and_per_page.html.erb +29 -0
- data/app/views/collections/_view_type_group.html.erb +13 -0
- data/app/views/collections/edit.html.erb +22 -0
- data/app/views/collections/new.html.erb +15 -0
- data/app/views/collections/show.html.erb +24 -0
- data/app/views/curate/collections/_add_to_collection_modal.html.erb +15 -0
- data/app/views/curate/collections/_button_remove_from_collection.html.erb +6 -0
- data/app/views/curate/collections/_form_to_add_member.html.erb +27 -0
- data/app/views/curate/collections/add_member_form.html.erb +6 -0
- data/app/views/curation_concern/base/_attributes.html.erb +25 -0
- data/app/views/curation_concern/base/_collections.html.erb +26 -0
- data/app/views/curation_concern/base/_form.html.erb +27 -0
- data/app/views/curation_concern/base/_form_additional_information.html.erb +9 -0
- data/app/views/curation_concern/base/_form_content_license.html.erb +16 -0
- data/app/views/curation_concern/base/_form_contributor_agreement.html.erb +29 -0
- data/app/views/curation_concern/base/_form_descriptive_fields.erb +23 -0
- data/app/views/curation_concern/base/_form_files_and_links.html.erb +29 -0
- data/app/views/curation_concern/base/_form_permission.html.erb +52 -0
- data/app/views/curation_concern/base/_form_permission_embargo.html.erb +6 -0
- data/app/views/curation_concern/base/_form_permission_lease.html.erb +6 -0
- data/app/views/curation_concern/base/_form_permission_under_embargo.html.erb +16 -0
- data/app/views/curation_concern/base/_form_permission_under_lease.html.erb +18 -0
- data/app/views/curation_concern/base/_form_representative_image.html.erb +13 -0
- data/app/views/curation_concern/base/_form_required_information.html.erb +11 -0
- data/app/views/curation_concern/base/_form_supplementary_fields.html.erb +15 -0
- data/app/views/curation_concern/base/_legally_binding_text.html.erb +33 -0
- data/app/views/curation_concern/base/_related_files.html.erb +24 -0
- data/app/views/curation_concern/base/_related_resources.html.erb +40 -0
- data/app/views/curation_concern/base/_representative_media.html.erb +8 -0
- data/app/views/curation_concern/base/edit.html.erb +15 -0
- data/app/views/curation_concern/base/new.html.erb +14 -0
- data/app/views/curation_concern/base/show.html.erb +32 -0
- data/app/views/curation_concern/base/unauthorized.html.erb +3 -0
- data/app/views/curation_concern/generic_files/_form.html.erb +35 -0
- data/app/views/curation_concern/generic_files/_media_display.html.erb +20 -0
- data/app/views/curation_concern/generic_files/edit.html.erb +5 -0
- data/app/views/curation_concern/generic_files/show.html.erb +15 -0
- data/app/views/curation_concern/generic_works/_generic_work.html.erb +3 -0
- data/app/views/curation_concern/linked_resources/_form.html.erb +11 -0
- data/app/views/curation_concern/linked_resources/edit.html.erb +5 -0
- data/app/views/curation_concern/linked_resources/new.html.erb +5 -0
- data/app/views/curation_concern/permissions/confirm.html.erb +13 -0
- data/app/views/curation_concern/worthwhile/generic_files/_actions.html.erb +16 -0
- data/app/views/curation_concern/worthwhile/generic_files/_generic_file.html.erb +12 -0
- data/app/views/embargoes/_embargo_history.html.erb +7 -0
- data/app/views/embargoes/_list_active_embargoes.html.erb +16 -0
- data/app/views/embargoes/_list_deactivated_embargoes.html.erb +10 -0
- data/app/views/embargoes/_list_expired_active_embargoes.html.erb +44 -0
- data/app/views/embargoes/edit.html.erb +43 -0
- data/app/views/embargoes/index.html.erb +18 -0
- data/app/views/layouts/boilerplate.html.erb +22 -0
- data/app/views/layouts/common_objects.html.erb +36 -0
- data/app/views/layouts/curate_nd.html.erb +33 -0
- data/app/views/layouts/curate_nd/1_column.html.erb +22 -0
- data/app/views/layouts/curate_nd/2_column.html.erb +26 -0
- data/app/views/layouts/curate_nd/catalog.html.erb +38 -0
- data/app/views/layouts/curate_nd/dashboard.html.erb +22 -0
- data/app/views/leases/_lease_history.html.erb +7 -0
- data/app/views/leases/_list_active_leases.html.erb +16 -0
- data/app/views/leases/_list_deactivated_leases.html.erb +4 -0
- data/app/views/leases/_list_expired_active_leases.html.erb +38 -0
- data/app/views/leases/edit.html.erb +43 -0
- data/app/views/leases/index.html.erb +18 -0
- data/app/views/shared/_add_content.html.erb +32 -0
- data/app/views/shared/_brand_bar.html.erb +10 -0
- data/app/views/shared/_flash_message.html.erb +17 -0
- data/app/views/shared/_footer.html.erb +10 -0
- data/app/views/shared/_ga.html.erb +6 -0
- data/app/views/shared/_header.html.erb +12 -0
- data/app/views/shared/_my_actions.html.erb +21 -0
- data/app/views/shared/_site_actions.html.erb +7 -0
- data/app/views/shared/_site_search.html.erb +12 -0
- data/app/views/shared/_title_bar.html.erb +16 -0
- data/app/views/worthwhile/classify_concerns/new.html.erb +27 -0
- data/app/workers/visibility_copy_worker.rb +29 -0
- data/config/initializers/simple_form.rb +31 -0
- data/config/locales/sufia.en.yml +26 -0
- data/config/locales/worthwhile.en.yml +68 -0
- data/config/routes.rb +4 -0
- data/lib/generators/worthwhile/install_generator.rb +74 -0
- data/lib/generators/worthwhile/templates/worthwhile.css.scss +3 -0
- data/lib/generators/worthwhile/templates/worthwhile.js +1 -0
- data/lib/generators/worthwhile/templates/worthwhile_config.rb +3 -0
- data/lib/generators/worthwhile/templates/worthwhile_helper.rb +4 -0
- data/lib/worthwhile.rb +3 -1
- data/lib/worthwhile/configuration.rb +74 -0
- data/lib/worthwhile/controller_resource.rb +10 -0
- data/lib/worthwhile/engine.rb +20 -0
- data/lib/worthwhile/rails/routes.rb +78 -0
- data/lib/worthwhile/spec_support.rb +10 -0
- data/lib/worthwhile/version.rb +1 -1
- data/spec/abilities/generic_file_abilities_spec.rb +62 -0
- data/spec/abilities/generic_work_abilities_spec.rb +58 -0
- data/spec/actors/curation_concern/generic_work_actor_spec.rb +215 -0
- data/spec/actors/curation_concern/linked_resource_actor_spec.rb +36 -0
- data/spec/actors/worthwile/manages_embargoes_actor_spec.rb +95 -0
- data/spec/controllers/catalog_controller_spec.rb +114 -0
- data/spec/controllers/collections_controller_spec.rb +216 -0
- data/spec/controllers/curation_concern/generic_files_controller_spec.rb +258 -0
- data/spec/controllers/curation_concern/generic_works_controller_spec.rb +171 -0
- data/spec/controllers/curation_concern/linked_resources_controller_spec.rb +123 -0
- data/spec/controllers/curation_concern/permissions_controller_spec.rb +29 -0
- data/spec/controllers/downloads_controller_spec.rb +53 -0
- data/spec/controllers/embargoes_controller_spec.rb +107 -0
- data/spec/controllers/leases_controller_spec.rb +95 -0
- data/spec/controllers/worthwhile/classify_concerns_controller_spec.rb +35 -0
- data/spec/factories/collections_factory.rb +21 -0
- data/spec/factories/create_curation_concern.rb +3 -0
- data/spec/factories/generic_files.rb +18 -0
- data/spec/factories/generic_works.rb +37 -0
- data/spec/factories/linked_resources_factory.rb +18 -0
- data/spec/factories/users.rb +15 -0
- data/spec/features/add_external_link_spec.rb +25 -0
- data/spec/features/add_file_spec.rb +28 -0
- data/spec/features/collection_spec.rb +238 -0
- data/spec/features/embargo_spec.rb +45 -0
- data/spec/features/lease_spec.rb +43 -0
- data/spec/features/update_file_spec.rb +28 -0
- data/spec/fixtures/files/image.png +0 -0
- data/spec/helpers/catalog_helper_spec.rb +58 -0
- data/spec/helpers/configuration_helper_spec.rb +13 -0
- data/spec/helpers/render_constraints_helper_spec.rb +19 -0
- data/spec/helpers/thumbnail_helper_spec.rb +21 -0
- data/spec/helpers/url_helper_spec.rb +19 -0
- data/spec/matchers.rb +24 -0
- data/spec/matchers/metadata_field_matchers.rb +28 -0
- data/spec/models/collection_spec.rb +136 -0
- data/spec/models/curation_concern/collection_model_spec.rb +50 -0
- data/spec/models/curation_concern/work_spec.rb +30 -0
- data/spec/models/generic_work_spec.rb +24 -0
- data/spec/models/worthwhile/content_version_spec.rb +27 -0
- data/spec/models/worthwhile/generic_file_spec.rb +77 -0
- data/spec/models/worthwhile/linked_resource_spec.rb +76 -0
- data/spec/routing/worthwhile/routes_spec.rb +23 -0
- data/spec/services/embargo_service_spec.rb +38 -0
- data/spec/services/lease_service_spec.rb +37 -0
- data/spec/spec_helper.rb +30 -5
- data/spec/support/controllers/engine_helpers.rb +7 -0
- data/spec/support/curation_concern/factory_helpers.rb +14 -0
- data/spec/support/features.rb +19 -0
- data/spec/support/features/fixture_file_upload.rb +14 -0
- data/spec/support/features/session_helpers.rb +41 -0
- data/spec/support/shared/shared_examples_has_dc_metadata.rb +17 -0
- data/spec/support/shared/shared_examples_is_a_curation_concern_model.rb +40 -0
- data/spec/support/shared/shared_examples_is_embargoable.rb +8 -0
- data/spec/support/shared/shared_examples_with_access_rights.rb +63 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +8 -29
- data/spec/views/curation_concern/base/_attributes.html.erb_spec.rb +25 -0
- data/spec/views/curation_concern/base/show.html.erb_spec.rb +25 -0
- data/spec/views/shared/_add_content.html.erb_spec.rb +42 -0
- data/spec/views/shared/_my_actions.html.erb_spec.rb +23 -0
- data/spec/workers/visibility_copy_worker_spec.rb +68 -0
- data/vendor/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/javascripts/handlebars.js +2278 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.autocomplete.js +602 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.core.js +356 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +50 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +1276 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.menu.js +610 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +498 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.widget.js +528 -0
- data/vendor/assets/javascripts/jquery.tokeninput.js +1061 -0
- data/vendor/assets/stylesheets/jquery-ui-lightness.css +474 -0
- data/vendor/assets/stylesheets/token-input-facebook.css +122 -0
- data/vendor/assets/stylesheets/token-input-mac.css +204 -0
- data/vendor/assets/stylesheets/token-input.css +127 -0
- data/worthwhile.gemspec +9 -3
- metadata +469 -9
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'active_attr'
|
|
2
|
+
module Worthwhile
|
|
3
|
+
class ClassifyConcern
|
|
4
|
+
include ActiveAttr::Model
|
|
5
|
+
attribute :curation_concern_type
|
|
6
|
+
|
|
7
|
+
validates(
|
|
8
|
+
:curation_concern_type,
|
|
9
|
+
presence: true,
|
|
10
|
+
inclusion: { in: lambda { |record| record.registered_curation_concern_types } }
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
def all_curation_concern_classes
|
|
14
|
+
registered_curation_concern_types.sort.map { |c| self.class.to_class(c) }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def registered_curation_concern_types
|
|
18
|
+
Worthwhile.configuration.registered_curation_concern_types
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def possible_curation_concern_types
|
|
22
|
+
registered_curation_concern_types.collect do |concern|
|
|
23
|
+
[self.class.to_class(concern).human_readable_type, concern]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def curation_concern_class
|
|
28
|
+
if possible_curation_concern_types.detect{|name, class_name|
|
|
29
|
+
class_name == curation_concern_type
|
|
30
|
+
}
|
|
31
|
+
self.class.to_class(curation_concern_type)
|
|
32
|
+
else
|
|
33
|
+
raise RuntimeError, "Invalid :curation_concern_type"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.to_class(type)
|
|
38
|
+
# TODO we may want to allow a different (or nil) namespace
|
|
39
|
+
type.camelize.constantize
|
|
40
|
+
# begin
|
|
41
|
+
# "::#{type.camelize}".constantize
|
|
42
|
+
# rescue NameError
|
|
43
|
+
# "Worthwhile::#{type}".constantize
|
|
44
|
+
# end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
class ContentVersion
|
|
3
|
+
class Null
|
|
4
|
+
def initialize(content)
|
|
5
|
+
end
|
|
6
|
+
def created_on; 'unknown'; end
|
|
7
|
+
def committer_name; 'unknown'; end
|
|
8
|
+
def formatted_created_on(*args); 'unknown'; end
|
|
9
|
+
def version_id; 'unknown'; end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
attr_reader :version_id, :created_on, :committer_name
|
|
13
|
+
def initialize(content, version_structure)
|
|
14
|
+
@created_on = version_structure.dsCreateDate
|
|
15
|
+
@version_id = version_structure.versionID
|
|
16
|
+
@committer_name = content.version_committer(version_structure)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def formatted_created_on(format = :long_ordinal )
|
|
20
|
+
created_on.localtime.to_formatted_s(format)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
class ContributorAgreement
|
|
3
|
+
attr_reader :curation_concern, :user
|
|
4
|
+
def initialize(curation_concern, user, params)
|
|
5
|
+
@curation_concern = curation_concern
|
|
6
|
+
@user = user
|
|
7
|
+
@param_value = params[param_key.to_sym] || params[param_key.to_s]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def acceptance_value
|
|
11
|
+
'accept'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def param_key
|
|
15
|
+
:accept_contributor_agreement
|
|
16
|
+
end
|
|
17
|
+
attr_reader :param_value
|
|
18
|
+
|
|
19
|
+
def is_being_accepted?
|
|
20
|
+
param_value == acceptance_value
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
class LinkedResource < ActiveFedora::Base
|
|
3
|
+
include ::CurationConcern::Work
|
|
4
|
+
|
|
5
|
+
has_file_datastream "content", control_group: 'E'
|
|
6
|
+
has_metadata "descMetadata", type: GenericFileRdfDatastream
|
|
7
|
+
|
|
8
|
+
belongs_to :batch, property: :is_part_of, class_name: 'ActiveFedora::Base'
|
|
9
|
+
|
|
10
|
+
validates :url, presence: true
|
|
11
|
+
|
|
12
|
+
self.human_readable_short_description = "An arbitrary URL reference."
|
|
13
|
+
include ActionView::Helpers::SanitizeHelper
|
|
14
|
+
|
|
15
|
+
has_attributes :date_uploaded, :date_modified, :title, :description, datastream: :descMetadata, multiple: false
|
|
16
|
+
|
|
17
|
+
# Creator is multiple to match Sufia::GenericFile#creator
|
|
18
|
+
has_attributes :creator, datastream: :descMetadata, multiple: true
|
|
19
|
+
|
|
20
|
+
def url=(url)
|
|
21
|
+
u = URI::Parser.new.parse(url)
|
|
22
|
+
return unless [URI::HTTP, URI::HTTPS, URI::FTP].include?(u.class)
|
|
23
|
+
content.dsLocation = u.to_s
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def url
|
|
27
|
+
content.dsLocation
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_s
|
|
31
|
+
url
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def to_solr(solr_doc={}, opts={})
|
|
35
|
+
super
|
|
36
|
+
Solrizer.set_field(solr_doc, 'url', url, :stored_searchable)
|
|
37
|
+
solr_doc
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
class QuickClassificationQuery
|
|
3
|
+
|
|
4
|
+
def self.each_for_context(*args, &block)
|
|
5
|
+
new(*args).all.each(&block)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
attr_reader :user
|
|
9
|
+
|
|
10
|
+
def initialize(user, options = {})
|
|
11
|
+
@user = user
|
|
12
|
+
@concern_name_normalizer = options.fetch(:concern_name_normalizer, ClassifyConcern.method(:to_class))
|
|
13
|
+
@registered_curation_concern_names = options.fetch(:registered_curation_concern_names, Worthwhile.configuration.registered_curation_concern_types)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def all
|
|
17
|
+
ActiveFedora::Base.logger.debug "User is #{user}"
|
|
18
|
+
ActiveFedora::Base.logger.debug "try is #{normalized_curation_concern_names.first}"
|
|
19
|
+
ActiveFedora::Base.logger.debug "can is #{user.can?(:create, normalized_curation_concern_names.first)}"
|
|
20
|
+
normalized_curation_concern_names.select {|klass| user.can?(:create, klass)}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
attr_reader :concern_name_normalizer, :registered_curation_concern_names
|
|
26
|
+
|
|
27
|
+
def normalized_curation_concern_names
|
|
28
|
+
registered_curation_concern_names.collect{|name| concern_name_normalizer.call(name) }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
module CurationConcern
|
|
3
|
+
|
|
4
|
+
module_function
|
|
5
|
+
|
|
6
|
+
def mint_a_pid
|
|
7
|
+
Sufia::Noid.namespaceize(Sufia::Noid.noidify(Sufia::IdService.mint))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actor(curation_concern, *args)
|
|
11
|
+
actor_identifier = curation_concern.class.to_s.split('::').last
|
|
12
|
+
klass = "CurationConcern::#{actor_identifier}Actor".constantize
|
|
13
|
+
klass.new(curation_concern, *args)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def attach_file(generic_file, user, file_to_attach)
|
|
17
|
+
Sufia::GenericFile::Actor.new(generic_file, user).create_content(file_to_attach, file_to_attach.original_filename, 'content')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
module EmbargoService
|
|
3
|
+
class << self
|
|
4
|
+
#
|
|
5
|
+
# Methods for Querying Repository to find Embargoed Objects
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
# Returns all assets with embargo release date set to a date in the past
|
|
9
|
+
def assets_with_expired_embargoes
|
|
10
|
+
ActiveFedora::Base.where('embargo_release_date_dtsi:[* TO NOW]')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Returns all assets with embargo release date set
|
|
14
|
+
# (assumes that when lease visibility is applied to assets
|
|
15
|
+
# whose leases have expired, the lease expiration date will be removed from its metadata)
|
|
16
|
+
def assets_under_embargo
|
|
17
|
+
ActiveFedora::Base.where('embargo_release_date_dtsi:*')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Returns all assets that have had embargoes deactivated in the past.
|
|
21
|
+
def assets_with_deactivated_embargoes
|
|
22
|
+
ActiveFedora::Base.where('embargo_history_ssim:*')
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
module LeaseService
|
|
3
|
+
class << self
|
|
4
|
+
# Returns all assets with lease expiration date set to a date in the past
|
|
5
|
+
def assets_with_expired_leases
|
|
6
|
+
ActiveFedora::Base.where('lease_expiration_date_dtsi:[* TO NOW]')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Returns all assets with lease expiration date set
|
|
10
|
+
# (assumes that when lease visibility is applied to assets
|
|
11
|
+
# whose leases have expired, the lease expiration date will be removed from its metadata)
|
|
12
|
+
def assets_under_lease
|
|
13
|
+
ActiveFedora::Base.where('lease_expiration_date_dtsi:*')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns all assets that have had embargoes deactivated in the past.
|
|
17
|
+
def assets_with_deactivated_leases
|
|
18
|
+
ActiveFedora::Base.where('lease_history_ssim:*')
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<div class="btn-group">
|
|
2
|
+
<button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#">Select an action <span class="caret"></span></button>
|
|
3
|
+
<ul class="dropdown-menu">
|
|
4
|
+
<% if can? :edit, document %>
|
|
5
|
+
<li>
|
|
6
|
+
<%= link_to [collections, :edit, document], class: 'itemicon itemedit' do %><i class="glyphicon glyphicon-pencil"></i> Edit <%= document.human_readable_type %>
|
|
7
|
+
<% end %>
|
|
8
|
+
</li>
|
|
9
|
+
<li>
|
|
10
|
+
<% if @collection # We're on the view page for @collection. -%>
|
|
11
|
+
<%= button_for_remove_from_collection(document) %>
|
|
12
|
+
<% else %>
|
|
13
|
+
<%= link_to [collections, document], class: 'itemicon itemtrash', title: 'Delete Collection', method: :delete, data: {
|
|
14
|
+
confirm: "Deleting a collection from #{t('sufia.product_name')} is permanent. Click OK to delete this collection from #{t('sufia.product_name')}, or Cancel to cancel this operation" } do %>
|
|
15
|
+
<i class="glyphicon glyphicon-trash"></i> Delete <%= document.human_readable_type %>
|
|
16
|
+
<% end %>
|
|
17
|
+
<% end %>
|
|
18
|
+
</li>
|
|
19
|
+
<% end %>
|
|
20
|
+
<% if can? :collect, document %>
|
|
21
|
+
<li>
|
|
22
|
+
<%= link_to_select_collection document %>
|
|
23
|
+
</li>
|
|
24
|
+
<% end %>
|
|
25
|
+
</ul>
|
|
26
|
+
<%= render 'curate/collections/add_to_collection_modal', collectible: document if can? :collect, document %>
|
|
27
|
+
</div>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<div class="btn-group">
|
|
2
|
+
<button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#">Select an action <span class="caret"></span></button>
|
|
3
|
+
<ul class="dropdown-menu">
|
|
4
|
+
<% if can? :edit, document %>
|
|
5
|
+
<li>
|
|
6
|
+
<%= link_to [:edit, :curation_concern, document], class: 'itemicon itemedit' do %><i class="glyphicon glyphicon-pencil"></i> Edit <%= document.human_readable_type %>
|
|
7
|
+
<% end %>
|
|
8
|
+
</li>
|
|
9
|
+
<li>
|
|
10
|
+
<% if @collection # We're on the view page for @collection. -%>
|
|
11
|
+
<%= button_for_remove_from_collection(document) %>
|
|
12
|
+
<% else %>
|
|
13
|
+
<%= link_to [:curation_concern, document], class: 'itemicon itemtrash', title: 'Delete Collection', method: :delete, data: {
|
|
14
|
+
confirm: "Deleting a collection from #{t('sufia.product_name')} is permanent. Click OK to delete this collection from #{t('sufia.product_name')}, or Cancel to cancel this operation" } do %>
|
|
15
|
+
<i class="glyphicon glyphicon-trash"></i> Delete <%= document.human_readable_type %>
|
|
16
|
+
<% end %>
|
|
17
|
+
<% end %>
|
|
18
|
+
</li>
|
|
19
|
+
<% end %>
|
|
20
|
+
<% if can? :collect, document %>
|
|
21
|
+
<li>
|
|
22
|
+
<%= link_to_select_collection document %>
|
|
23
|
+
</li>
|
|
24
|
+
<% end %>
|
|
25
|
+
</ul>
|
|
26
|
+
<%= render 'curate/collections/add_to_collection_modal', collectible: document if can? :collect, document %>
|
|
27
|
+
</div>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<li id="document_<%= document.to_param %>" class="document <%= render_document_class document %>" itemscope itemtype="<%= document.itemtype %>">
|
|
2
|
+
<%= render_document_partials document, blacklight_config.view_config(document_index_view_type).partials, document_counter: document_counter %>
|
|
3
|
+
</li>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<h3 id="document-list-heading" class="accessible-hidden">List of files deposited in <%= t('sufia.product_name') %> that match your search criteria</h3>
|
|
2
|
+
<ol id="documents" class="container-fluid search-results-list" start="<%= document_counter_with_offset(0) %>" aria-labeled-by="document-list-heading">
|
|
3
|
+
<%= render documents, as: :document %>
|
|
4
|
+
</ul>
|
|
5
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<p>
|
|
2
|
+
<%=t('sufia.product_name') %> is a secure repository service enabling the
|
|
3
|
+
<%=t('sufia.institution_name') %> community to share its research and scholarly
|
|
4
|
+
work with a worldwide audience. Faculty, staff, and students can use
|
|
5
|
+
<%=t('sufia.product_name') %> to collect their work in one location and create a
|
|
6
|
+
durable and citeable record of their papers, presentations, publications, data
|
|
7
|
+
sets, or other scholarly creations.
|
|
8
|
+
</p>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="row">
|
|
2
|
+
<%= render_document_partial document, 'thumbnail', document_counter: document_counter %>
|
|
3
|
+
<dl class="document-metadata dl-invert dl-horizontal">
|
|
4
|
+
|
|
5
|
+
<% index_fields(document).each do |solr_fname, field| -%>
|
|
6
|
+
<% if should_render_index_field? document, field %>
|
|
7
|
+
<dt class="blacklight-<%= solr_fname.parameterize %>"><%= render_index_field_label document, :field => solr_fname %></dt>
|
|
8
|
+
<dd class="blacklight-<%= solr_fname.parameterize %>"><%= render_index_field_value document, :field => solr_fname %></dd>
|
|
9
|
+
<% end -%>
|
|
10
|
+
<% end -%>
|
|
11
|
+
|
|
12
|
+
</dl>
|
|
13
|
+
|
|
14
|
+
<div class="search-result-actions">
|
|
15
|
+
<%= render_document_partial document, 'action_menu' %>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
<% # header bar for doc items in index view -%>
|
|
3
|
+
<div class="documentHeader">
|
|
4
|
+
|
|
5
|
+
<%# main title container for doc partial view
|
|
6
|
+
How many bootstrap columns need to be reserved
|
|
7
|
+
for bookmarks control depends on size.
|
|
8
|
+
-%>
|
|
9
|
+
|
|
10
|
+
<h4 class="index_title">
|
|
11
|
+
<% counter = document_counter_with_offset(document_counter) %>
|
|
12
|
+
<%= link_to_document document, label: document_show_link_field(document), counter: counter %>
|
|
13
|
+
</h4>
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<nav class="navbar navbar-default" role="navigation">
|
|
2
|
+
<div class="container-fluid">
|
|
3
|
+
<div class="collapse navbar-collapse" id="type-tabs">
|
|
4
|
+
<ul class="nav navbar-nav">
|
|
5
|
+
<%= all_type_tab %>
|
|
6
|
+
<%= type_tab 'Works', 'Work' %>
|
|
7
|
+
<%= type_tab 'Collections', 'Collection' %>
|
|
8
|
+
</ul>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
</nav>
|
|
12
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%# default partial to display solr document fields in catalog show view -%>
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<div class="document_viewer" id="cover_container">
|
|
5
|
+
<dl class="defList">
|
|
6
|
+
<dt>ID: </dt>
|
|
7
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"id") %></dd>
|
|
8
|
+
<dt>Download:</dt>
|
|
9
|
+
<dd id="downloads">
|
|
10
|
+
<ul>
|
|
11
|
+
<% %>
|
|
12
|
+
</ul>
|
|
13
|
+
</dd>
|
|
14
|
+
<dt>Copyright: </dt>
|
|
15
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"rights_t") %></dd>
|
|
16
|
+
</dl>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="<%= params[:action]%>_details">
|
|
19
|
+
<%= render :partial => "#{params[:controller]}/_#{params[:action]}_partials/default_details", :locals => {:document => document}%>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<%= async_load_tag(hydra_asset_downloads_path(params[:id]), 'downloads') %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<%# default partial to display solr document fields in catalog show view -%>
|
|
2
|
+
<div>
|
|
3
|
+
<dl class="defList">
|
|
4
|
+
<dt>Date: </dt>
|
|
5
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"date_t") %></dd>
|
|
6
|
+
<dt>Title: </dt>
|
|
7
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"title_t") %></dd>
|
|
8
|
+
<dt>Document Type: </dt>
|
|
9
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"medium_t") %></dd>
|
|
10
|
+
<dt>Location: </dt>
|
|
11
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"location_t") %></dd>
|
|
12
|
+
<dt>Date: </dt>
|
|
13
|
+
<dd><%= render_document_show_field_value(:document=>document, :field=>"date_t") %></dd>
|
|
14
|
+
</dl>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<% facets_display_heading ||= "" %>
|
|
2
|
+
<% # main container for facets/limits menu -%>
|
|
3
|
+
<div id="facets">
|
|
4
|
+
<h2><%=h facets_display_heading %></h2>
|
|
5
|
+
<% facet_field_names.each do |solr_fname| %>
|
|
6
|
+
<div>
|
|
7
|
+
<% display_facet = @response.facets.detect {|f| f.name == solr_fname} -%>
|
|
8
|
+
<%#- raise solr_fname.inspect unless display_facet -%>
|
|
9
|
+
<% if display_facet && display_facet.items.length > 0 %>
|
|
10
|
+
<h3 class="facet_selected"><%= facet_field_labels[solr_fname] -%></h3>
|
|
11
|
+
<ul>
|
|
12
|
+
<% item_counter = 0 %>
|
|
13
|
+
<% display_facet.items.each do |item| -%>
|
|
14
|
+
<% if item.hits > 0 %>
|
|
15
|
+
<% facet_count_for_value = facet_value_hits(@facet_lookup, solr_fname, item.value) %>
|
|
16
|
+
<% if facet_in_params? solr_fname, item.value %>
|
|
17
|
+
<li>
|
|
18
|
+
<span class="selected"><%= h(item.value) %> (<%= format_num facet_count_for_value %>)</span>
|
|
19
|
+
<% link_options = remove_facet_params(solr_fname, item.value, params).merge!Hash["controller" => "catalog", :action=> "index"] %>
|
|
20
|
+
[<%= link_to 'remove', url_for(link_options), :class=>'remove' %>]
|
|
21
|
+
</li>
|
|
22
|
+
<% else %>
|
|
23
|
+
<%- if item_counter > Blacklight.config[:facet_more_num]-1 -%>
|
|
24
|
+
<li class="more">
|
|
25
|
+
<%- else -%>
|
|
26
|
+
<li>
|
|
27
|
+
<%- end -%>
|
|
28
|
+
<% link_options = add_facet_params(solr_fname, item.value).merge!Hash["controller" => "catalog", :action=> "index"] %>
|
|
29
|
+
<%= link_to h(item.value), url_for(link_options) %> (<%= format_num facet_count_for_value %>)
|
|
30
|
+
</li>
|
|
31
|
+
<% end -%>
|
|
32
|
+
<% end -%>
|
|
33
|
+
<% item_counter += 1 %>
|
|
34
|
+
<% end %>
|
|
35
|
+
<%= display_facet.items.length > Blacklight.config[:facet_more_num] ? "<li class='more_li'><a href='' class='more_link' title='more #{pluralize(2, facet_field_labels[solr_fname])[2..-1].downcase}'>more<span class='off_screen'> #{pluralize(2, facet_field_labels[solr_fname])[2..-1].downcase}</span></a></li>" : "" %>
|
|
36
|
+
<%= display_facet.items.length > Blacklight.config[:facet_more_num] ? "<li class='less_li' style='display:none;'><a href='' class='more_link' title='less #{pluralize(2, facet_field_labels[solr_fname])[2..-1].downcase}'>less<span class='off_screen'> #{pluralize(2, facet_field_labels[solr_fname])[2..-1].downcase}</span></a></li>" : "" %>
|
|
37
|
+
</ul>
|
|
38
|
+
<% end %>
|
|
39
|
+
</div>
|
|
40
|
+
<% end %>
|
|
41
|
+
</div>
|
|
42
|
+
<script type="text/javascript">
|
|
43
|
+
$(".more").toggle();
|
|
44
|
+
$('.more_link').each(function(){
|
|
45
|
+
$(this).click(function(){
|
|
46
|
+
$(this).parent().parent().children("li.more").toggle();
|
|
47
|
+
$(this).parent().parent().children("li.more_li").toggle();
|
|
48
|
+
$(this).parent().parent().children("li.less_li").toggle();
|
|
49
|
+
return false;
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
</script>
|