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
@@ -1,6 +1,4 @@
1
- require_relative 'abstract_migration_generator'
2
-
3
- class Sufia::ArkivoApiGenerator < Sufia::AbstractMigrationGenerator
1
+ class Sufia::ArkivoApiGenerator < Rails::Generators::Base
4
2
  source_root File.expand_path('../templates', __FILE__)
5
3
 
6
4
  desc """
@@ -26,11 +24,6 @@ This generator sets up Zotero/Arkivo API integration for your application:
26
24
  copy_file 'config/arkivo_constraint.rb', 'config/initializers/arkivo_constraint.rb'
27
25
  end
28
26
 
29
- # Copy the database migration
30
- def copy_migration
31
- better_migration_template 'add_arkivo_to_users.rb'
32
- end
33
-
34
27
  # Copy the config files for Zotero and Arkivo
35
28
  def copy_config_files
36
29
  copy_file 'config/arkivo.yml', 'config/arkivo.yml'
@@ -14,21 +14,13 @@ class Sufia::ConfigGenerator < Rails::Generators::Base
14
14
  source_root File.expand_path('../templates', __FILE__)
15
15
 
16
16
  def create_initializer_config_file
17
+ remove_file 'config/initializers/curation_concerns.rb'
17
18
  copy_file 'config/sufia.rb', 'config/initializers/sufia.rb'
18
19
  end
19
20
 
20
- # Adds citations initialization
21
- def citation_config
22
- generate 'sufia:citation_config'
23
- end
24
-
25
21
  # Add mini-magick configuration
26
- def minimagic_config
27
- generate 'sufia:minimagick_config'
28
- end
29
-
30
- def install_admin_stats
31
- generate "sufia:admin_stat"
22
+ def minimagick_config
23
+ copy_file 'config/mini_magick.rb', 'config/initializers/mini_magick.rb'
32
24
  end
33
25
 
34
26
  def tinymce_config
@@ -1,7 +1,5 @@
1
- require_relative 'abstract_migration_generator'
2
-
3
1
  module Sufia
4
- class Install < Sufia::AbstractMigrationGenerator
2
+ class Install < Rails::Generators::Base
5
3
  source_root File.expand_path('../templates', __FILE__)
6
4
  argument :model_name, type: :string, default: "user", desc: "Model name for User model (primarily passed to devise, but also used elsewhere)"
7
5
  class_option :skip_curation_concerns, type: :boolean, default: false, desc: "whether to skip the curation_concerns:models installer"
@@ -14,11 +12,6 @@ module Sufia
14
12
  * Generates GenericWork model.
15
13
  * Creates the sufia.rb configuration file
16
14
  * Generates mailboxer
17
- * Runs proxies generator
18
- * Runs cached stats generator
19
- * Runs ORCID field generator
20
- * Runs user stats generator
21
- * Runs upload_to_collection config generator
22
15
  3. Adds Sufia's abilities into the Ability class
23
16
  4. Adds controller behavior to the application controller
24
17
  5. Copies the catalog controller into the local app
@@ -44,22 +37,7 @@ module Sufia
44
37
 
45
38
  # Setup the database migrations
46
39
  def copy_migrations
47
- [
48
- "acts_as_follower_migration.rb",
49
- "add_social_to_users.rb",
50
- "add_ldap_attrs_to_user.rb",
51
- "add_avatars_to_users.rb",
52
- "create_local_authorities.rb",
53
- "create_trophies.rb",
54
- 'add_linkedin_to_users.rb',
55
- 'create_tinymce_assets.rb',
56
- 'create_content_blocks.rb',
57
- 'create_featured_works.rb',
58
- 'add_external_key_to_content_blocks.rb',
59
- 'create_uploaded_files.rb'
60
- ].each do |file|
61
- better_migration_template file
62
- end
40
+ rake 'sufia:install:migrations'
63
41
  end
64
42
 
65
43
  def install_config
@@ -97,12 +75,7 @@ module Sufia
97
75
  end
98
76
 
99
77
  def configure_usage_stats
100
- generate 'sufia:usagestats'
101
- end
102
-
103
- # Sets up proxies and transfers
104
- def proxies
105
- generate "sufia:proxies"
78
+ copy_file 'config/analytics.yml', 'config/analytics.yml'
106
79
  end
107
80
 
108
81
  def solr_config
@@ -111,24 +84,17 @@ module Sufia
111
84
  copy_file source, 'solr/conf/solrconfig.xml', force: true
112
85
  end
113
86
 
114
- # Sets up cached usage stats
115
- def cached_stats
116
- generate 'sufia:cached_stats'
117
- end
118
-
119
- # Adds orcid field to user model
120
- def orcid_field
121
- generate 'sufia:orcid_field'
122
- end
123
-
124
- # Adds user stats-related migration & methods
87
+ # Adds user stats-related methods
125
88
  def user_stats
126
- generate 'sufia:user_stats'
127
- end
89
+ file_path = "app/models/#{model_name.underscore}.rb"
128
90
 
129
- # Sets up cached usage stats
130
- def cached_work_stats
131
- generate 'sufia:cached_work_stats'
91
+ if File.exist?(file_path)
92
+ inject_into_file file_path, after: /include Sufia\:\:User.*$/ do
93
+ "\n include Sufia::UserUsageStats"
94
+ end
95
+ else
96
+ puts " \e[31mFailure\e[0m Sufia requires a user object. This generator assumes that the model is defined in the file #{file_path}, which does not exist. If you used a different name, please re-run the generator and provide that name as an argument. Such as \b rails g sufia:user_stats client"
97
+ end
132
98
  end
133
99
 
134
100
  def insert_abilities
@@ -63,22 +63,22 @@ class CatalogController < ApplicationController
63
63
  # The ordering of the field names is the order of the display
64
64
  config.add_index_field solr_name("title", :stored_searchable), label: "Title", itemprop: 'name', if: false
65
65
  config.add_index_field solr_name("description", :stored_searchable), label: "Description", itemprop: 'description', helper_method: :iconify_auto_link
66
- config.add_index_field solr_name("keyword", :stored_searchable), label: "Keyword", itemprop: 'keywords'
67
- config.add_index_field solr_name("subject", :stored_searchable), label: "Subject", itemprop: 'about'
68
- config.add_index_field solr_name("creator", :stored_searchable), label: "Creator", itemprop: 'creator'
69
- config.add_index_field solr_name("contributor", :stored_searchable), label: "Contributor", itemprop: 'contributor'
66
+ config.add_index_field solr_name("keyword", :stored_searchable), label: "Keyword", itemprop: 'keywords', link_to_search: solr_name("keyword", :facetable)
67
+ config.add_index_field solr_name("subject", :stored_searchable), label: "Subject", itemprop: 'about', link_to_search: solr_name("subject", :facetable)
68
+ config.add_index_field solr_name("creator", :stored_searchable), label: "Creator", itemprop: 'creator', link_to_search: solr_name("creator", :facetable)
69
+ config.add_index_field solr_name("contributor", :stored_searchable), label: "Contributor", itemprop: 'contributor', helper_method: :index_field_link, field_name: 'contributor'
70
70
  config.add_index_field solr_name("proxy_depositor", :symbol), label: "Depositor", helper_method: :link_to_profile
71
71
  config.add_index_field solr_name("depositor"), label: "Owner", helper_method: :link_to_profile
72
- config.add_index_field solr_name("publisher", :stored_searchable), label: "Publisher", itemprop: 'publisher'
73
- config.add_index_field solr_name("based_near", :stored_searchable), label: "Location", itemprop: 'contentLocation'
74
- config.add_index_field solr_name("language", :stored_searchable), label: "Language", itemprop: 'inLanguage'
72
+ config.add_index_field solr_name("publisher", :stored_searchable), label: "Publisher", itemprop: 'publisher', link_to_search: solr_name("publisher", :facetable)
73
+ config.add_index_field solr_name("based_near", :stored_searchable), label: "Location", itemprop: 'contentLocation', link_to_search: solr_name("based_near", :facetable)
74
+ config.add_index_field solr_name("language", :stored_searchable), label: "Language", itemprop: 'inLanguage', link_to_search: solr_name("language", :facetable)
75
75
  config.add_index_field solr_name("date_uploaded", :stored_sortable, type: :date), label: "Date Uploaded", itemprop: 'datePublished', helper_method: :human_readable_date
76
76
  config.add_index_field solr_name("date_modified", :stored_sortable, type: :date), label: "Date Modified", itemprop: 'dateModified', helper_method: :human_readable_date
77
77
  config.add_index_field solr_name("date_created", :stored_searchable), label: "Date Created", itemprop: 'dateCreated'
78
78
  config.add_index_field solr_name("rights", :stored_searchable), label: "Rights", helper_method: :rights_statement_links
79
- config.add_index_field solr_name("resource_type", :stored_searchable), label: "Resource Type"
80
- config.add_index_field solr_name("format", :stored_searchable), label: "File Format"
81
- config.add_index_field solr_name("identifier", :stored_searchable), label: "Identifier"
79
+ config.add_index_field solr_name("resource_type", :stored_searchable), label: "Resource Type", link_to_search: solr_name("resource_type", :facetable)
80
+ config.add_index_field solr_name("file_format", :stored_searchable), label: "File Format", link_to_search: solr_name("file_format", :facetable)
81
+ config.add_index_field solr_name("identifier", :stored_searchable), label: "Identifier", helper_method: :index_field_link, field_name: 'identifier'
82
82
 
83
83
  # solr fields to be displayed in the show (single result) view
84
84
  # The ordering of the field names is the order of the display
@@ -1,16 +1,17 @@
1
1
  Sufia.config do |config|
2
- config.max_days_between_audits = 7
3
- config.max_notifications_for_dashboard = 5
2
+ config.register_curation_concern :generic_work
4
3
 
5
- config.permission_levels = {
6
- "Choose Access" => "none",
7
- "View/Download" => "read",
8
- "Edit" => "edit"
9
- }
4
+ # Email recipient of messages sent via the contact form
5
+ # config.contact_email = "repo-admin@example.org"
10
6
 
11
- config.owner_permission_levels = {
12
- "Edit" => "edit"
13
- }
7
+ # Text prefacing the subject entered in the contact form
8
+ # config.subject_prefix = "Contact form:"
9
+
10
+ # How many notifications should be displayed on the dashboard
11
+ # config.max_notifications_for_dashboard = 5
12
+
13
+ # How frequently should a file be audited.
14
+ # config.max_days_between_audits = 7
14
15
 
15
16
  # Enable displaying usage statistics in the UI
16
17
  # Defaults to FALSE
@@ -46,10 +47,6 @@ Sufia.config do |config|
46
47
  # Store identifier minter's state in a file for later replayability
47
48
  # config.minter_statefile = '/tmp/minter-state'
48
49
 
49
- # Process for translating Fedora URIs to identifiers and vice versa
50
- # config.translate_uri_to_id = ActiveFedora::Noid.config.translate_uri_to_id
51
- # config.translate_id_to_uri = ActiveFedora::Noid.config.translate_id_to_uri
52
-
53
50
  # Specify the prefix for Redis keys:
54
51
  # config.redis_namespace = "sufia"
55
52
 
@@ -1,6 +1,4 @@
1
- require_relative 'abstract_migration_generator'
2
-
3
- class Sufia::Upgrade700Generator < Sufia::AbstractMigrationGenerator
1
+ class Sufia::Upgrade700Generator < Rails::Generators::Base
4
2
  source_root File.expand_path('../templates', __FILE__)
5
3
 
6
4
  argument :model_name, type: :string, default: "user"
@@ -21,19 +19,6 @@ This generator for upgrading sufia from 6.0.0 to 7.0 makes the following changes
21
19
  gsub_file 'app/controllers/catalog_controller.rb', '[:add_access_controls_to_solr_params, :add_advanced_parse_q_to_solr]', '[:add_advanced_parse_q_to_solr] + search_params_logic + [:add_access_controls_to_solr_params]'
22
20
  end
23
21
 
24
- # Setup the database migrations
25
- def copy_migrations
26
- [
27
- 'change_trophy_generic_file_id_to_work_id.rb',
28
- 'change_proxy_deposit_generic_file_id_to_work_id.rb',
29
- 'change_audit_log_generic_file_id_to_file_set_id.rb',
30
- 'change_proxy_deposit_request_generic_file_id_to_work_id.rb',
31
- 'change_featured_work_generic_file_id_to_work_id.rb'
32
- ].each do |file|
33
- better_migration_template file
34
- end
35
- end
36
-
37
22
  def inject_sufia_work_controller_behavior
38
23
  file_path = "app/controllers/curation_concerns/generic_works_controller.rb"
39
24
  if File.exist?(file_path)
data/lib/sufia.rb CHANGED
@@ -27,19 +27,15 @@ module Sufia
27
27
  extend ActiveSupport::Autoload
28
28
 
29
29
  eager_autoload do
30
- autoload :RedisEventStore
31
30
  autoload :Arkivo
31
+ autoload :Configuration
32
+ autoload :RedisEventStore
33
+ autoload :ResourceSync
32
34
  autoload :Zotero
33
35
  end
34
36
 
35
- attr_writer :queue
36
-
37
- def self.queue
38
- @queue ||= config.queue.new('sufia')
39
- end
40
-
41
37
  def self.config(&block)
42
- @config ||= Sufia::Engine::Configuration.new
38
+ @config ||= Sufia::Configuration.new
43
39
 
44
40
  yield @config if block
45
41
 
@@ -0,0 +1,132 @@
1
+ module Sufia
2
+ class Configuration
3
+ def curation_concerns_config
4
+ @curation_concerns_config ||= CurationConcerns.config
5
+ end
6
+
7
+ delegate(*(CurationConcerns.config.methods - Object.methods),
8
+ to: :curation_concerns_config)
9
+
10
+ attr_writer :persistent_hostpath
11
+ def persistent_hostpath
12
+ @persistent_hostpath ||= "http://localhost/files/"
13
+ end
14
+
15
+ attr_writer :redis_namespace
16
+ def redis_namespace
17
+ @redis_namespace ||= "sufia"
18
+ end
19
+
20
+ # TODO: This should move to curation_concerns
21
+ attr_writer :libreoffice_path
22
+ def libreoffice_path
23
+ @libreoffice_path ||= "soffice"
24
+ end
25
+
26
+ attr_writer :browse_everything
27
+ def browse_everything
28
+ @browse_everything ||= nil
29
+ end
30
+
31
+ attr_writer :analytics
32
+ def analytics
33
+ @analytics ||= false
34
+ end
35
+ attr_writer :citations
36
+ def citations
37
+ @citations ||= false
38
+ end
39
+
40
+ attr_writer :max_notifications_for_dashboard
41
+ def max_notifications_for_dashboard
42
+ @max_notifications_for_dashboard ||= 5
43
+ end
44
+
45
+ attr_writer :activity_to_show_default_seconds_since_now
46
+ def activity_to_show_default_seconds_since_now
47
+ @activity_to_show_default_seconds_since_now ||= 24 * 60 * 60
48
+ end
49
+
50
+ attr_writer :arkivo_api
51
+ def arkivo_api
52
+ @arkivo_api ||= false
53
+ end
54
+
55
+ attr_writer :geonames_username
56
+ def geonames_username
57
+ @geonames_username ||= ""
58
+ end
59
+
60
+ attr_writer :active_deposit_agreement_acceptance
61
+ def active_deposit_agreement_acceptance
62
+ return true if @active_deposit_agreement_acceptance.nil?
63
+ @active_deposit_agreement_acceptance
64
+ end
65
+
66
+ attr_writer :batch_user_key
67
+ def batch_user_key
68
+ @batch_user_key ||= 'batchuser@example.com'
69
+ end
70
+
71
+ attr_writer :audit_user_key
72
+ def audit_user_key
73
+ @audit_user_key ||= 'audituser@example.com'
74
+ end
75
+
76
+ # TODO: this is called working_path in curation_concerns
77
+ attr_writer :upload_path
78
+ def upload_path
79
+ @upload_path ||= ->() { Rails.root + 'tmp' + 'uploads' }
80
+ end
81
+
82
+ # Should a button with "Share my work" show on the front page to all users (even those not logged in)?
83
+ attr_writer :always_display_share_button
84
+ def always_display_share_button
85
+ return true if @always_display_share_button.nil?
86
+ @always_display_share_button
87
+ end
88
+
89
+ # Defaulting analytic start date to whenever the file was uploaded by leaving it blank
90
+ attr_writer :analytic_start_date
91
+ attr_reader :analytic_start_date
92
+
93
+ attr_writer :display_media_download_link
94
+ def display_media_download_link
95
+ @display_media_download_link ||= false
96
+ end
97
+
98
+ attr_writer :permission_levels
99
+ def permission_levels
100
+ @permission_levels ||= { "Choose Access" => "none",
101
+ "View/Download" => "read",
102
+ "Edit" => "edit" }
103
+ end
104
+
105
+ attr_writer :owner_permission_levels
106
+ def owner_permission_levels
107
+ @owner_permission_levels ||= { "Edit Access" => "edit" }
108
+ end
109
+
110
+ # TODO: Delegate to curation_concerns when https://github.com/projecthydra/curation_concerns/pull/848 is merged
111
+ attr_writer :translate_uri_to_id
112
+ def translate_uri_to_id
113
+ @translate_uri_to_id ||= ActiveFedora::Noid.config.translate_uri_to_id
114
+ end
115
+
116
+ # TODO: Delegate to curation_concerns when https://github.com/projecthydra/curation_concerns/pull/848 is merged
117
+ attr_writer :translate_id_to_uri
118
+ def translate_id_to_uri
119
+ @translate_id_to_uri ||= ActiveFedora::Noid.config.translate_id_to_uri
120
+ end
121
+
122
+ attr_writer :contact_email
123
+ def contact_email
124
+ @contact_email ||= "repo-admin@example.org"
125
+ end
126
+
127
+ attr_writer :subject_prefix
128
+ def subject_prefix
129
+ @subject_prefix ||= "Contact form:"
130
+ end
131
+ end
132
+ end
data/lib/sufia/engine.rb CHANGED
@@ -39,6 +39,7 @@ module Sufia
39
39
  Hydra::Derivatives.enable_ffmpeg = c.enable_ffmpeg
40
40
  Hydra::Derivatives.libreoffice_path = c.libreoffice_path
41
41
 
42
+ # TODO: Remove when https://github.com/projecthydra/curation_concerns/pull/848 is merged
42
43
  ActiveFedora::Base.translate_uri_to_id = c.translate_uri_to_id
43
44
  ActiveFedora::Base.translate_id_to_uri = c.translate_id_to_uri
44
45
  ActiveFedora::Noid.config.template = c.noid_template
@@ -46,7 +47,6 @@ module Sufia
46
47
  end
47
48
 
48
49
  CurationConcerns::CurationConcern.actor_factory = Sufia::ActorFactory
49
- CurationConcerns.config.display_media_download_link = false
50
50
  end
51
51
 
52
52
  initializer 'sufia.assets.precompile' do |app|
@@ -68,52 +68,12 @@ module Sufia
68
68
 
69
69
  config.after_initialize do
70
70
  begin
71
- Object.const_get(:GenericWork)
72
- begin
73
- LocalAuthority.register_vocabulary(GenericWork, "subject", "lc_subjects")
74
- LocalAuthority.register_vocabulary(GenericWork, "language", "lexvo_languages")
75
- LocalAuthority.register_vocabulary(GenericWork, "tag", "lc_genres")
76
- rescue ActiveRecord::StatementInvalid
77
- Rails.logger.error "tables for vocabularies missing #{e.class}"
78
- end
79
- rescue NameError
80
- # nop, GenericWork hasn't been generated yet.
71
+ LocalAuthority.register_vocabulary('generic_works', "subject", "lc_subjects")
72
+ LocalAuthority.register_vocabulary('generic_works', "language", "lexvo_languages")
73
+ LocalAuthority.register_vocabulary('generic_works', "tag", "lc_genres")
74
+ rescue ActiveRecord::StatementInvalid => e
75
+ Rails.logger.error "tables for vocabularies missing #{e.class}"
81
76
  end
82
77
  end
83
-
84
- # Set some configuration defaults
85
- config.persistent_hostpath = "http://localhost/files/"
86
- config.enable_ffmpeg = false
87
- config.ffmpeg_path = 'ffmpeg'
88
- config.fits_message_length = 5
89
- config.temp_file_base = nil
90
- config.redis_namespace = "sufia"
91
- config.fits_path = "fits.sh"
92
- config.libreoffice_path = "soffice"
93
- config.enable_contact_form_delivery = false
94
- config.browse_everything = nil
95
- config.analytics = false
96
- config.citations = false
97
- config.max_notifications_for_dashboard = 5
98
- config.activity_to_show_default_seconds_since_now = 24 * 60 * 60
99
- config.arkivo_api = false
100
- config.geonames_username = ""
101
- config.active_deposit_agreement_acceptance = true
102
- config.batch_user_key = 'batchuser@example.com'
103
- config.audit_user_key = 'audituser@example.com'
104
- config.upload_path = ->() { Rails.root + 'tmp' + 'uploads' }
105
-
106
- # Should a button with "Share my work" show on the front page to all users (even those not logged in)?
107
- config.always_display_share_button = true
108
-
109
- # Noid identifiers
110
- config.enable_noids = true
111
- config.noid_template = '.reeddeeddk'
112
- config.minter_statefile = '/tmp/minter-state'
113
- config.translate_uri_to_id = ActiveFedora::Noid.config.translate_uri_to_id
114
- config.translate_id_to_uri = ActiveFedora::Noid.config.translate_id_to_uri
115
-
116
- # Defaulting analytic start date to whenever the file was uploaded by leaving it blank
117
- config.analytic_start_date = nil
118
78
  end
119
79
  end