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,19 @@
|
|
|
1
|
+
class CurationConcern::PermissionsController < ApplicationController
|
|
2
|
+
include Worthwhile::CurationConcernController
|
|
3
|
+
with_themed_layout '1_column'
|
|
4
|
+
self.curation_concern_type = ActiveFedora::Base
|
|
5
|
+
|
|
6
|
+
def confirm
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def copy
|
|
10
|
+
Sufia.queue.push(VisibilityCopyWorker.new(curation_concern.id))
|
|
11
|
+
flash_message = 'Updating file permissions. This may take a few minutes. You may want to refresh your browser or return to this record later to see the updated file permissions.'
|
|
12
|
+
redirect_to polymorphic_path([:curation_concern, curation_concern]), notice: flash_message
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def curation_concern
|
|
16
|
+
@curation_concern ||= self.curation_concern_type.find(params[:id], cast: true)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
class EmbargoesController < ApplicationController
|
|
2
|
+
|
|
3
|
+
include Worthwhile::WithoutNamespace
|
|
4
|
+
include Worthwhile::ManagesEmbargoes
|
|
5
|
+
include Hydra::Collections::AcceptsBatches
|
|
6
|
+
|
|
7
|
+
skip_before_filter :normalize_identifier, only: :update
|
|
8
|
+
|
|
9
|
+
# Remove an active or lapsed embargo
|
|
10
|
+
def destroy
|
|
11
|
+
update_files = !curation_concern.under_embargo? # embargo expired
|
|
12
|
+
remove_embargo(curation_concern)
|
|
13
|
+
flash[:notice] = curation_concern.embargo_history.last
|
|
14
|
+
if update_files
|
|
15
|
+
redirect_to confirm_curation_concern_permission_path(curation_concern)
|
|
16
|
+
else
|
|
17
|
+
redirect_to edit_embargo_path(curation_concern)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def update
|
|
22
|
+
filter_docs_with_edit_access!
|
|
23
|
+
copy_visibility = params[:embargoes].values.map { |h| h[:copy_visibility] }
|
|
24
|
+
batch.each do |id|
|
|
25
|
+
ActiveFedora::Base.find(id).tap do |curation_concern|
|
|
26
|
+
remove_embargo(curation_concern)
|
|
27
|
+
curation_concern.copy_visibility_to_files if copy_visibility.include?(id)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
redirect_to embargoes_path
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
protected
|
|
34
|
+
def _prefixes
|
|
35
|
+
# This allows us to use the unauthorized template in curation_concern/base
|
|
36
|
+
@_prefixes ||= super + ['curation_concern/base']
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def remove_embargo(work)
|
|
40
|
+
work.embargo_visibility! # If the embargo has lapsed, update the current visibility.
|
|
41
|
+
work.deactivate_embargo!
|
|
42
|
+
work.save
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class LeasesController < ApplicationController
|
|
2
|
+
include Worthwhile::WithoutNamespace
|
|
3
|
+
include Worthwhile::ManagesEmbargoes
|
|
4
|
+
include Hydra::Collections::AcceptsBatches
|
|
5
|
+
|
|
6
|
+
skip_before_filter :normalize_identifier, only: :update
|
|
7
|
+
|
|
8
|
+
def destroy
|
|
9
|
+
curation_concern.lease_visibility! # If the lease has lapsed, update the current visibility.
|
|
10
|
+
curation_concern.deactivate_lease!
|
|
11
|
+
saved = curation_concern.save
|
|
12
|
+
Sufia.queue.push(VisibilityCopyWorker.new(curation_concern.id)) if saved
|
|
13
|
+
flash[:notice] = curation_concern.lease_history.last
|
|
14
|
+
redirect_to edit_lease_path(curation_concern)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def update
|
|
18
|
+
filter_docs_with_edit_access!
|
|
19
|
+
batch.each do |id|
|
|
20
|
+
ActiveFedora::Base.find(id).tap do |curation_concern|
|
|
21
|
+
curation_concern.deactivate_lease!
|
|
22
|
+
curation_concern.save
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
redirect_to leases_path
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
protected
|
|
30
|
+
def _prefixes
|
|
31
|
+
# This allows us to use the unauthorized template in curation_concern/base
|
|
32
|
+
@_prefixes ||= super + ['curation_concern/base']
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class RegistrationsController < Devise::RegistrationsController
|
|
2
|
+
include Worthwhile::ThemedLayoutController
|
|
3
|
+
with_themed_layout '1_column'
|
|
4
|
+
|
|
5
|
+
protected
|
|
6
|
+
|
|
7
|
+
# def after_update_path_for(resource)
|
|
8
|
+
# resource.update_column(:user_does_not_require_profile_update, true)
|
|
9
|
+
# super
|
|
10
|
+
# end
|
|
11
|
+
|
|
12
|
+
# def resource_class
|
|
13
|
+
# Account
|
|
14
|
+
# end
|
|
15
|
+
|
|
16
|
+
# def sign_up(resource_name, resource)
|
|
17
|
+
# sign_in(resource_name, resource.user)
|
|
18
|
+
# end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
class ClassifyConcernsController < ApplicationController
|
|
3
|
+
include Worthwhile::ThemedLayoutController
|
|
4
|
+
with_themed_layout '1_column'
|
|
5
|
+
respond_to :html
|
|
6
|
+
before_filter :authenticate_user!
|
|
7
|
+
load_and_authorize_resource
|
|
8
|
+
|
|
9
|
+
add_breadcrumb 'Submit a work', lambda {|controller| controller.request.path }
|
|
10
|
+
|
|
11
|
+
def classify_concern
|
|
12
|
+
@classify_concern
|
|
13
|
+
end
|
|
14
|
+
helper_method :classify_concern
|
|
15
|
+
|
|
16
|
+
def new
|
|
17
|
+
respond_with(classify_concern)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create
|
|
21
|
+
classify_concern.attributes = params[:classify_concern]
|
|
22
|
+
if classify_concern.valid?
|
|
23
|
+
respond_with(classify_concern) do |wants|
|
|
24
|
+
wants.html do
|
|
25
|
+
redirect_to new_polymorphic_path(
|
|
26
|
+
[:curation_concern, classify_concern.curation_concern_class]
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
else
|
|
31
|
+
respond_with(classify_concern)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Worthwhile::GenericWorkRdfProperties
|
|
2
|
+
extend ActiveSupport::Concern
|
|
3
|
+
included do
|
|
4
|
+
property :part_of, predicate: RDF::DC.isPartOf
|
|
5
|
+
property :resource_type, predicate: RDF::DC.type do |index|
|
|
6
|
+
index.as :stored_searchable, :facetable
|
|
7
|
+
end
|
|
8
|
+
property :title, predicate: RDF::DC.title do |index|
|
|
9
|
+
index.as :stored_searchable, :facetable
|
|
10
|
+
end
|
|
11
|
+
property :creator, predicate: RDF::DC.creator do |index|
|
|
12
|
+
index.as :stored_searchable, :facetable
|
|
13
|
+
end
|
|
14
|
+
property :contributor, predicate: RDF::DC.contributor do |index|
|
|
15
|
+
index.as :stored_searchable, :facetable
|
|
16
|
+
end
|
|
17
|
+
property :description, predicate: RDF::DC.description do |index|
|
|
18
|
+
index.type :text
|
|
19
|
+
index.as :stored_searchable
|
|
20
|
+
end
|
|
21
|
+
property :relation, predicate: RDF::DC.relation
|
|
22
|
+
property :rights, predicate: RDF::DC.rights do |index|
|
|
23
|
+
index.as :stored_searchable
|
|
24
|
+
end
|
|
25
|
+
property :publisher, predicate: RDF::DC.publisher do |index|
|
|
26
|
+
index.as :stored_searchable, :facetable
|
|
27
|
+
end
|
|
28
|
+
property :created, predicate: RDF::DC.created
|
|
29
|
+
|
|
30
|
+
property :date, predicate: RDF::DC.date do |index|
|
|
31
|
+
index.type :date
|
|
32
|
+
index.as :stored_sortable
|
|
33
|
+
end
|
|
34
|
+
property :date_uploaded, predicate: RDF::DC.dateSubmitted do |index|
|
|
35
|
+
index.type :date
|
|
36
|
+
index.as :stored_sortable
|
|
37
|
+
end
|
|
38
|
+
property :date_modified, predicate: RDF::DC.modified do |index|
|
|
39
|
+
index.type :date
|
|
40
|
+
index.as :stored_sortable
|
|
41
|
+
end
|
|
42
|
+
property :subject, predicate: RDF::DC.subject do |index|
|
|
43
|
+
index.as :stored_searchable, :facetable
|
|
44
|
+
end
|
|
45
|
+
property :language, predicate: RDF::DC.language do |index|
|
|
46
|
+
index.as :stored_searchable, :facetable
|
|
47
|
+
end
|
|
48
|
+
property :identifier, predicate: RDF::DC.identifier do |index|
|
|
49
|
+
index.as :stored_searchable
|
|
50
|
+
end
|
|
51
|
+
property :bibliographic_citation, predicate: RDF::DC.bibliographicCitation
|
|
52
|
+
property :source, predicate: RDF::DC.source
|
|
53
|
+
property :coverage, predicate: RDF::DC.coverage
|
|
54
|
+
property :type, predicate: RDF::DC.type
|
|
55
|
+
property :content_format, predicate: RDF::DC.format
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# properties datastream: catch-all for info that didn't have another home.
|
|
2
|
+
class Worthwhile::PropertiesDatastream < ActiveFedora::OmDatastream
|
|
3
|
+
set_terminology do |t|
|
|
4
|
+
t.root(:path=>"fields" )
|
|
5
|
+
# This is where we put the user id of the object depositor
|
|
6
|
+
t.depositor index_as: :stored_searchable
|
|
7
|
+
t.owner
|
|
8
|
+
|
|
9
|
+
# Although we aren't using these fields, they are required because sufia-models delegates to them.
|
|
10
|
+
t.relative_path
|
|
11
|
+
t.import_url
|
|
12
|
+
|
|
13
|
+
#This attribute should hold the selected file which represent the work.
|
|
14
|
+
t.representative
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.xml_template
|
|
18
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
|
19
|
+
xml.fields
|
|
20
|
+
end
|
|
21
|
+
builder.doc
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def prefix
|
|
25
|
+
'properties_'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#require Hydra::Collections::Engine.root + '/app/helpers/collections_helper.rb'
|
|
2
|
+
# View Helpers for Hydra Collections functionality
|
|
3
|
+
module Curate::CollectionsHelper
|
|
4
|
+
|
|
5
|
+
# Displays the Collections create collection button.
|
|
6
|
+
def button_for_create_new_collection(label = 'Create Collection')
|
|
7
|
+
render partial: 'button_create_collection', locals:{label:label}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def button_for_remove_item_from_collection(document, collection, label = 'Remove From Collection')
|
|
11
|
+
render partial:'/curate/collections/button_remove_from_collection', locals:{collection:collection, label:label, document:document}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def hidden_collection_members
|
|
15
|
+
_erbout = ''
|
|
16
|
+
if params[:batch_document_ids].present?
|
|
17
|
+
params[:batch_document_ids].each do |batch_item|
|
|
18
|
+
_erbout.concat hidden_field_tag("batch_document_ids[]", batch_item)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
_erbout.html_safe
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def has_any_collections?
|
|
25
|
+
current_user.collections.count > 0 if current_user
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# 'terminate' indicates whether to drill down and display the content of collections within the given collection
|
|
29
|
+
# (i.e. recurse by calling list_items_in_collection on collections within the given collection).
|
|
30
|
+
#
|
|
31
|
+
# 'options' hash may include the following:
|
|
32
|
+
# :display_contributors - boolean - Indicates whether to display a list of contributors next to the work/collection title.
|
|
33
|
+
# Default is true. When omitted from options hash or present and set to true, the contributors will be listed.
|
|
34
|
+
# When set to false, the contributors are not listed.
|
|
35
|
+
def list_items_in_collection(collection, terminate=false, options={})
|
|
36
|
+
content_tag :ul, class: 'collection-listing' do
|
|
37
|
+
collection.members.inject('') do |output, member|
|
|
38
|
+
output << member_line_item(collection, member, terminate, options)
|
|
39
|
+
end.html_safe
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def member_line_item(collection, member, terminate, options={})
|
|
44
|
+
if can? :read, member
|
|
45
|
+
content_tag :li, class: line_item_class(collection), data: { noid: member.noid }do
|
|
46
|
+
markup = member.respond_to?(:members) ? collection_line_item(member, terminate, options) : work_line_item(member, options)
|
|
47
|
+
|
|
48
|
+
if can? :edit, collection
|
|
49
|
+
markup << collection_member_actions(collection, member)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
markup
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
""
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def line_item_class(collection)
|
|
60
|
+
css_class = 'collection-member'
|
|
61
|
+
css_class << ' with-controls' if can? :edit, collection
|
|
62
|
+
css_class
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def work_line_item(work, options={})
|
|
66
|
+
link = link_to work.to_s, polymorphic_path_for_asset(work)
|
|
67
|
+
link = link + ' ' + contributors(work) if options.fetch(:display_contributors, true)
|
|
68
|
+
link
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def collection_line_item(collection, terminate, options={})
|
|
72
|
+
# A collection listed as a terminal (terminate is true) member of another collection gets a
|
|
73
|
+
# normal-sized (<p>) font versus a collection heading-sized (<h3>) font.
|
|
74
|
+
headertag = terminate ? :p : :h3
|
|
75
|
+
list_item = content_tag headertag, class: 'collection-section-heading' do
|
|
76
|
+
link_to collection.to_s, collection_path(collection)
|
|
77
|
+
end
|
|
78
|
+
if collection.description.present?
|
|
79
|
+
list_item << content_tag( :div, collection.description, class: 'collection-section-description')
|
|
80
|
+
end
|
|
81
|
+
list_item << list_items_in_collection(collection, true, options) unless terminate # limit nesting
|
|
82
|
+
list_item
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def contributors(work)
|
|
86
|
+
if work.respond_to?(:contributor)
|
|
87
|
+
"(#{work.contributor.to_a.join(', ')})"
|
|
88
|
+
else
|
|
89
|
+
''
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def collection_member_actions(collection, member)
|
|
94
|
+
content_tag :span, class: 'collection-member-actions' do
|
|
95
|
+
if member.respond_to?(:members)
|
|
96
|
+
markup = actions_for_member(collection, member)
|
|
97
|
+
else
|
|
98
|
+
actions_for_member(collection, member)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def actions_for_member(collection, member)
|
|
104
|
+
button_to remove_member_collections_path(id: collection.to_param, item_id: member.pid), data: { confirm: 'Are you sure you want to remove this item from the collection?' }, method: :put, id: "remove-#{member.noid}", class: 'btn', form_class: 'remove-member', remote: true do
|
|
105
|
+
raw('<i class="icon-minus"></i> Remove')
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def collection_options
|
|
110
|
+
@collection_options ||= current_users_collections
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Defaults to returning a list of all collections.
|
|
114
|
+
# If you have implement User.collections, the results of that will be used.
|
|
115
|
+
def current_users_collections
|
|
116
|
+
if current_user.respond_to?(:collections)
|
|
117
|
+
current_user.collections.to_a
|
|
118
|
+
else
|
|
119
|
+
Collection.all
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def available_collections(item = nil)
|
|
124
|
+
if item.present?
|
|
125
|
+
collection_options.reject {|n| n == item}
|
|
126
|
+
else
|
|
127
|
+
collection_options
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Worthwhile
|
|
2
|
+
module AbilityHelper
|
|
3
|
+
# Returns true if can create at least one type of work
|
|
4
|
+
def can_ever_create_works?
|
|
5
|
+
can = false
|
|
6
|
+
Worthwhile.configuration.curation_concerns.each do |curation_concern_type|
|
|
7
|
+
break if can
|
|
8
|
+
can = can?(:create,curation_concern_type)
|
|
9
|
+
end
|
|
10
|
+
return can
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def visibility_options(variant)
|
|
14
|
+
options = [
|
|
15
|
+
['Open Access',Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC],
|
|
16
|
+
[t('sufia.institution_name'),Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED],
|
|
17
|
+
['Private',Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE]
|
|
18
|
+
]
|
|
19
|
+
case variant
|
|
20
|
+
when :restrict
|
|
21
|
+
options.delete_at(0)
|
|
22
|
+
options.reverse!
|
|
23
|
+
when :loosen
|
|
24
|
+
options.delete_at(2)
|
|
25
|
+
end
|
|
26
|
+
return options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def visibility_badge(value)
|
|
30
|
+
case value
|
|
31
|
+
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
32
|
+
content_tag :span, "Open Access", class:"label label-success"
|
|
33
|
+
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
|
34
|
+
content_tag :span, t('sufia.institution_name'), class:"label label-info"
|
|
35
|
+
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
36
|
+
content_tag :span, "Private", class:"label label-danger"
|
|
37
|
+
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO
|
|
38
|
+
content_tag :span, "Embargo", class:"label label-warning"
|
|
39
|
+
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_LEASE
|
|
40
|
+
content_tag :span, "Lease", class:"label label-warning"
|
|
41
|
+
else
|
|
42
|
+
content_tag :span, value, class:"label label-info"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|