hyrax 3.0.0.pre.beta2 → 3.0.0.pre.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (441) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +118 -181
  3. data/.gitignore +3 -0
  4. data/.regen +1 -0
  5. data/.rubocop_fixme.yml +1 -1
  6. data/README.md +11 -15
  7. data/app/actors/hyrax/actors/active_fedora_to_valkyrie.rb +59 -0
  8. data/app/actors/hyrax/actors/add_to_work_actor.rb +28 -5
  9. data/app/actors/hyrax/actors/apply_order_actor.rb +2 -2
  10. data/app/actors/hyrax/actors/attach_members_actor.rb +50 -28
  11. data/app/actors/hyrax/actors/base_actor.rb +17 -2
  12. data/app/actors/hyrax/actors/cleanup_file_sets_actor.rb +1 -1
  13. data/app/actors/hyrax/actors/collections_membership_actor.rb +2 -8
  14. data/app/actors/hyrax/actors/create_with_files_actor.rb +16 -6
  15. data/app/actors/hyrax/actors/create_with_files_ordered_members_actor.rb +2 -2
  16. data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +2 -1
  17. data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +8 -6
  18. data/app/actors/hyrax/actors/environment.rb +8 -16
  19. data/app/actors/hyrax/actors/file_actor.rb +75 -13
  20. data/app/actors/hyrax/actors/interpret_visibility_actor.rb +6 -8
  21. data/app/actors/hyrax/actors/valkyrie_to_active_fedora.rb +60 -0
  22. data/app/assets/javascripts/hyrax/collections.js +5 -4
  23. data/app/assets/javascripts/hyrax/nav_safety.js +4 -2
  24. data/app/assets/javascripts/hyrax/proxy_rights.js +8 -0
  25. data/app/assets/stylesheets/fileupload/jquery.fileupload-ui.scss +1 -15
  26. data/app/assets/stylesheets/hyrax/_collections.scss +1 -1
  27. data/app/assets/stylesheets/hyrax/_home-page.scss +6 -0
  28. data/app/assets/stylesheets/hyrax/_users.scss +11 -0
  29. data/app/assets/stylesheets/hyrax/_viewer.scss +14 -3
  30. data/app/controllers/concerns/hyrax/breadcrumbs.rb +2 -0
  31. data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +1 -1
  32. data/app/controllers/concerns/hyrax/embargoes_controller_behavior.rb +2 -1
  33. data/app/controllers/concerns/hyrax/leases_controller_behavior.rb +2 -1
  34. data/app/controllers/concerns/hyrax/local_file_downloads_controller_behavior.rb +2 -1
  35. data/app/controllers/hyrax/batch_edits_controller.rb +3 -3
  36. data/app/controllers/hyrax/dashboard/collections_controller.rb +16 -5
  37. data/app/controllers/hyrax/dashboard_controller.rb +9 -0
  38. data/app/controllers/hyrax/depositors_controller.rb +4 -6
  39. data/app/controllers/hyrax/downloads_controller.rb +1 -1
  40. data/app/controllers/hyrax/file_sets_controller.rb +3 -2
  41. data/app/controllers/hyrax/homepage_controller.rb +1 -1
  42. data/app/controllers/hyrax/my/works_controller.rb +2 -2
  43. data/app/controllers/hyrax/my_controller.rb +2 -2
  44. data/app/controllers/hyrax/permissions_controller.rb +1 -1
  45. data/app/controllers/hyrax/single_use_links_viewer_controller.rb +1 -1
  46. data/app/controllers/hyrax/workflow_actions_controller.rb +1 -1
  47. data/app/forms/hyrax/forms/admin_set_form.rb +8 -0
  48. data/app/forms/hyrax/forms/batch_edit_form.rb +1 -1
  49. data/app/forms/hyrax/forms/collection_form.rb +34 -3
  50. data/app/forms/hyrax/forms/file_set_edit_form.rb +1 -1
  51. data/app/forms/hyrax/forms/work_form.rb +34 -7
  52. data/app/forms/hyrax/forms/workflow_responsibility_form.rb +0 -4
  53. data/app/helpers/hyrax/hyrax_helper_behavior.rb +3 -4
  54. data/app/helpers/hyrax/iiif_helper.rb +8 -0
  55. data/app/indexers/hyrax/admin_set_indexer.rb +1 -1
  56. data/app/indexers/hyrax/basic_metadata_indexer.rb +1 -1
  57. data/app/indexers/hyrax/collection_indexer.rb +2 -2
  58. data/app/indexers/hyrax/file_set_indexer.rb +7 -0
  59. data/app/indexers/hyrax/indexes_workflow.rb +3 -5
  60. data/app/indexers/hyrax/valkyrie_indexers/base_indexer.rb +19 -0
  61. data/app/indexers/hyrax/work_indexer.rb +1 -1
  62. data/app/jobs/attach_files_to_work_job.rb +9 -1
  63. data/app/jobs/characterize_job.rb +20 -5
  64. data/app/jobs/import_url_job.rb +9 -16
  65. data/app/jobs/ingest_local_file_job.rb +4 -0
  66. data/app/jobs/visibility_copy_job.rb +3 -17
  67. data/app/models/admin_set.rb +5 -0
  68. data/app/models/concerns/hyrax/ability.rb +3 -3
  69. data/app/models/concerns/hyrax/basic_metadata.rb +6 -2
  70. data/app/models/concerns/hyrax/collection_behavior.rb +22 -12
  71. data/app/models/concerns/hyrax/collection_nesting.rb +1 -1
  72. data/app/models/concerns/hyrax/file_set/characterization.rb +8 -1
  73. data/app/models/concerns/hyrax/file_set/querying.rb +1 -1
  74. data/app/models/concerns/hyrax/file_set_behavior.rb +1 -1
  75. data/app/models/concerns/hyrax/human_readable_type.rb +2 -2
  76. data/app/models/concerns/hyrax/solr_document/characterization.rb +27 -23
  77. data/app/models/concerns/hyrax/solr_document/metadata.rb +37 -39
  78. data/app/models/concerns/hyrax/solr_document_behavior.rb +4 -8
  79. data/app/models/concerns/hyrax/virus_check.rb +20 -0
  80. data/app/models/concerns/hyrax/work_behavior.rb +3 -1
  81. data/app/models/file_download_stat.rb +2 -1
  82. data/app/models/hyrax/active_job_proxy.rb +43 -0
  83. data/app/models/hyrax/embargo.rb +21 -0
  84. data/app/models/hyrax/file_metadata.rb +109 -0
  85. data/app/models/hyrax/lease.rb +21 -0
  86. data/app/models/hyrax/permission_template.rb +8 -8
  87. data/app/models/hyrax/resource.rb +31 -0
  88. data/app/models/hyrax/statistic.rb +5 -1
  89. data/app/models/hyrax/uploaded_file.rb +0 -2
  90. data/app/models/hyrax/virus_scanner.rb +56 -0
  91. data/app/models/job_io_wrapper.rb +24 -9
  92. data/app/models/proxy_deposit_request.rb +1 -1
  93. data/app/models/solr_hit.rb +23 -0
  94. data/app/presenters/hyrax/admin_set_presenter.rb +1 -1
  95. data/app/presenters/hyrax/characterization_behavior.rb +2 -2
  96. data/app/presenters/hyrax/displays_image.rb +25 -7
  97. data/app/presenters/hyrax/file_set_presenter.rb +3 -3
  98. data/app/presenters/hyrax/member_presenter_factory.rb +9 -9
  99. data/app/presenters/hyrax/presenter_factory.rb +1 -4
  100. data/app/presenters/hyrax/trophy_presenter.rb +1 -1
  101. data/app/presenters/hyrax/work_show_presenter.rb +3 -3
  102. data/app/renderers/hyrax/renderers/faceted_attribute_renderer.rb +1 -1
  103. data/app/search_builders/hyrax/catalog_search_builder.rb +1 -1
  104. data/app/search_builders/hyrax/collection_search_builder.rb +1 -1
  105. data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +2 -2
  106. data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
  107. data/app/search_builders/hyrax/my/find_works_search_builder.rb +5 -9
  108. data/app/search_builders/hyrax/my/highlights_search_builder.rb +1 -3
  109. data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +1 -1
  110. data/app/search_builders/hyrax/parent_collection_search_builder.rb +1 -1
  111. data/app/services/hyrax/adapters/nesting_index_adapter.rb +6 -6
  112. data/app/services/hyrax/admin_set_service.rb +3 -11
  113. data/app/services/hyrax/analytics.rb +6 -6
  114. data/app/services/hyrax/collection_types/permissions_service.rb +5 -5
  115. data/app/services/hyrax/collections/permissions_service.rb +2 -2
  116. data/app/services/hyrax/custom_queries/navigators/child_collections_navigator.rb +39 -0
  117. data/app/services/hyrax/custom_queries/navigators/child_filesets_navigator.rb +39 -0
  118. data/app/services/hyrax/custom_queries/navigators/child_works_navigator.rb +39 -0
  119. data/app/services/hyrax/custom_queries/wings.rb +34 -0
  120. data/app/services/hyrax/database_migrator.rb +1 -0
  121. data/app/services/hyrax/derivative_path.rb +1 -1
  122. data/app/services/hyrax/embargo_manager.rb +100 -0
  123. data/app/services/hyrax/file_set_csv_service.rb +2 -0
  124. data/app/services/hyrax/file_set_visibility_propagator.rb +41 -0
  125. data/app/services/hyrax/graph_exporter.rb +1 -1
  126. data/app/services/hyrax/lease_manager.rb +71 -0
  127. data/app/services/hyrax/persist_directly_contained_output_file_service.rb +1 -1
  128. data/app/services/hyrax/query_service.rb +0 -0
  129. data/app/services/hyrax/resource_visibility_propagator.rb +50 -0
  130. data/app/services/hyrax/solr_query_builder_service.rb +71 -0
  131. data/app/services/hyrax/solr_service.rb +144 -0
  132. data/app/services/hyrax/statistics/file_sets/by_format.rb +1 -1
  133. data/app/services/hyrax/statistics/term_query.rb +7 -12
  134. data/app/services/hyrax/statistics/works/by_resource_type.rb +1 -1
  135. data/app/services/hyrax/thumbnail_path_service.rb +4 -3
  136. data/app/services/hyrax/versioning_service.rb +74 -19
  137. data/app/services/hyrax/virus_checker_service.rb +52 -0
  138. data/app/services/hyrax/visibility_intention_applicator.rb +43 -0
  139. data/app/services/hyrax/visibility_map.rb +65 -0
  140. data/app/services/hyrax/visibility_propagator.rb +19 -0
  141. data/app/services/hyrax/visibility_reader.rb +43 -0
  142. data/app/services/hyrax/visibility_writer.rb +43 -0
  143. data/app/services/hyrax/work_query_service.rb +3 -3
  144. data/app/services/hyrax/workflow/deposited_notification.rb +1 -1
  145. data/app/services/hyrax/works/migration_service.rb +33 -0
  146. data/app/views/hyrax/admin/admin_sets/_form.html.erb +6 -5
  147. data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +2 -1
  148. data/app/views/hyrax/admin/admin_sets/_form_workflow.erb +1 -1
  149. data/app/views/hyrax/base/_attribute_rows.html.erb +2 -0
  150. data/app/views/hyrax/base/_attributes.html.erb +3 -3
  151. data/app/views/hyrax/base/_citations.html.erb +4 -4
  152. data/app/views/hyrax/base/_file_manager_actions.html.erb +2 -2
  153. data/app/views/hyrax/base/_file_manager_member_resource_options.html.erb +2 -2
  154. data/app/views/hyrax/base/_form_child_work_relationships.html.erb +1 -1
  155. data/app/views/hyrax/base/_form_files.html.erb +11 -9
  156. data/app/views/hyrax/base/_form_member_of_collections.html.erb +1 -1
  157. data/app/views/hyrax/base/_form_permission.html.erb +1 -2
  158. data/app/views/hyrax/base/_form_progress.html.erb +2 -2
  159. data/app/views/hyrax/base/_form_share.html.erb +8 -11
  160. data/app/views/hyrax/base/_show_actions.html.erb +3 -3
  161. data/app/views/hyrax/base/_social_media.html.erb +0 -13
  162. data/app/views/hyrax/base/_work_button_row.html.erb +7 -7
  163. data/app/views/hyrax/base/_workflow_actions.html.erb +4 -4
  164. data/app/views/hyrax/base/file_manager.html.erb +2 -2
  165. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +5 -2
  166. data/app/views/hyrax/base/inspect_work.html.erb +13 -13
  167. data/app/views/hyrax/base/unauthorized.html.erb +4 -4
  168. data/app/views/hyrax/batch_edits/_check_all.html.erb +1 -1
  169. data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
  170. data/app/views/hyrax/batch_edits/edit.html.erb +11 -11
  171. data/app/views/hyrax/citations/work.html.erb +1 -1
  172. data/app/views/hyrax/collections/_show_document_list.html.erb +1 -1
  173. data/app/views/hyrax/collections/_sort_and_per_page.html.erb +4 -4
  174. data/app/views/hyrax/dashboard/collections/_form.html.erb +6 -5
  175. data/app/views/hyrax/dashboard/collections/_form_branding.html.erb +10 -10
  176. data/app/views/hyrax/dashboard/collections/_form_share.html.erb +5 -5
  177. data/app/views/hyrax/dashboard/collections/_show_descriptions.html.erb +1 -1
  178. data/app/views/hyrax/dashboard/collections/_show_document_list.html.erb +6 -6
  179. data/app/views/hyrax/dashboard/collections/_show_document_list_menu.html.erb +1 -1
  180. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +3 -3
  181. data/app/views/hyrax/dashboard/collections/_sort_and_per_page.html.erb +2 -3
  182. data/app/views/hyrax/dashboard/collections/_work_action_menu.html.erb +8 -8
  183. data/app/views/hyrax/dashboard/collections/edit.html.erb +2 -2
  184. data/app/views/hyrax/dashboard/profiles/_edit_primary.html.erb +8 -8
  185. data/app/views/hyrax/dashboard/sidebar/_activity.html.erb +2 -0
  186. data/app/views/hyrax/dashboard/sidebar/_configuration.html.erb +4 -1
  187. data/app/views/hyrax/dashboard/sidebar/_menu_partials.html.erb +3 -0
  188. data/app/views/hyrax/dashboard/sidebar/_repository_content.html.erb +2 -0
  189. data/app/views/hyrax/dashboard/sidebar/_tasks.html.erb +2 -0
  190. data/app/views/hyrax/dashboard/works/_default_group.html.erb +4 -4
  191. data/app/views/hyrax/dashboard/works/_list_works.html.erb +1 -1
  192. data/app/views/hyrax/depositors/_modal_proxy_deny.html.erb +14 -0
  193. data/app/views/hyrax/depositors/index.html.erb +3 -0
  194. data/app/views/hyrax/embargoes/_list_expired_active_embargoes.html.erb +1 -1
  195. data/app/views/hyrax/file_sets/_actions.html.erb +1 -1
  196. data/app/views/hyrax/file_sets/_asset_deleted_flash.html.erb +1 -1
  197. data/app/views/hyrax/file_sets/_asset_saved_flash.html.erb +5 -6
  198. data/app/views/hyrax/file_sets/_asset_updated_flash.html.erb +2 -1
  199. data/app/views/hyrax/file_sets/_descriptions.html.erb +2 -2
  200. data/app/views/hyrax/file_sets/_extra_fields_modal.html.erb +3 -3
  201. data/app/views/hyrax/file_sets/_form.html.erb +1 -1
  202. data/app/views/hyrax/file_sets/_permission.html.erb +2 -1
  203. data/app/views/hyrax/file_sets/_permission_form.html.erb +9 -9
  204. data/app/views/hyrax/file_sets/_show_actions.html.erb +4 -4
  205. data/app/views/hyrax/file_sets/_show_details.html.erb +7 -7
  206. data/app/views/hyrax/file_sets/_versioning.html.erb +3 -3
  207. data/app/views/hyrax/file_sets/edit.html.erb +4 -3
  208. data/app/views/hyrax/file_sets/media_display/_audio.html.erb +2 -2
  209. data/app/views/hyrax/file_sets/media_display/_video.html.erb +2 -2
  210. data/app/views/hyrax/file_sets/proxy.html.erb +2 -2
  211. data/app/views/hyrax/my/_sort_and_per_page.html.erb +1 -1
  212. data/app/views/hyrax/my/collections/_modal_delete_selected_collections.html.erb +4 -1
  213. data/app/views/hyrax/my/collections/index.html.erb +1 -1
  214. data/app/views/hyrax/my/index.html.erb +1 -1
  215. data/app/views/hyrax/my/works/_default_group.html.erb +4 -4
  216. data/app/views/hyrax/my/works/_list_works.html.erb +3 -3
  217. data/app/views/hyrax/my/works/index.html.erb +1 -1
  218. data/app/views/hyrax/notifications/index.html.erb +1 -1
  219. data/app/views/hyrax/operations/index.html.erb +4 -4
  220. data/app/views/hyrax/pages/_form.html.erb +61 -60
  221. data/app/views/hyrax/permissions/confirm_access.html.erb +1 -1
  222. data/app/views/hyrax/single_use_links_viewer/single_use_error.html.erb +3 -7
  223. data/app/views/hyrax/static/mendeley.html.erb +2 -4
  224. data/app/views/hyrax/static/zotero.html.erb +2 -4
  225. data/app/views/hyrax/transfers/_received.html.erb +10 -10
  226. data/app/views/hyrax/transfers/_sent.html.erb +6 -6
  227. data/app/views/hyrax/uploads/_js_templates.html.erb +7 -7
  228. data/app/views/hyrax/uploads/_js_templates_branding.html.erb +8 -8
  229. data/app/views/hyrax/users/_activity_log.html.erb +25 -22
  230. data/app/views/hyrax/users/_left_sidebar.html.erb +1 -1
  231. data/app/views/hyrax/users/_proxies.html.erb +1 -1
  232. data/app/views/hyrax/users/_search_form.html.erb +3 -3
  233. data/app/views/hyrax/users/_vitals.html.erb +1 -1
  234. data/app/views/hyrax/users/index.html.erb +6 -6
  235. data/app/views/records/edit_fields/_abstract.html.erb +5 -0
  236. data/app/views/records/edit_fields/_access_right.html.erb +5 -0
  237. data/app/views/records/edit_fields/_alt_title.html.erb +3 -0
  238. data/app/views/records/edit_fields/_title.html.erb +1 -0
  239. data/app/views/records/show_fields/_based_near.html.erb +1 -1
  240. data/app/views/records/show_fields/_creator.html.erb +1 -1
  241. data/app/views/records/show_fields/_keyword.html.erb +1 -1
  242. data/app/views/records/show_fields/_language.html.erb +1 -1
  243. data/app/views/records/show_fields/_publisher.html.erb +1 -1
  244. data/app/views/records/show_fields/_resource_type.html.erb +1 -1
  245. data/app/views/records/show_fields/_subject.html.erb +1 -1
  246. data/config/initializers/indexing_adapter_initializer.rb +16 -0
  247. data/config/initializers/samvera-nesting_indexer_initializer.rb +3 -3
  248. data/config/locales/hyrax.de.yml +303 -24
  249. data/config/locales/hyrax.en.yml +279 -0
  250. data/config/locales/hyrax.es.yml +284 -5
  251. data/config/locales/hyrax.fr.yml +280 -1
  252. data/config/locales/hyrax.it.yml +279 -0
  253. data/config/locales/hyrax.pt-BR.yml +279 -0
  254. data/config/locales/hyrax.zh.yml +279 -0
  255. data/hyrax.gemspec +10 -11
  256. data/lib/generators/hyrax/config_generator.rb +6 -0
  257. data/lib/generators/hyrax/install_generator.rb +5 -0
  258. data/lib/generators/hyrax/riiif_generator.rb +2 -2
  259. data/lib/generators/hyrax/templates/catalog_controller.rb +71 -71
  260. data/lib/generators/hyrax/templates/config/analytics.yml +5 -5
  261. data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +11 -1
  262. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +3 -3
  263. data/lib/generators/hyrax/templates/config/solr_wrapper_valkyrie_test.yml +7 -0
  264. data/lib/generators/hyrax/templates/config/valkyrie_index.yml +12 -0
  265. data/lib/generators/hyrax/templates/package.json +17 -0
  266. data/lib/generators/hyrax/templates/uv-config.json +3 -0
  267. data/lib/generators/hyrax/templates/uv.html +87 -0
  268. data/lib/generators/hyrax/work/templates/feature_spec.rb.erb +0 -1
  269. data/lib/hyrax.rb +17 -1
  270. data/lib/hyrax/configuration.rb +34 -20
  271. data/lib/hyrax/engine.rb +12 -10
  272. data/lib/hyrax/errors.rb +4 -0
  273. data/lib/hyrax/transactions/container.rb +13 -0
  274. data/lib/hyrax/transactions/create_work.rb +11 -0
  275. data/lib/hyrax/transactions/steps/apply_collection_permission_template.rb +32 -0
  276. data/lib/hyrax/transactions/steps/apply_permission_template.rb +2 -1
  277. data/lib/hyrax/transactions/steps/apply_visibility.rb +39 -0
  278. data/lib/hyrax/version.rb +1 -1
  279. data/lib/tasks/migrate.rake +6 -0
  280. data/lib/tasks/universal_viewer.rake +15 -0
  281. data/lib/valkyrie/indexing/solr/indexing_adapter.rb +102 -0
  282. data/lib/valkyrie/indexing_adapter.rb +29 -0
  283. data/lib/wings.rb +13 -4
  284. data/lib/wings/active_fedora_converter.rb +129 -15
  285. data/lib/wings/converter_value_mapper.rb +111 -0
  286. data/lib/wings/hydra/pcdm/models/concerns/collection_valkyrie_behavior.rb +27 -0
  287. data/lib/wings/hydra/pcdm/models/concerns/object_valkyrie_behavior.rb +27 -0
  288. data/lib/wings/hydra/pcdm/models/concerns/pcdm_valkyrie_behavior.rb +172 -0
  289. data/lib/wings/hydra/works/models/concerns/collection_valkyrie_behavior.rb +30 -0
  290. data/lib/wings/hydra/works/models/concerns/file_set_valkyrie_behavior.rb +30 -0
  291. data/lib/wings/hydra/works/models/concerns/work_valkyrie_behavior.rb +59 -0
  292. data/lib/wings/hydra/works/services/add_file_metadata_to_file_set.rb +113 -0
  293. data/lib/wings/model_transformer.rb +172 -47
  294. data/lib/wings/models/concerns/collection_behavior.rb +38 -0
  295. data/lib/wings/models/multi_checksum.rb +18 -0
  296. data/lib/wings/services/file_metadata_builder.rb +81 -0
  297. data/lib/wings/services/id_converter_service.rb +14 -0
  298. data/lib/wings/{value_mapper.rb → transformer_value_mapper.rb} +24 -5
  299. data/lib/wings/valkyrie/persister.rb +47 -24
  300. data/lib/wings/valkyrie/query_service.rb +141 -6
  301. data/lib/wings/valkyrie/storage/active_fedora.rb +27 -0
  302. data/spec/abilities/proxies_and_transfer_abilities_spec.rb +50 -10
  303. data/spec/actors/hyrax/actors/active_fedora_to_valkyrie_spec.rb +70 -0
  304. data/spec/actors/hyrax/actors/attach_members_actor_spec.rb +55 -10
  305. data/spec/actors/hyrax/actors/create_with_remote_files_actor_spec.rb +14 -0
  306. data/spec/actors/hyrax/actors/create_with_remote_files_ordered_members_actor_spec.rb +22 -30
  307. data/spec/actors/hyrax/actors/file_actor_spec.rb +200 -84
  308. data/spec/actors/hyrax/actors/file_set_actor_spec.rb +1 -1
  309. data/spec/actors/hyrax/actors/generic_work_actor_spec.rb +2 -6
  310. data/spec/actors/hyrax/actors/interpret_visibility_actor_spec.rb +1 -1
  311. data/spec/actors/hyrax/actors/ordered_members_actor_spec.rb +1 -1
  312. data/spec/actors/hyrax/actors/valkyrie_to_active_fedora_spec.rb +70 -0
  313. data/spec/controllers/catalog_controller_spec.rb +2 -2
  314. data/spec/controllers/hyrax/api/items_controller_spec.rb +9 -15
  315. data/spec/controllers/hyrax/collections_controller_spec.rb +6 -2
  316. data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +53 -4
  317. data/spec/controllers/hyrax/depositors_controller_spec.rb +3 -3
  318. data/spec/controllers/hyrax/downloads_controller_spec.rb +11 -2
  319. data/spec/controllers/hyrax/file_sets_controller_spec.rb +40 -2
  320. data/spec/controllers/hyrax/generic_works_controller_spec.rb +13 -3
  321. data/spec/controllers/hyrax/homepage_controller_spec.rb +3 -3
  322. data/spec/controllers/hyrax/single_use_links_viewer_controller_spec.rb +1 -2
  323. data/spec/factories/admin_sets_lw.rb +1 -1
  324. data/spec/factories/collections.rb +1 -1
  325. data/spec/factories/hyrax_embargo.rb +16 -0
  326. data/spec/factories/hyrax_lease.rb +16 -0
  327. data/spec/factories/hyrax_resource.rb +16 -0
  328. data/spec/factory_tests/adminsets_factory_spec.rb +4 -4
  329. data/spec/factory_tests/collections_factory_spec.rb +3 -3
  330. data/spec/features/actor_stack_spec.rb +64 -0
  331. data/spec/features/batch_create_spec.rb +1 -2
  332. data/spec/features/collection_multi_membership_spec.rb +1 -0
  333. data/spec/features/collection_spec.rb +2 -2
  334. data/spec/features/collection_type_spec.rb +1 -0
  335. data/spec/features/create_work_spec.rb +15 -6
  336. data/spec/features/dashboard/collection_spec.rb +103 -14
  337. data/spec/features/edit_content_block_admin_spec.rb +3 -3
  338. data/spec/features/edit_pages_admin.spec.rb +62 -0
  339. data/spec/features/proxy_spec.rb +21 -0
  340. data/spec/features/static_pages_spec.rb +1 -1
  341. data/spec/features/work_show_spec.rb +7 -3
  342. data/spec/fixtures/sample-file.pdf +0 -0
  343. data/spec/fixtures/updated-file.txt +1 -0
  344. data/spec/forms/hyrax/forms/batch_upload_form_spec.rb +5 -2
  345. data/spec/forms/hyrax/forms/collection_form_spec.rb +5 -2
  346. data/spec/forms/hyrax/forms/work_form_spec.rb +18 -5
  347. data/spec/forms/hyrax/generic_work_form_spec.rb +4 -4
  348. data/spec/helpers/hyrax/collections_helper_spec.rb +8 -8
  349. data/spec/helpers/hyrax/dashboard_helper_behavior_spec.rb +7 -8
  350. data/spec/helpers/hyrax/iiif_helper_spec.rb +16 -0
  351. data/spec/helpers/hyrax_helper_spec.rb +4 -4
  352. data/spec/hyrax/transactions/create_work_spec.rb +68 -0
  353. data/spec/hyrax/transactions/steps/apply_collection_permission_template_spec.rb +59 -0
  354. data/spec/hyrax/transactions/steps/apply_visibility_spec.rb +82 -0
  355. data/spec/indexers/hyrax/admin_set_indexer_spec.rb +15 -0
  356. data/spec/indexers/hyrax/file_set_indexer_spec.rb +26 -1
  357. data/spec/indexers/hyrax/valkyrie_indexers/base_indexer_spec.rb +16 -0
  358. data/spec/jobs/import_url_job_spec.rb +49 -2
  359. data/spec/jobs/ingest_local_file_job_spec.rb +25 -1
  360. data/spec/jobs/visibility_copy_job_spec.rb +46 -0
  361. data/spec/lib/hyrax/configuration_spec.rb +17 -11
  362. data/spec/lib/hyrax/redis_event_store_spec.rb +1 -1
  363. data/spec/matcher_tests/match_valkyrie_ids_with_af_ids_spec.rb +40 -0
  364. data/spec/models/file_set_spec.rb +4 -3
  365. data/spec/models/hyrax/embargo_spec.rb +27 -0
  366. data/spec/models/hyrax/file_metadata_spec.rb +110 -0
  367. data/spec/models/hyrax/lease_spec.rb +25 -0
  368. data/spec/models/hyrax/permission_template_spec.rb +2 -2
  369. data/spec/models/hyrax/resource_spec.rb +60 -0
  370. data/spec/models/hyrax/virus_scanner_spec.rb +50 -0
  371. data/spec/models/job_io_wrapper_spec.rb +63 -0
  372. data/spec/models/solr_hit_spec.rb +9 -0
  373. data/spec/models/user_spec.rb +1 -1
  374. data/spec/presenters/hyrax/file_set_presenter_spec.rb +11 -7
  375. data/spec/presenters/hyrax/presenter_factory_spec.rb +2 -2
  376. data/spec/presenters/hyrax/work_show_presenter_spec.rb +1 -1
  377. data/spec/requests/riiif_spec.rb +2 -2
  378. data/spec/search_builders/hyrax/my/find_works_search_builder_spec.rb +3 -3
  379. data/spec/services/hyrax/adapters/nesting_index_adapter_spec.rb +5 -6
  380. data/spec/services/hyrax/admin_set_service_spec.rb +2 -2
  381. data/spec/services/hyrax/custom_queries/navigators/child_collections_navigator_spec.rb +41 -0
  382. data/spec/services/hyrax/custom_queries/navigators/child_filesets_navigator_spec.rb +41 -0
  383. data/spec/services/hyrax/custom_queries/navigators/child_works_navigator_spec.rb +79 -0
  384. data/spec/services/hyrax/custom_queries/wings.rb +52 -0
  385. data/spec/services/hyrax/embargo_manager_spec.rb +123 -0
  386. data/spec/services/hyrax/embargo_service_spec.rb +2 -2
  387. data/spec/services/hyrax/file_set_visibility_propagator_spec.rb +59 -0
  388. data/spec/services/hyrax/resource_visibility_propagator_spec.rb +71 -0
  389. data/spec/services/hyrax/solr_query_builder_service_spec.rb +17 -0
  390. data/spec/services/hyrax/solr_service_spec.rb +218 -0
  391. data/spec/services/hyrax/thumbnail_path_service_spec.rb +6 -0
  392. data/spec/services/hyrax/versioning_service_spec.rb +35 -15
  393. data/spec/services/hyrax/visibility_intention_applicator_spec.rb +69 -0
  394. data/spec/services/hyrax/visibility_reader_spec.rb +38 -0
  395. data/spec/services/hyrax/visibility_writer_spec.rb +47 -0
  396. data/spec/services/hyrax/workflow/status_list_service_spec.rb +1 -13
  397. data/spec/services/hyrax/works/migration_service_spec.rb +29 -0
  398. data/spec/spec_helper.rb +24 -23
  399. data/spec/support/clean_solr.rb +7 -0
  400. data/spec/support/create_for_repository.rb +25 -0
  401. data/spec/support/factory_helpers.rb +3 -1
  402. data/spec/support/fakes/fake_actor.rb +21 -0
  403. data/spec/support/matchers/embargo.rb +9 -0
  404. data/spec/support/matchers/lease.rb +9 -0
  405. data/spec/support/matchers/match_valkyrie_ids_with_af_ids.rb +11 -0
  406. data/spec/support/matchers/permission.rb +22 -0
  407. data/spec/support/valkyrie_indexing.rb +1 -0
  408. data/spec/test_app_templates/Gemfile.extra +0 -2
  409. data/spec/test_app_templates/lib/generators/test_app_generator.rb +5 -6
  410. data/spec/valkyrie/indexing/solr/indexing_adapter_spec.rb +41 -0
  411. data/spec/valkyrie/indexing_adapter_spec.rb +25 -0
  412. data/spec/views/hyrax/base/_attributes.html.erb_spec.rb +1 -1
  413. data/spec/views/hyrax/base/_social_media.html.erb_spec.rb +0 -1
  414. data/spec/views/hyrax/base/show.html.erb_spec.rb +2 -2
  415. data/spec/views/hyrax/collections/_sort_and_per_page.html.erb_spec.rb +1 -1
  416. data/spec/views/hyrax/dashboard/_sidebar.html.erb_spec.rb +39 -0
  417. data/spec/views/hyrax/dashboard/collections/_sort_and_per_page.html.erb_spec.rb +1 -1
  418. data/spec/views/hyrax/file_sets/_versioning.html.erb_spec.rb +1 -0
  419. data/spec/views/hyrax/my/collections/_list_collections.html.erb_spec.rb +2 -2
  420. data/spec/views/records/edit_fields/_alt_title.html.erb_spec.rb +26 -0
  421. data/spec/views/records/edit_fields/_title.html.erb_spec.rb +24 -0
  422. data/spec/wings/active_fedora_converter_spec.rb +136 -1
  423. data/spec/wings/converter_value_mapper_spec.rb +23 -0
  424. data/spec/wings/hydra/pcdm/models/concerns/collection_valkyrie_behavior_spec.rb +41 -0
  425. data/spec/wings/hydra/pcdm/models/concerns/object_valkyrie_behavior_spec.rb +19 -0
  426. data/spec/wings/hydra/pcdm/models/concerns/pcdm_valkyrie_behavior_spec.rb +442 -0
  427. data/spec/wings/hydra/works/models/concerns/collection_valkyrie_behavior_spec.rb +22 -0
  428. data/spec/wings/hydra/works/models/concerns/file_set_valkyrie_behavior_spec.rb +90 -0
  429. data/spec/wings/hydra/works/models/concerns/work_valkyrie_behavior_spec.rb +218 -0
  430. data/spec/wings/model_transformer_spec.rb +167 -112
  431. data/spec/wings/models/concerns/collection_behavior_spec.rb +120 -0
  432. data/spec/wings/services/file_metadata_builder_spec.rb +39 -0
  433. data/spec/wings/services/id_converter_service_spec.rb +24 -0
  434. data/spec/wings/{value_mapper_spec.rb → transformer_value_mapper_spec.rb} +2 -2
  435. data/spec/wings/valkyrie/persister_spec.rb +544 -53
  436. data/spec/wings/valkyrie/query_service_spec.rb +381 -4
  437. data/spec/wings_helper.rb +4 -0
  438. data/template.rb +1 -1
  439. metadata +205 -49
  440. data/.travis.yml +0 -36
  441. data/lib/wings/resource_factory.rb +0 -8
@@ -72,20 +72,18 @@ module Hyrax
72
72
  # @return [Boolean] true if create was successful
73
73
  def create(env)
74
74
  intention = Intention.new(env.attributes)
75
- attributes = intention.sanitize_params
76
- new_env = Environment.new(env.curation_concern, env.current_ability, attributes)
77
- validate(env, intention, attributes) && apply_visibility(new_env, intention) &&
78
- next_actor.create(new_env)
75
+ env.attributes = intention.sanitize_params
76
+ validate(env, intention, env.attributes) && apply_visibility(env, intention) &&
77
+ next_actor.create(env)
79
78
  end
80
79
 
81
80
  # @param [Hyrax::Actors::Environment] env
82
81
  # @return [Boolean] true if update was successful
83
82
  def update(env)
84
83
  intention = Intention.new(env.attributes)
85
- attributes = intention.sanitize_params
86
- new_env = Environment.new(env.curation_concern, env.current_ability, attributes)
87
- validate(env, intention, attributes) && apply_visibility(new_env, intention) &&
88
- next_actor.update(new_env)
84
+ env.attributes = intention.sanitize_params
85
+ validate(env, intention, env.attributes) && apply_visibility(env, intention) &&
86
+ next_actor.update(env)
89
87
  end
90
88
 
91
89
  private
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hyrax
4
+ module Actors
5
+ ##
6
+ # Casts `env.curation_concern` from a `Valkyrie::Resource` to an
7
+ # `ActiveFedora::Base` model.
8
+ #
9
+ # If the curation concern is not a `Valkyrie::Resource` this is a
10
+ # no-op.
11
+ #
12
+ # This can be used in conjunction with `ActiveFedoraToValkyrie` to create a
13
+ # vertical boundary in the actor stack between actors that deal with
14
+ # `ActiveFedora` models and those that work on `Valkyrie::Resource` objects.
15
+ #
16
+ # @example defining a stack using both ActiveFedora and Valkyrie actors
17
+ # stack = ActionDispatch::MiddlewareStack.new.tap do |middleware|
18
+ # middleware.use ActorThatUsesActiveFedora
19
+ # middleware.use AnotherActorThatUsesActiveFedora
20
+ # middleware.use ValkyrieToActiveFedora # casts on the way up
21
+ # middleware.use ActiveFedoraToValkyrie # casts on the way down
22
+ # middleware.use ActorThatUsesValkyrie
23
+ # middleware.use AnotherActorThatUsesValkyrie
24
+ # end
25
+ #
26
+ # actor = stack.build(Hyrax::Actors::Terminator.new)
27
+ #
28
+ # @see ValkyrieToActiveFedora
29
+ class ValkyrieToActiveFedora < AbstractActor
30
+ # @param [Hyrax::Actors::Environment] env
31
+ # @return [Boolean] true
32
+ def create(env)
33
+ next_actor.create(env) && cast(env)
34
+ end
35
+
36
+ # @param [Hyrax::Actors::Environment] env
37
+ # @return [Boolean] true
38
+ def update(env)
39
+ next_actor.update(env) && cast(env)
40
+ end
41
+
42
+ # @param [Hyrax::Actors::Environment] env
43
+ # @return [Boolean] true
44
+ def destroy(env)
45
+ next_actor.destroy(env) && cast(env)
46
+ end
47
+
48
+ private
49
+
50
+ def cast(env)
51
+ return true unless env.curation_concern.is_a? Valkyrie::Resource
52
+
53
+ env.curation_concern =
54
+ Wings::ActiveFedoraConverter.convert(resource: env.curation_concern)
55
+
56
+ true
57
+ end
58
+ end
59
+ end
60
+ end
@@ -249,11 +249,12 @@ Blacklight.onLoad(function () {
249
249
  var tableRows = $('#documents table.collections-list-table tbody tr');
250
250
  var checkbox = null;
251
251
  var numRowsSelected = false;
252
+ var $modal = $('#selected-collections-delete-modal');
253
+ var $deleteWordingTarget = $modal.find('.pluralized');
252
254
  var deleteWording = {
253
- plural: 'these collections',
254
- singular: 'this collection'
255
+ plural: $modal.data("pluralForm"),
256
+ singular: $modal.data("singularForm")
255
257
  };
256
- var $deleteWordingTarget = $('#selected-collections-delete-modal .pluralized');
257
258
 
258
259
  var canDeleteAll = true;
259
260
  var selectedInputs = $('#documents table.collections-list-table tbody tr')
@@ -277,7 +278,7 @@ Blacklight.onLoad(function () {
277
278
  } else {
278
279
  $deleteWordingTarget.text(deleteWording.singular);
279
280
  }
280
- $('#selected-collections-delete-modal').modal('show');
281
+ $modal.modal('show');
281
282
  }
282
283
  });
283
284
 
@@ -4,7 +4,9 @@
4
4
  // - Add the nav-safety class to the form element.
5
5
 
6
6
  Blacklight.onLoad(function() {
7
+ var clickedTab;
7
8
  $('.nav-safety-confirm').on('click', function(evt) {
9
+ clickedTab = $(this).attr('href');
8
10
  var dirtyData = $('#nav-safety-modal[dirtyData=true]');
9
11
  if (dirtyData.length > 0) {
10
12
  evt.preventDefault();
@@ -14,9 +16,9 @@ Blacklight.onLoad(function() {
14
16
  });
15
17
 
16
18
  $('#nav-safety-dismiss').on('click', function(evt) {
17
- // evt.preventDefault();
18
19
  nav_safety_off();
19
- // $('#nav-safety-change-tab').modal('hide');
20
+ // Navigate away from active tab to clicked tab
21
+ window.location = clickedTab;
20
22
  });
21
23
 
22
24
  $('form.nav-safety').on('change', function(evt) {
@@ -22,6 +22,14 @@
22
22
  if (settings.afterAdd)
23
23
  settings.afterAdd(this, cloneElem);
24
24
  }
25
+ },
26
+ error: function (data) {
27
+ if (data.responseJSON !== undefined) {
28
+ errorMsg = data.responseJSON.description;
29
+ $('#errorMsg').text(errorMsg);
30
+ $('#proxy-deny-modal').modal('show');
31
+ return;
32
+ }
25
33
  }
26
34
  })
27
35
  return false;
@@ -17,23 +17,9 @@
17
17
 
18
18
  .fileinput-button {
19
19
  float: left;
20
- margin-right: .50em;
20
+ margin-right: 0.5em;
21
21
  overflow: hidden;
22
22
  position: relative;
23
-
24
- input {
25
- border-width: 0 0 100px 200px;
26
- border: solid transparent;
27
- cursor: pointer;
28
- direction: ltr;
29
- filter: alpha(opacity = 0);
30
- margin: 0;
31
- opacity: 0;
32
- position: absolute;
33
- right: 0;
34
- top: 0;
35
- -moz-transform: translate(-300px, 0) scale(4);
36
- }
37
23
  }
38
24
 
39
25
  // Global progress bar
@@ -661,7 +661,7 @@ button.branding-banner-remove:hover {
661
661
 
662
662
  .hyc-bl-results {
663
663
 
664
- margin: 0 0 2em;
664
+ margin: 5em 0 2em;
665
665
 
666
666
  .alert {
667
667
  margin: 0;
@@ -56,6 +56,12 @@
56
56
  }
57
57
  }
58
58
 
59
+ @media only screen and (max-width: 767px) {
60
+ .navbar-nav {
61
+ margin-left: 10px;
62
+ }
63
+ }
64
+
59
65
  .active > a {
60
66
  &,
61
67
  &:hover,
@@ -13,3 +13,14 @@
13
13
  margin-top: $padding-small-vertical;
14
14
  }
15
15
  }
16
+
17
+ .activity-display {
18
+ max-height: 100%;
19
+ overflow: scroll;
20
+ padding-bottom: 300px;
21
+ position: relative;
22
+
23
+ .activity-date {
24
+ padding-right: 130px;
25
+ }
26
+ }
@@ -1,8 +1,19 @@
1
+ // Default for smaller screens, uses mobile panel
1
2
  .viewer-wrapper {
2
- height: 500px;
3
+ height: 390px;
3
4
  }
4
5
 
5
- .viewer {
6
+ .viewer-wrapper iframe {
6
7
  height: 100%;
7
- padding: 10px;
8
+ width: 100%;
9
+ position: absolute;
10
+ top: 0;
11
+ left: 0;
8
12
  }
13
+
14
+ // Show various footer, header, left and right panels on larger screens only
15
+ @media only screen and (min-width: 640px) {
16
+ .viewer-wrapper {
17
+ height: 640px;
18
+ }
19
+ }
@@ -7,6 +7,8 @@ module Hyrax
7
7
  trail_from_referer
8
8
  else
9
9
  default_trail
10
+ add_breadcrumb_for_controller if user_signed_in?
11
+ add_breadcrumb_for_action
10
12
  end
11
13
  end
12
14
 
@@ -25,7 +25,7 @@ module Hyrax
25
25
  end
26
26
 
27
27
  def show
28
- @curation_concern ||= ActiveFedora::Base.find(params[:id])
28
+ @curation_concern ||= Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: params[:id], use_valkyrie: false)
29
29
  presenter
30
30
  query_collection_members
31
31
  end
@@ -26,7 +26,8 @@ module Hyrax
26
26
  def update
27
27
  filter_docs_with_edit_access!
28
28
  copy_visibility = params[:embargoes].values.map { |h| h[:copy_visibility] }
29
- ActiveFedora::Base.find(batch).each do |curation_concern|
29
+ af_objects = Hyrax.query_service.custom_queries.find_many_by_alternate_ids(alternate_ids: batch, use_valkyrie: false)
30
+ af_objects.each do |curation_concern|
30
31
  Hyrax::Actors::EmbargoActor.new(curation_concern).destroy
31
32
  # if the concern is a FileSet, set its visibility and skip the copy_visibility_to_files, which is built for Works
32
33
  if curation_concern.file_set?
@@ -25,7 +25,8 @@ module Hyrax
25
25
  def update
26
26
  filter_docs_with_edit_access!
27
27
  copy_visibility = params[:leases].values.map { |h| h[:copy_visibility] }
28
- ActiveFedora::Base.find(batch).each do |curation_concern|
28
+ af_objects = Hyrax.query_service.custom_queries.find_many_by_alternate_ids(alternate_ids: batch, use_valkyrie: false)
29
+ af_objects.each do |curation_concern|
29
30
  Hyrax::Actors::LeaseActor.new(curation_concern).destroy
30
31
  curation_concern.copy_visibility_to_files if copy_visibility.include?(curation_concern.id)
31
32
  end
@@ -29,6 +29,7 @@ module Hyrax
29
29
  end
30
30
 
31
31
  def send_local_file_contents
32
+ return unless stale?(last_modified: local_file_last_modified, template: false)
32
33
  self.status = 200
33
34
  prepare_local_file_headers
34
35
  # For derivatives stored on the local file system
@@ -65,7 +66,7 @@ module Hyrax
65
66
  response.headers['Content-Type'] = local_file_mime_type
66
67
  response.headers['Content-Length'] ||= local_file_size.to_s
67
68
  # Prevent Rack::ETag from calculating a digest over body
68
- response.headers['Last-Modified'] = local_file_last_modified.utc.strftime("%a, %d %b %Y %T GMT")
69
+ response.headers['Last-Modified'] = local_file_last_modified.httpdate
69
70
  self.content_type = local_file_mime_type
70
71
  end
71
72
 
@@ -38,7 +38,7 @@ module Hyrax
38
38
 
39
39
  def destroy_collection
40
40
  batch.each do |doc_id|
41
- obj = ActiveFedora::Base.find(doc_id, cast: true)
41
+ obj = Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: doc_id, use_valkyrie: false)
42
42
  obj.destroy
43
43
  end
44
44
  flash[:notice] = "Batch delete complete"
@@ -60,7 +60,7 @@ module Hyrax
60
60
  case params["update_type"]
61
61
  when "update"
62
62
  batch.each do |doc_id|
63
- update_document(ActiveFedora::Base.find(doc_id))
63
+ update_document(Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: doc_id, use_valkyrie: false))
64
64
  end
65
65
  flash[:notice] = "Batch update complete"
66
66
  after_update
@@ -82,7 +82,7 @@ module Hyrax
82
82
  end
83
83
 
84
84
  def destroy_batch
85
- batch.each { |id| ActiveFedora::Base.find(id).destroy }
85
+ batch.each { |id| Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: id, use_valkyrie: false).destroy }
86
86
  after_update
87
87
  end
88
88
 
@@ -83,7 +83,7 @@ module Hyrax
83
83
  # we pass the parent_id through a hidden field in the form and link the two after the create.
84
84
  link_parent_collection(params[:parent_id]) unless params[:parent_id].nil?
85
85
  respond_to do |format|
86
- ActiveFedora::SolrService.instance.conn.commit
86
+ Hyrax::SolrService.commit
87
87
  format.html { redirect_to edit_dashboard_collection_path(@collection), notice: t('hyrax.dashboard.my.action.collection_create_success') }
88
88
  format.json { render json: @collection, status: :created, location: dashboard_collection_path(@collection) }
89
89
  end
@@ -202,7 +202,7 @@ module Hyrax
202
202
  end
203
203
 
204
204
  def link_parent_collection(parent_id)
205
- parent = ActiveFedora::Base.find(parent_id)
205
+ parent = Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: parent_id, use_valkyrie: false)
206
206
  Hyrax::Collections::NestedCollectionPersistenceService.persist_nested_collection_for(parent: parent, child: @collection)
207
207
  end
208
208
 
@@ -279,10 +279,10 @@ module Hyrax
279
279
  public_files = []
280
280
  uploaded_file_ids.each_with_index do |ufi, i|
281
281
  if ufi.include?('public')
282
- update_logo_info(ufi, params["alttext"][i], params["linkurl"][i])
282
+ update_logo_info(ufi, params["alttext"][i], verify_linkurl(params["linkurl"][i]))
283
283
  public_files << ufi
284
284
  else # brand new one, insert in the database
285
- logo_info = create_logo_info(ufi, params["alttext"][i], params["linkurl"][i])
285
+ logo_info = create_logo_info(ufi, params["alttext"][i], verify_linkurl(params["linkurl"][i]))
286
286
  public_files << logo_info.local_path
287
287
  end
288
288
  end
@@ -375,7 +375,7 @@ module Hyrax
375
375
 
376
376
  def remove_members_from_collection
377
377
  batch.each do |pid|
378
- work = ActiveFedora::Base.find(pid)
378
+ work = Hyrax.query_service.find_by_alternate_identifier(alternate_identifier: pid, use_valkyrie: false)
379
379
  work.member_of_collections.delete @collection
380
380
  work.save!
381
381
  end
@@ -458,6 +458,17 @@ module Hyrax
458
458
  def params_for_query
459
459
  params.merge(q: params[:cq])
460
460
  end
461
+
462
+ # Only accept HTTP|HTTPS urls;
463
+ # @return <String> the url
464
+ def verify_linkurl(linkurl)
465
+ url = Loofah.scrub_fragment(linkurl, :prune).to_s
466
+ url if valid_url?(url)
467
+ end
468
+
469
+ def valid_url?(url)
470
+ (url =~ URI.regexp(['http', 'https']))
471
+ end
461
472
  end
462
473
  end
463
474
  end
@@ -6,6 +6,15 @@ module Hyrax
6
6
  before_action :authenticate_user!
7
7
  before_action :build_breadcrumbs, only: [:show]
8
8
 
9
+ ##
10
+ # @!attribute [rw] sidebar_partials
11
+ # @return [Hash]
12
+ #
13
+ # @example Add a custom partial to the tasks sidebar block
14
+ # Hyrax::DashboardController.sidebar_partials[:tasks] << "hyrax/dashboard/sidebar/custom_task"
15
+ class_attribute :sidebar_partials
16
+ self.sidebar_partials = { activity: [], configuration: [], repository_content: [], tasks: [] }
17
+
9
18
  def show
10
19
  if can? :read, :admin_dashboard
11
20
  @presenter = Hyrax::Admin::DashboardPresenter.new
@@ -3,7 +3,6 @@ module Hyrax
3
3
  include DenyAccessOverrideBehavior
4
4
 
5
5
  before_action :authenticate_user!
6
- before_action :validate_users, only: :create
7
6
 
8
7
  layout :decide_layout
9
8
 
@@ -17,7 +16,10 @@ module Hyrax
17
16
  def create
18
17
  grantor = authorize_and_return_grantor
19
18
  grantee = ::User.from_url_component(params[:grantee_id])
20
- if grantor.can_receive_deposits_from.include?(grantee)
19
+
20
+ if grantor == grantee
21
+ render_json_response(response_type: :unprocessable_entity, message: view_context.t('hyrax.dashboard.proxy_add_deny'))
22
+ elsif grantor.can_receive_deposits_from.include?(grantee)
21
23
  head :ok
22
24
  else
23
25
  grantor.can_receive_deposits_from << grantee
@@ -32,10 +34,6 @@ module Hyrax
32
34
  head :ok
33
35
  end
34
36
 
35
- def validate_users
36
- head :ok if params[:user_id] == params[:grantee_id]
37
- end
38
-
39
37
  private
40
38
 
41
39
  def authorize_and_return_grantor
@@ -18,7 +18,7 @@ module Hyrax
18
18
  # For derivatives stored on the local file system
19
19
  send_local_content
20
20
  else
21
- raise ActiveFedora::ObjectNotFoundError
21
+ raise Hyrax::ObjectNotFoundError
22
22
  end
23
23
  end
24
24