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
@@ -5,7 +5,7 @@ module Sufia::Controller
5
5
  # Adds Hydra behaviors into the application controller
6
6
  include Hydra::Controller::ControllerBehavior
7
7
 
8
- before_filter :notifications_number
8
+ before_action :notifications_number
9
9
  end
10
10
 
11
11
  def current_ability
@@ -28,24 +28,24 @@ module Sufia::Controller
28
28
  end
29
29
 
30
30
  def notifications_number
31
+ # These instance variables must appear above the return statements
31
32
  @notify_number = 0
32
33
  @batches = []
33
34
  return if action_name == "index" && controller_name == "mailbox"
34
- if user_signed_in?
35
- @notify_number = current_user.mailbox.inbox(unread: true).count
36
- @batches = current_user.mailbox.inbox.map { |msg| msg.last_message.body[/<span id="(.*)"><a (href=|data-content=|rel=)(.*)/,1] }.select{ |val| !val.blank? }
37
- end
35
+ return unless user_signed_in?
36
+ @notify_number = current_user.mailbox.inbox(unread: true).count
37
+ @batches = current_user.mailbox.inbox.map { |msg| msg.last_message.body[/<span id="(.*)"><a (href=|data-content=|rel=)(.*)/, 1] }.select { |val| !val.blank? }
38
38
  end
39
39
 
40
40
  # Override Devise method to redirect to dashboard after signing in
41
- def after_sign_in_path_for(resource)
41
+ def after_sign_in_path_for(_resource)
42
42
  sufia.dashboard_index_path
43
43
  end
44
44
 
45
45
  protected
46
46
 
47
- ### Hook which is overridden in Sufia::Ldap::Controller
48
- def has_access?
49
- true
50
- end
47
+ ### Hook which is overridden in Sufia::Ldap::Controller
48
+ def has_access?
49
+ true
50
+ end
51
51
  end
@@ -5,7 +5,7 @@ module Sufia
5
5
  included do
6
6
  include ActionView::Helpers::DateHelper
7
7
 
8
- before_filter :authenticate_user!
8
+ before_action :authenticate_user!
9
9
 
10
10
  layout "sufia-dashboard"
11
11
  end
@@ -14,7 +14,7 @@ module Sufia
14
14
  def index
15
15
  gather_dashboard_information
16
16
  respond_to do |format|
17
- format.html { }
17
+ format.html {}
18
18
  format.rss { render layout: false }
19
19
  format.atom { render layout: false }
20
20
  end
@@ -27,23 +27,22 @@ module Sufia
27
27
 
28
28
  protected
29
29
 
30
- # Gathers all the information that we'll display in the user's dashboard.
31
- # Override this method if you want to exclude or gather additional data elements
32
- # in your dashboard view. You'll need to alter dashboard/index.html.erb accordingly.
33
- def gather_dashboard_information
34
- @user = current_user
35
- @activity = current_user.get_all_user_activity(params[:since].blank? ? DateTime.now.to_i - Sufia.config.activity_to_show_default_seconds_since_now : params[:since].to_i)
36
- @notifications = current_user.mailbox.inbox
37
- @incoming = ProxyDepositRequest.where(receiving_user_id: current_user.id).reject &:deleted_file?
38
- @outgoing = ProxyDepositRequest.where(sending_user_id: current_user.id)
39
- end
40
-
41
- # Formats the user's activities into human-readable strings used for rendering JSON
42
- def human_readable_user_activity
43
- current_user.get_all_user_activity.map do |event|
44
- [event[:action], "#{time_ago_in_words(Time.at(event[:timestamp].to_i))} ago", event[:timestamp].to_i]
30
+ # Gathers all the information that we'll display in the user's dashboard.
31
+ # Override this method if you want to exclude or gather additional data elements
32
+ # in your dashboard view. You'll need to alter dashboard/index.html.erb accordingly.
33
+ def gather_dashboard_information
34
+ @user = current_user
35
+ @activity = current_user.all_user_activity(params[:since].blank? ? DateTime.now.to_i - Sufia.config.activity_to_show_default_seconds_since_now : params[:since].to_i)
36
+ @notifications = current_user.mailbox.inbox
37
+ @incoming = ProxyDepositRequest.where(receiving_user_id: current_user.id).reject(&:deleted_file?)
38
+ @outgoing = ProxyDepositRequest.where(sending_user_id: current_user.id)
45
39
  end
46
- end
47
40
 
41
+ # Formats the user's activities into human-readable strings used for rendering JSON
42
+ def human_readable_user_activity
43
+ current_user.all_user_activity.map do |event|
44
+ [event[:action], "#{time_ago_in_words(Time.at(event[:timestamp].to_i))} ago", event[:timestamp].to_i]
45
+ end
46
+ end
48
47
  end
49
48
  end
@@ -3,14 +3,13 @@ module Sufia
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- before_filter :authenticate_user!
7
- before_filter :validate_users, only: :create
6
+ before_action :authenticate_user!
7
+ before_action :validate_users, only: :create
8
8
  end
9
9
 
10
-
11
10
  # Overriding the default behavior from Hydra::Core::ContorllerBehavior
12
11
  def deny_access(exception)
13
- if current_user and current_user.persisted?
12
+ if current_user && current_user.persisted?
14
13
  redirect_to root_path, alert: exception.message
15
14
  else
16
15
  session['user_return_to'.freeze] = request.url
@@ -36,17 +35,15 @@ module Sufia
36
35
  end
37
36
 
38
37
  def validate_users
39
- if params[:user_id] == params[:grantee_id]
40
- head :ok
41
- end
38
+ head :ok if params[:user_id] == params[:grantee_id]
42
39
  end
43
40
 
44
41
  private
45
42
 
46
- def authorize_and_return_grantor
47
- grantor = ::User.from_url_component(params[:user_id])
48
- authorize! :edit, grantor
49
- return grantor
50
- end
43
+ def authorize_and_return_grantor
44
+ grantor = ::User.from_url_component(params[:user_id])
45
+ authorize! :edit, grantor
46
+ grantor
47
+ end
51
48
  end
52
49
  end
@@ -2,7 +2,7 @@ module Sufia::FilesController
2
2
  module BrowseEverything
3
3
  include ActiveSupport::Concern
4
4
 
5
- def create
5
+ def create
6
6
  if params[:selected_files].present?
7
7
  create_from_browse_everything(params)
8
8
  else
@@ -13,16 +13,16 @@ module Sufia::FilesController
13
13
  protected
14
14
 
15
15
  def create_from_browse_everything(params)
16
- Batch.find_or_create(params[:batch_id])
17
- params[:selected_files].each_pair do |index, file_info|
16
+ Batch.find_or_create(params[:batch_id])
17
+ params[:selected_files].each_pair do |_index, file_info|
18
18
  next if file_info.blank? || file_info["url"].blank?
19
19
  create_file_from_url(file_info["url"], file_info["file_name"])
20
20
  end
21
- redirect_to self.class.upload_complete_path( params[:batch_id])
21
+ redirect_to self.class.upload_complete_path(params[:batch_id])
22
22
  end
23
-
23
+
24
24
  # Generic utility for creating GenericFile from a URL
25
- # Used in to import files using URLs from a file picker like browse_everything
25
+ # Used in to import files using URLs from a file picker like browse_everything
26
26
  def create_file_from_url(url, file_name)
27
27
  ::GenericFile.new(import_url: url, label: file_name) do |gf|
28
28
  actor = Sufia::GenericFile::Actor.new(gf, current_user)
@@ -31,6 +31,5 @@ module Sufia::FilesController
31
31
  Sufia.queue.push(ImportUrlJob.new(gf.id))
32
32
  end
33
33
  end
34
-
35
34
  end
36
35
  end
@@ -10,57 +10,56 @@ module Sufia
10
10
  end
11
11
  end
12
12
 
13
-
14
13
  private
15
14
 
16
- def perform_local_ingest
17
- if Sufia.config.enable_local_ingest && current_user.respond_to?(:directory)
18
- if ingest_local_file
19
- redirect_to GenericFilesController.upload_complete_path( params[:batch_id])
15
+ def perform_local_ingest
16
+ if Sufia.config.enable_local_ingest && current_user.respond_to?(:directory)
17
+ if ingest_local_file
18
+ redirect_to GenericFilesController.upload_complete_path(params[:batch_id])
19
+ else
20
+ flash[:alert] = "Error importing files from user directory."
21
+ render :new
22
+ end
20
23
  else
21
- flash[:alert] = "Error importing files from user directory."
24
+ flash[:alert] = "Your account is not configured for importing files from a user-directory on the server."
22
25
  render :new
23
26
  end
24
- else
25
- flash[:alert] = "Your account is not configured for importing files from a user-directory on the server."
26
- render :new
27
27
  end
28
- end
29
28
 
30
- def ingest_local_file
31
- # Ingest files already on disk
32
- has_directories = false
33
- files = []
34
- params[:local_file].each do |filename|
35
- if File.directory?(File.join(current_user.directory, filename))
36
- has_directories = true
37
- Dir[File.join(current_user.directory, filename, '**', '*')].each do |single|
38
- next if File.directory? single
39
- logger.info("Ingesting file: #{single}")
40
- files << single.sub(current_user.directory + '/', '')
41
- logger.info("after removing the user directory #{current_user.directory} we have: #{files.last}")
29
+ def ingest_local_file
30
+ # Ingest files already on disk
31
+ has_directories = false
32
+ files = []
33
+ params[:local_file].each do |filename|
34
+ if File.directory?(File.join(current_user.directory, filename))
35
+ has_directories = true
36
+ Dir[File.join(current_user.directory, filename, '**', '*')].each do |single|
37
+ next if File.directory? single
38
+ logger.info("Ingesting file: #{single}")
39
+ files << single.sub(current_user.directory + '/', '')
40
+ logger.info("after removing the user directory #{current_user.directory} we have: #{files.last}")
41
+ end
42
+ else
43
+ files << filename
42
44
  end
43
- else
44
- files << filename
45
45
  end
46
+ Batch.find_or_create(params[:batch_id]) unless files.empty?
47
+ files.each do |filename|
48
+ ingest_one(filename, has_directories)
49
+ end
50
+ true
46
51
  end
47
- Batch.find_or_create(params[:batch_id]) unless files.empty?
48
- files.each do |filename|
49
- ingest_one(filename, has_directories)
50
- end
51
- true
52
- end
53
52
 
54
- def ingest_one(filename, unarranged)
55
- basename = File.basename(filename)
56
- # do not remove ::
57
- ::GenericFile.new(label: basename) do |gf|
58
- gf.relative_path = filename if filename != basename
59
- actor = Sufia::GenericFile::Actor.new(gf, current_user)
60
- actor.create_metadata(params[:batch_id])
61
- gf.save!
62
- Sufia.queue.push(IngestLocalFileJob.new(gf.id, current_user.directory, filename, current_user.user_key))
53
+ def ingest_one(filename, _unarranged)
54
+ basename = File.basename(filename)
55
+ # do not remove ::
56
+ ::GenericFile.new(label: basename) do |gf|
57
+ gf.relative_path = filename if filename != basename
58
+ actor = Sufia::GenericFile::Actor.new(gf, current_user)
59
+ actor.create_metadata(params[:batch_id])
60
+ gf.save!
61
+ Sufia.queue.push(IngestLocalFileJob.new(gf.id, current_user.directory, filename, current_user.user_key))
62
+ end
63
63
  end
64
- end
65
64
  end # /FilesController::LocalIngestBehavior
66
65
  end # /Sufia
@@ -4,7 +4,7 @@ module Sufia
4
4
  Sufia::Engine.routes.url_helpers.batch_edit_path(batch_id)
5
5
  end
6
6
 
7
- def destroy_complete_path(params)
7
+ def destroy_complete_path(_params)
8
8
  Sufia::Engine.routes.url_helpers.dashboard_files_path
9
9
  end
10
10
  end # /FilesController::UploadCompleteBehavior
@@ -19,13 +19,13 @@ module Sufia
19
19
 
20
20
  layout "sufia-one-column"
21
21
 
22
- self.copy_blacklight_config_from(CatalogController)
22
+ copy_blacklight_config_from(CatalogController)
23
23
 
24
24
  # Catch permission errors
25
25
  rescue_from Hydra::AccessDenied, CanCan::AccessDenied do |exception|
26
26
  if exception.action == :edit
27
- redirect_to(sufia.url_for({action: 'show'}), alert: "You do not have sufficient privileges to edit this document")
28
- elsif current_user and current_user.persisted?
27
+ redirect_to(sufia.url_for(action: 'show'), alert: "You do not have sufficient privileges to edit this document")
28
+ elsif current_user && current_user.persisted?
29
29
  redirect_to root_url, alert: exception.message
30
30
  else
31
31
  session["user_return_to"] = request.url
@@ -35,15 +35,15 @@ module Sufia
35
35
 
36
36
  # actions: audit, index, create, new, edit, show, update,
37
37
  # destroy, permissions, citation, stats
38
- before_filter :authenticate_user!, except: [:show, :citation, :stats]
39
- before_filter :has_access?, except: [:show]
40
- before_filter :build_breadcrumbs, only: [:show, :edit, :stats]
38
+ before_action :authenticate_user!, except: [:show, :citation, :stats]
39
+ before_action :has_access?, except: [:show]
40
+ before_action :build_breadcrumbs, only: [:show, :edit, :stats]
41
41
  load_resource only: [:audit]
42
42
  load_and_authorize_resource except: [:index, :audit, :show]
43
43
 
44
44
  # since we are only displaying data we are makingthe show action fast by loading the information from solr
45
45
  # these two steps replace load_and_authorize_resource for the show action
46
- before_filter :load_resource_from_solr, only: [:show]
46
+ before_action :load_resource_from_solr, only: [:show]
47
47
  authorize_resource only: [:show]
48
48
 
49
49
  class_attribute :edit_form_class, :presenter_class
@@ -86,20 +86,20 @@ module Sufia
86
86
 
87
87
  def create_from_upload(params)
88
88
  # check error condition No files
89
- return json_error("Error! No file to save") if !params.has_key?(:files)
89
+ return json_error("Error! No file to save") unless params.key?(:files)
90
90
 
91
- file = params[:files].detect {|f| f.respond_to?(:original_filename) }
91
+ file = params[:files].detect { |f| f.respond_to?(:original_filename) }
92
92
  if !file
93
93
  json_error "Error! No file for upload", 'unknown file', status: :unprocessable_entity
94
- elsif (empty_file?(file))
94
+ elsif empty_file?(file)
95
95
  json_error "Error! Zero Length File!", file.original_filename
96
- elsif (!terms_accepted?)
96
+ elsif !terms_accepted?
97
97
  json_error "You must accept the terms of service!", file.original_filename
98
98
  else
99
99
  process_file(file)
100
100
  end
101
101
  rescue => error
102
- logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error.to_s}\n #{error.backtrace.join("\n")}\n\n"
102
+ logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error}\n #{error.backtrace.join("\n")}\n\n"
103
103
  json_error "Error occurred while creating generic file."
104
104
  ensure
105
105
  # remove the tempfile (only if it is a temp file)
@@ -113,11 +113,11 @@ module Sufia
113
113
  # routed to /files/:id
114
114
  def show
115
115
  respond_to do |format|
116
- format.html {
116
+ format.html do
117
117
  @events = @generic_file.events(100)
118
118
  @presenter = presenter
119
119
  @audit_status = audit_service.human_readable_audit_status
120
- }
120
+ end
121
121
  format.endnote { render text: @generic_file.export_as_endnote }
122
122
  end
123
123
  end
@@ -134,9 +134,9 @@ module Sufia
134
134
  update_version
135
135
  elsif wants_to_upload_new_version?
136
136
  update_file
137
- elsif params.has_key? :generic_file
137
+ elsif params.key? :generic_file
138
138
  update_metadata
139
- elsif params.has_key? :visibility
139
+ elsif params.key? :visibility
140
140
  update_visibility
141
141
  end
142
142
 
@@ -152,122 +152,121 @@ module Sufia
152
152
 
153
153
  protected
154
154
 
155
- def set_variables_for_edit_form
156
- @form = edit_form
157
- @groups = current_user.groups
158
- @version_list = version_list
159
- end
160
-
161
- def presenter
162
- presenter_class.new(@generic_file)
163
- end
164
-
165
- def version_list
166
- Sufia::VersionListPresenter.new(@generic_file.content.versions.all)
167
- end
155
+ def set_variables_for_edit_form
156
+ @form = edit_form
157
+ @groups = current_user.groups
158
+ @version_list = version_list
159
+ end
168
160
 
169
- def edit_form
170
- edit_form_class.new(@generic_file)
171
- end
161
+ def presenter
162
+ presenter_class.new(@generic_file)
163
+ end
172
164
 
173
- def audit_service
174
- Sufia::GenericFileAuditService.new(@generic_file)
175
- end
165
+ def version_list
166
+ Sufia::VersionListPresenter.new(@generic_file.content.versions.all)
167
+ end
176
168
 
177
- def wants_to_revert?
178
- params.has_key?(:revision) && params[:revision] != @generic_file.content.latest_version.label
179
- end
169
+ def edit_form
170
+ edit_form_class.new(@generic_file)
171
+ end
180
172
 
181
- def wants_to_upload_new_version?
182
- has_file_data = params.has_key?(:filedata)
183
- on_version_tab = params[:redirect_tab] == 'versions'
173
+ def audit_service
174
+ Sufia::GenericFileAuditService.new(@generic_file)
175
+ end
184
176
 
185
- has_file_data || (on_version_tab && !wants_to_revert?)
186
- end
177
+ def wants_to_revert?
178
+ params.key?(:revision) && params[:revision] != @generic_file.content.latest_version.label
179
+ end
187
180
 
188
- def actor
189
- @actor ||= Sufia::GenericFile::Actor.new(@generic_file, current_user)
190
- end
181
+ def wants_to_upload_new_version?
182
+ has_file_data = params.key?(:filedata)
183
+ on_version_tab = params[:redirect_tab] == 'versions'
191
184
 
192
- def update_version
193
- actor.revert_content(params[:revision])
194
- end
185
+ has_file_data || (on_version_tab && !wants_to_revert?)
186
+ end
195
187
 
196
- def update_file
197
- if params[:filedata]
198
- actor.update_content(params[:filedata], file_path)
199
- else
200
- flash[:error] = 'Please select a file.'
201
- false
188
+ def actor
189
+ @actor ||= Sufia::GenericFile::Actor.new(@generic_file, current_user)
202
190
  end
203
- end
204
191
 
205
- # this is provided so that implementing application can override this behavior and map params to different attributes
206
- def update_metadata
207
- file_attributes = edit_form_class.model_attributes(params[:generic_file])
208
- actor.update_metadata(file_attributes, params[:visibility])
209
- end
192
+ def update_version
193
+ actor.revert_content(params[:revision])
194
+ end
210
195
 
211
- def update_visibility
212
- actor.update_metadata({}, params[:visibility])
213
- end
196
+ def update_file
197
+ if params[:filedata]
198
+ actor.update_content(params[:filedata], file_path)
199
+ else
200
+ flash[:error] = 'Please select a file.'
201
+ false
202
+ end
203
+ end
214
204
 
215
- def json_error(error, name=nil, additional_arguments={})
216
- args = {error: error}
217
- args[:name] = name if name
218
- render additional_arguments.merge(json: [args])
219
- end
205
+ # this is provided so that implementing application can override this behavior and map params to different attributes
206
+ def update_metadata
207
+ file_attributes = edit_form_class.model_attributes(params[:generic_file])
208
+ actor.update_metadata(file_attributes, params[:visibility])
209
+ end
220
210
 
221
- def empty_file?(file)
222
- (file.respond_to?(:tempfile) && file.tempfile.size == 0) || (file.respond_to?(:size) && file.size == 0)
223
- end
211
+ def update_visibility
212
+ actor.update_metadata({}, params[:visibility])
213
+ end
224
214
 
225
- def process_file(file)
215
+ def json_error(error, name = nil, additional_arguments = {})
216
+ args = { error: error }
217
+ args[:name] = name if name
218
+ render additional_arguments.merge(json: [args])
219
+ end
226
220
 
227
- Batch.find_or_create(params[:batch_id])
221
+ def empty_file?(file)
222
+ (file.respond_to?(:tempfile) && file.tempfile.size == 0) || (file.respond_to?(:size) && file.size == 0)
223
+ end
228
224
 
229
- update_metadata_from_upload_screen
230
- actor.create_metadata(params[:batch_id])
231
- if actor.create_content(file, file.original_filename, file_path, file.content_type)
232
- respond_to do |format|
233
- format.html {
234
- render 'jq_upload', formats: 'json', content_type: 'text/html'
235
- }
236
- format.json {
237
- render 'jq_upload'
238
- }
225
+ def process_file(file)
226
+ Batch.find_or_create(params[:batch_id])
227
+
228
+ update_metadata_from_upload_screen
229
+ actor.create_metadata(params[:batch_id])
230
+ if actor.create_content(file, file.original_filename, file_path, file.content_type)
231
+ respond_to do |format|
232
+ format.html do
233
+ render 'jq_upload', formats: 'json', content_type: 'text/html'
234
+ end
235
+ format.json do
236
+ render 'jq_upload'
237
+ end
238
+ end
239
+ else
240
+ msg = @generic_file.errors.full_messages.join(', ')
241
+ flash[:error] = msg
242
+ json_error "Error creating generic file: #{msg}"
239
243
  end
240
- else
241
- msg = @generic_file.errors.full_messages.join(', ')
242
- flash[:error] = msg
243
- json_error "Error creating generic file: #{msg}"
244
244
  end
245
- end
246
245
 
247
- # override this method if you want to change how the terms are accepted on upload.
248
- def terms_accepted?
249
- params[:terms_of_service] == '1'
250
- end
246
+ # override this method if you want to change how the terms are accepted on upload.
247
+ def terms_accepted?
248
+ params[:terms_of_service] == '1'
249
+ end
251
250
 
252
- # override this method if you need to initialize more complex RDF assertions (b-nodes)
253
- # @deprecated use @generic_file.initialize_fields instead
254
- def initialize_fields(file)
255
- file.initialize_fields
256
- end
251
+ # override this method if you need to initialize more complex RDF assertions (b-nodes)
252
+ # @deprecated use @generic_file.initialize_fields instead
253
+ def initialize_fields(file)
254
+ file.initialize_fields
255
+ end
257
256
 
258
- ActiveSupport::Deprecation.deprecate_methods(FilesControllerBehavior, :initialize_fields)
257
+ ActiveSupport::Deprecation.deprecate_methods(FilesControllerBehavior, :initialize_fields)
259
258
 
260
- # The path of the fedora node where we store the file data
261
- def file_path
262
- 'content'
263
- end
259
+ # The path of the fedora node where we store the file data
260
+ def file_path
261
+ 'content'
262
+ end
264
263
 
265
- # this is provided so that implementing application can override this behavior and map params to different attributes
266
- # called when creating or updating metadata
267
- def update_metadata_from_upload_screen
268
- # Relative path is set by the jquery uploader when uploading a directory
269
- @generic_file.relative_path = params[:relative_path] if params[:relative_path]
270
- @generic_file.on_behalf_of = params[:on_behalf_of] if params[:on_behalf_of]
271
- end
264
+ # this is provided so that implementing application can override this behavior and map params to different attributes
265
+ # called when creating or updating metadata
266
+ def update_metadata_from_upload_screen
267
+ # Relative path is set by the jquery uploader when uploading a directory
268
+ @generic_file.relative_path = params[:relative_path] if params[:relative_path]
269
+ @generic_file.on_behalf_of = params[:on_behalf_of] if params[:on_behalf_of]
270
+ end
272
271
  end
273
272
  end