sufia 6.2.0 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
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