sufia 6.2.0 → 6.3.0
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/.rubocop.yml +146 -0
- data/.travis.yml +4 -7
- data/Gemfile +2 -0
- data/History.md +29 -1
- data/README.md +25 -9
- data/SUFIA_VERSION +1 -1
- data/app/assets/stylesheets/sufia/_collections.scss +15 -0
- data/app/assets/stylesheets/sufia/_file-listing.scss +7 -0
- data/app/assets/stylesheets/sufia/_home-page.scss +10 -0
- data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +3 -5
- data/app/controllers/admin/stats_controller.rb +1 -76
- data/app/controllers/api/items_controller.rb +4 -6
- data/app/controllers/api/zotero_controller.rb +5 -5
- data/app/controllers/authorities_controller.rb +5 -1
- data/app/controllers/batch_edits_controller.rb +3 -3
- data/app/controllers/concerns/sufia/admin/depositor_stats.rb +41 -0
- data/app/controllers/concerns/sufia/admin/stats_behavior.rb +94 -0
- data/app/controllers/concerns/sufia/batch_controller_behavior.rb +16 -18
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +54 -56
- data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -6
- data/app/controllers/concerns/sufia/collections_controller_behavior.rb +39 -39
- data/app/controllers/concerns/sufia/controller.rb +10 -10
- data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +17 -18
- data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +9 -12
- data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +6 -7
- data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +39 -40
- data/app/controllers/concerns/sufia/files_controller/upload_complete_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller_behavior.rb +109 -110
- data/app/controllers/concerns/sufia/homepage_controller.rb +8 -8
- data/app/controllers/concerns/sufia/my_controller_behavior.rb +13 -10
- data/app/controllers/concerns/sufia/single_use_links_controller_behavior.rb +11 -14
- data/app/controllers/concerns/sufia/single_use_links_viewer_controller_behavior.rb +27 -21
- data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +17 -17
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +54 -54
- data/app/controllers/contact_form_controller.rb +1 -1
- data/app/controllers/content_blocks_controller.rb +11 -12
- data/app/controllers/directory_controller.rb +2 -3
- data/app/controllers/featured_work_lists_controller.rb +1 -1
- data/app/controllers/featured_works_controller.rb +2 -4
- data/app/controllers/homepage_controller.rb +1 -2
- data/app/controllers/mailbox_controller.rb +12 -32
- data/app/controllers/my/collections_controller.rb +3 -4
- data/app/controllers/my/files_controller.rb +4 -6
- data/app/controllers/my/highlights_controller.rb +4 -6
- data/app/controllers/my/shares_controller.rb +3 -5
- data/app/controllers/pages_controller.rb +1 -3
- data/app/controllers/single_use_links_controller.rb +0 -1
- data/app/controllers/single_use_links_viewer_controller.rb +0 -1
- data/app/controllers/static_controller.rb +1 -0
- data/app/forms/sufia/forms/collection_edit_form.rb +2 -2
- data/app/helpers/batch_edits_helper.rb +1 -3
- data/app/helpers/content_block_helper.rb +7 -8
- data/app/helpers/generic_file_helper.rb +23 -24
- data/app/helpers/sufia/blacklight_override.rb +6 -7
- data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -7
- data/app/helpers/sufia/permissions_helper.rb +3 -4
- data/app/helpers/sufia/sufia_helper_behavior.rb +30 -29
- data/app/helpers/trophy_helper.rb +15 -15
- data/app/inputs/select_with_modal_help_input.rb +3 -3
- data/app/inputs/with_help_icon.rb +4 -4
- data/app/jobs/content_delete_event_job.rb +0 -1
- data/app/jobs/content_depositor_change_event_job.rb +1 -2
- data/app/jobs/event_job.rb +0 -1
- data/app/jobs/user_unfollow_event_job.rb +1 -0
- data/app/models/concerns/sufia/solr_document_behavior.rb +1 -2
- data/app/models/contact_form.rb +6 -6
- data/app/models/content_block.rb +1 -2
- data/app/models/featured_work_list.rb +3 -5
- data/app/models/user_mailbox.rb +44 -0
- data/app/presenters/sufia/collection_presenter.rb +6 -8
- data/app/presenters/sufia/generic_file_presenter.rb +2 -2
- data/app/presenters/sufia/presenter_renderer.rb +2 -2
- data/app/presenters/sufia/version_list_presenter.rb +1 -1
- data/app/presenters/sufia/version_presenter.rb +3 -6
- data/app/search_builders/deposit_search_builder.rb +19 -0
- data/app/search_builders/sufia/my_search_builder_behavior.rb +1 -2
- data/app/search_builders/sufia/search_builder.rb +1 -3
- data/app/uploaders/tinymce_asset_uploader.rb +0 -2
- data/app/views/_controls.html.erb +5 -5
- data/app/views/admin/stats/_deposits.html.erb +19 -0
- data/app/views/admin/stats/index.html.erb +2 -0
- data/app/views/batch_edits/edit.html.erb +2 -2
- data/app/views/collections/_edit_actions.html.erb +3 -3
- data/app/views/collections/_form_for_select_collection.html.erb +2 -2
- data/app/views/collections/_sort_and_per_page.html.erb +12 -9
- data/app/views/collections/_view_type_group.html.erb +1 -1
- data/app/views/collections/edit.html.erb +5 -5
- data/app/views/collections/show.html.erb +7 -6
- data/app/views/homepage/_announcement.html.erb +5 -0
- data/app/views/homepage/_home.html.erb +1 -0
- data/app/views/my/_sort_and_per_page.html.erb +14 -10
- data/app/views/my/index.html.erb +1 -1
- data/app/views/pages/show.html.erb +0 -2
- data/app/views/single_use_links/new_download.html.erb +1 -1
- data/app/views/single_use_links_viewer/show.html.erb +1 -1
- data/app/views/users/_notify_link.html.erb +1 -1
- data/app/views/users/_notify_number.html.erb +2 -2
- data/config/initializers/simple_form.rb +1 -1
- data/config/initializers/simple_form_bootstrap.rb +1 -1
- data/config/locales/sufia.en.yml +4 -0
- data/config/routes.rb +2 -3
- data/lib/generators/sufia/admin_stat_generator.rb +0 -3
- data/lib/generators/sufia/install_generator.rb +8 -9
- data/lib/generators/sufia/templates/catalog_controller.rb +2 -3
- data/lib/generators/sufia/templates/config/action_dispatch_http_upload_monkey_patch.rb +1 -0
- data/lib/generators/sufia/upgrade400_generator.rb +9 -9
- data/lib/generators/sufia/upgrade600_generator.rb +1 -4
- data/lib/sufia.rb +2 -2
- data/lib/sufia/arkivo/actor.rb +1 -1
- data/lib/sufia/arkivo/create_subscription_job.rb +30 -30
- data/lib/sufia/arkivo/metadata_munger.rb +7 -7
- data/lib/sufia/arkivo/schema_validator.rb +1 -1
- data/lib/sufia/single_use_error.rb +0 -1
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia/zotero/config.rb +13 -13
- data/spec/actors/generic_file/actor_spec.rb +17 -18
- data/spec/controllers/admin_stats_controller_spec.rb +56 -5
- data/spec/controllers/api/zotero_controller_spec.rb +10 -9
- data/spec/controllers/authorities_controller_spec.rb +8 -8
- data/spec/controllers/batch_controller_spec.rb +19 -20
- data/spec/controllers/batch_edits_controller_spec.rb +8 -9
- data/spec/controllers/catalog_controller_spec.rb +7 -9
- data/spec/controllers/collections_controller_spec.rb +30 -32
- data/spec/controllers/content_blocks_controller_spec.rb +4 -4
- data/spec/controllers/dashboard_controller_spec.rb +12 -12
- data/spec/controllers/depositors_controller_spec.rb +8 -8
- data/spec/controllers/downloads_controller_spec.rb +10 -11
- data/spec/controllers/featured_work_lists_controller_spec.rb +4 -4
- data/spec/controllers/featured_works_controller_spec.rb +11 -12
- data/spec/controllers/generic_files_controller_spec.rb +154 -125
- data/spec/controllers/homepage_controller_spec.rb +22 -15
- data/spec/controllers/mailbox_controller_spec.rb +20 -36
- data/spec/controllers/my/collections_controller_spec.rb +4 -5
- data/spec/controllers/my/files_controller_spec.rb +10 -11
- data/spec/controllers/my/highlights_controller_spec.rb +4 -5
- data/spec/controllers/my/shares_controller_spec.rb +12 -14
- data/spec/controllers/my_controller_spec.rb +1 -3
- data/spec/controllers/pages_controller_spec.rb +4 -4
- data/spec/controllers/single_use_links_controller_spec.rb +1 -3
- data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -2
- data/spec/controllers/static_controller_spec.rb +1 -1
- data/spec/controllers/tinymce_assets_controller_spec.rb +8 -9
- data/spec/controllers/transfers_controller_spec.rb +19 -19
- data/spec/controllers/users_controller_spec.rb +33 -35
- data/spec/factories/api_items.rb +2 -2
- data/spec/factories/content_blocks.rb +1 -1
- data/spec/factories/featured_works.rb +1 -1
- data/spec/factories/generic_files.rb +3 -3
- data/spec/factories/users.rb +7 -8
- data/spec/features/browse_dashboard_files_spec.rb +14 -18
- data/spec/features/browse_files_spec.rb +3 -4
- data/spec/features/catalog_search_spec.rb +3 -5
- data/spec/features/cloud_upload_spec.rb +2 -2
- data/spec/features/collection_spec.rb +21 -21
- data/spec/features/contact_form_spec.rb +10 -11
- data/spec/features/display_dashboard_spec.rb +5 -9
- data/spec/features/edit_file_spec.rb +8 -9
- data/spec/features/featured_item_spec.rb +1 -1
- data/spec/features/ingest_upload_files_spec.rb +5 -5
- data/spec/features/notifications_spec.rb +2 -6
- data/spec/features/ownership_transfer_spec.rb +2 -2
- data/spec/features/proxy_spec.rb +2 -2
- data/spec/features/search_spec.rb +3 -4
- data/spec/features/single_use_links_spec.rb +1 -1
- data/spec/features/users_spec.rb +4 -5
- data/spec/forms/collection_edit_form_spec.rb +2 -2
- data/spec/forms/generic_file_edit_form_spec.rb +6 -7
- data/spec/helpers/batch_edits_helper_spec.rb +9 -13
- data/spec/helpers/content_block_helper_spec.rb +3 -3
- data/spec/helpers/dashboard_helper_spec.rb +19 -24
- data/spec/helpers/generic_file_helper_spec.rb +5 -7
- data/spec/helpers/sufia_helper_spec.rb +43 -54
- data/spec/helpers/trophy_helper_spec.rb +5 -5
- data/spec/inputs/multi_value_with_help_input_spec.rb +1 -2
- data/spec/inputs/select_with_help_input_spec.rb +19 -15
- data/spec/javascripts/jasmine_spec.rb +4 -5
- data/spec/javascripts/support/jasmine_helper.rb +9 -9
- data/spec/jobs/active_fedora_id_based_job_spec.rb +7 -5
- data/spec/jobs/audit_job_spec.rb +7 -7
- data/spec/jobs/batch_update_job_spec.rb +5 -6
- data/spec/jobs/characterize_job_spec.rb +1 -1
- data/spec/jobs/content_depositor_change_event_job_spec.rb +1 -1
- data/spec/jobs/create_derivatives_job_spec.rb +5 -5
- data/spec/jobs/event_jobs_spec.rb +16 -16
- data/spec/jobs/import_url_job_spec.rb +36 -5
- data/spec/jobs/ingest_local_file_job_spec.rb +31 -20
- data/spec/jobs/sufia_resque_queue_spec.rb +1 -1
- data/spec/lib/sufia/analytics_spec.rb +0 -1
- data/spec/lib/sufia/arkivo/actor_spec.rb +6 -6
- data/spec/lib/sufia/arkivo/schema_validator_spec.rb +18 -18
- data/spec/lib/sufia/breadcrumbs_spec.rb +5 -6
- data/spec/lib/sufia/messages_spec.rb +11 -12
- data/spec/lib/sufia/readable_permissions_spec.rb +8 -10
- data/spec/lib/sufia/upload_complete_behavior_spec.rb +6 -7
- data/spec/lib/sufia/user_stat_importer_spec.rb +30 -33
- data/spec/lib/sufia/writable_permissions_spec.rb +1 -3
- data/spec/lib/sufia/zotero/config_spec.rb +4 -6
- data/spec/models/ability_spec.rb +11 -9
- data/spec/models/batch_spec.rb +13 -13
- data/spec/models/characterization_spec.rb +2 -3
- data/spec/models/checksum_audit_log_spec.rb +18 -19
- data/spec/models/collection_spec.rb +11 -12
- data/spec/models/content_block_spec.rb +33 -22
- data/spec/models/download_spec.rb +3 -5
- data/spec/models/featured_work_list_spec.rb +3 -3
- data/spec/models/featured_work_spec.rb +12 -14
- data/spec/models/file_content_datastream_spec.rb +9 -7
- data/spec/models/file_download_stat_spec.rb +34 -40
- data/spec/models/file_usage_spec.rb +46 -52
- data/spec/models/file_view_stat_spec.rb +35 -41
- data/spec/models/fits_datastream_spec.rb +23 -25
- data/spec/models/generic_file/visibility_spec.rb +10 -5
- data/spec/models/generic_file_spec.rb +86 -88
- data/spec/models/geo_names_resource_spec.rb +3 -5
- data/spec/models/local_authority_spec.rb +30 -33
- data/spec/models/pageview_spec.rb +3 -3
- data/spec/models/proxy_deposit_request_spec.rb +3 -3
- data/spec/models/single_use_link_spec.rb +36 -36
- data/spec/models/solr_document_spec.rb +3 -6
- data/spec/models/trophy_spec.rb +8 -9
- data/spec/models/user_mailbox_spec.rb +62 -0
- data/spec/models/user_spec.rb +28 -29
- data/spec/presenters/presenter_renderer_spec.rb +1 -1
- data/spec/presenters/sufia/generic_file_presenter_spec.rb +5 -5
- data/spec/presenters/sufia/version_list_presenter_spec.rb +2 -2
- data/spec/presenters/sufia/version_presenter_spec.rb +1 -1
- data/spec/routing/featured_works_route_spec.rb +4 -4
- data/spec/routing/ownership_transfers_route_spec.rb +1 -1
- data/spec/routing/route_spec.rb +89 -89
- data/spec/services/generic_file_audit_service_spec.rb +8 -8
- data/spec/services/repository_audit_service_spec.rb +7 -3
- data/spec/spec_helper.rb +5 -4
- data/spec/support/features/session_helpers.rb +1 -1
- data/spec/support/input_support.rb +1 -2
- data/spec/support/rake.rb +1 -1
- data/spec/support/selectors.rb +1 -6
- data/spec/support/statistic_helper.rb +1 -1
- data/spec/support/uploaded_file_monkeypatch.rb +1 -1
- data/spec/tasks/rake_spec.rb +3 -5
- data/spec/views/admin/stats/index.html.erb_spec.rb +16 -16
- data/spec/views/batch/edit.html.erb_spec.rb +1 -3
- data/spec/views/batch_edits/check_all_spec.rb +5 -5
- data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -3
- data/spec/views/catalog/index.html.erb_spec.rb +1 -3
- data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +4 -5
- data/spec/views/collections/_form.html.erb_spec.rb +5 -3
- data/spec/views/collections/_show_descriptions.html.erb_spec.rb +7 -8
- data/spec/views/collections/_show_document_list.erb_spec.rb +4 -6
- data/spec/views/dashboard/index_spec.rb +14 -21
- data/spec/views/generic_file/_browse_everything.html.erb_spec.rb +2 -2
- data/spec/views/generic_file/_permission_form.html.erb_spec.rb +8 -9
- data/spec/views/generic_file/edit.html.erb_spec.rb +7 -7
- data/spec/views/generic_file/show.html.erb_spec.rb +24 -25
- data/spec/views/generic_file/stats.html.erb_spec.rb +19 -19
- data/spec/views/homepage/_announcement.html.erb_spec.rb +51 -0
- data/spec/views/homepage/_featured_works.html.erb_spec.rb +5 -9
- data/spec/views/homepage/_home_header.html.erb_spec.rb +2 -2
- data/spec/views/my/facet.html.erb_spec.rb +4 -4
- data/spec/views/single_use_links/new_download.html.erb_spec.rb +28 -0
- data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +29 -0
- data/spec/views/users/_follower_modal.html.erb_spec.rb +7 -8
- data/spec/views/users/_following_modal.html.erb_spec.rb +4 -5
- data/spec/views/users/_notify_number.html.erb_spec.rb +2 -5
- data/spec/views/users/_user_util_links.html.erb_spec.rb +5 -8
- data/spec/views/users/index.html.erb_spec.rb +4 -6
- data/spec/views/users/show.html.erb_spec.rb +4 -7
- data/tasks/sufia-dev.rake +19 -3
- metadata +20 -5
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module Sufia
|
|
2
2
|
module SufiaHelperBehavior
|
|
3
|
-
def orcid_label(style_class='')
|
|
4
|
-
"#{image_tag 'orcid.png',
|
|
3
|
+
def orcid_label(style_class = '')
|
|
4
|
+
"#{image_tag 'orcid.png', alt: t('sufia.user_profile.orcid.alt'), class: style_class} #{t('sufia.user_profile.orcid.label')}".html_safe
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
def zotero_label(opts={})
|
|
7
|
+
def zotero_label(opts = {})
|
|
8
8
|
html_class = opts[:html_class] || ''
|
|
9
|
-
"#{image_tag 'zotero.png',
|
|
9
|
+
"#{image_tag 'zotero.png', alt: t('sufia.user_profile.zotero.alt'), class: html_class} #{t('sufia.user_profile.zotero.label')}".html_safe
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def zotero_profile_url(zotero_user_id)
|
|
@@ -14,7 +14,7 @@ module Sufia
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def error_messages_for(object)
|
|
17
|
-
if object.try(:errors)
|
|
17
|
+
if object.try(:errors) && object.errors.full_messages.any?
|
|
18
18
|
content_tag(:div, class: 'alert alert-block alert-error validation-errors') do
|
|
19
19
|
content_tag(:h4, I18n.t('sufia.errors.header', model: object.class.model_name.human.downcase), class: 'alert-heading') +
|
|
20
20
|
content_tag(:ul) do
|
|
@@ -41,7 +41,7 @@ module Sufia
|
|
|
41
41
|
# config.index.thumbnail_method = :sufia_thumbnail_tag
|
|
42
42
|
def sufia_thumbnail_tag(document, options)
|
|
43
43
|
# collection
|
|
44
|
-
if
|
|
44
|
+
if document.collection?
|
|
45
45
|
content_tag(:span, "", class: "glyphicon glyphicon-th collection-icon-search")
|
|
46
46
|
|
|
47
47
|
# file
|
|
@@ -54,7 +54,7 @@ module Sufia
|
|
|
54
54
|
else
|
|
55
55
|
"default.png"
|
|
56
56
|
end
|
|
57
|
-
options[:alt] = "
|
|
57
|
+
options[:alt] = ""
|
|
58
58
|
image_tag path, options
|
|
59
59
|
end
|
|
60
60
|
end
|
|
@@ -83,7 +83,9 @@ module Sufia
|
|
|
83
83
|
|
|
84
84
|
def display_user_name(recent_document)
|
|
85
85
|
return "no display name" unless recent_document.depositor
|
|
86
|
-
::User.find_by_user_key(recent_document.depositor).name
|
|
86
|
+
::User.find_by_user_key(recent_document.depositor).name
|
|
87
|
+
rescue
|
|
88
|
+
recent_document.depositor
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
def number_of_deposits(user)
|
|
@@ -98,14 +100,14 @@ module Sufia
|
|
|
98
100
|
# @param solr_field [String] The name of the solr field to link to without its suffix (:facetable)
|
|
99
101
|
# @param empty_message [String] ('No value entered') The message to display if no values are passed in.
|
|
100
102
|
# @param separator [String] (', ') The value to join with.
|
|
101
|
-
def link_to_facet_list(values, solr_field, empty_message="No value entered", separator=", ")
|
|
103
|
+
def link_to_facet_list(values, solr_field, empty_message = "No value entered", separator = ", ")
|
|
102
104
|
return empty_message if values.blank?
|
|
103
105
|
facet_field = Solrizer.solr_name(solr_field, :facetable)
|
|
104
|
-
safe_join(values.map{ |item| link_to_facet(item, facet_field) }, separator)
|
|
106
|
+
safe_join(values.map { |item| link_to_facet(item, facet_field) }, separator)
|
|
105
107
|
end
|
|
106
108
|
|
|
107
109
|
def link_to_field(fieldname, fieldvalue, displayvalue = nil)
|
|
108
|
-
p = { search_field: 'advanced', fieldname => '"'+fieldvalue+'"' }
|
|
110
|
+
p = { search_field: 'advanced', fieldname => '"' + fieldvalue + '"' }
|
|
109
111
|
link_url = catalog_index_path(p)
|
|
110
112
|
display = displayvalue.blank? ? fieldvalue : displayvalue
|
|
111
113
|
link_to(display, link_url)
|
|
@@ -165,12 +167,12 @@ module Sufia
|
|
|
165
167
|
end
|
|
166
168
|
end
|
|
167
169
|
|
|
168
|
-
def render_visibility_link
|
|
169
|
-
link_to render_visibility_label(document), sufia.edit_generic_file_path(document,
|
|
170
|
-
|
|
170
|
+
def render_visibility_link(document)
|
|
171
|
+
link_to render_visibility_label(document), sufia.edit_generic_file_path(document, anchor: "permissions_display"),
|
|
172
|
+
id: "permission_" + document.id, class: "visibility-link"
|
|
171
173
|
end
|
|
172
174
|
|
|
173
|
-
def render_visibility_label
|
|
175
|
+
def render_visibility_label(document)
|
|
174
176
|
if document.registered?
|
|
175
177
|
content_tag :span, t('sufia.institution_name'), class: "label label-info", title: t('sufia.institution_name')
|
|
176
178
|
elsif document.public?
|
|
@@ -189,20 +191,19 @@ module Sufia
|
|
|
189
191
|
|
|
190
192
|
private
|
|
191
193
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
194
|
+
def search_action_for_dashboard
|
|
195
|
+
case params[:controller]
|
|
196
|
+
when "my/files"
|
|
197
|
+
sufia.dashboard_files_path
|
|
198
|
+
when "my/collections"
|
|
199
|
+
sufia.dashboard_collections_path
|
|
200
|
+
when "my/shares"
|
|
201
|
+
sufia.dashboard_shares_path
|
|
202
|
+
when "my/highlights"
|
|
203
|
+
sufia.dashboard_highlights_path
|
|
204
|
+
else
|
|
205
|
+
sufia.dashboard_files_path
|
|
206
|
+
end
|
|
204
207
|
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
208
|
end
|
|
208
209
|
end
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
module TrophyHelper
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
def display_trophy_link(user, id, args = {}, &_block)
|
|
4
|
+
trophy = user.trophies.where(generic_file_id: id).first
|
|
5
|
+
trophyclass = trophy ? "trophy-on" : "trophy-off"
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
args[:add_text] ||= "Highlight File on Profile"
|
|
8
|
+
args[:remove_text] ||= "Unhighlight File"
|
|
9
|
+
text = trophy ? args[:remove_text] : args[:add_text]
|
|
10
|
+
args[:class] = [args[:class], "trophy-class #{trophyclass}"].compact.join(' ')
|
|
11
|
+
args[:data] ||= {}
|
|
12
|
+
args[:data]['add-text'] = args[:add_text]
|
|
13
|
+
args[:data]['remove-text'] = args[:remove_text]
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
args[:data][:url] = sufia.trophy_profile_path(user, file_id: id)
|
|
16
|
+
link_to '#', class: args[:class], data: args[:data] do
|
|
17
|
+
yield(text)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
20
|
end
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
class SelectWithModalHelpInput < MultiValueWithHelpInput
|
|
2
2
|
def link_to_help
|
|
3
3
|
template.link_to "##{attribute_name}Modal", id: "#{input_class}_help_modal", rel: 'button',
|
|
4
|
-
|
|
4
|
+
data: { toggle: 'modal' }, 'aria-label' => aria_label do
|
|
5
5
|
help_icon
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
private
|
|
10
|
+
|
|
10
11
|
def select_options
|
|
11
12
|
@select_options ||= begin
|
|
12
13
|
collection = options.delete(:collection) || self.class.boolean_collection
|
|
@@ -14,7 +15,7 @@ class SelectWithModalHelpInput < MultiValueWithHelpInput
|
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
def build_field(value,
|
|
18
|
+
def build_field(value, _index)
|
|
18
19
|
html_options = input_html_options.dup
|
|
19
20
|
|
|
20
21
|
if @rendered_first_element
|
|
@@ -32,5 +33,4 @@ class SelectWithModalHelpInput < MultiValueWithHelpInput
|
|
|
32
33
|
html_options.merge!(options.slice(:include_blank))
|
|
33
34
|
template.select_tag(attribute_name, template.options_for_select(select_options, value), html_options)
|
|
34
35
|
end
|
|
35
|
-
|
|
36
36
|
end
|
|
@@ -4,23 +4,23 @@ module WithHelpIcon
|
|
|
4
4
|
end
|
|
5
5
|
|
|
6
6
|
protected
|
|
7
|
+
|
|
7
8
|
def link_to_help
|
|
8
9
|
template.link_to '#', id: "#{input_class}_help", rel: 'popover'.freeze,
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
'data-content' => metadata_help, 'data-original-title' => raw_label_text,
|
|
11
|
+
'aria-label' => aria_label do
|
|
11
12
|
help_icon
|
|
12
13
|
end
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def help_icon
|
|
16
|
-
template.content_tag 'i', nil,
|
|
17
|
+
template.content_tag 'i', nil, "aria-hidden" => true, class: "help-icon"
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def metadata_help
|
|
20
21
|
translate_from_namespace(:metadata_help) || attribute_name.to_s.humanize
|
|
21
22
|
end
|
|
22
23
|
|
|
23
|
-
|
|
24
24
|
def aria_label
|
|
25
25
|
translate_from_namespace(:aria_label) || default_aria_label
|
|
26
26
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
class ContentDepositorChangeEventJob < EventJob
|
|
2
|
-
|
|
3
2
|
def queue_name
|
|
4
3
|
:proxy_deposit
|
|
5
4
|
end
|
|
@@ -9,7 +8,7 @@ class ContentDepositorChangeEventJob < EventJob
|
|
|
9
8
|
# @param [String] id identifier of the file to be transfered
|
|
10
9
|
# @param [String] login the user key of the user the file is being transfered to.
|
|
11
10
|
# @param [Boolean] reset (false) should the access controls be reset. This means revoking edit access from the depositor
|
|
12
|
-
def initialize(id, login, reset=false)
|
|
11
|
+
def initialize(id, login, reset = false)
|
|
13
12
|
self.id = id
|
|
14
13
|
self.login = login
|
|
15
14
|
self.reset = reset
|
data/app/jobs/event_job.rb
CHANGED
|
@@ -68,7 +68,7 @@ module Sufia
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
def file_format
|
|
71
|
-
|
|
71
|
+
Array(self[Solrizer.solr_name('file_format')]).first
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
def creator
|
|
@@ -102,6 +102,5 @@ module Sufia
|
|
|
102
102
|
def collection?
|
|
103
103
|
hydra_model == 'Collection'
|
|
104
104
|
end
|
|
105
|
-
|
|
106
105
|
end
|
|
107
106
|
end
|
data/app/models/contact_form.rb
CHANGED
|
@@ -2,12 +2,12 @@ require 'mail_form'
|
|
|
2
2
|
|
|
3
3
|
class ContactForm < MailForm::Base
|
|
4
4
|
ISSUE_TYPES = [
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
["Depositing content", "Depositing content"],
|
|
6
|
+
["Making changes to my content", "Making changes to my content"],
|
|
7
|
+
["Browsing and searching", "Browsing and searching"],
|
|
8
|
+
["Reporting a problem", "Reporting a problem"],
|
|
9
|
+
["General inquiry or request", "General inquiry or request"]
|
|
10
|
+
]
|
|
11
11
|
attribute :contact_method, captcha: true
|
|
12
12
|
attribute :category, validate: true
|
|
13
13
|
attribute :name, validate: true
|
data/app/models/content_block.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class ContentBlock < ActiveRecord::Base
|
|
2
|
-
|
|
3
2
|
MARKETING = 'marketing_text'
|
|
4
3
|
RESEARCHER = 'featured_researcher'
|
|
4
|
+
ANNOUNCEMENT = 'announcement_text'
|
|
5
5
|
|
|
6
6
|
def self.recent_researchers
|
|
7
7
|
where(name: RESEARCHER).order('created_at DESC')
|
|
@@ -18,5 +18,4 @@ class ContentBlock < ActiveRecord::Base
|
|
|
18
18
|
def external_key_name
|
|
19
19
|
self.class.external_keys.fetch(name) { 'External Key' }
|
|
20
20
|
end
|
|
21
|
-
|
|
22
21
|
end
|
|
@@ -21,11 +21,10 @@ class FeaturedWorkList
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
featured_works.empty?
|
|
26
|
-
end
|
|
24
|
+
delegate :empty?, to: :featured_works
|
|
27
25
|
|
|
28
26
|
private
|
|
27
|
+
|
|
29
28
|
def add_solr_document_to_works
|
|
30
29
|
solr_docs.each do |doc|
|
|
31
30
|
work_with_id(doc['id']).generic_file_solr_document = SolrDocument.new(doc)
|
|
@@ -41,7 +40,6 @@ class FeaturedWorkList
|
|
|
41
40
|
end
|
|
42
41
|
|
|
43
42
|
def work_with_id(id)
|
|
44
|
-
@works.find { |w| w.generic_file_id == id}
|
|
43
|
+
@works.find { |w| w.generic_file_id == id }
|
|
45
44
|
end
|
|
46
|
-
|
|
47
45
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
class UserMailbox
|
|
2
|
+
attr_reader :user
|
|
3
|
+
|
|
4
|
+
def initialize(user)
|
|
5
|
+
@user = user
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def inbox
|
|
9
|
+
messages = user.mailbox.inbox
|
|
10
|
+
messages.each { |m| m.mark_as_read(user) }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def delete_all
|
|
14
|
+
user.mailbox.inbox.each do |msg|
|
|
15
|
+
delete_message(msg)
|
|
16
|
+
end
|
|
17
|
+
empty_trash(user)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def destroy(message_id)
|
|
21
|
+
msg = Mailboxer::Conversation.find(message_id)
|
|
22
|
+
return "You do not have privileges to delete the notification..." unless msg.participants.include? user
|
|
23
|
+
delete_message(msg)
|
|
24
|
+
empty_trash(msg.participants[0])
|
|
25
|
+
nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def delete_message(msg)
|
|
31
|
+
msg.move_to_trash(msg.participants[0])
|
|
32
|
+
msg.move_to_trash(msg.participants[1])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def empty_trash(user)
|
|
36
|
+
user.mailbox.trash.each do |conv|
|
|
37
|
+
conv.messages.each do |notify|
|
|
38
|
+
notify.receipts.each(&:delete)
|
|
39
|
+
notify.delete
|
|
40
|
+
end
|
|
41
|
+
conv.delete
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -19,12 +19,12 @@ module Sufia
|
|
|
19
19
|
|
|
20
20
|
def [](key)
|
|
21
21
|
case key
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
when :size
|
|
23
|
+
size
|
|
24
|
+
when :total_items
|
|
25
|
+
total_items
|
|
26
|
+
else
|
|
27
|
+
super
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -35,7 +35,5 @@ module Sufia
|
|
|
35
35
|
def total_items
|
|
36
36
|
model.members.count
|
|
37
37
|
end
|
|
38
|
-
|
|
39
38
|
end
|
|
40
39
|
end
|
|
41
|
-
|
|
@@ -4,7 +4,7 @@ module Sufia
|
|
|
4
4
|
self.model_class = ::GenericFile
|
|
5
5
|
# Terms is the list of fields displayed by app/views/generic_files/_show_descriptions.html.erb
|
|
6
6
|
self.terms = [:resource_type, :title, :creator, :contributor, :description, :tag, :rights,
|
|
7
|
-
|
|
7
|
+
:publisher, :date_created, :subject, :language, :identifier, :based_near, :related_url]
|
|
8
8
|
|
|
9
9
|
# Depositor and permissions are not displayed in app/views/generic_files/_show_descriptions.html.erb
|
|
10
10
|
# so don't include them in `terms'.
|
|
@@ -22,7 +22,7 @@ module Sufia
|
|
|
22
22
|
# Add a schema.org itemtype
|
|
23
23
|
def itemtype
|
|
24
24
|
# Look up the first non-empty resource type value in a hash from the config
|
|
25
|
-
Sufia.config.resource_types_to_schema[resource_type.to_a.reject
|
|
25
|
+
Sufia.config.resource_types_to_schema[resource_type.to_a.reject(&:empty?).first] || 'http://schema.org/CreativeWork'
|
|
26
26
|
rescue
|
|
27
27
|
'http://schema.org/CreativeWork'
|
|
28
28
|
end
|
|
@@ -7,7 +7,7 @@ module Sufia
|
|
|
7
7
|
@view_context = view_context
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def value(field_name, locals={})
|
|
10
|
+
def value(field_name, locals = {})
|
|
11
11
|
render_show_field_partial(field_name, locals)
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ module Sufia
|
|
|
15
15
|
t(:"#{model_name.param_key}.#{field}", scope: label_scope, default: field.to_s.humanize).presence
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def fields(terms, &
|
|
18
|
+
def fields(terms, &_block)
|
|
19
19
|
@view_context.safe_join(terms.map { |term| yield self, term })
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -9,7 +9,7 @@ module Sufia
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
11
|
def wrapped_list
|
|
12
|
-
@wrapped_list ||= @raw_list.map { |v| Sufia::VersionPresenter.new(v) }.sort { |a,b| b.version.created <=> a.version.created }.tap { |l| l.first.try(:current!) }
|
|
12
|
+
@wrapped_list ||= @raw_list.map { |v| Sufia::VersionPresenter.new(v) }.sort { |a, b| b.version.created <=> a.version.created }.tap { |l| l.first.try(:current!) }
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sufia
|
|
2
2
|
class VersionPresenter
|
|
3
|
-
attr_reader :version
|
|
3
|
+
attr_reader :version, :current
|
|
4
4
|
|
|
5
5
|
def initialize(version)
|
|
6
6
|
@version = version
|
|
@@ -8,15 +8,12 @@ module Sufia
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
delegate :label, :uri, to: :version
|
|
11
|
+
alias_method :current?, :current
|
|
11
12
|
|
|
12
13
|
def current!
|
|
13
14
|
@current = true
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
def current?
|
|
17
|
-
@current
|
|
18
|
-
end
|
|
19
|
-
|
|
20
17
|
def created
|
|
21
18
|
@created ||= version.created.to_time.to_formatted_s(:long_ordinal)
|
|
22
19
|
@created
|
|
@@ -24,7 +21,7 @@ module Sufia
|
|
|
24
21
|
|
|
25
22
|
def committer
|
|
26
23
|
vc = VersionCommitter.where(version_id: @version.uri)
|
|
27
|
-
|
|
24
|
+
vc.empty? ? nil : vc.first.committer_login
|
|
28
25
|
end
|
|
29
26
|
end
|
|
30
27
|
end
|