sufia 7.0.0.beta3 → 7.0.0.beta4

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 (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.