hyrax 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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