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.
Files changed (269) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +146 -0
  3. data/.travis.yml +4 -7
  4. data/Gemfile +2 -0
  5. data/History.md +29 -1
  6. data/README.md +25 -9
  7. data/SUFIA_VERSION +1 -1
  8. data/app/assets/stylesheets/sufia/_collections.scss +15 -0
  9. data/app/assets/stylesheets/sufia/_file-listing.scss +7 -0
  10. data/app/assets/stylesheets/sufia/_home-page.scss +10 -0
  11. data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +3 -5
  12. data/app/controllers/admin/stats_controller.rb +1 -76
  13. data/app/controllers/api/items_controller.rb +4 -6
  14. data/app/controllers/api/zotero_controller.rb +5 -5
  15. data/app/controllers/authorities_controller.rb +5 -1
  16. data/app/controllers/batch_edits_controller.rb +3 -3
  17. data/app/controllers/concerns/sufia/admin/depositor_stats.rb +41 -0
  18. data/app/controllers/concerns/sufia/admin/stats_behavior.rb +94 -0
  19. data/app/controllers/concerns/sufia/batch_controller_behavior.rb +16 -18
  20. data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +54 -56
  21. data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -6
  22. data/app/controllers/concerns/sufia/collections_controller_behavior.rb +39 -39
  23. data/app/controllers/concerns/sufia/controller.rb +10 -10
  24. data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +17 -18
  25. data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +9 -12
  26. data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +6 -7
  27. data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +39 -40
  28. data/app/controllers/concerns/sufia/files_controller/upload_complete_behavior.rb +1 -1
  29. data/app/controllers/concerns/sufia/files_controller_behavior.rb +109 -110
  30. data/app/controllers/concerns/sufia/homepage_controller.rb +8 -8
  31. data/app/controllers/concerns/sufia/my_controller_behavior.rb +13 -10
  32. data/app/controllers/concerns/sufia/single_use_links_controller_behavior.rb +11 -14
  33. data/app/controllers/concerns/sufia/single_use_links_viewer_controller_behavior.rb +27 -21
  34. data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +17 -17
  35. data/app/controllers/concerns/sufia/users_controller_behavior.rb +54 -54
  36. data/app/controllers/contact_form_controller.rb +1 -1
  37. data/app/controllers/content_blocks_controller.rb +11 -12
  38. data/app/controllers/directory_controller.rb +2 -3
  39. data/app/controllers/featured_work_lists_controller.rb +1 -1
  40. data/app/controllers/featured_works_controller.rb +2 -4
  41. data/app/controllers/homepage_controller.rb +1 -2
  42. data/app/controllers/mailbox_controller.rb +12 -32
  43. data/app/controllers/my/collections_controller.rb +3 -4
  44. data/app/controllers/my/files_controller.rb +4 -6
  45. data/app/controllers/my/highlights_controller.rb +4 -6
  46. data/app/controllers/my/shares_controller.rb +3 -5
  47. data/app/controllers/pages_controller.rb +1 -3
  48. data/app/controllers/single_use_links_controller.rb +0 -1
  49. data/app/controllers/single_use_links_viewer_controller.rb +0 -1
  50. data/app/controllers/static_controller.rb +1 -0
  51. data/app/forms/sufia/forms/collection_edit_form.rb +2 -2
  52. data/app/helpers/batch_edits_helper.rb +1 -3
  53. data/app/helpers/content_block_helper.rb +7 -8
  54. data/app/helpers/generic_file_helper.rb +23 -24
  55. data/app/helpers/sufia/blacklight_override.rb +6 -7
  56. data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -7
  57. data/app/helpers/sufia/permissions_helper.rb +3 -4
  58. data/app/helpers/sufia/sufia_helper_behavior.rb +30 -29
  59. data/app/helpers/trophy_helper.rb +15 -15
  60. data/app/inputs/select_with_modal_help_input.rb +3 -3
  61. data/app/inputs/with_help_icon.rb +4 -4
  62. data/app/jobs/content_delete_event_job.rb +0 -1
  63. data/app/jobs/content_depositor_change_event_job.rb +1 -2
  64. data/app/jobs/event_job.rb +0 -1
  65. data/app/jobs/user_unfollow_event_job.rb +1 -0
  66. data/app/models/concerns/sufia/solr_document_behavior.rb +1 -2
  67. data/app/models/contact_form.rb +6 -6
  68. data/app/models/content_block.rb +1 -2
  69. data/app/models/featured_work_list.rb +3 -5
  70. data/app/models/user_mailbox.rb +44 -0
  71. data/app/presenters/sufia/collection_presenter.rb +6 -8
  72. data/app/presenters/sufia/generic_file_presenter.rb +2 -2
  73. data/app/presenters/sufia/presenter_renderer.rb +2 -2
  74. data/app/presenters/sufia/version_list_presenter.rb +1 -1
  75. data/app/presenters/sufia/version_presenter.rb +3 -6
  76. data/app/search_builders/deposit_search_builder.rb +19 -0
  77. data/app/search_builders/sufia/my_search_builder_behavior.rb +1 -2
  78. data/app/search_builders/sufia/search_builder.rb +1 -3
  79. data/app/uploaders/tinymce_asset_uploader.rb +0 -2
  80. data/app/views/_controls.html.erb +5 -5
  81. data/app/views/admin/stats/_deposits.html.erb +19 -0
  82. data/app/views/admin/stats/index.html.erb +2 -0
  83. data/app/views/batch_edits/edit.html.erb +2 -2
  84. data/app/views/collections/_edit_actions.html.erb +3 -3
  85. data/app/views/collections/_form_for_select_collection.html.erb +2 -2
  86. data/app/views/collections/_sort_and_per_page.html.erb +12 -9
  87. data/app/views/collections/_view_type_group.html.erb +1 -1
  88. data/app/views/collections/edit.html.erb +5 -5
  89. data/app/views/collections/show.html.erb +7 -6
  90. data/app/views/homepage/_announcement.html.erb +5 -0
  91. data/app/views/homepage/_home.html.erb +1 -0
  92. data/app/views/my/_sort_and_per_page.html.erb +14 -10
  93. data/app/views/my/index.html.erb +1 -1
  94. data/app/views/pages/show.html.erb +0 -2
  95. data/app/views/single_use_links/new_download.html.erb +1 -1
  96. data/app/views/single_use_links_viewer/show.html.erb +1 -1
  97. data/app/views/users/_notify_link.html.erb +1 -1
  98. data/app/views/users/_notify_number.html.erb +2 -2
  99. data/config/initializers/simple_form.rb +1 -1
  100. data/config/initializers/simple_form_bootstrap.rb +1 -1
  101. data/config/locales/sufia.en.yml +4 -0
  102. data/config/routes.rb +2 -3
  103. data/lib/generators/sufia/admin_stat_generator.rb +0 -3
  104. data/lib/generators/sufia/install_generator.rb +8 -9
  105. data/lib/generators/sufia/templates/catalog_controller.rb +2 -3
  106. data/lib/generators/sufia/templates/config/action_dispatch_http_upload_monkey_patch.rb +1 -0
  107. data/lib/generators/sufia/upgrade400_generator.rb +9 -9
  108. data/lib/generators/sufia/upgrade600_generator.rb +1 -4
  109. data/lib/sufia.rb +2 -2
  110. data/lib/sufia/arkivo/actor.rb +1 -1
  111. data/lib/sufia/arkivo/create_subscription_job.rb +30 -30
  112. data/lib/sufia/arkivo/metadata_munger.rb +7 -7
  113. data/lib/sufia/arkivo/schema_validator.rb +1 -1
  114. data/lib/sufia/single_use_error.rb +0 -1
  115. data/lib/sufia/version.rb +1 -1
  116. data/lib/sufia/zotero/config.rb +13 -13
  117. data/spec/actors/generic_file/actor_spec.rb +17 -18
  118. data/spec/controllers/admin_stats_controller_spec.rb +56 -5
  119. data/spec/controllers/api/zotero_controller_spec.rb +10 -9
  120. data/spec/controllers/authorities_controller_spec.rb +8 -8
  121. data/spec/controllers/batch_controller_spec.rb +19 -20
  122. data/spec/controllers/batch_edits_controller_spec.rb +8 -9
  123. data/spec/controllers/catalog_controller_spec.rb +7 -9
  124. data/spec/controllers/collections_controller_spec.rb +30 -32
  125. data/spec/controllers/content_blocks_controller_spec.rb +4 -4
  126. data/spec/controllers/dashboard_controller_spec.rb +12 -12
  127. data/spec/controllers/depositors_controller_spec.rb +8 -8
  128. data/spec/controllers/downloads_controller_spec.rb +10 -11
  129. data/spec/controllers/featured_work_lists_controller_spec.rb +4 -4
  130. data/spec/controllers/featured_works_controller_spec.rb +11 -12
  131. data/spec/controllers/generic_files_controller_spec.rb +154 -125
  132. data/spec/controllers/homepage_controller_spec.rb +22 -15
  133. data/spec/controllers/mailbox_controller_spec.rb +20 -36
  134. data/spec/controllers/my/collections_controller_spec.rb +4 -5
  135. data/spec/controllers/my/files_controller_spec.rb +10 -11
  136. data/spec/controllers/my/highlights_controller_spec.rb +4 -5
  137. data/spec/controllers/my/shares_controller_spec.rb +12 -14
  138. data/spec/controllers/my_controller_spec.rb +1 -3
  139. data/spec/controllers/pages_controller_spec.rb +4 -4
  140. data/spec/controllers/single_use_links_controller_spec.rb +1 -3
  141. data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -2
  142. data/spec/controllers/static_controller_spec.rb +1 -1
  143. data/spec/controllers/tinymce_assets_controller_spec.rb +8 -9
  144. data/spec/controllers/transfers_controller_spec.rb +19 -19
  145. data/spec/controllers/users_controller_spec.rb +33 -35
  146. data/spec/factories/api_items.rb +2 -2
  147. data/spec/factories/content_blocks.rb +1 -1
  148. data/spec/factories/featured_works.rb +1 -1
  149. data/spec/factories/generic_files.rb +3 -3
  150. data/spec/factories/users.rb +7 -8
  151. data/spec/features/browse_dashboard_files_spec.rb +14 -18
  152. data/spec/features/browse_files_spec.rb +3 -4
  153. data/spec/features/catalog_search_spec.rb +3 -5
  154. data/spec/features/cloud_upload_spec.rb +2 -2
  155. data/spec/features/collection_spec.rb +21 -21
  156. data/spec/features/contact_form_spec.rb +10 -11
  157. data/spec/features/display_dashboard_spec.rb +5 -9
  158. data/spec/features/edit_file_spec.rb +8 -9
  159. data/spec/features/featured_item_spec.rb +1 -1
  160. data/spec/features/ingest_upload_files_spec.rb +5 -5
  161. data/spec/features/notifications_spec.rb +2 -6
  162. data/spec/features/ownership_transfer_spec.rb +2 -2
  163. data/spec/features/proxy_spec.rb +2 -2
  164. data/spec/features/search_spec.rb +3 -4
  165. data/spec/features/single_use_links_spec.rb +1 -1
  166. data/spec/features/users_spec.rb +4 -5
  167. data/spec/forms/collection_edit_form_spec.rb +2 -2
  168. data/spec/forms/generic_file_edit_form_spec.rb +6 -7
  169. data/spec/helpers/batch_edits_helper_spec.rb +9 -13
  170. data/spec/helpers/content_block_helper_spec.rb +3 -3
  171. data/spec/helpers/dashboard_helper_spec.rb +19 -24
  172. data/spec/helpers/generic_file_helper_spec.rb +5 -7
  173. data/spec/helpers/sufia_helper_spec.rb +43 -54
  174. data/spec/helpers/trophy_helper_spec.rb +5 -5
  175. data/spec/inputs/multi_value_with_help_input_spec.rb +1 -2
  176. data/spec/inputs/select_with_help_input_spec.rb +19 -15
  177. data/spec/javascripts/jasmine_spec.rb +4 -5
  178. data/spec/javascripts/support/jasmine_helper.rb +9 -9
  179. data/spec/jobs/active_fedora_id_based_job_spec.rb +7 -5
  180. data/spec/jobs/audit_job_spec.rb +7 -7
  181. data/spec/jobs/batch_update_job_spec.rb +5 -6
  182. data/spec/jobs/characterize_job_spec.rb +1 -1
  183. data/spec/jobs/content_depositor_change_event_job_spec.rb +1 -1
  184. data/spec/jobs/create_derivatives_job_spec.rb +5 -5
  185. data/spec/jobs/event_jobs_spec.rb +16 -16
  186. data/spec/jobs/import_url_job_spec.rb +36 -5
  187. data/spec/jobs/ingest_local_file_job_spec.rb +31 -20
  188. data/spec/jobs/sufia_resque_queue_spec.rb +1 -1
  189. data/spec/lib/sufia/analytics_spec.rb +0 -1
  190. data/spec/lib/sufia/arkivo/actor_spec.rb +6 -6
  191. data/spec/lib/sufia/arkivo/schema_validator_spec.rb +18 -18
  192. data/spec/lib/sufia/breadcrumbs_spec.rb +5 -6
  193. data/spec/lib/sufia/messages_spec.rb +11 -12
  194. data/spec/lib/sufia/readable_permissions_spec.rb +8 -10
  195. data/spec/lib/sufia/upload_complete_behavior_spec.rb +6 -7
  196. data/spec/lib/sufia/user_stat_importer_spec.rb +30 -33
  197. data/spec/lib/sufia/writable_permissions_spec.rb +1 -3
  198. data/spec/lib/sufia/zotero/config_spec.rb +4 -6
  199. data/spec/models/ability_spec.rb +11 -9
  200. data/spec/models/batch_spec.rb +13 -13
  201. data/spec/models/characterization_spec.rb +2 -3
  202. data/spec/models/checksum_audit_log_spec.rb +18 -19
  203. data/spec/models/collection_spec.rb +11 -12
  204. data/spec/models/content_block_spec.rb +33 -22
  205. data/spec/models/download_spec.rb +3 -5
  206. data/spec/models/featured_work_list_spec.rb +3 -3
  207. data/spec/models/featured_work_spec.rb +12 -14
  208. data/spec/models/file_content_datastream_spec.rb +9 -7
  209. data/spec/models/file_download_stat_spec.rb +34 -40
  210. data/spec/models/file_usage_spec.rb +46 -52
  211. data/spec/models/file_view_stat_spec.rb +35 -41
  212. data/spec/models/fits_datastream_spec.rb +23 -25
  213. data/spec/models/generic_file/visibility_spec.rb +10 -5
  214. data/spec/models/generic_file_spec.rb +86 -88
  215. data/spec/models/geo_names_resource_spec.rb +3 -5
  216. data/spec/models/local_authority_spec.rb +30 -33
  217. data/spec/models/pageview_spec.rb +3 -3
  218. data/spec/models/proxy_deposit_request_spec.rb +3 -3
  219. data/spec/models/single_use_link_spec.rb +36 -36
  220. data/spec/models/solr_document_spec.rb +3 -6
  221. data/spec/models/trophy_spec.rb +8 -9
  222. data/spec/models/user_mailbox_spec.rb +62 -0
  223. data/spec/models/user_spec.rb +28 -29
  224. data/spec/presenters/presenter_renderer_spec.rb +1 -1
  225. data/spec/presenters/sufia/generic_file_presenter_spec.rb +5 -5
  226. data/spec/presenters/sufia/version_list_presenter_spec.rb +2 -2
  227. data/spec/presenters/sufia/version_presenter_spec.rb +1 -1
  228. data/spec/routing/featured_works_route_spec.rb +4 -4
  229. data/spec/routing/ownership_transfers_route_spec.rb +1 -1
  230. data/spec/routing/route_spec.rb +89 -89
  231. data/spec/services/generic_file_audit_service_spec.rb +8 -8
  232. data/spec/services/repository_audit_service_spec.rb +7 -3
  233. data/spec/spec_helper.rb +5 -4
  234. data/spec/support/features/session_helpers.rb +1 -1
  235. data/spec/support/input_support.rb +1 -2
  236. data/spec/support/rake.rb +1 -1
  237. data/spec/support/selectors.rb +1 -6
  238. data/spec/support/statistic_helper.rb +1 -1
  239. data/spec/support/uploaded_file_monkeypatch.rb +1 -1
  240. data/spec/tasks/rake_spec.rb +3 -5
  241. data/spec/views/admin/stats/index.html.erb_spec.rb +16 -16
  242. data/spec/views/batch/edit.html.erb_spec.rb +1 -3
  243. data/spec/views/batch_edits/check_all_spec.rb +5 -5
  244. data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -3
  245. data/spec/views/catalog/index.html.erb_spec.rb +1 -3
  246. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +4 -5
  247. data/spec/views/collections/_form.html.erb_spec.rb +5 -3
  248. data/spec/views/collections/_show_descriptions.html.erb_spec.rb +7 -8
  249. data/spec/views/collections/_show_document_list.erb_spec.rb +4 -6
  250. data/spec/views/dashboard/index_spec.rb +14 -21
  251. data/spec/views/generic_file/_browse_everything.html.erb_spec.rb +2 -2
  252. data/spec/views/generic_file/_permission_form.html.erb_spec.rb +8 -9
  253. data/spec/views/generic_file/edit.html.erb_spec.rb +7 -7
  254. data/spec/views/generic_file/show.html.erb_spec.rb +24 -25
  255. data/spec/views/generic_file/stats.html.erb_spec.rb +19 -19
  256. data/spec/views/homepage/_announcement.html.erb_spec.rb +51 -0
  257. data/spec/views/homepage/_featured_works.html.erb_spec.rb +5 -9
  258. data/spec/views/homepage/_home_header.html.erb_spec.rb +2 -2
  259. data/spec/views/my/facet.html.erb_spec.rb +4 -4
  260. data/spec/views/single_use_links/new_download.html.erb_spec.rb +28 -0
  261. data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +29 -0
  262. data/spec/views/users/_follower_modal.html.erb_spec.rb +7 -8
  263. data/spec/views/users/_following_modal.html.erb_spec.rb +4 -5
  264. data/spec/views/users/_notify_number.html.erb_spec.rb +2 -5
  265. data/spec/views/users/_user_util_links.html.erb_spec.rb +5 -8
  266. data/spec/views/users/index.html.erb_spec.rb +4 -6
  267. data/spec/views/users/show.html.erb_spec.rb +4 -7
  268. data/tasks/sufia-dev.rake +19 -3
  269. 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', { alt: t('sufia.user_profile.orcid.alt'), class: style_class }} #{t('sufia.user_profile.orcid.label')}".html_safe
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', { alt: t('sufia.user_profile.zotero.alt'), class: html_class }} #{t('sufia.user_profile.zotero.label')}".html_safe
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) and object.errors.full_messages.any?
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 (document.collection?)
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 rescue recent_document.depositor
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 document
169
- link_to render_visibility_label(document), sufia.edit_generic_file_path(document, {anchor: "permissions_display"}),
170
- id: "permission_"+document.id, class: "visibility-link"
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 document
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
- def search_action_for_dashboard
193
- case params[:controller]
194
- when "my/files"
195
- sufia.dashboard_files_path
196
- when "my/collections"
197
- sufia.dashboard_collections_path
198
- when "my/shares"
199
- sufia.dashboard_shares_path
200
- when "my/highlights"
201
- sufia.dashboard_highlights_path
202
- else
203
- sufia.dashboard_files_path
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
- 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"
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
- 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]
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
- 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
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
- data: { toggle: 'modal' }, :'aria-label' => aria_label do
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, index)
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
- :'data-content' => metadata_help, :'data-original-title' => raw_label_text,
10
- :'aria-label' => aria_label do
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, :"aria-hidden" => true, class: "help-icon"
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 ContentDeleteEventJob < EventJob
2
-
3
2
  def run
4
3
  action = "User #{link_to_profile depositor_id} has deleted file '#{generic_file_id}'"
5
4
  timestamp = Time.now.to_i
@@ -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
@@ -15,5 +15,4 @@ class EventJob
15
15
  self.generic_file_id = generic_file_id
16
16
  self.depositor_id = depositor_id
17
17
  end
18
-
19
18
  end
@@ -5,6 +5,7 @@ class UserUnfollowEventJob < EventJob
5
5
  self.unfollower_id = unfollower_id
6
6
  self.unfollowee_id = unfollowee_id
7
7
  end
8
+
8
9
  def run
9
10
  action = "User #{link_to_profile unfollower_id} has unfollowed #{link_to_profile unfollowee_id}"
10
11
  timestamp = Time.now.to_i
@@ -68,7 +68,7 @@ module Sufia
68
68
  end
69
69
 
70
70
  def file_format
71
- Array(self[Solrizer.solr_name('file_format')]).first
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
@@ -2,12 +2,12 @@ require 'mail_form'
2
2
 
3
3
  class ContactForm < MailForm::Base
4
4
  ISSUE_TYPES = [
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
- ]
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
@@ -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
- def empty?
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
- when :size
23
- size
24
- when :total_items
25
- total_items
26
- else
27
- super
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
- :publisher, :date_created, :subject, :language, :identifier, :based_near, :related_url]
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 { |type| type.empty? }.first] || 'http://schema.org/CreativeWork'
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, &block)
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
- return vc.empty? ? nil : vc.first.committer_login
24
+ vc.empty? ? nil : vc.first.committer_login
28
25
  end
29
26
  end
30
27
  end