curation_concerns 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +8 -0
- data/Gemfile +1 -2
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/assets/javascripts/curation_concerns/curation_concerns.js +2 -0
- data/app/assets/javascripts/curation_concerns/uploader.js +4 -4
- data/app/assets/stylesheets/curation_concerns/_modules.scss +1 -0
- data/app/assets/stylesheets/curation_concerns/_positioning.scss +3 -0
- data/app/assets/stylesheets/curation_concerns/modules/icons.scss +11 -0
- data/app/controllers/concerns/curation_concerns/api.rb +1 -12
- data/app/controllers/concerns/curation_concerns/application_controller_behavior.rb +20 -6
- data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +44 -25
- data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +32 -23
- data/app/controllers/concerns/curation_concerns/parent_container.rb +0 -11
- data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +1 -1
- data/app/controllers/concerns/curation_concerns/single_use_links_viewer_controller_behavior.rb +7 -1
- data/app/controllers/concerns/curation_concerns/upload_sets_controller_behavior.rb +19 -7
- data/app/controllers/curation_concerns/permissions_controller.rb +1 -1
- data/app/forms/curation_concerns/forms/collection_edit_form.rb +6 -2
- data/app/forms/curation_concerns/forms/work_form.rb +14 -3
- data/app/forms/curation_concerns/upload_set_form.rb +43 -0
- data/app/helpers/curation_concerns/ability_helper.rb +12 -18
- data/app/helpers/curation_concerns/file_set_helper.rb +1 -1
- data/app/helpers/curation_concerns/main_app_helpers.rb +1 -0
- data/app/helpers/curation_concerns/permissions_helper.rb +20 -0
- data/app/helpers/curation_concerns/url_helper.rb +3 -11
- data/app/inputs/multi_value_with_help_input.rb +8 -0
- data/app/inputs/select_with_help_input.rb +3 -0
- data/app/inputs/select_with_modal_help_input.rb +36 -0
- data/app/inputs/with_help_icon.rb +34 -0
- data/app/presenters/curation_concerns/collection_presenter.rb +9 -0
- data/app/presenters/curation_concerns/file_set_presenter.rb +2 -1
- data/app/presenters/curation_concerns/presents_attributes.rb +16 -0
- data/app/presenters/curation_concerns/work_show_presenter.rb +3 -2
- data/app/renderers/curation_concerns/attribute_renderer.rb +22 -4
- data/app/renderers/curation_concerns/configured_microdata.rb +40 -0
- data/app/services/curation_concerns/parent_service.rb +1 -1
- data/app/views/catalog/_action_menu_partials/_default.html.erb +2 -2
- data/app/views/collections/_form.html.erb +8 -9
- data/app/views/collections/_sort_and_per_page.html.erb +25 -23
- data/app/views/collections/show.html.erb +1 -1
- data/app/views/curation_concerns/base/_attributes.html.erb +1 -1
- data/app/views/curation_concerns/base/_form.html.erb +6 -7
- data/app/views/curation_concerns/base/_form_permission.html.erb +3 -0
- data/app/views/curation_concerns/base/_multiple_upload.html.erb +3 -0
- data/app/views/curation_concerns/base/_show_actions.html.erb +2 -2
- data/app/views/curation_concerns/base/_versioning.html.erb +1 -1
- data/app/views/curation_concerns/base/_visibility.html.erb +17 -0
- data/app/views/curation_concerns/base/show.html.erb +1 -1
- data/app/views/curation_concerns/classify_concerns/new.html.erb +1 -1
- data/app/views/curation_concerns/file_sets/_actions.html.erb +2 -2
- data/app/views/curation_concerns/file_sets/_form.html.erb +1 -1
- data/app/views/curation_concerns/file_sets/_rights_modal.html.erb +41 -0
- data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +4 -1
- data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +9 -8
- data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +9 -7
- data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +7 -5
- data/app/views/curation_concerns/file_sets/show.html.erb +2 -2
- data/app/views/curation_concerns/file_sets/upload/_alerts.html.erb +3 -3
- data/app/views/curation_concerns/file_sets/upload/_form.html.erb +1 -1
- data/app/views/curation_concerns/file_sets/upload/_script_templates.html.erb +1 -1
- data/app/views/curation_concerns/permissions/confirm.html.erb +1 -1
- data/app/views/curation_concerns/single_use_links_viewer/show.html.erb +1 -1
- data/app/views/embargoes/edit.html.erb +4 -4
- data/app/views/layouts/curation_concerns.html.erb +1 -1
- data/app/views/leases/edit.html.erb +3 -3
- data/app/views/shared/_add_works.html.erb +6 -3
- data/app/views/upload_sets/_base_metadata.html.erb +12 -0
- data/app/views/upload_sets/_metadata.html.erb +3 -13
- data/app/views/upload_sets/edit.html.erb +1 -1
- data/config/locales/curation_concerns.en.yml +46 -0
- data/curation_concerns.gemspec +5 -4
- data/lib/curation_concerns/engine.rb +5 -0
- data/lib/curation_concerns/form_builder.rb +16 -0
- data/lib/curation_concerns/rails/routes.rb +7 -5
- data/lib/generators/curation_concerns/install_generator.rb +1 -1
- data/lib/generators/curation_concerns/work/work_generator.rb +1 -1
- data/spec/actors/curation_concerns/file_set_actor_spec.rb +26 -16
- data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +14 -4
- data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +3 -3
- data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +4 -4
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +21 -0
- data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +2 -2
- data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +1 -1
- data/spec/controllers/upload_sets_controller_spec.rb +20 -27
- data/spec/factories/file_sets.rb +1 -0
- data/spec/factories/generic_works.rb +1 -0
- data/spec/factories/users.rb +0 -12
- data/spec/features/collection_spec.rb +1 -3
- data/spec/forms/collection_edit_form_spec.rb +16 -1
- data/spec/forms/upload_set_form_spec.rb +55 -0
- data/spec/forms/work_form_spec.rb +68 -3
- data/spec/helpers/curation_concerns/ability_helper_spec.rb +45 -0
- data/spec/helpers/curation_concerns/permissions_helper_spec.rb +12 -0
- data/spec/helpers/url_helper_spec.rb +0 -3
- data/spec/indexers/collection_indexer_spec.rb +5 -0
- data/spec/indexers/{file_set_indexing_service_spec.rb → file_set_indexer_spec.rb} +40 -2
- data/spec/indexers/{generic_work_indexing_service_spec.rb → work_indexer_spec.rb} +1 -1
- data/spec/inputs/multi_value_with_help_input_spec.rb +32 -0
- data/spec/inputs/select_with_help_input_spec.rb +43 -0
- data/spec/inputs/select_with_modal_help_input_spec.rb +21 -0
- data/spec/jobs/import_url_job_spec.rb +33 -1
- data/spec/jobs/ingest_file_job_spec.rb +29 -16
- data/spec/jobs/upload_set_update_job_spec.rb +24 -11
- data/spec/lib/curation_concerns/messages_spec.rb +2 -2
- data/spec/lib/curation_concerns/name_spec.rb +20 -0
- data/spec/lib/curation_concerns/null_logger_spec.rb +10 -0
- data/spec/models/curation_concerns/collection_behavior_spec.rb +41 -10
- data/spec/models/curation_concerns/work_behavior_spec.rb +1 -13
- data/spec/models/file_set_spec.rb +19 -4
- data/spec/models/generic_work_spec.rb +7 -2
- data/spec/models/quick_classification_query_spec.rb +35 -0
- data/spec/models/upload_set_spec.rb +5 -7
- data/spec/presenters/curation_concerns/collection_presenter_spec.rb +20 -0
- data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +10 -3
- data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +13 -1
- data/spec/renderers/curation_concerns/attribute_renderer_spec.rb +41 -8
- data/spec/routing/curation_concerns/routes_spec.rb +2 -2
- data/spec/routing/route_spec.rb +1 -1
- data/spec/services/file_set_audit_service_spec.rb +46 -4
- data/spec/spec_helper.rb +5 -7
- data/spec/views/collections/_sort_and_per_page.html.erb_spec.rb +32 -0
- data/spec/views/curation_concerns/base/_attributes.html.erb_spec.rb +8 -1
- data/spec/views/curation_concerns/base/show.html.erb_spec.rb +36 -2
- data/spec/views/curation_concerns/file_sets/_file_set.html.erb_spec.rb +3 -2
- data/spec/views/curation_concerns/file_sets/show.html.erb_spec.rb +56 -0
- data/spec/views/curation_concerns/single_use_links_viewer/show.html.erb_spec.rb +19 -0
- data/spec/views/shared/_add_content.html.erb_spec.rb +3 -3
- data/spec/views/single_use_links/new_download.html.erb_spec.rb +1 -1
- data/spec/views/upload_sets/_metadata.html.erb_spec.rb +28 -0
- metadata +80 -50
- data/app/assets/stylesheets/curation_concerns/help_requests.scss +0 -3
- data/app/controllers/concerns/curation_concerns/without_namespace.rb +0 -16
- data/app/controllers/registrations_controller.rb +0 -19
- data/app/controllers/sessions_controller.rb +0 -4
- data/app/views/curation_concerns/file_sets/_multiple_upload.html.erb +0 -3
- data/spec/fixtures/Example.ogg +0 -0
- data/spec/fixtures/charter.docx +0 -0
- data/spec/fixtures/countdown.avi +0 -0
- data/spec/fixtures/curation_concerns_generic_stub.txt +0 -1
- data/spec/fixtures/empty_file.txt +0 -0
- data/spec/fixtures/files/image.png +0 -0
- data/spec/fixtures/image.jp2 +0 -0
- data/spec/fixtures/image.jpg +0 -0
- data/spec/fixtures/piano_note.wav +0 -0
- data/spec/fixtures/sample_mpeg4.mp4 +0 -0
- data/spec/fixtures/small_file.txt +0 -1
- data/spec/fixtures/spoken-text.m4a +0 -0
- data/spec/fixtures/test.pdf +0 -0
- data/spec/fixtures/test4.pdf +0 -0
- data/spec/fixtures/test5.mp3 +0 -0
- data/spec/fixtures/world.png +0 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
class UploadSetForm
|
3
|
+
include HydraEditor::Form
|
4
|
+
|
5
|
+
self.terms = CurationConcerns::GenericWorkForm.terms
|
6
|
+
|
7
|
+
delegate :creator, :human_readable_type, :open_access?, :authenticated_only_access?,
|
8
|
+
:open_access_with_embargo_release_date?, :private_access?,
|
9
|
+
:embargo_release_date, :lease_expiration_date, :member_ids, to: :exemplar_work
|
10
|
+
|
11
|
+
def initialize(upload_set, current_ability)
|
12
|
+
@current_ability = current_ability
|
13
|
+
super(upload_set)
|
14
|
+
# TODO: instead of using GenericWorkForm, this should be an UploadSetForm
|
15
|
+
# work = ::GenericWork.new(creator: [creator_display], title: titles)
|
16
|
+
end
|
17
|
+
|
18
|
+
def exemplar_work
|
19
|
+
@exemplar_work ||= GenericWork.new(creator: [creator_display])
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array] a list of the first titles for each of the works.
|
23
|
+
def works
|
24
|
+
@works ||= model.works.sort { |w1, w2| w1.title.first.downcase <=> w2.title.first.downcase }
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.model_attributes(attrs)
|
28
|
+
CurationConcerns::GenericWorkForm.model_attributes(attrs)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.multiple?(attrs)
|
32
|
+
CurationConcerns::GenericWorkForm.multiple?(attrs)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
# Override this method if you want the creator to display something other than
|
38
|
+
# the user_key, e.g. "current_user.name"
|
39
|
+
def creator_display
|
40
|
+
@current_ability.current_user.user_key
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -12,9 +12,9 @@ module CurationConcerns
|
|
12
12
|
|
13
13
|
def visibility_options(variant)
|
14
14
|
options = [
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC,
|
16
|
+
Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED,
|
17
|
+
Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
18
18
|
]
|
19
19
|
case variant
|
20
20
|
when :restrict
|
@@ -23,24 +23,18 @@ module CurationConcerns
|
|
23
23
|
when :loosen
|
24
24
|
options.delete_at(2)
|
25
25
|
end
|
26
|
-
options
|
26
|
+
options.map { |value| [visibility_text(value), value] }
|
27
27
|
end
|
28
28
|
|
29
29
|
def visibility_badge(value)
|
30
|
-
|
31
|
-
|
32
|
-
content_tag :span, "Open Access", class: "label label-success"
|
33
|
-
when Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
34
|
-
content_tag :span, t('curation_concerns.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
|
30
|
+
klass = t("curation_concerns.visibility.#{value}.class", default: 'label-info')
|
31
|
+
content_tag :span, visibility_text(value), class: "label #{klass}"
|
44
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def visibility_text(value)
|
37
|
+
t("curation_concerns.visibility.#{value}.text", default: value)
|
38
|
+
end
|
45
39
|
end
|
46
40
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
module PermissionsHelper
|
3
|
+
def help_link(file, title, aria_label)
|
4
|
+
link_to help_icon, '#', 'data-toggle': 'popover', 'data-content': capture_content(file),
|
5
|
+
'data-original-title': title, 'aria-label': aria_label
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def capture_content(file)
|
11
|
+
capture do
|
12
|
+
render file
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def help_icon
|
17
|
+
content_tag 'i', '', 'aria-hidden': true, class: 'help-icon'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -6,22 +6,14 @@ module CurationConcerns
|
|
6
6
|
if doc.collection?
|
7
7
|
doc
|
8
8
|
else
|
9
|
-
polymorphic_path([main_app,
|
9
|
+
polymorphic_path([main_app, doc])
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def track_collection_path(*args)
|
14
|
-
main_app.track_solr_document_path(*args)
|
15
|
-
end
|
16
|
-
|
17
|
-
def track_file_set_path(*args)
|
18
|
-
main_app.track_solr_document_path(*args)
|
19
|
-
end
|
20
|
-
|
21
13
|
# generated new GenericWork models get registered as curation concerns and need a
|
22
14
|
# track_model_path to render Blacklight-related views
|
23
|
-
CurationConcerns.config.registered_curation_concern_types.each do |concern|
|
24
|
-
define_method("track_#{concern.
|
15
|
+
(['FileSet', 'Collection'] + CurationConcerns.config.registered_curation_concern_types).each do |concern|
|
16
|
+
define_method("track_#{concern.constantize.model_name.singular_route_key}_path") { |*args| main_app.track_solr_document_path(*args) }
|
25
17
|
end
|
26
18
|
end
|
27
19
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class SelectWithModalHelpInput < MultiValueWithHelpInput
|
2
|
+
def link_to_help
|
3
|
+
template.link_to "##{attribute_name}Modal", id: "#{input_class}_help_modal", rel: 'button',
|
4
|
+
data: { toggle: 'modal' }, 'aria-label': aria_label do
|
5
|
+
help_icon
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def select_options
|
12
|
+
@select_options ||= begin
|
13
|
+
collection = options.delete(:collection) || self.class.boolean_collection
|
14
|
+
collection.respond_to?(:call) ? collection.call : collection.to_a
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_field(value, _index)
|
19
|
+
html_options = input_html_options.dup
|
20
|
+
|
21
|
+
if @rendered_first_element
|
22
|
+
html_options[:id] = nil
|
23
|
+
html_options[:required] = nil
|
24
|
+
else
|
25
|
+
html_options[:id] ||= input_dom_id
|
26
|
+
end
|
27
|
+
html_options[:class] ||= []
|
28
|
+
html_options[:class] += ["#{input_dom_id} form-control multi-text-field"]
|
29
|
+
html_options[:'aria-labelledby'] = label_id
|
30
|
+
html_options.delete(:multiple)
|
31
|
+
@rendered_first_element = true
|
32
|
+
|
33
|
+
html_options.merge!(options.slice(:include_blank))
|
34
|
+
template.select_tag(attribute_name, template.options_for_select(select_options, value), html_options)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module WithHelpIcon
|
2
|
+
def label(wrapper_options = nil)
|
3
|
+
"#{super} #{link_to_help}"
|
4
|
+
end
|
5
|
+
|
6
|
+
protected
|
7
|
+
|
8
|
+
def link_to_help
|
9
|
+
template.link_to '#', id: "#{input_class}_help",
|
10
|
+
data: { toggle: 'popover'.freeze,
|
11
|
+
content: metadata_help,
|
12
|
+
'original-title': raw_label_text },
|
13
|
+
'aria-label': aria_label do
|
14
|
+
help_icon
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def help_icon
|
19
|
+
template.content_tag 'i', nil, "aria-hidden": true, class: "help-icon"
|
20
|
+
end
|
21
|
+
|
22
|
+
def metadata_help
|
23
|
+
translate_from_namespace(:metadata_help) || attribute_name.to_s.humanize
|
24
|
+
end
|
25
|
+
|
26
|
+
def aria_label
|
27
|
+
translate_from_namespace(:aria_label) || default_aria_label
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_aria_label
|
31
|
+
I18n.t("#{i18n_scope}.aria_label.#{lookup_model_names.join('.')}.default",
|
32
|
+
title: attribute_name.to_s.humanize)
|
33
|
+
end
|
34
|
+
end
|
@@ -2,6 +2,7 @@ module CurationConcerns
|
|
2
2
|
class CollectionPresenter
|
3
3
|
include ModelProxy
|
4
4
|
include PresentsAttributes
|
5
|
+
include ActionView::Helpers::NumberHelper
|
5
6
|
attr_accessor :solr_document, :current_ability
|
6
7
|
|
7
8
|
# @param [SolrDocument] solr_document
|
@@ -18,5 +19,13 @@ module CurationConcerns
|
|
18
19
|
# Metadata Methods
|
19
20
|
delegate :title, :description, :creator, :contributor, :subject, :publisher, :language,
|
20
21
|
:embargo_release_date, :lease_expiration_date, :rights, to: :solr_document
|
22
|
+
|
23
|
+
def size
|
24
|
+
number_to_human_size(@solr_document['bytes_is'])
|
25
|
+
end
|
26
|
+
|
27
|
+
def total_items
|
28
|
+
@solr_document['member_ids_ssim'].length
|
29
|
+
end
|
21
30
|
end
|
22
31
|
end
|
@@ -21,7 +21,8 @@ module CurationConcerns
|
|
21
21
|
# Metadata Methods
|
22
22
|
delegate :title, :description, :creator, :contributor, :subject, :publisher,
|
23
23
|
:language, :date_uploaded, :rights,
|
24
|
-
:embargo_release_date, :lease_expiration_date,
|
24
|
+
:embargo_release_date, :lease_expiration_date,
|
25
|
+
:depositor, :tags, :title_or_label, to: :solr_document
|
25
26
|
|
26
27
|
def page_title
|
27
28
|
Array(solr_document['label_tesim']).first
|
@@ -21,5 +21,21 @@ module CurationConcerns
|
|
21
21
|
def permission_badge_class
|
22
22
|
PermissionBadge
|
23
23
|
end
|
24
|
+
|
25
|
+
def display_microdata?
|
26
|
+
CurationConcerns.config.display_microdata
|
27
|
+
end
|
28
|
+
|
29
|
+
def microdata_type_to_html
|
30
|
+
return "" unless display_microdata?
|
31
|
+
value = I18n.t(microdata_type_key, default: CurationConcerns.config.microdata_default_type)
|
32
|
+
" itemscope itemtype=\"#{value}\"".html_safe
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def microdata_type_key
|
38
|
+
"curation_concerns.schema_org.resource_type.#{human_readable_type}"
|
39
|
+
end
|
24
40
|
end
|
25
41
|
end
|
@@ -20,8 +20,9 @@ module CurationConcerns
|
|
20
20
|
to: :solr_document
|
21
21
|
|
22
22
|
# Metadata Methods
|
23
|
-
delegate :title, :
|
24
|
-
:
|
23
|
+
delegate :title, :date_created, :date_modified, :date_uploaded, :description,
|
24
|
+
:creator, :contributor, :subject, :publisher, :language, :embargo_release_date,
|
25
|
+
:lease_expiration_date, :rights, to: :solr_document
|
25
26
|
|
26
27
|
def file_presenters
|
27
28
|
@file_sets ||= PresenterFactory.build_presenters(ordered_ids,
|
@@ -1,7 +1,12 @@
|
|
1
|
+
require "rails_autolink/helpers"
|
2
|
+
|
1
3
|
module CurationConcerns
|
2
4
|
class AttributeRenderer
|
3
5
|
include ActionView::Helpers::UrlHelper
|
4
6
|
include ActionView::Helpers::TranslationHelper
|
7
|
+
include ActionView::Helpers::TextHelper
|
8
|
+
include ConfiguredMicrodata
|
9
|
+
|
5
10
|
attr_reader :field, :values, :options
|
6
11
|
|
7
12
|
# @param [Symbol] field
|
@@ -19,8 +24,9 @@ module CurationConcerns
|
|
19
24
|
|
20
25
|
return markup if !values.present? && !options[:include_empty]
|
21
26
|
markup << %(<tr><th>#{label}</th>\n<td><ul class='tabular'>)
|
27
|
+
attributes = microdata_object_attributes(field).merge(class: "attribute #{field}")
|
22
28
|
Array(values).each do |value|
|
23
|
-
markup <<
|
29
|
+
markup << "<li#{html_attributes(attributes)}>#{attribute_value_to_html(value)}</li>"
|
24
30
|
end
|
25
31
|
markup << %(</ul></td></tr>)
|
26
32
|
markup.html_safe
|
@@ -38,17 +44,29 @@ module CurationConcerns
|
|
38
44
|
if field == :rights
|
39
45
|
rights_attribute_to_html(value)
|
40
46
|
else
|
41
|
-
li_value(value)
|
47
|
+
"<span#{html_attributes(microdata_value_attributes(field))}>#{li_value(value)}</span>"
|
42
48
|
end
|
43
49
|
end
|
44
50
|
|
51
|
+
def html_attributes(attributes)
|
52
|
+
buffer = ""
|
53
|
+
attributes.each do |k, v|
|
54
|
+
buffer << " #{k}"
|
55
|
+
buffer << %(="#{v}") unless v.blank?
|
56
|
+
end
|
57
|
+
buffer
|
58
|
+
end
|
59
|
+
|
45
60
|
def search_field
|
46
61
|
options.fetch(:search_field, field)
|
47
62
|
end
|
48
63
|
|
49
64
|
def li_value(value)
|
50
|
-
|
51
|
-
|
65
|
+
if options[:catalog_search_link]
|
66
|
+
link_to(ERB::Util.h(value), search_path(value))
|
67
|
+
else
|
68
|
+
auto_link(value)
|
69
|
+
end
|
52
70
|
end
|
53
71
|
|
54
72
|
def search_path(value)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
module ConfiguredMicrodata
|
3
|
+
def microdata?(field)
|
4
|
+
return false unless CurationConcerns.config.display_microdata
|
5
|
+
key = "curation_concerns.schema_org.#{field}.property"
|
6
|
+
t(key, default: false)
|
7
|
+
end
|
8
|
+
|
9
|
+
def microdata_object?(field)
|
10
|
+
return false unless CurationConcerns.config.display_microdata
|
11
|
+
key = "curation_concerns.schema_org.#{field}.type"
|
12
|
+
t(key, default: false)
|
13
|
+
end
|
14
|
+
|
15
|
+
def microdata_object_attributes(field)
|
16
|
+
if microdata_object?(field)
|
17
|
+
{ itemprop: microdata_property(field), itemscope: '', itemtype: microdata_type(field) }
|
18
|
+
else
|
19
|
+
{}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def microdata_property(field)
|
24
|
+
t("curation_concerns.schema_org.#{field}.property")
|
25
|
+
end
|
26
|
+
|
27
|
+
def microdata_type(field)
|
28
|
+
t("curation_concerns.schema_org.#{field}.type")
|
29
|
+
end
|
30
|
+
|
31
|
+
def microdata_value_attributes(field)
|
32
|
+
if microdata?(field)
|
33
|
+
key = microdata_object?(field) ? :value : :property
|
34
|
+
{ itemprop: t("curation_concerns.schema_org.#{field}.#{key}") }
|
35
|
+
else
|
36
|
+
{}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -4,14 +4,14 @@
|
|
4
4
|
<ul class="dropdown-menu">
|
5
5
|
<% if can? :edit, document %>
|
6
6
|
<li>
|
7
|
-
<%= link_to [:edit,
|
7
|
+
<%= link_to [:edit, document], class: 'itemicon itemedit' do %><i class="glyphicon glyphicon-pencil"></i> Edit <%= document.human_readable_type %>
|
8
8
|
<% end %>
|
9
9
|
</li>
|
10
10
|
<li>
|
11
11
|
<% if @collection || (@presenter and @presenter.collection?) # We're on the view page for @collection. -%>
|
12
12
|
<%= link_to_remove_from_collection(document) %>
|
13
13
|
<% else %>
|
14
|
-
<%= link_to
|
14
|
+
<%= link_to document, class: 'itemicon itemtrash',
|
15
15
|
title: "Delete #{document.human_readable_type}", method: :delete,
|
16
16
|
data: {
|
17
17
|
confirm: "Deleting a #{document.human_readable_type} from #{t('curation_concerns.product_name')} is permanent. Click OK to delete this #{document.human_readable_type} from #{t('curation_concerns.product_name')}, or Cancel to cancel this operation" } do %>
|
@@ -1,25 +1,24 @@
|
|
1
|
-
<%= simple_form_for [collections, @
|
1
|
+
<%= simple_form_for [collections, @form] do |f| %>
|
2
2
|
|
3
|
-
<% if f.error_notification
|
3
|
+
<% if f.error_notification %>
|
4
4
|
<div class="alert alert-danger fade in">
|
5
5
|
<strong>Wait don't go!</strong> There was a problem with your submission. Please review the errors below:
|
6
6
|
<a class="close" data-dismiss="alert" href="#">×</a>
|
7
7
|
</div>
|
8
|
-
<% end
|
8
|
+
<% end %>
|
9
9
|
|
10
|
-
<%= render 'form_descriptive_fields',
|
10
|
+
<%= render 'form_descriptive_fields', f: f %>
|
11
11
|
<%= render 'form_permission', f: f %>
|
12
|
-
|
13
12
|
<%= render "curation_concerns/base/form_media", f: f %>
|
14
13
|
|
15
14
|
<div class="row">
|
16
15
|
<div class="col-md-12 form-actions">
|
17
16
|
<%= f.submit class: 'btn btn-primary require-contributor-agreement' %>
|
18
|
-
|
17
|
+
<% if action_name == 'new' %>
|
19
18
|
<%= link_to 'Cancel', main_app.root_path, class: 'btn btn-link' %>
|
20
|
-
|
21
|
-
<%= link_to 'Cancel', collections.collection_path(@
|
22
|
-
|
19
|
+
<% else %>
|
20
|
+
<%= link_to 'Cancel', collections.collection_path(@form), class: 'btn btn-link' %>
|
21
|
+
<% end %>
|
23
22
|
</div>
|
24
23
|
</div>
|
25
24
|
|
@@ -1,29 +1,31 @@
|
|
1
1
|
<div class="batch-info">
|
2
2
|
<div>
|
3
|
-
<%= render
|
3
|
+
<%= render 'collections/form_for_select_collection', user_collections: @user_collections %>
|
4
4
|
</div>
|
5
5
|
|
6
|
-
<% if
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
<%end %>
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
6
|
+
<% if action_name == "edit" %>
|
7
|
+
<div class="batch-toggle">
|
8
|
+
<% session[:batch_edit_state] = "on" %>
|
9
|
+
<%= button_for_remove_selected_from_collection collection %>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
<div class="sort-toggle">
|
13
|
+
<%-# kind of hacky way to get this to work on catalog and folder controllers. May be able to simple do {:action=>"index"} but I'm not sure -%>
|
14
|
+
<% unless @response.response['numFound'] < 2 %>
|
15
|
+
<%= form_tag collections.collection_path(collection), method: :get, class: 'per_page form-inline' do %>
|
16
|
+
<%= label_tag :sort do %>
|
17
|
+
<span>Sort By:</span>
|
18
|
+
<% end %>
|
19
|
+
<%= select_tag :sort, options_for_select(sort_fields, h(params[:sort])) %>
|
20
|
+
|
21
|
+
<%= label_tag :per_page do %>
|
22
|
+
Show <%= select_tag :per_page, options_for_select(['10', '20', '50', '100'], h(params[:per_page])), title: "Number of results to display per page" %> per page
|
23
|
+
<% end %>
|
24
|
+
<%= render_hash_as_hidden_fields params_for_search.except(:per_page, :sort) %>
|
25
|
+
|
26
|
+
<button class="btn btn-primary"><i class="icon-refresh"></i> Refresh</button>
|
27
|
+
<%= render 'view_type_group' %>
|
28
|
+
<% end %>
|
29
|
+
<% end unless sort_fields.empty? %>
|
28
30
|
</div>
|
29
31
|
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<table class="table table-striped <%= dom_class(@presenter) %> attributes"
|
1
|
+
<table class="table table-striped <%= dom_class(@presenter) %> attributes" <%= @presenter.microdata_type_to_html %>>
|
2
2
|
<caption class="table-heading"><h2>Attributes</h2></caption>
|
3
3
|
<thead>
|
4
4
|
<tr><th>Attribute Name</th><th>Values</th></tr>
|
@@ -1,11 +1,11 @@
|
|
1
|
-
<%= simple_form_for [main_app,
|
1
|
+
<%= simple_form_for [main_app, @form],
|
2
2
|
wrapper_mappings: { multifile: :horizontal_file_input } do |f| %>
|
3
3
|
<% if f.error_notification -%>
|
4
4
|
<div class="alert alert-danger fade in">
|
5
5
|
<strong>Wait don't go!</strong> There was a problem with your submission. Please review the errors below:
|
6
6
|
<a class="close" data-dismiss="alert" href="#">×</a>
|
7
7
|
</div>
|
8
|
-
<% end
|
8
|
+
<% end %>
|
9
9
|
|
10
10
|
<%= render 'form_descriptive_fields', f: f %>
|
11
11
|
<%= render 'form_supplementary_fields', f: f %>
|
@@ -13,12 +13,11 @@
|
|
13
13
|
<div class="row">
|
14
14
|
<div class="col-md-12 form-actions">
|
15
15
|
<%= f.submit class: 'btn btn-primary require-contributor-agreement' %>
|
16
|
-
|
16
|
+
<% if curation_concern.new_record? %>
|
17
17
|
<%= link_to 'Cancel', main_app.root_path, class: 'btn btn-link' %>
|
18
|
-
|
19
|
-
<%= link_to 'Cancel', polymorphic_path([main_app,
|
20
|
-
|
18
|
+
<% else %>
|
19
|
+
<%= link_to 'Cancel', polymorphic_path([main_app, curation_concern]), class: 'btn btn-link' %>
|
20
|
+
<% end %>
|
21
21
|
</div>
|
22
22
|
</div>
|
23
|
-
|
24
23
|
<% end %>
|
@@ -8,6 +8,9 @@
|
|
8
8
|
<legend>
|
9
9
|
Visibility
|
10
10
|
<small>Who should be able to view or download this content?</small>
|
11
|
+
<span id="visibility_tooltip" class="h5">
|
12
|
+
<%= help_link 'visibility', 'Visibility', 'Usage information for visibility' %>
|
13
|
+
</span>
|
11
14
|
</legend>
|
12
15
|
|
13
16
|
<%= render "form_permission_note" %>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<% if collector || editor %>
|
2
2
|
<div class="form-actions">
|
3
3
|
<% if editor %>
|
4
|
-
<%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app,
|
4
|
+
<%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
|
5
5
|
<%= link_to "Attach a File", main_app.new_curation_concerns_file_set_path(@presenter), class: 'btn btn-default' %>
|
6
|
-
<%= link_to "Delete This #{@presenter.human_readable_type}", [main_app,
|
6
|
+
<%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
|
7
7
|
<% end %>
|
8
8
|
</div>
|
9
9
|
<% end %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<h2>Versions</h2>
|
3
3
|
<div class="well">
|
4
4
|
|
5
|
-
<%= form_for [main_app,
|
5
|
+
<%= form_for [main_app, curation_concern], html: { multipart: true } do |f| %>
|
6
6
|
<h3>Restore Previous Version</h3>
|
7
7
|
<% @version_list.each do |version| %>
|
8
8
|
<div class="form-group">
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<p>This setting will determine who can view your file, and the associated metadata. Setting
|
2
|
+
the visibility to <span class='label label-success'>Open Access</span> will allow your
|
3
|
+
content to be discovered in Google and viewed by anyone. The visibility setting
|
4
|
+
<span class='label label-info'><%=t('curation_concerns.institution_name') %></span> will only allow
|
5
|
+
users who are logged into <%=t('curation_concerns.product_name') %> (via WebAccess) to view the content.
|
6
|
+
Files that are marked <span class='label label-danger'>Private</span> are only able to be viewed
|
7
|
+
by users and/or groups that have been given specific access in the "Share With" section.
|
8
|
+
</p>
|
9
|
+
|
10
|
+
<p>
|
11
|
+
Permissions in <%=t('curation_concerns.product_name') %> are hierarchical. This means that you cannot set
|
12
|
+
the visibility of a file to <span class='label label-success'>Open Access</span> or
|
13
|
+
<span class='label label-info'><%=t('curation_concerns.institution_name') %></span> and simultaneously
|
14
|
+
try to restrict the access of a single user. However, you may mark the visibility of
|
15
|
+
a file as <span class='label label-danger'>Private</span> and then grant access to
|
16
|
+
particular users and/or groups for that file in the "Share With" section.
|
17
|
+
</p>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<%= render 'attributes', curation_concern: @presenter %>
|
11
11
|
<%= render 'related_files', presenter: @presenter %>
|
12
12
|
<% if editor %>
|
13
|
-
|
13
|
+
<%= render 'multiple_upload', presenter: @presenter %>
|
14
14
|
<% end %>
|
15
15
|
|
16
16
|
<%= render "show_actions", collector: collector, editor: editor%>
|