hyrax 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +3 -6
  3. data/.dassie/.env +1 -2
  4. data/.dassie/Gemfile +7 -3
  5. data/.dassie/app/models/user.rb +0 -2
  6. data/.dassie/config/analytics.yml +12 -5
  7. data/.dassie/config/environments/development.rb +2 -0
  8. data/.dassie/config/initializers/hyrax.rb +2 -0
  9. data/.dassie/db/migrate/20210921150120_enable_uuid_extension.valkyrie_engine.rb +7 -0
  10. data/.dassie/db/migrate/20210921150121_create_orm_resources.valkyrie_engine.rb +19 -0
  11. data/.dassie/db/migrate/20210921150122_add_model_type_to_orm_resources.valkyrie_engine.rb +7 -0
  12. data/.dassie/db/migrate/20210921150123_change_model_type_to_internal_model.valkyrie_engine.rb +7 -0
  13. data/.dassie/db/migrate/20210921150124_create_path_gin_index.valkyrie_engine.rb +7 -0
  14. data/.dassie/db/migrate/20210921150125_create_internal_resource_index.valkyrie_engine.rb +7 -0
  15. data/.dassie/db/migrate/20210921150126_create_updated_at_index.valkyrie_engine.rb +7 -0
  16. data/.dassie/db/migrate/20210921150127_add_optimistic_locking_to_orm_resources.valkyrie_engine.rb +7 -0
  17. data/.dassie/db/migrate/20211130181150_create_default_administrative_set.rb +8 -0
  18. data/.dassie/db/schema.rb +20 -1
  19. data/.env +7 -4
  20. data/.github/workflows/main.yml +17 -0
  21. data/.github/workflows/release.yml +17 -0
  22. data/.gitignore +1 -0
  23. data/.regen +1 -1
  24. data/CONTAINERS.md +13 -10
  25. data/README.md +37 -0
  26. data/app/assets/javascripts/hyrax/admin/graphs.es6 +34 -37
  27. data/app/assets/javascripts/hyrax/analytics_events.js +69 -0
  28. data/app/assets/javascripts/hyrax/collapse.js +24 -0
  29. data/app/assets/javascripts/hyrax/collections.js +1 -2
  30. data/app/assets/javascripts/hyrax/ga_events.js +2 -8
  31. data/app/assets/javascripts/hyrax/reports-buttons.js +33 -0
  32. data/app/assets/javascripts/hyrax.js +2 -1
  33. data/app/assets/stylesheets/_bootstrap-default-overrides.scss +9 -0
  34. data/app/authorities/qa/authorities/collections.rb +4 -5
  35. data/app/authorities/qa/authorities/find_works.rb +1 -1
  36. data/app/controllers/concerns/hyrax/breadcrumbs_for_collection_analytics.rb +26 -0
  37. data/app/controllers/concerns/hyrax/breadcrumbs_for_works_analytics.rb +26 -0
  38. data/app/controllers/concerns/hyrax/controller.rb +22 -0
  39. data/app/controllers/hyrax/admin/analytics/analytics_controller.rb +40 -0
  40. data/app/controllers/hyrax/admin/analytics/collection_reports_controller.rb +61 -0
  41. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +122 -0
  42. data/app/controllers/hyrax/collections_controller.rb +4 -1
  43. data/app/controllers/hyrax/dashboard/collections_controller.rb +15 -6
  44. data/app/controllers/hyrax/dashboard_controller.rb +8 -0
  45. data/app/controllers/hyrax/stats_controller.rb +3 -1
  46. data/app/forms/hyrax/forms/pcdm_collection_form.rb +3 -0
  47. data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +1 -1
  48. data/app/jobs/characterize_job.rb +28 -1
  49. data/app/jobs/valkyrie_ingest_job.rb +56 -0
  50. data/app/models/concerns/hyrax/ability.rb +26 -5
  51. data/app/models/concerns/hyrax/solr_document/metadata.rb +1 -0
  52. data/app/models/file_download_stat.rb +4 -4
  53. data/app/models/hyrax/default_administrative_set.rb +42 -0
  54. data/app/models/hyrax/statistic.rb +31 -4
  55. data/app/presenters/hyrax/admin/dashboard_presenter.rb +8 -6
  56. data/app/presenters/hyrax/admin/repository_growth_presenter.rb +10 -5
  57. data/app/presenters/hyrax/admin/user_activity_presenter.rb +8 -12
  58. data/app/presenters/hyrax/file_set_presenter.rb +2 -0
  59. data/app/presenters/hyrax/menu_presenter.rb +4 -0
  60. data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +1 -1
  61. data/app/presenters/hyrax/work_show_presenter.rb +5 -2
  62. data/app/presenters/hyrax/work_usage.rb +1 -0
  63. data/app/search_builders/hyrax/README.md +1 -1
  64. data/app/search_builders/hyrax/dashboard/collections_search_builder.rb +1 -1
  65. data/app/search_builders/hyrax/my/collections_search_builder.rb +1 -1
  66. data/app/services/hyrax/admin_set_create_service.rb +76 -14
  67. data/app/services/hyrax/analytics/google/events.rb +37 -0
  68. data/app/services/hyrax/analytics/google/events_daily.rb +72 -0
  69. data/app/services/hyrax/analytics/google/visits.rb +44 -0
  70. data/app/services/hyrax/analytics/google/visits_daily.rb +49 -0
  71. data/app/services/hyrax/analytics/google.rb +204 -0
  72. data/app/services/hyrax/analytics/matomo.rb +193 -0
  73. data/app/services/hyrax/analytics/results.rb +79 -0
  74. data/app/services/hyrax/analytics.rb +12 -82
  75. data/app/services/hyrax/characterization/valkyrie_characterization_service.rb +134 -0
  76. data/app/services/hyrax/collections/nested_collection_query_service.rb +8 -3
  77. data/app/services/hyrax/listeners/acl_index_listener.rb +3 -1
  78. data/app/services/hyrax/listeners/active_fedora_acl_index_listener.rb +3 -1
  79. data/app/services/hyrax/listeners/batch_notification_listener.rb +3 -1
  80. data/app/services/hyrax/listeners/file_metadata_listener.rb +19 -0
  81. data/app/services/hyrax/listeners/file_set_lifecycle_listener.rb +6 -2
  82. data/app/services/hyrax/listeners/file_set_lifecycle_notification_listener.rb +6 -2
  83. data/app/services/hyrax/listeners/member_cleanup_listener.rb +3 -0
  84. data/app/services/hyrax/listeners/metadata_index_listener.rb +9 -3
  85. data/app/services/hyrax/listeners/object_lifecycle_listener.rb +9 -3
  86. data/app/services/hyrax/listeners/proxy_deposit_listener.rb +3 -1
  87. data/app/services/hyrax/listeners/trophy_cleanup_listener.rb +3 -0
  88. data/app/services/hyrax/listeners/workflow_listener.rb +3 -1
  89. data/app/services/hyrax/listeners.rb +8 -0
  90. data/app/services/hyrax/restriction_service.rb +4 -0
  91. data/app/services/hyrax/statistics/users/over_time.rb +8 -5
  92. data/app/services/hyrax/statistics/works/over_time.rb +10 -0
  93. data/app/services/hyrax/work_uploads_handler.rb +4 -1
  94. data/app/views/hyrax/admin/analytics/_date_range_form.html.erb +11 -0
  95. data/app/views/hyrax/admin/analytics/collection_reports/_custom_range.html.erb +39 -0
  96. data/app/views/hyrax/admin/analytics/collection_reports/_monthly_summary.html.erb +48 -0
  97. data/app/views/hyrax/admin/analytics/collection_reports/_summary.html.erb +55 -0
  98. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +55 -0
  99. data/app/views/hyrax/admin/analytics/collection_reports/index.html.erb +70 -0
  100. data/app/views/hyrax/admin/analytics/collection_reports/show.html.erb +94 -0
  101. data/app/views/hyrax/admin/analytics/work_reports/_custom_range.html.erb +43 -0
  102. data/app/views/hyrax/admin/analytics/work_reports/_monthly_summary.html.erb +35 -0
  103. data/app/views/hyrax/admin/analytics/work_reports/_summary.html.erb +60 -0
  104. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +33 -0
  105. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +40 -0
  106. data/app/views/hyrax/admin/analytics/work_reports/_work_counts.html.erb +18 -0
  107. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +41 -0
  108. data/app/views/hyrax/admin/analytics/work_reports/index.html.erb +77 -0
  109. data/app/views/hyrax/admin/analytics/work_reports/show.html.erb +90 -0
  110. data/app/views/hyrax/admin/stats/show.html.erb +1 -1
  111. data/app/views/hyrax/base/_relationships_parent_row.html.erb +0 -1
  112. data/app/views/hyrax/base/show.html.erb +6 -0
  113. data/app/views/hyrax/collections/show.html.erb +4 -0
  114. data/app/views/hyrax/dashboard/_repository_growth.html.erb +5 -5
  115. data/app/views/hyrax/dashboard/_resource_type_graph.html.erb +41 -0
  116. data/app/views/hyrax/dashboard/_sidebar.html.erb +4 -1
  117. data/app/views/hyrax/dashboard/_tabs.html.erb +11 -0
  118. data/app/views/hyrax/dashboard/_user_activity.html.erb +17 -23
  119. data/app/views/hyrax/dashboard/_user_activity_graph.html.erb +55 -0
  120. data/app/views/hyrax/dashboard/_visibility_graph.html.erb +31 -0
  121. data/app/views/hyrax/dashboard/_work_type_graph.html.erb +41 -0
  122. data/app/views/hyrax/dashboard/collections/_form.html.erb +2 -1
  123. data/app/views/hyrax/dashboard/show_admin.html.erb +24 -45
  124. data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +22 -0
  125. data/app/views/hyrax/file_sets/_actions.html.erb +4 -3
  126. data/app/views/hyrax/file_sets/show.html.erb +6 -0
  127. data/app/views/hyrax/my/collections/index.html.erb +1 -1
  128. data/app/views/hyrax/stats/_downloads.html.erb +18 -0
  129. data/app/views/hyrax/stats/_pageviews.html.erb +18 -0
  130. data/app/views/hyrax/stats/work.html.erb +17 -9
  131. data/app/views/layouts/_head_tag_content.html.erb +7 -2
  132. data/app/views/{_ga.html.erb → shared/_ga.html.erb} +3 -7
  133. data/app/views/shared/_matomo.html.erb +15 -0
  134. data/chart/hyrax/Chart.yaml +1 -1
  135. data/chart/hyrax/values.yaml +1 -1
  136. data/config/i18n-tasks.yml +2 -2
  137. data/config/initializers/listeners.rb +5 -5
  138. data/config/locales/hyrax.de.yml +194 -0
  139. data/config/locales/hyrax.en.yml +190 -12
  140. data/config/locales/hyrax.es.yml +194 -0
  141. data/config/locales/hyrax.fr.yml +194 -0
  142. data/config/locales/hyrax.it.yml +194 -0
  143. data/config/locales/hyrax.pt-BR.yml +194 -0
  144. data/config/locales/hyrax.zh.yml +194 -0
  145. data/config/routes.rb +4 -0
  146. data/docker-compose.yml +3 -1
  147. data/documentation/developing-your-hyrax-based-app.md +2 -2
  148. data/documentation/legacyREADME.md +1 -1
  149. data/hyrax.gemspec +3 -1
  150. data/lib/generators/hyrax/templates/config/analytics.yml +13 -7
  151. data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +0 -13
  152. data/lib/generators/hyrax/templates/db/migrate/20211130181150_create_default_administrative_set.rb.erb +8 -0
  153. data/lib/generators/hyrax/work/templates/feature_spec.rb.erb +3 -1
  154. data/lib/hyrax/configuration.rb +67 -5
  155. data/lib/hyrax/engine.rb +7 -6
  156. data/lib/hyrax/publisher.rb +4 -0
  157. data/lib/hyrax/transactions/admin_set_create.rb +22 -0
  158. data/lib/hyrax/transactions/container.rb +11 -0
  159. data/lib/hyrax/version.rb +1 -1
  160. data/lib/tasks/regenerate_derivatives.rake +1 -1
  161. data/lib/wings/setup.rb +15 -0
  162. data/lib/wings/valkyrie/persister.rb +16 -0
  163. data/template.rb +1 -1
  164. data/vendor/assets/javascripts/morris/morris.min.js +1 -7
  165. data/vendor/assets/stylesheets/morris.js/0.5.1/morris.css +1 -1
  166. metadata +87 -11
  167. data/app/views/hyrax/dashboard/_repository_objects.html.erb +0 -28
@@ -31,6 +31,9 @@ zh:
31
31
  filters:
32
32
  title: '筛选:'
33
33
  start_over: 清除筛选
34
+ download:
35
+ one: 和 1 个下载
36
+ other: 和 %{count} 下载
34
37
  errors:
35
38
  messages:
36
39
  carrierwave_download_error: 图片不能下载。
@@ -178,6 +181,141 @@ zh:
178
181
  item_list_header: 集内作品
179
182
  show_actions:
180
183
  confirm_delete: 您确定要删除此管理集?此操作无法撤消。
184
+ analytics:
185
+ collection_reports:
186
+ custom_range:
187
+ collection_home_page_views: 馆藏主页浏览量
188
+ date_range_heading: 自定义日期范围
189
+ summary_heading: 用户活动摘要
190
+ work_downloads: 作品下载
191
+ work_views: 作品观
192
+ index:
193
+ activity: 活动
194
+ and: 和
195
+ custom_range: 自定义范围
196
+ date_range_heading: 自定义报告
197
+ downloads: 下载
198
+ enable_analytics: 启用分析以查看报告
199
+ export: 出口
200
+ monthly: 每月
201
+ repo_summary: 存储库包含
202
+ repo_summary_2: 共同拥有
203
+ report_generated_on: 此报告生成于
204
+ report_header: 自定义集合报告
205
+ summary: 概括
206
+ title: 收藏报告
207
+ views: 页面浏览量
208
+ monthly_summary:
209
+ collection_views: 馆藏主页浏览量
210
+ monthly_subtitle: 过去 12 个月的逐月状态
211
+ work_downloads: 作品下载
212
+ work_views: 作品观
213
+ show:
214
+ collection_type: 收藏类型
215
+ created_by: 由...制作
216
+ custom_range: 自定义范围
217
+ last_updated: 最后更新于
218
+ monthly: 每月
219
+ return_to_btn: 返回收藏报告
220
+ summary: 概括
221
+ title: 收款报告
222
+ view_collection_btn: 查看收藏
223
+ visibility: 能见度
224
+ summary:
225
+ all_time: 整天
226
+ collection_home_page_views: 馆藏主页浏览量
227
+ date_range: 日期范围
228
+ subtitle: 用户活动摘要
229
+ this_month: 这个月
230
+ this_week: 本星期
231
+ this_year: 今年
232
+ today: 今天
233
+ work_downloads: 作品下载
234
+ work_views: 作品观
235
+ top_collections:
236
+ collection_page_views: 收藏页面浏览量
237
+ collection_title: 馆藏名称
238
+ deleted: 集合已删除
239
+ export: 出口
240
+ file_downloads_in_collection: 此集合中的文件集下载
241
+ top_collections: 热门收藏
242
+ works_in_collection_views: 在此集合视图中的作品
243
+ date_range_form:
244
+ date_range_heading: 自定义日期范围
245
+ end_date: 结束日期
246
+ reset_date_range: 重置日期范围
247
+ set_date_range: 设置报告日期范围
248
+ start_date: 开始日期
249
+ work_reports:
250
+ custom_range:
251
+ date_range_heading: 自定义日期范围
252
+ file_downloads: 文件下载
253
+ page_views: 页面浏览量
254
+ summary_heading: 用户活动摘要
255
+ unique_visitors: 独立访客
256
+ index:
257
+ access_to: 您可以访问
258
+ activity: 活动
259
+ and: 和
260
+ custom_range: 自定义范围
261
+ date_range_heading: 自定义报告
262
+ downloads: 下载
263
+ enable_analytics: 启用分析以查看报告
264
+ export: 出口
265
+ monthly: 每月
266
+ repo_summary: 在这个存储库中,它们共同拥有
267
+ report_generated_on: 此报告生成于
268
+ report_header: 定制作品报告
269
+ subtitle: 用户活动摘要
270
+ summary: 概括
271
+ title: 作品报告
272
+ views: 意见
273
+ works: 作品
274
+ monthly_summary:
275
+ file_downloads: 文件下载
276
+ monthly_subtitle: 过去 12 个月的逐月状态
277
+ page_views: 页面浏览量
278
+ show:
279
+ custom_range: 自定义范围
280
+ deposited_by: 存款人
281
+ monthly: 每月
282
+ resource_type: 资源类型
283
+ return_to_btn: 复工报告
284
+ status: 地位
285
+ summary: 概括
286
+ title: 工作报告
287
+ view_work_btn: 查看工作
288
+ visibility: 能见度
289
+ work_type: 工作类型
290
+ summary:
291
+ all_time: 整天
292
+ date_range: 日期范围
293
+ file_downloads: 文件下载
294
+ page_views: 页面浏览量
295
+ subtitle: 用户活动摘要
296
+ this_month: 这个月
297
+ this_week: 本星期
298
+ this_year: 今年
299
+ today: 今天
300
+ unique_visitors: 独立访客
301
+ top_file_set_downloads:
302
+ file: 文件
303
+ file_downloads: 文件下载
304
+ file_name: 文档名称
305
+ top_downloads: 热门文件下载
306
+ top_works:
307
+ export: 出口
308
+ file_downloads: 文件下载
309
+ top_works: 热门作品
310
+ work_title: 作品名称
311
+ work_views: 工作页面浏览量
312
+ work_counts:
313
+ child_works: 儿童作品
314
+ files: 档案
315
+ total_size: 总尺寸
316
+ work_files:
317
+ title: 文件
318
+ total_downloads: 总下载量
181
319
  appearances:
182
320
  show:
183
321
  header: 表面
@@ -263,11 +401,14 @@ zh:
263
401
  header: 特征
264
402
  sidebar:
265
403
  activity: 活动
404
+ analytics: 分析
266
405
  appearance: 表面
267
406
  collection_types: 集合类型
268
407
  collections: 收藏
408
+ collections_report: 收藏报告
269
409
  configuration: 配置
270
410
  content_blocks: 内容块
411
+ dashboard: 仪表盘
271
412
  delete_all: 删除所有
272
413
  notifications: 通知
273
414
  pages: 网页
@@ -284,6 +425,7 @@ zh:
284
425
  workflow_roles: 工作流程角色
285
426
  works: 作品
286
427
  works_listing: 作品清单
428
+ works_report: 作品报告
287
429
  stats:
288
430
  deposited_form:
289
431
  end_label: 结束 [默认到此刻]
@@ -296,6 +438,10 @@ zh:
296
438
  unpublished: 非出版品
297
439
  user_deposits:
298
440
  end_label: 结束 [默认到此刻]
441
+ headers:
442
+ main: 工作统计
443
+ total: 总作品:
444
+ visibility: 可见性总计
299
445
  heading: 展示用户存储的文件
300
446
  start_label: 开始
301
447
  works:
@@ -690,13 +836,17 @@ zh:
690
836
  authorize_proxies: 授权代理
691
837
  breadcrumbs:
692
838
  admin: 管理
839
+ collections_report: 收藏报告
840
+ works_report: 作品报告
693
841
  collection_type_actions:
694
842
  close: 关
695
843
  create_collection: 创建集合
696
844
  select_type_of_collection: 选择收集类型
697
845
  collections:
846
+ collection_title: 藏品名称
698
847
  edit:
699
848
  header: 编辑收藏集:%{title}
849
+ files: 文件
700
850
  form:
701
851
  permission_update_errors:
702
852
  error: 无效的权限模板更新选项。
@@ -787,8 +937,10 @@ zh:
787
937
  remove: 去掉
788
938
  title: 观众
789
939
  type: 类型
940
+ last_updated: 最近更新时间
790
941
  new:
791
942
  header: 创建新收藏集
943
+ recent_activity: 近期活动
792
944
  show:
793
945
  header: 采集
794
946
  item_count: 作品
@@ -817,6 +969,7 @@ zh:
817
969
  sort_and_per_page:
818
970
  show_par_page_html: 显示%{select}每页
819
971
  sort_by: 排序:
972
+ title: 收藏
820
973
  work_action_menu:
821
974
  delete_work: 删除工作
822
975
  deleting_from_work: 从%{application_name}删除作品是永久性的。单击“确定”从%{application_name}中删除此工作,或单击“取消”取消此操作
@@ -825,6 +978,7 @@ zh:
825
978
  remove_from_collection: 从收藏中删除
826
979
  select_an_action: 选择一个动作
827
980
  transfer_ownership_of_work: 转移工作所有权
981
+ works: 作品
828
982
  create_work: 创建作品
829
983
  current_proxies: 目前代理
830
984
  delete_notification: 删除通知
@@ -884,6 +1038,7 @@ zh:
884
1038
  view: 视图
885
1039
  users: '用户:'
886
1040
  collections: 你的收藏集
1041
+ collections_report: 收藏报告
887
1042
  facet_label:
888
1043
  collections: '筛选您的收藏集:'
889
1044
  highlighted: '筛选您的收藏精品:'
@@ -919,6 +1074,7 @@ zh:
919
1074
  show_label: 展示所有细节
920
1075
  thumbnail: 缩图
921
1076
  works: 您的作品
1077
+ works_report: 作品报告
922
1078
  your_collections: 你的收藏
923
1079
  your_works: 你的作品
924
1080
  nest_collections_form:
@@ -952,12 +1108,18 @@ zh:
952
1108
  objects: 对象
953
1109
  subtitle: 过去90天
954
1110
  title: 存储库增长
1111
+ works: 作品
955
1112
  repository_objects:
956
1113
  status: 当前状态
957
1114
  subtitle: 当前状态
958
1115
  title: 存储库对象
1116
+ resource_type_graph:
1117
+ count: 数数
1118
+ resource_type: 资源类型
1119
+ title: 资源类型
959
1120
  show_admin:
960
1121
  current_registered_users: 电流
1122
+ graph_reports: 自定义图表报告
961
1123
  new_visitors: 新访问者
962
1124
  past_30_days: 过去30天
963
1125
  registered_users: 注册用户
@@ -971,6 +1133,8 @@ zh:
971
1133
  heading: 您的【下载?】统计
972
1134
  joined_on: 加入上
973
1135
  works: 已建立的作品
1136
+ tabs:
1137
+ admin_sets: 管理集
974
1138
  title: 我的控件板
975
1139
  transfer_of_ownership: 转让所有权
976
1140
  transfer_works_link: 选择作品转让
@@ -979,10 +1143,27 @@ zh:
979
1143
  user_activity:
980
1144
  date: 日期
981
1145
  new_users: 新用户
1146
+ new_visitors: 新访客
1147
+ registered_users: 注册用户
1148
+ returning_visitors: 回访者
982
1149
  subtitle: 新用户注册
983
1150
  title: 用户活动
1151
+ total_visitors: 访客总数
1152
+ user_summary: 用户摘要
1153
+ user_activity_graph:
1154
+ date: 日期
1155
+ new_users: 新用户
1156
+ new_visits: 新访问
1157
+ return_visits: 回访
1158
+ total_visits: 总访问量
984
1159
  user_notifications: 用户通知
985
1160
  view_files: 阅览文件
1161
+ visibility_graph:
1162
+ visibility: 能见度
1163
+ work_type_graph:
1164
+ count: 数数
1165
+ title: 工作类型
1166
+ work_type: 工作类型
986
1167
  document_language: zh
987
1168
  edit_profile: 编辑个人资料
988
1169
  embargoes:
@@ -1363,6 +1544,16 @@ zh:
1363
1544
  contact_form: 联系表
1364
1545
  export_to_zotero: 导出到Zotero
1365
1546
  export_to_zotero_details: 通过嵌入式元数据支持导出到Zotero。如果Zotero没有自动获取存放文件的元数据,请通过以下方式报告问题
1547
+ stats:
1548
+ downloads:
1549
+ downloads: 下载
1550
+ pageviews:
1551
+ pageviews: 页面浏览量
1552
+ work:
1553
+ and: 和
1554
+ downloads: 下载
1555
+ header: 工作分析
1556
+ pageviews: 浏览量
1366
1557
  toolbar:
1367
1558
  dashboard:
1368
1559
  menu: 控件板
@@ -1641,3 +1832,6 @@ zh:
1641
1832
  member_of_collection_ids: 选择一个集合...
1642
1833
  required:
1643
1834
  html: <span class="label label-info required-tag">需要的</span>
1835
+ total_view:
1836
+ one: 该作品共有 1 次浏览
1837
+ other: 此作品总浏览量为 %{count}
data/config/routes.rb CHANGED
@@ -224,6 +224,10 @@ Hyrax::Engine.routes.draw do
224
224
  end
225
225
 
226
226
  namespace :admin do
227
+ namespace :analytics do
228
+ resources :collection_reports, only: [:index, :show]
229
+ resources :work_reports, only: [:index, :show]
230
+ end
227
231
  resources :admin_sets do
228
232
  member do
229
233
  get :files
data/docker-compose.yml CHANGED
@@ -8,6 +8,7 @@ services:
8
8
  args:
9
9
  - EXTRA_APK_PACKAGES=git less
10
10
  image: ghcr.io/samvera/dassie
11
+ command: sh -l -c 'bundle && bundle exec puma -v -b tcp://0.0.0.0:3000'
11
12
  stdin_open: true
12
13
  tty: true
13
14
  user: root
@@ -109,6 +110,7 @@ services:
109
110
  context: .
110
111
  target: hyrax-engine-dev-worker
111
112
  image: ghcr.io/samvera/dassie-worker
113
+ command: sh -l -c 'bundle && bundle exec sidekiq'
112
114
  user: root
113
115
  env_file:
114
116
  - .env
@@ -131,7 +133,7 @@ services:
131
133
  - hyrax
132
134
 
133
135
  solr:
134
- image: solr:8.7
136
+ image: solr:8.11.1
135
137
  ports:
136
138
  - 8983:8983
137
139
  command:
@@ -43,7 +43,7 @@ Prerequisites are required for both creating a Hyrax\-based app and contributing
43
43
 
44
44
  Hyrax requires the following software to work:
45
45
 
46
- 1. [Solr](http://lucene.apache.org/solr/) version >= 5.x (tested up to 8.7.0)
46
+ 1. [Solr](http://lucene.apache.org/solr/) version >= 5.x (tested up to 8.11.1, which includes the log4j library update)
47
47
  1. [Fedora Commons](http://www.fedora-commons.org/) digital repository version >= 4.5.1 (tested up to 4.7.5)
48
48
  1. A SQL RDBMS (MySQL, PostgreSQL), though **note** that SQLite will be used by default if you're looking to get up and running quickly
49
49
  1. [Redis](http://redis.io/), a key-value store
@@ -125,7 +125,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
125
125
  Generate a new Rails application using the template.
126
126
 
127
127
  ```
128
- rails _5.2.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v3.2.0/template.rb
128
+ rails _5.2.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v3.3.0/template.rb
129
129
  ```
130
130
 
131
131
  Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
@@ -50,7 +50,7 @@ The Samvera community is here to help. Please see our [support guide](./.github/
50
50
  # Getting started
51
51
 
52
52
  This document contains instructions specific to setting up an app with __Hyrax
53
- v3.2.0__. If you are looking for instructions on installing a different
53
+ v3.3.0__. If you are looking for instructions on installing a different
54
54
  version, be sure to select the appropriate branch or tag from the drop-down
55
55
  menu above.
56
56
 
data/hyrax.gemspec CHANGED
@@ -52,8 +52,9 @@ SUMMARY
52
52
  spec.add_dependency 'font-awesome-rails', '~> 4.2'
53
53
  spec.add_dependency 'hydra-derivatives', '~> 3.3'
54
54
  spec.add_dependency 'hydra-editor', '~> 5.0', ">= 5.0.4"
55
+ spec.add_dependency 'hydra-file_characterization', '~> 1.1.2'
55
56
  spec.add_dependency 'hydra-head', '~> 11.0', ">= 11.0.1"
56
- spec.add_dependency 'hydra-works', '>= 0.16', '< 2.0'
57
+ spec.add_dependency 'hydra-works', '>= 0.16'
57
58
  spec.add_dependency 'iiif_manifest', '>= 0.3', '< 2.0'
58
59
  spec.add_dependency 'jquery-datatables-rails', '~> 3.4'
59
60
  spec.add_dependency 'jquery-ui-rails', '~> 6.0'
@@ -95,6 +96,7 @@ SUMMARY
95
96
  spec.add_development_dependency "jasmine-core", '~> 2.3', '< 2.99'
96
97
  spec.add_development_dependency 'mida', '~> 0.3'
97
98
  spec.add_development_dependency 'okcomputer'
99
+ spec.add_development_dependency 'pg', '~> 1.2'
98
100
  spec.add_development_dependency 'rspec-activemodel-mocks', '~> 1.0'
99
101
  spec.add_development_dependency 'rspec-its', '~> 1.1'
100
102
  spec.add_development_dependency 'rspec-rails', '~> 3.1'
@@ -1,9 +1,15 @@
1
1
  #
2
- # To integrate your app with Google Analytics, uncomment the lines below and add your API key information.
2
+ # You can manually fill in these values or use the ENV variables.
3
3
  #
4
- # analytics:
5
- # app_name: <%= ENV['GOOGLE_OAUTH_APP_NAME']
6
- # app_version: <%= ENV['GOOGLE_OAUTH_APP_VERSION']
7
- # privkey_path: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_PATH']
8
- # privkey_secret: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_SECRET']
9
- # client_email: <%= ENV['GOOGLE_OAUTH_CLIENT_EMAIL']
4
+ analytics:
5
+ google:
6
+ analytics_id: <%= ENV['GOOGLE_ANALYTICS_ID'] %>
7
+ app_name: <%= ENV['GOOGLE_OAUTH_APP_NAME'] %>
8
+ app_version: <%= ENV['GOOGLE_OAUTH_APP_VERSION'] %>
9
+ privkey_path: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_PATH'] %>
10
+ privkey_secret: <%= ENV['GOOGLE_OAUTH_PRIVATE_KEY_SECRET'] %>
11
+ client_email: <%= ENV['GOOGLE_OAUTH_CLIENT_EMAIL'] %>
12
+ matomo:
13
+ base_url: <%= ENV['MATOMO_BASE_URL'] %>
14
+ site_id: <%= ENV['MATOMO_SITE_ID'] %>
15
+ auth_token: <%= ENV['MATOMO_AUTH_TOKEN'] %>
@@ -41,19 +41,6 @@ Hyrax.config do |config|
41
41
  # maxFileSize: 500.megabytes
42
42
  # }
43
43
 
44
- # Enable displaying usage statistics in the UI
45
- # Defaults to false
46
- # Requires a Google Analytics id and OAuth2 keyfile. See README for more info
47
- # config.analytics = false
48
-
49
- # Google Analytics tracking ID to gather usage statistics
50
- # config.google_analytics_id = 'UA-99999999-1'
51
-
52
- # Date you wish to start collecting Google Analytic statistics for
53
- # Leaving it blank will set the start date to when ever the file was uploaded by
54
- # NOTE: if you have always sent analytics to GA for downloads and page views leave this commented out
55
- # config.analytic_start_date = DateTime.new(2014, 9, 10)
56
-
57
44
  # Enables a link to the citations page for a work
58
45
  # Default is false
59
46
  # config.citations = false
@@ -0,0 +1,8 @@
1
+ class CreateDefaultAdministrativeSet < ActiveRecord::Migration<%= migration_version %>
2
+ def change
3
+ create_table :hyrax_default_administrative_set do |t|
4
+ t.string :default_admin_set_id, null: false
5
+ t.timestamps null: false
6
+ end
7
+ end
8
+ end
@@ -31,11 +31,13 @@ RSpec.feature 'Create a <%= class_name %>', js: false do
31
31
  end
32
32
 
33
33
  scenario do
34
+ pending 'Changes may be required for this test to pass. See TODO in test.'
35
+
34
36
  visit '/dashboard'
35
37
  click_link "Works"
36
38
  click_link "Add new work"
37
39
 
38
- # If you generate more than one work uncomment these lines
40
+ # TODO: If you generate more than one work uncomment these lines
39
41
  # choose "payload_concern", option: "<%= class_name %>"
40
42
  # click_button "Create work"
41
43
 
@@ -112,16 +112,46 @@ module Hyrax
112
112
  ActiveModel::Type::Boolean.new.cast(ENV.fetch('HYRAX_ANALYTICS', false))
113
113
  end
114
114
 
115
- attr_writer :google_analytics_id
116
- def google_analytics_id
117
- @google_analytics_id ||= nil
115
+ # Currently supports 'google' or 'matomo'
116
+ # google is default for backward compatability
117
+ attr_writer :analytics_provider
118
+ def analytics_provider
119
+ @analytics_provider ||=
120
+ ENV.fetch('HYRAX_ANALYTICS_PROVIDER', 'google')
121
+ end
122
+
123
+ ##
124
+ # @!attribute [w] analytics_start_date
125
+ # @note this can be set using the +ANALITICS_START_DATE+ environment variable (format is YYYY-MM-DD)
126
+ # @return [String] date you wish to start collecting analytics for. used to compute the
127
+ # "all-time" metrics.
128
+ # This is used to compute the "all-time" metrics
129
+ # Set this in your .env file (format is YYYY-MM-DD)
130
+ attr_writer :analytics_start_date
131
+ def analytics_start_date
132
+ @analytics_start_date ||=
133
+ ENV.fetch('ANALYTICS_START_DATE', Time.zone.today - 1.year)
118
134
  end
119
- alias google_analytics_id? google_analytics_id
120
135
 
121
136
  # Defaulting analytic start date to whenever the file was uploaded by leaving it blank
122
137
  attr_writer :analytic_start_date
123
138
  attr_reader :analytic_start_date
124
139
 
140
+ ##
141
+ # @deprecated use analytics_id from config/analytics.yml instead
142
+ def google_analytics_id=(value)
143
+ Deprecation.warn("google_analytics_id is deprecated; use analytics_id from config/analytics.yml instead.")
144
+ Hyrax::Analytics.config.analytics_id = value
145
+ end
146
+
147
+ ##
148
+ # @deprecated use analytics_id from config/analytics.yml instead
149
+ def google_analytics_id
150
+ Deprecation.warn("google_analytics_id is deprecated; use analytics_id from config/analytics.yml instead.")
151
+ Hyrax::Analytics.config.analytics_id
152
+ end
153
+ alias google_analytics_id? google_analytics_id
154
+
125
155
  # @!endgroup
126
156
  # @!group Groups
127
157
 
@@ -454,6 +484,17 @@ module Hyrax
454
484
  # Override characterization runner
455
485
  attr_accessor :characterization_runner
456
486
 
487
+ ##
488
+ # @!attribute [rw] characterization_service
489
+ # @return [#run] the service to use for charactaerization for Valkyrie
490
+ # objects
491
+ # @ see Hyrax::Characterization::ValkyrieCharacterizationService
492
+ attr_writer :characterization_service
493
+ def characterization_service
494
+ @characterization_service ||=
495
+ Hyrax::Characterization::ValkyrieCharacterizationService
496
+ end
497
+
457
498
  # Attributes for the lock manager which ensures a single process/thread is mutating a ore:Aggregation at once.
458
499
  # @!attribute [w] lock_retry_count
459
500
  # How many times to retry to acquire the lock before raising UnableToAcquireLockError
@@ -677,7 +718,7 @@ module Hyrax
677
718
  ##
678
719
  # @return [Class] the configured collection model class
679
720
  def collection_class
680
- collection_model.constantize
721
+ collection_model.safe_constantize
681
722
  end
682
723
 
683
724
  attr_writer :admin_set_model
@@ -694,6 +735,27 @@ module Hyrax
694
735
  admin_set_model.constantize
695
736
  end
696
737
 
738
+ ##
739
+ # @return [String] the default admin set id
740
+ def default_admin_set_id
741
+ default_admin_set.id.to_s
742
+ end
743
+
744
+ ##
745
+ # @return [Hyrax::AdministrativeSet] the default admin set
746
+ # @see Hyrax::AdminSetCreateService.find_or_create_default_admin_set
747
+ def default_admin_set
748
+ @default_admin_set ||= Hyrax::AdminSetCreateService.find_or_create_default_admin_set
749
+ end
750
+
751
+ ##
752
+ # If the default admin set is changed, call reset. The next time one of the default
753
+ # admin set configs is checked, the default_admin_set variable will be updated.
754
+ # @see Hyrax::DefaultAdministrativeSet.update
755
+ def reset_default_admin_set
756
+ @default_admin_set = nil
757
+ end
758
+
697
759
  attr_writer :id_field
698
760
  def id_field
699
761
  @id_field || index_field_mapper.id_field
data/lib/hyrax/engine.rb CHANGED
@@ -3,22 +3,23 @@ module Hyrax
3
3
  class Engine < ::Rails::Engine
4
4
  isolate_namespace Hyrax
5
5
 
6
+ require 'almond-rails'
6
7
  require 'awesome_nested_set'
7
8
  require 'breadcrumbs_on_rails'
9
+ require 'clipboard/rails'
8
10
  require 'draper'
9
- require 'dry/struct'
10
11
  require 'dry/equalizer'
11
12
  require 'dry/events'
13
+ require 'dry/struct'
12
14
  require 'dry/validation'
13
- require 'jquery-ui-rails'
15
+ require 'flipflop'
14
16
  require 'flot-rails'
15
- require 'almond-rails'
17
+ require 'hydra-file_characterization'
16
18
  require 'jquery-datatables-rails'
17
- require 'flipflop'
19
+ require 'jquery-ui-rails'
20
+ require 'legato'
18
21
  require 'qa'
19
- require 'clipboard/rails'
20
22
  require 'tinymce-rails'
21
- require 'legato'
22
23
  require 'valkyrie'
23
24
 
24
25
  require 'hydra/derivatives'
@@ -141,5 +141,9 @@ module Hyrax
141
141
  # @since 3.0.0
142
142
  # @macro a_registered_event
143
143
  register_event('object.metadata.updated')
144
+
145
+ # @since 3.2.0
146
+ # @macro a_registered_event
147
+ register_event('object.file.uploaded')
144
148
  end
145
149
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ require 'hyrax/transactions/transaction'
3
+
4
+ module Hyrax
5
+ module Transactions
6
+ ##
7
+ # Creates a Hyrax::AdministrativeSet from a ChangeSet
8
+ #
9
+ # @since 3.2.0
10
+ class AdminSetCreate < Transaction
11
+ DEFAULT_STEPS = ['change_set.apply',
12
+ 'admin_set_resource.apply_collection_type_permissions',
13
+ 'admin_set_resource.save_acl'].freeze
14
+
15
+ ##
16
+ # @see Hyrax::Transactions::Transaction
17
+ def initialize(container: Container, steps: DEFAULT_STEPS)
18
+ super
19
+ end
20
+ end
21
+ end
22
+ end
@@ -18,6 +18,7 @@ module Hyrax
18
18
  #
19
19
  # @see https://dry-rb.org/gems/dry-container/
20
20
  class Container # rubocop:disable Metrics/ClassLength
21
+ require 'hyrax/transactions/admin_set_create'
21
22
  require 'hyrax/transactions/apply_change_set'
22
23
  require 'hyrax/transactions/collection_create'
23
24
  require 'hyrax/transactions/collection_update'
@@ -125,6 +126,16 @@ module Hyrax
125
126
  end
126
127
  end
127
128
 
129
+ namespace 'admin_set_resource' do |ops| # valkyrie administrative set
130
+ ops.register 'apply_collection_type_permissions' do
131
+ Steps::ApplyCollectionTypePermissions.new
132
+ end
133
+
134
+ ops.register 'save_acl' do
135
+ Steps::SaveAccessControl.new
136
+ end
137
+ end
138
+
128
139
  namespace 'collection_resource' do |ops| # valkyrie collection
129
140
  ops.register 'apply_collection_type_permissions' do
130
141
  Steps::ApplyCollectionTypePermissions.new
data/lib/hyrax/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Hyrax
3
- VERSION = '3.2.0'
3
+ VERSION = '3.3.0'
4
4
  end