sufia 7.0.0.beta3 → 7.0.0.beta4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -0
  3. data/.rubocop_todo.yml +66 -7
  4. data/app/controllers/concerns/sufia/batch_uploads_controller_behavior.rb +0 -1
  5. data/app/controllers/concerns/sufia/collections_controller_behavior.rb +0 -1
  6. data/app/controllers/concerns/sufia/contact_form_controller_behavior.rb +6 -3
  7. data/app/controllers/concerns/sufia/controller.rb +0 -7
  8. data/app/controllers/concerns/sufia/file_sets_controller_behavior.rb +1 -1
  9. data/app/controllers/concerns/sufia/uploads_controller_behavior.rb +18 -0
  10. data/app/controllers/concerns/sufia/users_controller_behavior.rb +1 -25
  11. data/app/controllers/concerns/sufia/works_controller_behavior.rb +31 -32
  12. data/app/controllers/curation_concerns/audits_controller.rb +0 -1
  13. data/app/controllers/sufia/resource_sync_controller.rb +41 -0
  14. data/app/controllers/sufia/trophies_controller.rb +17 -0
  15. data/app/controllers/sufia/uploads_controller.rb +1 -12
  16. data/app/helpers/sufia/sufia_helper_behavior.rb +15 -3
  17. data/app/helpers/trophy_helper.rb +1 -1
  18. data/app/models/concerns/sufia/user.rb +0 -12
  19. data/app/models/contact_form.rb +2 -2
  20. data/app/models/local_authority.rb +5 -2
  21. data/app/presenters/sufia/user_profile_presenter.rb +29 -0
  22. data/app/services/sufia/query_service.rb +1 -1
  23. data/app/views/collections/_edit_actions.html.erb +2 -1
  24. data/app/views/collections/_show_actions.html.erb +2 -1
  25. data/app/views/collections/_work_action_menu.html.erb +1 -1
  26. data/app/views/contact_form/new.html.erb +1 -1
  27. data/app/views/curation_concerns/base/_form_progress.html.erb +1 -1
  28. data/app/views/dashboard/_index_partials/_contents.html.erb +1 -1
  29. data/app/views/dashboard/_index_partials/_proxy_rights.html.erb +2 -2
  30. data/app/views/layouts/_head_tag_content.html.erb +1 -0
  31. data/app/views/my/_work_action_menu.html.erb +1 -1
  32. data/app/views/sufia/homepage/_featured_fields.html.erb +1 -5
  33. data/app/views/sufia/homepage/_home_header.html.erb +1 -1
  34. data/app/views/transfers/new.html.erb +1 -1
  35. data/app/views/users/_activity.html.erb +1 -1
  36. data/app/views/users/_contributions.html.erb +5 -5
  37. data/app/views/users/_edit_primary.html.erb +2 -2
  38. data/app/views/users/_profile_actions.html.erb +1 -1
  39. data/app/views/users/_profile_tabs.html.erb +2 -2
  40. data/app/views/users/show.html.erb +2 -5
  41. data/config/locales/sufia.en.yml +1 -1
  42. data/config/routes.rb +7 -8
  43. data/{lib/generators/sufia/templates/migrations/acts_as_follower_migration.rb → db/migrate/20160328222155_acts_as_follower_migration.rb} +0 -0
  44. data/{lib/generators/sufia/templates/migrations/add_social_to_users.rb → db/migrate/20160328222156_add_social_to_users.rb} +0 -0
  45. data/{lib/generators/sufia/templates/migrations/add_ldap_attrs_to_user.rb → db/migrate/20160328222157_add_ldap_attrs_to_user.rb} +0 -0
  46. data/{lib/generators/sufia/templates/migrations/add_avatars_to_users.rb → db/migrate/20160328222158_add_avatars_to_users.rb} +0 -0
  47. data/{lib/generators/sufia/templates/migrations/create_local_authorities.rb → db/migrate/20160328222160_create_local_authorities.rb} +0 -0
  48. data/{lib/generators/sufia/templates/migrations/create_trophies.rb → db/migrate/20160328222161_create_trophies.rb} +0 -0
  49. data/{lib/generators/sufia/templates/migrations/add_linkedin_to_users.rb → db/migrate/20160328222162_add_linkedin_to_users.rb} +0 -0
  50. data/{lib/generators/sufia/templates/migrations/create_tinymce_assets.rb → db/migrate/20160328222163_create_tinymce_assets.rb} +0 -0
  51. data/{lib/generators/sufia/templates/migrations/create_content_blocks.rb → db/migrate/20160328222164_create_content_blocks.rb} +0 -0
  52. data/{lib/generators/sufia/templates/migrations/create_featured_works.rb → db/migrate/20160328222165_create_featured_works.rb} +0 -0
  53. data/{lib/generators/sufia/templates/migrations/add_external_key_to_content_blocks.rb → db/migrate/20160328222166_add_external_key_to_content_blocks.rb} +0 -0
  54. data/{lib/generators/sufia/templates/migrations/create_proxy_deposit_rights.rb → db/migrate/20160328222226_create_proxy_deposit_rights.rb} +0 -0
  55. data/{lib/generators/sufia/templates/migrations/create_proxy_deposit_requests.rb → db/migrate/20160328222227_create_proxy_deposit_requests.rb} +0 -0
  56. data/{lib/generators/sufia/templates/migrations/create_file_view_stats.rb → db/migrate/20160328222228_create_file_view_stats.rb} +0 -0
  57. data/{lib/generators/sufia/templates/migrations/create_file_download_stats.rb → db/migrate/20160328222229_create_file_download_stats.rb} +0 -0
  58. data/{lib/generators/sufia/templates/migrations/add_orcid_to_users.rb → db/migrate/20160328222230_add_orcid_to_users.rb} +0 -0
  59. data/{lib/generators/sufia/templates/migrations/create_user_stats.rb → db/migrate/20160328222231_create_user_stats.rb} +0 -0
  60. data/{lib/generators/sufia/templates/migrations/create_work_view_stats.rb → db/migrate/20160328222232_create_work_view_stats.rb} +0 -0
  61. data/{lib/generators/sufia/templates/migrations/add_works_to_user_stats.rb → db/migrate/20160328222233_add_works_to_user_stats.rb} +0 -0
  62. data/{lib/generators/sufia/templates/migrations/change_trophy_generic_file_id_to_work_id.rb → db/migrate/20160328222236_change_trophy_generic_file_id_to_work_id.rb} +0 -0
  63. data/{lib/generators/sufia/templates/migrations/change_proxy_deposit_generic_file_id_to_work_id.rb → db/migrate/20160328222237_change_proxy_deposit_generic_file_id_to_work_id.rb} +0 -0
  64. data/{lib/generators/sufia/templates/migrations/change_audit_log_generic_file_id_to_file_set_id.rb → db/migrate/20160328222238_change_audit_log_generic_file_id_to_file_set_id.rb} +0 -0
  65. data/{lib/generators/sufia/templates/migrations/change_proxy_deposit_request_generic_file_id_to_work_id.rb → db/migrate/20160328222239_change_proxy_deposit_request_generic_file_id_to_work_id.rb} +0 -0
  66. data/{lib/generators/sufia/templates/migrations/create_uploaded_files.rb → db/migrate/20160401142419_create_uploaded_files.rb} +0 -0
  67. data/{lib/generators/sufia/templates/migrations/change_featured_work_generic_file_id_to_work_id.rb → db/migrate/20160510000007_change_featured_work_generic_file_id_to_work_id.rb} +0 -0
  68. data/{lib/generators/sufia/templates/migrations/add_arkivo_to_users.rb → db/migrate/20160516190435_add_arkivo_to_users.rb} +0 -0
  69. data/lib/generators/sufia/arkivo_api_generator.rb +1 -8
  70. data/lib/generators/sufia/config_generator.rb +3 -11
  71. data/lib/generators/sufia/install_generator.rb +12 -46
  72. data/lib/generators/sufia/templates/catalog_controller.rb +10 -10
  73. data/lib/generators/sufia/templates/config/sufia.rb +11 -14
  74. data/lib/generators/sufia/upgrade700_generator.rb +1 -16
  75. data/lib/sufia.rb +4 -8
  76. data/lib/sufia/configuration.rb +132 -0
  77. data/lib/sufia/engine.rb +6 -46
  78. data/lib/sufia/resource_sync.rb +11 -0
  79. data/lib/sufia/resource_sync/capability_list_writer.rb +31 -0
  80. data/lib/sufia/resource_sync/resource_list_writer.rb +77 -0
  81. data/lib/sufia/resource_sync/source_description_writer.rb +30 -0
  82. data/lib/sufia/version.rb +1 -1
  83. data/spec/actors/{create_with_files_actor_spec.rb → sufia/create_with_files_actor_spec.rb} +0 -0
  84. data/spec/controllers/{admin_stats_controller_spec.rb → admin/stats_controller_spec.rb} +0 -0
  85. data/spec/controllers/batch_edits_controller_spec.rb +5 -9
  86. data/spec/controllers/contact_form_controller_spec.rb +88 -0
  87. data/spec/controllers/{file_sets_controller_spec.rb → curation_concerns/file_sets_controller_spec.rb} +1 -2
  88. data/spec/controllers/{generic_works_controller_spec.rb → curation_concerns/generic_works_controller_spec.rb} +1 -1
  89. data/spec/controllers/depositors_controller_spec.rb +1 -1
  90. data/spec/controllers/featured_works_controller_spec.rb +1 -1
  91. data/spec/controllers/mailbox_controller_spec.rb +1 -1
  92. data/spec/controllers/my/highlights_controller_spec.rb +15 -11
  93. data/spec/controllers/stats_controller_spec.rb +1 -1
  94. data/spec/controllers/{homepage_controller_spec.rb → sufia/homepage_controller_spec.rb} +1 -1
  95. data/spec/controllers/sufia/resource_sync_controller_spec.rb +52 -0
  96. data/spec/controllers/sufia/trophies_controller_spec.rb +27 -0
  97. data/spec/controllers/transfers_controller_spec.rb +7 -7
  98. data/spec/controllers/users_controller_spec.rb +22 -60
  99. data/spec/features/browse_catalog_spec.rb +1 -1
  100. data/spec/features/collection_spec.rb +6 -7
  101. data/spec/features/contact_form_spec.rb +2 -89
  102. data/spec/features/search_spec.rb +7 -7
  103. data/spec/features/users_spec.rb +1 -1
  104. data/spec/forms/curation_concerns/{work_form_spec.rb → generic_work_form_spec.rb} +0 -0
  105. data/spec/forms/sufia/{batch_edit_form_spec.rb → forms/batch_edit_form_spec.rb} +0 -0
  106. data/spec/forms/sufia/{batch_upload_form_spec.rb → forms/batch_upload_form_spec.rb} +0 -0
  107. data/spec/forms/sufia/{collection_form_spec.rb → forms/collection_form_spec.rb} +0 -0
  108. data/spec/helpers/blacklight_helper_spec.rb +91 -0
  109. data/spec/helpers/dashboard_helper_spec.rb +2 -2
  110. data/spec/helpers/sufia_helper_spec.rb +7 -12
  111. data/spec/helpers/trophy_helper_spec.rb +1 -1
  112. data/spec/javascripts/jasmine_spec.rb +1 -1
  113. data/spec/lib/sufia/resource_sync/capability_list_writer_spec.rb +26 -0
  114. data/spec/lib/sufia/resource_sync/resource_list_writer_spec.rb +24 -0
  115. data/spec/lib/sufia/resource_sync/source_description_writer_spec.rb +21 -0
  116. data/spec/models/featured_work_spec.rb +1 -1
  117. data/spec/models/generic_work_spec.rb +7 -10
  118. data/spec/models/local_authority_spec.rb +3 -11
  119. data/spec/models/{ability_spec.rb → sufia/ability_spec.rb} +0 -0
  120. data/spec/models/sufia/download_spec.rb +13 -0
  121. data/spec/models/sufia/pageview_spec.rb +13 -0
  122. data/spec/models/sufia/uploaded_file_spec.rb +1 -1
  123. data/spec/models/{user_usage_stats_spec.rb → sufia/user_usage_stats_spec.rb} +0 -0
  124. data/spec/models/trophy_spec.rb +5 -7
  125. data/spec/models/user_spec.rb +12 -12
  126. data/spec/presenters/{file_usage_spec.rb → sufia/file_usage_spec.rb} +4 -4
  127. data/spec/presenters/{presenter_renderer_spec.rb → sufia/presenter_renderer_spec.rb} +0 -0
  128. data/spec/presenters/sufia/user_profile_presenter_spec.rb +23 -0
  129. data/spec/presenters/{work_usage_spec.rb → sufia/work_usage_spec.rb} +4 -4
  130. data/spec/requests/legacy_routing_spec.rb +1 -1
  131. data/spec/routing/ownership_transfers_route_spec.rb +2 -2
  132. data/spec/routing/route_spec.rb +19 -16
  133. data/spec/services/{collection_member_service_spec.rb → sufia/collection_member_service_spec.rb} +0 -0
  134. data/spec/services/{collection_size_service_spec.rb → sufia/collection_size_service_spec.rb} +0 -0
  135. data/spec/services/{file_set_csv_service_spec.rb → sufia/file_set_csv_service_spec.rb} +0 -0
  136. data/spec/services/{repository_audit_service_spec.rb → sufia/repository_audit_service_spec.rb} +0 -0
  137. data/spec/services/{statistics → sufia/statistics}/collections/over_time_spec.rb +0 -0
  138. data/spec/services/{statistics → sufia/statistics}/depositors/summary_spec.rb +0 -0
  139. data/spec/services/{statistics → sufia/statistics}/file_sets/by_format_spec.rb +0 -0
  140. data/spec/services/{statistics → sufia/statistics}/system_stats_spec.rb +0 -0
  141. data/spec/services/{statistics → sufia/statistics}/works/by_depositor_spec.rb +0 -0
  142. data/spec/services/{statistics → sufia/statistics}/works/by_resource_type_spec.rb +0 -0
  143. data/spec/services/{statistics → sufia/statistics}/works/count_spec.rb +0 -0
  144. data/spec/services/{statistics → sufia/statistics}/works/over_time_spec.rb +0 -0
  145. data/spec/spec_helper.rb +12 -15
  146. data/spec/tasks/rake_spec.rb +0 -28
  147. data/spec/views/_toolbar.html.erb_spec.rb +1 -1
  148. data/spec/views/admin/stats/index.html.erb_spec.rb +2 -4
  149. data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -2
  150. data/spec/views/catalog/_index_list_default.html.erb_spec.rb +14 -19
  151. data/spec/views/catalog/index.html.erb_spec.rb +1 -1
  152. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +9 -10
  153. data/spec/views/collections/_form.html.erb_spec.rb +2 -2
  154. data/spec/views/collections/_form_for_select_collection.html.erb_spec.rb +1 -2
  155. data/spec/views/collections/edit.html.erb_spec.rb +1 -1
  156. data/spec/views/collections/show.html.erb_spec.rb +1 -1
  157. data/spec/views/curation_concerns/base/_form.html.erb_spec.rb +11 -33
  158. data/spec/views/curation_concerns/base/_form_progress.html.erb_spec.rb +3 -3
  159. data/spec/views/curation_concerns/base/_relationships.html.erb_spec.rb +1 -1
  160. data/spec/views/curation_concerns/base/edit.html.erb_spec.rb +1 -1
  161. data/spec/views/curation_concerns/file_sets/_versioning.html.erb_spec.rb +1 -3
  162. data/spec/views/curation_concerns/permissions/confirm.html.erb_spec.rb +1 -1
  163. data/spec/views/dashboard/index_spec.rb +2 -4
  164. data/spec/views/homepage/_announcement.html.erb_spec.rb +1 -2
  165. data/spec/views/homepage/_featured_works.html.erb_spec.rb +9 -2
  166. data/spec/views/homepage/_home_header.html.erb_spec.rb +1 -1
  167. data/spec/views/my/_list_collections.html.erb_spec.rb +1 -1
  168. data/spec/views/my/_list_works.html.erb_spec.rb +1 -1
  169. data/spec/views/sufia/batch_uploads/_form.html.erb_spec.rb +4 -4
  170. data/spec/views/users/edit.html.erb_spec.rb +0 -3
  171. data/spec/views/users/show.html.erb_spec.rb +9 -7
  172. data/sufia.gemspec +1 -0
  173. metadata +124 -96
  174. data/app/controllers/directory_controller.rb +0 -30
  175. data/lib/generators/sufia/abstract_migration_generator.rb +0 -31
  176. data/lib/generators/sufia/cached_stats_generator.rb +0 -24
  177. data/lib/generators/sufia/cached_work_stats_generator.rb +0 -24
  178. data/lib/generators/sufia/citation_config_generator.rb +0 -22
  179. data/lib/generators/sufia/minimagick_config_generator.rb +0 -18
  180. data/lib/generators/sufia/orcid_field_generator.rb +0 -19
  181. data/lib/generators/sufia/proxies_generator.rb +0 -24
  182. data/lib/generators/sufia/usagestats_generator.rb +0 -18
  183. data/lib/generators/sufia/user_stats_generator.rb +0 -31
  184. data/spec/models/download_spec.rb +0 -17
  185. data/spec/models/pageview_spec.rb +0 -17
  186. data/tasks/migrate.rake +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 425e77caaca484e6386192bbda30de4535f2e3c7
4
- data.tar.gz: b0bf0312c34896bfe6d74bec79edaa4291ba20e3
3
+ metadata.gz: 8e48d49a101fe907425b8153aa726ea8643f897d
4
+ data.tar.gz: 43cc5a32c71d57f9b013c7ab253d9072c3e41f10
5
5
  SHA512:
6
- metadata.gz: a81ac16b3e74bd6f433903f9b595afabda03f6a1a9dd9674f844fb758ff069428e9e917ee8b46f16b28446cd7550e203390502f1e20d7331f65a57b3637bc1e7
7
- data.tar.gz: 0ec61fb29710436341b2d47d6601c610ff4ad02e545f69aa3a913134e0374d97ef9ca9c044d1ae59c66668bde59c385f2ba3f9cbea55b991dc171c0dea4ff8e1
6
+ metadata.gz: cec16b9098ee70db08ab1e3b728884c34b8bb7c967992c6af08ea01720eb20f2f8650e203bc63cfbc505587f79cc1fd8218e7c75764758fe0313e2fef5616144
7
+ data.tar.gz: dab357b2da1216878cd10d0b45a3063ce500c0363bd4729dbc841356b38e0abdfe2432f83d09636db7dd5520ea2c3e1d1c28619fd946335edcbd4238e08b4e34
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
+ TargetRubyVersion: 2.1
4
5
  DisplayCopNames: true
5
6
  Include:
6
7
  - '**/Rakefile'
@@ -81,3 +82,12 @@ Style/SingleLineBlockParams:
81
82
 
82
83
  Rails:
83
84
  Enabled: true
85
+
86
+ RSpec/DescribeClass:
87
+ Exclude:
88
+ - 'spec/tasks/rake_spec.rb'
89
+ - 'spec/javascripts/jasmine_spec.rb'
90
+ - 'spec/features/**/*'
91
+ - 'spec/config/sufia_events_spec.rb'
92
+
93
+
data/.rubocop_todo.yml CHANGED
@@ -1,3 +1,5 @@
1
+ require: rubocop-rspec
2
+
1
3
  Metrics/CyclomaticComplexity:
2
4
  Exclude:
3
5
  - 'lib/sufia/arkivo/metadata_munger.rb'
@@ -26,10 +28,6 @@ Metrics/MethodLength:
26
28
  - 'lib/generators/sufia/install_generator.rb'
27
29
  - 'lib/sufia/arkivo/metadata_munger.rb'
28
30
 
29
- Style/HashSyntax:
30
- Exclude:
31
- - 'lib/generators/sufia/templates/catalog_controller.rb'
32
-
33
31
  Style/LineEndConcatenation:
34
32
  Exclude:
35
33
  - 'spec/test_app_templates/lib/generators/**/*'
@@ -38,7 +36,6 @@ Style/LineEndConcatenation:
38
36
  Style/PredicateName:
39
37
  Exclude:
40
38
  - 'app/helpers/sufia/sufia_helper_behavior.rb'
41
- - 'app/controllers/concerns/sufia/controller.rb'
42
39
 
43
40
  Rails/Output:
44
41
  Exclude:
@@ -50,6 +47,68 @@ Rails/HasAndBelongsToMany:
50
47
  - 'app/models/domain_term.rb'
51
48
  - 'app/models/local_authority.rb'
52
49
 
53
- Lint/HandleExceptions:
50
+ RSpec/ExampleLength:
51
+ Max: 7
54
52
  Exclude:
55
- - 'lib/sufia/engine.rb'
53
+ - 'spec/controllers/api/items_controller_spec.rb'
54
+ - 'spec/controllers/authorities_controller_spec.rb'
55
+ - 'spec/controllers/collections_controller_spec.rb'
56
+ - 'spec/controllers/curation_concerns/file_sets_controller_spec.rb'
57
+ - 'spec/controllers/my/highlights_controller_spec.rb'
58
+ - 'spec/controllers/curation_concerns/generic_works_controller_spec.rb'
59
+ - 'spec/controllers/stats_controller_spec.rb'
60
+ - 'spec/controllers/sufia/batch_uploads_controller_spec.rb'
61
+ - 'spec/controllers/transfers_controller_spec.rb'
62
+ - 'spec/controllers/users_controller_spec.rb'
63
+ - 'spec/forms/sufia/forms/collection_form_spec.rb'
64
+ - 'spec/forms/sufia/forms/batch_edit_form_spec.rb'
65
+ - 'spec/forms/sufia/forms/batch_upload_form_spec.rb'
66
+ - 'spec/features/**/*'
67
+ - 'spec/helpers/sufia_helper_spec.rb'
68
+ - 'spec/helpers/dashboard_helper_spec.rb'
69
+ - 'spec/javascripts/jasmine_spec.rb'
70
+ - 'spec/jobs/user_unfollow_event_job_spec.rb'
71
+ - 'spec/jobs/user_follow_event_job_spec.rb'
72
+ - 'spec/jobs/file_set_attached_event_job_spec.rb'
73
+ - 'spec/jobs/content_update_event_job_spec.rb'
74
+ - 'spec/jobs/content_restored_version_event_job_spec.rb'
75
+ - 'spec/jobs/content_new_version_event_job_spec.rb'
76
+ - 'spec/jobs/content_depositor_change_event_job_spec.rb'
77
+ - 'spec/jobs/content_deposit_event_job_spec.rb'
78
+ - 'spec/jobs/content_delete_event_job_spec.rb'
79
+ - 'spec/lib/sufia/user_stat_importer_spec.rb'
80
+ - 'spec/lib/sufia/resource_sync/capability_list_writer_spec.rb'
81
+ - 'spec/models/generic_work_spec.rb'
82
+ - 'spec/models/featured_work_spec.rb'
83
+ - 'spec/services/sufia/actor_factory_spec.rb'
84
+ - 'spec/views/catalog/_index_list_default.html.erb_spec.rb'
85
+ - 'spec/views/collections/_form.html.erb_spec.rb'
86
+
87
+ RSpec/VerifiedDoubles:
88
+ Enabled: false
89
+
90
+ RSpec/AnyInstance:
91
+ Exclude:
92
+ - 'spec/controllers/api/items_controller_spec.rb'
93
+ - 'spec/controllers/api/zotero_controller_spec.rb'
94
+ - 'spec/controllers/batch_edits_controller_spec.rb'
95
+ - 'spec/controllers/collections_controller_spec.rb'
96
+ - 'spec/controllers/dashboard_controller_spec.rb'
97
+ - 'spec/controllers/downloads_controller_spec.rb'
98
+ - 'spec/controllers/mailbox_controller_spec.rb'
99
+ - 'spec/controllers/stats_controller_spec.rb'
100
+ - 'spec/controllers/curation_concerns/file_sets_controller_spec.rb'
101
+ - 'spec/controllers/users_controller_spec.rb'
102
+ - 'spec/controllers/transfers_controller_spec.rb'
103
+ - 'spec/jobs/file_set_attached_event_job_spec.rb'
104
+ - 'spec/jobs/content_update_event_job_spec.rb'
105
+ - 'spec/jobs/content_restored_version_event_job_spec.rb'
106
+ - 'spec/jobs/content_new_version_event_job_spec.rb'
107
+ - 'spec/jobs/content_depositor_change_event_job_spec.rb'
108
+ - 'spec/jobs/content_deposit_event_job_spec.rb'
109
+ - 'spec/lib/sufia/arkivo/create_subscription_job_spec.rb'
110
+ - 'spec/lib/sufia/arkivo/actor_spec.rb'
111
+ - 'spec/presenters/sufia/work_usage_spec.rb'
112
+ - 'spec/presenters/sufia/file_usage_spec.rb'
113
+ - 'spec/services/sufia/repository_audit_service_spec.rb'
114
+
@@ -7,7 +7,6 @@ module Sufia
7
7
  included do
8
8
  layout "sufia-one-column"
9
9
  self.curation_concern_type = GenericWork
10
- before_action :has_access?
11
10
  end
12
11
 
13
12
  def create
@@ -4,7 +4,6 @@ module Sufia
4
4
  include Sufia::Breadcrumbs
5
5
 
6
6
  included do
7
- before_action :has_access?, except: :show
8
7
  before_action :build_breadcrumbs, only: [:edit, :show]
9
8
  layout "sufia-one-column"
10
9
  # include the link_to_remove_from_collection view helper methods
@@ -8,7 +8,7 @@ module Sufia
8
8
  @contact_form = ContactForm.new(params[:contact_form])
9
9
  @contact_form.request = request
10
10
  # not spam and a valid form
11
- if @contact_form.respond_to?(:deliver_now) ? @contact_form.deliver_now : @contact_form.deliver
11
+ if @contact_form.deliver
12
12
  flash.now[:notice] = 'Thank you for your message!'
13
13
  after_deliver
14
14
  @contact_form = ContactForm.new
@@ -17,13 +17,16 @@ module Sufia
17
17
  flash.now[:error] << @contact_form.errors.full_messages.map(&:to_s).join(",")
18
18
  end
19
19
  render :new
20
- rescue
20
+ rescue RuntimeError => e
21
+ logger.error("Contact form failed to send: #{e.inspect}")
21
22
  flash.now[:error] = 'Sorry, this message was not delivered.'
22
23
  render :new
23
24
  end
24
25
 
26
+ # Override this method if you want to perform additional operations
27
+ # when a email is successfully sent, such as sending a confirmation
28
+ # response to the user.
25
29
  def after_deliver
26
- return unless Sufia::Engine.config.enable_contact_form_delivery
27
30
  end
28
31
  end
29
32
  end
@@ -14,11 +14,4 @@ module Sufia::Controller
14
14
  def after_sign_in_path_for(_resource)
15
15
  sufia.dashboard_index_path
16
16
  end
17
-
18
- protected
19
-
20
- ### Hook which is overridden in Sufia::Ldap::Controller
21
- def has_access?
22
- true
23
- end
24
17
  end
@@ -39,7 +39,7 @@ module Sufia
39
39
  when 'edit'.freeze
40
40
  add_breadcrumb I18n.t("sufia.file_set.browse_view"), main_app.curation_concerns_file_set_path(params["id"])
41
41
  when 'show'.freeze
42
- add_breadcrumb presenter.parent.to_s, sufia.polymorphic_path(presenter.parent)
42
+ add_breadcrumb presenter.parent.to_s, main_app.polymorphic_path(presenter.parent)
43
43
  add_breadcrumb presenter.to_s, main_app.polymorphic_path(presenter)
44
44
  end
45
45
  end
@@ -0,0 +1,18 @@
1
+ module Sufia::UploadsControllerBehavior
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ load_and_authorize_resource class: Sufia::UploadedFile
6
+ end
7
+
8
+ def create
9
+ @upload.attributes = { file: params[:files].first,
10
+ user: current_user }
11
+ @upload.save!
12
+ end
13
+
14
+ def destroy
15
+ @upload.destroy
16
+ head :no_content
17
+ end
18
+ end
@@ -28,14 +28,7 @@ module Sufia::UsersControllerBehavior
28
28
 
29
29
  # Display user profile
30
30
  def show
31
- @events = if @user.respond_to? :profile_events
32
- @user.profile_events(100)
33
- else
34
- []
35
- end
36
- @trophies = @user.trophy_works
37
- @followers = @user.followers
38
- @following = @user.all_following
31
+ @presenter = Sufia::UserProfilePresenter.new(@user, current_ability)
39
32
  end
40
33
 
41
34
  # Display form for users to edit their profile information
@@ -67,23 +60,6 @@ module Sufia::UsersControllerBehavior
67
60
  ['1', 'true'].include? params[:user][:update_directory]
68
61
  end
69
62
 
70
- def toggle_trophy
71
- work_id = params[:work_id]
72
- unless current_user.can? :edit, work_id
73
- redirect_to root_path, alert: "You do not have permissions to the work"
74
- return false
75
- end
76
- t = current_user.trophies.where(work_id: work_id).first
77
- if t
78
- t.destroy
79
- return false if t.persisted?
80
- else
81
- t = current_user.trophies.create(work_id: work_id)
82
- return false unless t.persisted?
83
- end
84
- render json: t
85
- end
86
-
87
63
  # Follow a user
88
64
  def follow
89
65
  unless current_user.following?(@user)
@@ -6,7 +6,6 @@ module Sufia
6
6
  include CurationConcerns::CurationConcernController
7
7
 
8
8
  included do
9
- before_action :has_access?, except: :show
10
9
  before_action :build_breadcrumbs, only: [:edit, :show]
11
10
  self.curation_concern_type = GenericWork
12
11
  self.show_presenter = Sufia::WorkShowPresenter
@@ -18,43 +17,43 @@ module Sufia
18
17
  super
19
18
  end
20
19
 
21
- # Override the default behavior from curation_concerns in order to add uploaded_files to the parameters received by the actor.
22
- def attributes_for_actor
23
- attributes = super
24
- # If they selected a BrowseEverything file, but then clicked the
25
- # remove button, it will still show up in `selected_files`, but
26
- # it will no longer be in uploaded_files. By checking the
27
- # intersection, we get the files they added via BrowseEverything
28
- # that they have not removed from the upload widget.
29
- uploaded_files = params.fetch(:uploaded_files, [])
30
- selected_files = params.fetch(:selected_files, {}).values
31
- browse_everything_urls = uploaded_files &
32
- selected_files.map { |f| f[:url] }
20
+ protected
33
21
 
34
- # we need the hash of files with url and file_name
35
- browse_everything_files = selected_files
36
- .select { |v| uploaded_files.include?(v[:url]) }
22
+ # Override the default behavior from curation_concerns in order to add uploaded_files to the parameters received by the actor.
23
+ def attributes_for_actor
24
+ attributes = super
25
+ # If they selected a BrowseEverything file, but then clicked the
26
+ # remove button, it will still show up in `selected_files`, but
27
+ # it will no longer be in uploaded_files. By checking the
28
+ # intersection, we get the files they added via BrowseEverything
29
+ # that they have not removed from the upload widget.
30
+ uploaded_files = params.fetch(:uploaded_files, [])
31
+ selected_files = params.fetch(:selected_files, {}).values
32
+ browse_everything_urls = uploaded_files &
33
+ selected_files.map { |f| f[:url] }
37
34
 
38
- attributes[:remote_files] = browse_everything_files
39
- # Strip out any BrowseEverthing files from the regular uploads.
40
- attributes[:uploaded_files] = uploaded_files -
41
- browse_everything_urls
42
- attributes
43
- end
35
+ # we need the hash of files with url and file_name
36
+ browse_everything_files = selected_files
37
+ .select { |v| uploaded_files.include?(v[:url]) }
44
38
 
45
- def after_create_response
46
- respond_to do |wants|
47
- wants.html do
48
- flash[:notice] = t('sufia.generic_works.new.after_create_html', application_name: view_context.application_name)
49
- redirect_to [main_app, curation_concern]
50
- end
51
- wants.json { render :show, status: :created, location: polymorphic_path([main_app, curation_concern]) }
39
+ attributes[:remote_files] = browse_everything_files
40
+ # Strip out any BrowseEverthing files from the regular uploads.
41
+ attributes[:uploaded_files] = uploaded_files -
42
+ browse_everything_urls
43
+ attributes
52
44
  end
53
- end
54
45
 
55
- protected
46
+ def after_create_response
47
+ respond_to do |wants|
48
+ wants.html do
49
+ flash[:notice] = t('sufia.generic_works.new.after_create_html', application_name: view_context.application_name)
50
+ redirect_to [main_app, curation_concern]
51
+ end
52
+ wants.json { render :show, status: :created, location: polymorphic_path([main_app, curation_concern]) }
53
+ end
54
+ end
56
55
 
57
- # Called by CurationConcerns::FileSetsControllerBehavior#show
56
+ # Called by CurationConcerns::CurationConcernController#show
58
57
  def additional_response_formats(format)
59
58
  format.endnote { render text: presenter.solr_document.export_as_endnote }
60
59
  end
@@ -1,6 +1,5 @@
1
1
  class CurationConcerns::AuditsController < ApplicationController
2
2
  before_action :authenticate_user!
3
- before_action :has_access?
4
3
 
5
4
  def create
6
5
  render json: audit_service.audit
@@ -0,0 +1,41 @@
1
+ class Sufia::ResourceSyncController < ApplicationController
2
+ def source_description
3
+ # Caching based on host, for multitenancy support
4
+ body = Rails.cache.fetch("source_description_#{request.host}", expires_in: 1.week) do
5
+ build_source_description
6
+ end
7
+ render body: body, content_type: 'application/xml'
8
+ end
9
+
10
+ def capability_list
11
+ # Caching based on host, for multitenancy support
12
+ body = Rails.cache.fetch("source_description_#{request.host}", expires_in: 1.week) do
13
+ build_capability_list
14
+ end
15
+ render body: body, content_type: 'application/xml'
16
+ end
17
+
18
+ def resource_list
19
+ # Caching based on host, for multitenancy support
20
+ body = Rails.cache.fetch("source_description_#{request.host}", expires_in: 1.week) do
21
+ build_resource_list
22
+ end
23
+ render body: body, content_type: 'application/xml'
24
+ end
25
+
26
+ private
27
+
28
+ def build_resource_list
29
+ Sufia::ResourceSync::ResourceListWriter.new(capability_list_url: sufia.capability_list_url,
30
+ resource_host: request.host).write
31
+ end
32
+
33
+ def build_capability_list
34
+ Sufia::ResourceSync::CapabilityListWriter.new(resource_list_url: sufia.resource_list_url,
35
+ description_url: sufia.source_description_url).write
36
+ end
37
+
38
+ def build_source_description
39
+ Sufia::ResourceSync::SourceDescriptionWriter.new(capability_list_url: sufia.capability_list_url).write
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ module Sufia
2
+ class TrophiesController < ApplicationController
3
+ def toggle_trophy
4
+ work_id = params[:id]
5
+ authorize! :edit, work_id
6
+ t = current_user.trophies.where(work_id: work_id).first
7
+ if t
8
+ t.destroy
9
+ return false if t.persisted?
10
+ else
11
+ t = current_user.trophies.create(work_id: work_id)
12
+ return false unless t.persisted?
13
+ end
14
+ render json: t
15
+ end
16
+ end
17
+ end
@@ -1,16 +1,5 @@
1
1
  module Sufia
2
2
  class UploadsController < ApplicationController
3
- load_and_authorize_resource class: UploadedFile
4
-
5
- def create
6
- @upload.attributes = { file: params[:files].first,
7
- user: current_user }
8
- @upload.save!
9
- end
10
-
11
- def destroy
12
- @upload.destroy
13
- head :no_content
14
- end
3
+ include Sufia::UploadsControllerBehavior
15
4
  end
16
5
  end
@@ -91,6 +91,18 @@ module Sufia
91
91
  link_to(label, main_app.search_catalog_path(state))
92
92
  end
93
93
 
94
+ def index_field_link(options = {})
95
+ field_name = options[:config][:field_name]
96
+ values = options[:value]
97
+ safe_join(values.map { |item| link_to_index_field(item, field_name) }, ", ")
98
+ end
99
+
100
+ def link_to_index_field(name, value)
101
+ params = { search_field: 'advanced', name => "\"#{value}\"" }
102
+ state = search_state.params_for_search(params)
103
+ link_to(name, main_app.search_catalog_path(state))
104
+ end
105
+
94
106
  # @param [String,Hash] text either the string to escape or a hash containing the
95
107
  # string to escape under the :value key.
96
108
  def iconify_auto_link(text, showLink = true)
@@ -128,9 +140,9 @@ module Sufia
128
140
  options[:value].map { |right| link_to RightsService.label(right), right }.to_sentence.html_safe
129
141
  end
130
142
 
131
- def link_to_telephone(user = nil)
132
- @user ||= user
133
- link_to @user.telephone, "wtai://wp/mc;#{@user.telephone}" if @user.telephone
143
+ def link_to_telephone(user)
144
+ return unless user
145
+ link_to user.telephone, "wtai://wp/mc;#{user.telephone}" if user.telephone
134
146
  end
135
147
 
136
148
  # Only display the current search parameters if the user is not in the dashboard.