curation_concerns 0.1.0 → 0.2.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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -9
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +185 -0
  5. data/.travis.yml +0 -10
  6. data/CONTRIBUTING.md +117 -0
  7. data/Gemfile +5 -2
  8. data/README.md +18 -11
  9. data/Rakefile +23 -11
  10. data/VERSION +1 -1
  11. data/app/assets/images/audio.png +0 -0
  12. data/app/assets/images/loading.gif +0 -0
  13. data/app/assets/images/progressbar.gif +0 -0
  14. data/app/assets/javascripts/curation_concerns/application.js +2 -8
  15. data/app/assets/javascripts/curation_concerns/curation_concerns.js +1 -15
  16. data/app/assets/javascripts/curation_concerns/facet_mine.js +4 -10
  17. data/app/assets/javascripts/curation_concerns/fileupload.js +6 -0
  18. data/app/assets/javascripts/curation_concerns/uploader.js +183 -0
  19. data/app/assets/stylesheets/curation_concerns/_curation_concerns.scss +3 -0
  20. data/app/assets/stylesheets/curation_concerns/_positioning.scss +6 -0
  21. data/app/assets/stylesheets/curation_concerns/fileupload/jquery.fileupload-ui.scss +86 -0
  22. data/app/assets/stylesheets/curation_concerns/fileupload/thumbnail-scaling.css +3 -0
  23. data/app/assets/stylesheets/curation_concerns/fileupload.scss +48 -0
  24. data/app/assets/stylesheets/curation_concerns/modules/attributes.scss +10 -0
  25. data/app/assets/stylesheets/curation_concerns/modules/embargoes.scss +1 -1
  26. data/app/assets/stylesheets/curation_concerns/modules/forms.scss +0 -10
  27. data/app/assets/stylesheets/curation_concerns/modules/search_results.scss +7 -8
  28. data/app/controllers/concerns/curation_concerns/api.rb +77 -0
  29. data/app/controllers/concerns/curation_concerns/application_controller_behavior.rb +30 -12
  30. data/app/controllers/concerns/curation_concerns/catalog_controller.rb +9 -276
  31. data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +51 -40
  32. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +60 -30
  33. data/app/controllers/concerns/curation_concerns/download_behavior.rb +51 -37
  34. data/app/controllers/concerns/curation_concerns/embargoes_controller_behavior.rb +29 -29
  35. data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +198 -0
  36. data/app/controllers/concerns/curation_concerns/leases_controller_behavior.rb +27 -20
  37. data/app/controllers/concerns/curation_concerns/manages_embargoes.rb +2 -7
  38. data/app/controllers/concerns/curation_concerns/parent_container.rb +20 -4
  39. data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +48 -0
  40. data/app/controllers/concerns/curation_concerns/single_use_links_viewer_controller_behavior.rb +75 -0
  41. data/app/controllers/concerns/curation_concerns/themed_layout_controller.rb +0 -1
  42. data/app/controllers/concerns/curation_concerns/upload_sets_controller_behavior.rb +38 -0
  43. data/app/controllers/concerns/curation_concerns/welcome_controller_behavior.rb +8 -0
  44. data/app/controllers/concerns/curation_concerns/without_namespace.rb +2 -1
  45. data/app/controllers/curation_concerns/classify_concerns_controller.rb +9 -9
  46. data/app/controllers/curation_concerns/file_sets_controller.rb +5 -0
  47. data/app/controllers/curation_concerns/permissions_controller.rb +2 -3
  48. data/app/controllers/curation_concerns/single_use_links_controller.rb +5 -0
  49. data/app/controllers/curation_concerns/single_use_links_viewer_controller.rb +21 -0
  50. data/app/controllers/downloads_controller.rb +0 -1
  51. data/app/controllers/embargoes_controller.rb +0 -2
  52. data/app/controllers/leases_controller.rb +0 -2
  53. data/app/controllers/registrations_controller.rb +1 -2
  54. data/app/controllers/upload_sets_controller.rb +3 -0
  55. data/app/controllers/welcome_controller.rb +3 -0
  56. data/app/forms/curation_concerns/forms/collection_edit_form.rb +18 -2
  57. data/app/forms/curation_concerns/forms/file_set_edit_form.rb +15 -0
  58. data/app/forms/curation_concerns/forms/work_form.rb +57 -0
  59. data/app/helpers/curation_concerns/ability_helper.rb +24 -24
  60. data/app/helpers/curation_concerns/catalog_helper.rb +9 -8
  61. data/app/helpers/curation_concerns/collections_helper.rb +9 -12
  62. data/app/helpers/curation_concerns/embargo_helper.rb +0 -2
  63. data/app/helpers/curation_concerns/file_set_helper.rb +31 -0
  64. data/app/helpers/curation_concerns/lease_helper.rb +0 -3
  65. data/app/helpers/curation_concerns/main_app_helpers.rb +1 -3
  66. data/app/helpers/curation_concerns/render_constraints_helper.rb +5 -5
  67. data/app/helpers/curation_concerns/search_paths_helper.rb +5 -7
  68. data/app/helpers/curation_concerns/title_helper.rb +3 -7
  69. data/app/helpers/curation_concerns/url_helper.rb +4 -6
  70. data/app/inputs/multifile_input.rb +8 -0
  71. data/app/jobs/visibility_copy_job.rb +22 -0
  72. data/app/presenters/curation_concerns/collection_presenter.rb +14 -32
  73. data/app/presenters/curation_concerns/embargo_presenter.rb +26 -0
  74. data/app/presenters/curation_concerns/file_set_presenter.rb +34 -0
  75. data/app/presenters/curation_concerns/lease_presenter.rb +30 -0
  76. data/app/presenters/curation_concerns/model_proxy.rb +27 -0
  77. data/app/presenters/curation_concerns/permission_badge.rb +61 -0
  78. data/app/presenters/curation_concerns/presenter_factory.rb +45 -0
  79. data/app/presenters/curation_concerns/presents_attributes.rb +25 -0
  80. data/app/presenters/curation_concerns/version_list_presenter.rb +18 -0
  81. data/app/presenters/curation_concerns/version_presenter.rb +27 -0
  82. data/app/presenters/curation_concerns/work_show_presenter.rb +33 -0
  83. data/app/renderers/curation_concerns/attribute_renderer.rb +75 -0
  84. data/app/search_builders/curation_concerns/deactivated_embargo_search_builder.rb +10 -0
  85. data/app/search_builders/curation_concerns/deactivated_lease_search_builder.rb +10 -0
  86. data/app/search_builders/curation_concerns/embargo_search_builder.rb +23 -0
  87. data/app/search_builders/curation_concerns/expired_embargo_search_builder.rb +11 -0
  88. data/app/search_builders/curation_concerns/expired_lease_search_builder.rb +11 -0
  89. data/app/search_builders/curation_concerns/lease_search_builder.rb +23 -0
  90. data/app/search_builders/curation_concerns/search_builder.rb +10 -16
  91. data/app/services/curation_concerns/curation_concern.rb +0 -5
  92. data/app/services/curation_concerns/embargo_service.rb +26 -4
  93. data/app/services/curation_concerns/lease_service.rb +14 -5
  94. data/app/services/curation_concerns/parent_service.rb +19 -0
  95. data/app/services/curation_concerns/restriction_service.rb +24 -0
  96. data/app/services/rights_service.rb +14 -0
  97. data/app/views/catalog/_action_menu_partials/_collection.html.erb +1 -1
  98. data/app/views/catalog/_action_menu_partials/_default.html.erb +5 -3
  99. data/app/views/catalog/_document_list.html.erb +1 -1
  100. data/app/views/catalog/index.html.erb +1 -35
  101. data/app/views/collections/_edit_descriptions.html.erb +3 -4
  102. data/app/views/collections/_form.html.erb +1 -1
  103. data/app/views/collections/_form_permission.html.erb +1 -1
  104. data/app/views/collections/_search_form.html.erb +10 -0
  105. data/app/views/collections/_show_actions.html.erb +3 -3
  106. data/app/views/collections/_sort_and_per_page.html.erb +2 -2
  107. data/app/views/collections/show.html.erb +6 -6
  108. data/app/views/curation_concerns/base/_attribute_rows.html.erb +7 -0
  109. data/app/views/curation_concerns/base/_attributes.html.erb +6 -13
  110. data/app/views/curation_concerns/base/_form.html.erb +4 -5
  111. data/app/views/curation_concerns/base/_form_descriptive_fields.erb +2 -4
  112. data/app/views/curation_concerns/base/_form_files_and_links.html.erb +3 -5
  113. data/app/views/curation_concerns/base/_form_permission.html.erb +13 -26
  114. data/app/views/curation_concerns/base/_form_permission_note.html.erb +15 -0
  115. data/app/views/curation_concerns/base/_form_permission_under_embargo.html.erb +2 -2
  116. data/app/views/curation_concerns/base/_form_permission_under_lease.html.erb +2 -2
  117. data/app/views/curation_concerns/base/_form_representative_image.html.erb +16 -4
  118. data/app/views/curation_concerns/base/_form_rights.html.erb +17 -0
  119. data/app/views/curation_concerns/base/_form_supplementary_fields.html.erb +4 -9
  120. data/app/views/curation_concerns/base/_related_files.html.erb +4 -4
  121. data/app/views/curation_concerns/base/_representative_media.html.erb +2 -4
  122. data/app/views/curation_concerns/base/_versioning.html.erb +23 -0
  123. data/app/views/curation_concerns/base/show.html.erb +13 -10
  124. data/app/views/curation_concerns/base/show.json.jbuilder +1 -0
  125. data/app/views/curation_concerns/base/versions.html.erb +6 -0
  126. data/app/views/curation_concerns/file_sets/_actions.html.erb +16 -0
  127. data/app/views/curation_concerns/file_sets/_file_set.html.erb +12 -0
  128. data/app/views/curation_concerns/{generic_files → file_sets}/_form.html.erb +7 -7
  129. data/app/views/curation_concerns/file_sets/_multiple_upload.html.erb +3 -0
  130. data/app/views/curation_concerns/{generic_files → file_sets}/edit.html.erb +0 -0
  131. data/app/views/curation_concerns/file_sets/jq_upload.json.jbuilder +8 -0
  132. data/app/views/curation_concerns/file_sets/media_display/_audio.html.erb +6 -0
  133. data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +4 -0
  134. data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +8 -0
  135. data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +7 -0
  136. data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +7 -0
  137. data/app/views/curation_concerns/file_sets/media_display/_video.html.erb +6 -0
  138. data/app/views/curation_concerns/file_sets/show.html.erb +15 -0
  139. data/app/views/curation_concerns/file_sets/show.json.jbuilder +1 -0
  140. data/app/views/curation_concerns/file_sets/upload/_alerts.html.erb +19 -0
  141. data/app/views/curation_concerns/file_sets/upload/_form.html.erb +6 -0
  142. data/app/views/curation_concerns/file_sets/upload/_form_fields.html.erb +45 -0
  143. data/app/views/curation_concerns/file_sets/upload/_script_templates.html.erb +61 -0
  144. data/app/views/curation_concerns/single_use_links/new_download.html.erb +5 -0
  145. data/app/views/curation_concerns/single_use_links/new_show.html.erb +5 -0
  146. data/app/views/curation_concerns/single_use_links_viewer/show.html.erb +10 -0
  147. data/app/views/error/single_use_error.html.erb +19 -0
  148. data/app/views/layouts/error.html.erb +33 -0
  149. data/app/views/leases/_list_expired_active_leases.html.erb +6 -1
  150. data/app/views/records/_rights_modal.html.erb +1 -0
  151. data/app/views/records/edit_fields/_default.html.erb +5 -0
  152. data/app/views/records/show_fields/_default.html.erb +6 -0
  153. data/app/views/shared/_add_content.html.erb +2 -14
  154. data/app/views/shared/_add_works.html.erb +14 -0
  155. data/app/views/shared/_my_actions.html.erb +9 -1
  156. data/app/views/shared/_site_actions.html.erb +1 -1
  157. data/app/views/shared/_site_search.html.erb +7 -7
  158. data/app/views/upload_sets/_edit.js.erb +15 -0
  159. data/app/views/upload_sets/_metadata.html.erb +50 -0
  160. data/app/views/upload_sets/_more_metadata.html.erb +7 -0
  161. data/app/views/upload_sets/edit.html.erb +26 -0
  162. data/app/views/{catalog/_home_text.html.erb → welcome/index.html.erb} +1 -0
  163. data/config/initializers/simple_form.rb +14 -0
  164. data/config/jetty.yml +5 -0
  165. data/config/locales/curation_concerns.en.yml +25 -4
  166. data/config/routes.rb +5 -0
  167. data/curation_concerns.gemspec +4 -6
  168. data/lib/curation_concerns/callbacks/registry.rb +48 -0
  169. data/lib/curation_concerns/callbacks.rb +26 -0
  170. data/lib/curation_concerns/controller_resource.rb +4 -4
  171. data/lib/curation_concerns/engine.rb +4 -2
  172. data/lib/curation_concerns/rails/routes.rb +23 -19
  173. data/lib/curation_concerns/single_use_error.rb +3 -0
  174. data/lib/curation_concerns/spec_support.rb +0 -2
  175. data/lib/curation_concerns/version.rb +1 -1
  176. data/lib/curation_concerns.rb +1 -2
  177. data/lib/generators/curation_concerns/install_generator.rb +34 -30
  178. data/lib/generators/curation_concerns/templates/catalog_controller.rb +236 -0
  179. data/lib/generators/curation_concerns/templates/config/authorities/rights.yml +19 -0
  180. data/lib/generators/curation_concerns/templates/{curation_concerns.css.scss → curation_concerns.scss} +0 -0
  181. data/lib/generators/curation_concerns/work/templates/actor_spec.rb.erb +1 -1
  182. data/lib/generators/curation_concerns/work/templates/controller_spec.rb.erb +1 -1
  183. data/lib/generators/curation_concerns/work/templates/form.rb.erb +8 -0
  184. data/lib/generators/curation_concerns/work/templates/form_spec.rb.erb +10 -0
  185. data/lib/generators/curation_concerns/work/templates/model.rb.erb +2 -2
  186. data/lib/generators/curation_concerns/work/templates/model_spec.rb.erb +1 -1
  187. data/lib/generators/curation_concerns/work/work_generator.rb +31 -26
  188. data/spec/abilities/collection_abilities_spec.rb +13 -13
  189. data/spec/abilities/embargo_and_lease_ability_spec.rb +23 -0
  190. data/spec/abilities/file_set_abilities_spec.rb +67 -0
  191. data/spec/abilities/generic_work_abilities_spec.rb +12 -12
  192. data/spec/actors/curation_concerns/embargo_actor_spec.rb +38 -0
  193. data/spec/actors/curation_concerns/file_set_actor_spec.rb +180 -0
  194. data/spec/actors/curation_concerns/lease_actor_spec.rb +39 -0
  195. data/spec/actors/curation_concerns/manages_embargoes_actor_spec.rb +44 -38
  196. data/spec/actors/curation_concerns/work_actor_spec.rb +121 -63
  197. data/spec/controllers/catalog_controller_spec.rb +30 -32
  198. data/spec/controllers/curation_concerns/classify_concerns_controller_spec.rb +2 -3
  199. data/spec/controllers/curation_concerns/collections_controller_spec.rb +93 -76
  200. data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +106 -0
  201. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +237 -0
  202. data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +85 -0
  203. data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +84 -72
  204. data/spec/controllers/curation_concerns/permissions_controller_spec.rb +8 -11
  205. data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +79 -0
  206. data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +74 -0
  207. data/spec/controllers/downloads_controller_spec.rb +49 -24
  208. data/spec/controllers/embargoes_controller_spec.rb +42 -51
  209. data/spec/controllers/leases_controller_spec.rb +53 -42
  210. data/spec/controllers/upload_sets_controller_spec.rb +76 -0
  211. data/spec/controllers/welcome_controller_spec.rb +12 -0
  212. data/spec/factories/collections.rb +5 -1
  213. data/spec/factories/{generic_files.rb → file_sets.rb} +6 -6
  214. data/spec/factories/generic_works.rb +5 -6
  215. data/spec/factories/users.rb +2 -4
  216. data/spec/features/add_file_spec.rb +11 -12
  217. data/spec/features/catalog_search_spec.rb +43 -0
  218. data/spec/features/collection_spec.rb +61 -46
  219. data/spec/features/create_work_spec.rb +26 -19
  220. data/spec/features/embargo_spec.rb +13 -12
  221. data/spec/features/lease_spec.rb +15 -16
  222. data/spec/features/update_file_spec.rb +11 -13
  223. data/spec/features/work_generator_spec.rb +34 -26
  224. data/spec/{helpers/curation_concerns/.keep → fixtures/empty_file.txt} +0 -0
  225. data/spec/fixtures/test.pdf +0 -0
  226. data/spec/forms/collection_edit_form_spec.rb +53 -9
  227. data/spec/forms/file_set_edit_form_spec.rb +53 -0
  228. data/spec/forms/work_form_spec.rb +54 -0
  229. data/spec/helpers/catalog_helper_spec.rb +9 -10
  230. data/spec/helpers/configuration_helper_spec.rb +1 -2
  231. data/spec/helpers/curation_concerns/collections_helper_spec.rb +8 -9
  232. data/spec/helpers/curation_concerns/file_set_helper_spec.rb +61 -0
  233. data/spec/helpers/render_constraints_helper_spec.rb +4 -4
  234. data/spec/helpers/url_helper_spec.rb +8 -7
  235. data/spec/indexers/collection_indexer_spec.rb +14 -0
  236. data/spec/indexers/file_set_indexing_service_spec.rb +69 -0
  237. data/spec/indexers/generic_work_indexing_service_spec.rb +22 -0
  238. data/spec/inputs/multifile_input_spec.rb +32 -0
  239. data/spec/jobs/active_fedora_id_based_job_spec.rb +10 -8
  240. data/spec/jobs/audit_job_spec.rb +28 -20
  241. data/spec/jobs/characterize_job_spec.rb +10 -15
  242. data/spec/jobs/create_derivatives_job_spec.rb +11 -9
  243. data/spec/jobs/import_url_job_spec.rb +14 -21
  244. data/spec/jobs/ingest_file_job_spec.rb +45 -0
  245. data/spec/jobs/ingest_local_file_job_spec.rb +13 -15
  246. data/spec/jobs/upload_set_update_job_spec.rb +30 -0
  247. data/spec/jobs/visibility_copy_job_spec.rb +61 -0
  248. data/spec/lib/curation_concerns/callbacks/registry_spec.rb +54 -0
  249. data/spec/lib/curation_concerns/callbacks_spec.rb +27 -0
  250. data/spec/lib/curation_concerns/messages_spec.rb +29 -30
  251. data/spec/lib/curation_concerns/readable_permissions_spec.rb +18 -20
  252. data/spec/lib/curation_concerns/writable_permissions_spec.rb +2 -4
  253. data/spec/matchers/metadata_field_matchers.rb +1 -1
  254. data/spec/matchers/response_matchers.rb +2 -2
  255. data/spec/matchers.rb +3 -2
  256. data/spec/models/checksum_audit_log_spec.rb +37 -32
  257. data/spec/models/curation_concerns/collection_behavior_spec.rb +50 -37
  258. data/spec/models/curation_concerns/file_set/derivatives_spec.rb +84 -0
  259. data/spec/models/curation_concerns/work_behavior_spec.rb +53 -0
  260. data/spec/models/file_set_spec.rb +601 -0
  261. data/spec/models/generic_work_spec.rb +15 -14
  262. data/spec/models/single_use_link_spec.rb +69 -0
  263. data/spec/models/solr_document_spec.rb +67 -0
  264. data/spec/models/upload_set_spec.rb +39 -0
  265. data/spec/models/user_spec.rb +7 -8
  266. data/spec/presenters/curation_concerns/collection_presenter_spec.rb +8 -24
  267. data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +59 -0
  268. data/spec/presenters/curation_concerns/permission_badge_spec.rb +29 -0
  269. data/spec/presenters/curation_concerns/presenter_factory_spec.rb +29 -0
  270. data/spec/presenters/curation_concerns/version_list_presenter_spec.rb +32 -0
  271. data/spec/presenters/curation_concerns/version_presenter_spec.rb +51 -0
  272. data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +35 -0
  273. data/spec/presenters/embargo_presenter_spec.rb +48 -0
  274. data/spec/presenters/lease_presenter_spec.rb +48 -0
  275. data/spec/renderers/curation_concerns/attribute_renderer_spec.rb +14 -0
  276. data/spec/routing/curation_concerns/routes_spec.rb +38 -12
  277. data/spec/routing/route_spec.rb +38 -39
  278. data/spec/search_builders/curation_concerns/embargo_search_builder_spec.rb +17 -0
  279. data/spec/search_builders/curation_concerns/lease_search_builder_spec.rb +17 -0
  280. data/spec/search_builders/curation_concerns/search_builder_spec.rb +60 -0
  281. data/spec/services/derivative_path_spec.rb +16 -0
  282. data/spec/services/embargo_service_spec.rb +15 -14
  283. data/spec/services/file_set_audit_service_spec.rb +71 -0
  284. data/spec/services/lease_service_spec.rb +13 -13
  285. data/spec/services/lock_manager_spec.rb +12 -0
  286. data/spec/services/parent_service_spec.rb +13 -0
  287. data/spec/services/persist_derivatives_spec.rb +24 -0
  288. data/spec/services/persist_directly_contained_output_file_service_spec.rb +14 -0
  289. data/spec/services/repository_audit_service_spec.rb +8 -7
  290. data/spec/services/rights_service_spec.rb +17 -0
  291. data/spec/services/thumbnail_path_service_spec.rb +43 -0
  292. data/spec/services/versioning_service_spec.rb +8 -9
  293. data/spec/spec_helper.rb +21 -13
  294. data/spec/support/curation_concerns/factory_helpers.rb +1 -0
  295. data/spec/support/features/fixture_file_upload.rb +3 -1
  296. data/spec/support/features/session_helpers.rb +3 -4
  297. data/spec/support/features.rb +1 -4
  298. data/spec/support/input_support.rb +11 -0
  299. data/spec/support/matchers/api_responses.rb +22 -0
  300. data/spec/support/shared/shared_examples_has_dc_metadata.rb +0 -2
  301. data/spec/support/shared/shared_examples_is_embargoable.rb +1 -3
  302. data/spec/support/shared/shared_examples_with_access_rights.rb +13 -16
  303. data/spec/tasks/rake_spec.rb +9 -11
  304. data/spec/test_app_templates/Gemfile.extra +4 -1
  305. data/spec/test_app_templates/lib/generators/test_app_generator.rb +3 -35
  306. data/spec/views/catalog/index.html.erb_spec.rb +7 -10
  307. data/spec/views/curation_concerns/base/_attributes.html.erb_spec.rb +9 -6
  308. data/spec/views/curation_concerns/base/_form_permission.html.erb_spec.rb +13 -0
  309. data/spec/views/curation_concerns/base/show.html.erb_spec.rb +35 -15
  310. data/spec/views/curation_concerns/base/show.json.jbuilder_spec.rb +21 -0
  311. data/spec/views/curation_concerns/file_sets/_file_set.html.erb_spec.rb +37 -0
  312. data/spec/views/curation_concerns/file_sets/show.json.jbuilder_spec.rb +21 -0
  313. data/spec/views/curation_concerns/permissions/confirm.html.erb_spec.rb +6 -6
  314. data/spec/views/error/single_use_error.html.erb_spec.rb +8 -0
  315. data/spec/views/layouts/error.html.erb_spec.rb +8 -0
  316. data/spec/views/shared/_add_content.html.erb_spec.rb +33 -20
  317. data/spec/views/shared/_my_actions.html.erb_spec.rb +18 -6
  318. data/spec/views/single_use_links/new_download.html.erb_spec.rb +29 -0
  319. data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +32 -0
  320. data/tasks/jetty.rake +1 -1
  321. data/vendor/assets/javascrips/fileupload/jquery.fileupload-process.js +175 -0
  322. data/vendor/assets/javascrips/fileupload/jquery.fileupload-ui.js +710 -0
  323. data/vendor/assets/javascrips/fileupload/jquery.fileupload-validate.js +122 -0
  324. data/vendor/assets/javascrips/fileupload/jquery.fileupload.js +1477 -0
  325. data/vendor/assets/javascrips/fileupload/locale.js +27 -0
  326. data/vendor/assets/javascrips/fileupload/tmpl.js +87 -0
  327. metadata +242 -213
  328. data/app/assets/javascripts/curation_concerns/help_modal.js +0 -36
  329. data/app/assets/javascripts/curation_concerns/link_groups.js.coffee +0 -123
  330. data/app/assets/javascripts/curation_concerns/link_users.js.coffee +0 -126
  331. data/app/assets/javascripts/curation_concerns/proxy_rights.js.coffee +0 -95
  332. data/app/assets/javascripts/curation_concerns/proxy_submission.js +0 -23
  333. data/app/assets/javascripts/curation_concerns/select_works.js.coffee +0 -20
  334. data/app/controllers/catalog_controller.rb +0 -3
  335. data/app/controllers/concerns/curation_concerns/generic_files_controller_behavior.rb +0 -149
  336. data/app/controllers/curation_concerns/generic_files_controller.rb +0 -13
  337. data/app/datastreams/curation_concerns/generic_work_rdf_properties.rb +0 -57
  338. data/app/datastreams/generic_work_metadata.rb +0 -3
  339. data/app/forms/curation_concerns/forms/generic_file_edit_form.rb +0 -15
  340. data/app/forms/curation_concerns/forms/generic_work_edit_form.rb +0 -9
  341. data/app/helpers/curation_concerns/attribute_helper.rb +0 -67
  342. data/app/helpers/curation_concerns/generic_file_helper.rb +0 -19
  343. data/app/helpers/curation_concerns/thumbnail_helper.rb +0 -11
  344. data/app/presenters/curation_concerns/generic_file_presenter.rb +0 -14
  345. data/app/presenters/curation_concerns/generic_work_presenter.rb +0 -13
  346. data/app/views/catalog/_index_default.html.erb +0 -17
  347. data/app/views/collections/_form_representative_image.html.erb +0 -13
  348. data/app/views/collections/_identifier_and_action.html.erb +0 -15
  349. data/app/views/curation_concerns/base/_form_content_license.html.erb +0 -16
  350. data/app/views/curation_concerns/base/_form_editors.html.erb +0 -15
  351. data/app/views/curation_concerns/generic_files/_actions.html.erb +0 -16
  352. data/app/views/curation_concerns/generic_files/_generic_file.html.erb +0 -12
  353. data/app/views/curation_concerns/generic_files/_media_display.html.erb +0 -19
  354. data/app/views/curation_concerns/generic_files/jq_upload.json.jbuilder +0 -8
  355. data/app/views/curation_concerns/generic_files/show.html.erb +0 -15
  356. data/app/workers/visibility_copy_worker.rb +0 -30
  357. data/curation_concerns-models/.gitignore +0 -17
  358. data/curation_concerns-models/Gemfile +0 -4
  359. data/curation_concerns-models/LICENSE.md +0 -177
  360. data/curation_concerns-models/README.md +0 -42
  361. data/curation_concerns-models/Rakefile +0 -1
  362. data/curation_concerns-models/app/actors/concerns/curation_concerns/manages_embargoes_actor.rb +0 -99
  363. data/curation_concerns-models/app/actors/curation_concerns/base_actor.rb +0 -90
  364. data/curation_concerns-models/app/actors/curation_concerns/generic_file_actor.rb +0 -150
  365. data/curation_concerns-models/app/actors/curation_concerns/work_actor_behavior.rb +0 -88
  366. data/curation_concerns-models/app/jobs/active_fedora_id_based_job.rb +0 -22
  367. data/curation_concerns-models/app/jobs/active_fedora_pid_based_job.rb +0 -6
  368. data/curation_concerns-models/app/jobs/audit_job.rb +0 -58
  369. data/curation_concerns-models/app/jobs/characterize_job.rb +0 -11
  370. data/curation_concerns-models/app/jobs/copy_permissions_job.rb +0 -24
  371. data/curation_concerns-models/app/jobs/create_derivatives_job.rb +0 -15
  372. data/curation_concerns-models/app/jobs/import_url_job.rb +0 -56
  373. data/curation_concerns-models/app/jobs/ingest_local_file_job.rb +0 -48
  374. data/curation_concerns-models/app/jobs/resolrize_job.rb +0 -9
  375. data/curation_concerns-models/app/models/checksum_audit_log.rb +0 -21
  376. data/curation_concerns-models/app/models/concerns/curation_concerns/ability.rb +0 -34
  377. data/curation_concerns-models/app/models/concerns/curation_concerns/basic_metadata.rb +0 -87
  378. data/curation_concerns-models/app/models/concerns/curation_concerns/collection_behavior.rb +0 -47
  379. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/belongs_to_works.rb +0 -53
  380. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/characterization.rb +0 -89
  381. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/content.rb +0 -8
  382. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/export.rb +0 -343
  383. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/full_text_indexing.rb +0 -12
  384. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/indexing.rb +0 -14
  385. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/versions.rb +0 -16
  386. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file.rb +0 -5
  387. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file_behavior.rb +0 -44
  388. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_work_behavior.rb +0 -38
  389. data/curation_concerns-models/app/models/concerns/curation_concerns/has_representative.rb +0 -14
  390. data/curation_concerns-models/app/models/concerns/curation_concerns/human_readable_type.rb +0 -23
  391. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/readable.rb +0 -19
  392. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/writable.rb +0 -75
  393. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions.rb +0 -7
  394. data/curation_concerns-models/app/models/concerns/curation_concerns/serializers.rb +0 -15
  395. data/curation_concerns-models/app/models/concerns/curation_concerns/solr_document_behavior.rb +0 -135
  396. data/curation_concerns-models/app/models/concerns/curation_concerns/user.rb +0 -65
  397. data/curation_concerns-models/app/models/concerns/curation_concerns/with_basic_metadata.rb +0 -98
  398. data/curation_concerns-models/app/models/concerns/curation_concerns/with_generic_files.rb +0 -29
  399. data/curation_concerns-models/app/models/curation_concerns/classify_concern.rb +0 -47
  400. data/curation_concerns-models/app/models/curation_concerns/quick_classification_query.rb +0 -31
  401. data/curation_concerns-models/app/models/datastreams/fits_datastream.rb +0 -148
  402. data/curation_concerns-models/app/models/version_committer.rb +0 -2
  403. data/curation_concerns-models/app/services/curation_concerns/characterization_service.rb +0 -71
  404. data/curation_concerns-models/app/services/curation_concerns/full_text_extraction_service.rb +0 -38
  405. data/curation_concerns-models/app/services/curation_concerns/generic_file_audit_service.rb +0 -85
  406. data/curation_concerns-models/app/services/curation_concerns/generic_file_indexing_service.rb +0 -14
  407. data/curation_concerns-models/app/services/curation_concerns/generic_work_indexing_service.rb +0 -16
  408. data/curation_concerns-models/app/services/curation_concerns/noid.rb +0 -23
  409. data/curation_concerns-models/app/services/curation_concerns/repository_audit_service.rb +0 -9
  410. data/curation_concerns-models/app/services/curation_concerns/versioning_service.rb +0 -27
  411. data/curation_concerns-models/config/locales/curation_concerns.en.yml +0 -6
  412. data/curation_concerns-models/curation_concerns-models.gemspec +0 -34
  413. data/curation_concerns-models/lib/curation_concerns/messages.rb +0 -66
  414. data/curation_concerns-models/lib/curation_concerns/models/engine.rb +0 -61
  415. data/curation_concerns-models/lib/curation_concerns/models/resque.rb +0 -36
  416. data/curation_concerns-models/lib/curation_concerns/models/utils.rb +0 -22
  417. data/curation_concerns-models/lib/curation_concerns/models/version.rb +0 -5
  418. data/curation_concerns-models/lib/curation_concerns/models.rb +0 -32
  419. data/curation_concerns-models/lib/generators/curation_concerns/models/abstract_migration_generator.rb +0 -30
  420. data/curation_concerns-models/lib/generators/curation_concerns/models/clamav_generator.rb +0 -19
  421. data/curation_concerns-models/lib/generators/curation_concerns/models/fulltext_generator.rb +0 -28
  422. data/curation_concerns-models/lib/generators/curation_concerns/models/install_generator.rb +0 -70
  423. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/collection.rb +0 -4
  424. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/generic_file.rb +0 -4
  425. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/clamav.rb +0 -1
  426. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/curation_concerns.rb +0 -123
  427. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/mime_types.rb +0 -6
  428. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis.yml +0 -9
  429. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis_config.rb +0 -32
  430. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque-pool.yml +0 -1
  431. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_admin.rb +0 -10
  432. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_config.rb +0 -5
  433. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_checksum_audit_logs.rb +0 -19
  434. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_version_committers.rb +0 -15
  435. data/curation_concerns-models/lib/tasks/curation_concerns-models_tasks.rake +0 -75
  436. data/curation_concerns-models/lib/tasks/migrate.rake +0 -13
  437. data/curation_concerns-models/lib/tasks/resque.rake +0 -13
  438. data/curation_concerns-models/lib/tasks/solr_reindex.rake +0 -8
  439. data/lib/curation_concerns/configuration.rb +0 -74
  440. data/lib/generators/curation_concerns/templates/curation_concerns_config.rb +0 -2
  441. data/solr_conf/conf/solrconfig.xml +0 -223
  442. data/spec/abilities/generic_file_abilities_spec.rb +0 -62
  443. data/spec/actors/curation_concerns/generic_file_actor_spec.rb +0 -116
  444. data/spec/controllers/curation_concerns/generic_files_controller_spec.rb +0 -251
  445. data/spec/forms/generic_file_edit_form_spec.rb +0 -33
  446. data/spec/helpers/thumbnail_helper_spec.rb +0 -21
  447. data/spec/jobs/copy_permissions_job_spec.rb +0 -49
  448. data/spec/jobs/curation_concerns_resque_queue_spec.rb +0 -49
  449. data/spec/models/curation_concerns/generic_file/derivatives_spec.rb +0 -88
  450. data/spec/models/curation_concerns/generic_work_behavior_spec.rb +0 -35
  451. data/spec/models/fits_datastream_spec.rb +0 -127
  452. data/spec/models/generic_file_spec.rb +0 -619
  453. data/spec/presenters/curation_concerns/generic_file_presenter_spec.rb +0 -16
  454. data/spec/services/characterization_service_spec.rb +0 -30
  455. data/spec/services/full_text_extraction_service_spec.rb +0 -5
  456. data/spec/services/generic_file_audit_service_spec.rb +0 -71
  457. data/spec/services/generic_file_indexing_service_spec.rb +0 -57
  458. data/spec/services/generic_work_indexing_service_spec.rb +0 -18
  459. data/spec/workers/visibility_copy_worker_spec.rb +0 -70
  460. data/vendor/assets/javascripts/handlebars.js +0 -2278
  461. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.autocomplete.js +0 -602
  462. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.core.js +0 -356
  463. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +0 -50
  464. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +0 -1276
  465. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.menu.js +0 -610
  466. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +0 -498
  467. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.widget.js +0 -528
  468. data/vendor/assets/javascripts/jquery.tokeninput.js +0 -1061
  469. data/vendor/assets/stylesheets/jquery-ui-lightness.css +0 -474
  470. data/vendor/assets/stylesheets/token-input-facebook.css +0 -122
  471. data/vendor/assets/stylesheets/token-input-mac.css +0 -204
  472. data/vendor/assets/stylesheets/token-input.css +0 -127
@@ -10,271 +10,15 @@ module CurationConcerns::CatalogController
10
10
  with_themed_layout 'catalog'
11
11
  helper CurationConcerns::CatalogHelper
12
12
  # These before_filters apply the hydra access controls
13
- before_filter :enforce_show_permissions, only: :show
13
+ before_action :enforce_show_permissions, only: :show
14
14
  # This applies appropriate access controls to all solr queries
15
15
  CatalogController.search_params_logic += [:add_access_controls_to_solr_params]
16
16
  self.search_params_logic += [:filter_models]
17
- self.search_params_logic += [:only_generic_files_and_curation_concerns]
18
-
19
- configure_blacklight do |config|
20
-
21
- config.search_builder_class = CurationConcerns::SearchBuilder
22
- ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params
23
- config.default_solr_params = {
24
- qf: search_config['qf'],
25
- qt: search_config['qt'],
26
- rows: search_config['rows']
27
- }
28
-
29
- # solr field configuration for search results/index views
30
- config.index.title_field = solr_name("title", :stored_searchable)
31
- config.index.display_type_field = solr_name("has_model", :symbol)
32
-
33
- config.index.thumbnail_method = :thumbnail_tag
34
- config.index.partials.delete(:thumbnail) # we render this inside _index_default.html.erb
35
-
36
- # solr field configuration for document/show views
37
- # config.show.title_field = solr_name("title", :stored_searchable)
38
- # config.show.display_type_field = solr_name("has_model", :symbol)
39
-
40
- # solr fields that will be treated as facets by the blacklight application
41
- # The ordering of the field names is the order of the display
42
- config.add_facet_field solr_name("human_readable_type", :facetable)
43
- config.add_facet_field solr_name('creator', :facetable), limit: 5
44
- config.add_facet_field solr_name("tag", :facetable), limit: 5
45
- config.add_facet_field solr_name("subject", :facetable), limit: 5
46
- config.add_facet_field solr_name("language", :facetable), limit: 5
47
- config.add_facet_field solr_name("based_near", :facetable), limit: 5
48
- config.add_facet_field solr_name("publisher", :facetable), limit: 5
49
- config.add_facet_field solr_name("file_format", :facetable), limit: 5
50
- config.add_facet_field "generic_type_sim", show: false, single: true
51
-
52
- # Have BL send all facet field names to Solr, which has been the default
53
- # previously. Simply remove these lines if you'd rather use Solr request
54
- # handler defaults, or have no facets.
55
- config.add_facet_fields_to_solr_request!
56
-
57
- # solr fields to be displayed in the index (search results) view
58
- # The ordering of the field names is the order of the display
59
- config.add_index_field solr_name("description", :stored_searchable)
60
- config.add_index_field solr_name("tag", :stored_searchable)
61
- config.add_index_field solr_name("subject", :stored_searchable)
62
- config.add_index_field solr_name("creator", :stored_searchable)
63
- config.add_index_field solr_name("contributor", :stored_searchable)
64
- config.add_index_field solr_name("publisher", :stored_searchable)
65
- config.add_index_field solr_name("based_near", :stored_searchable)
66
- config.add_index_field solr_name("language", :stored_searchable)
67
- config.add_index_field solr_name("date_uploaded", :stored_sortable)
68
- config.add_index_field solr_name("date_modified", :stored_sortable)
69
- config.add_index_field solr_name("date_created", :stored_searchable)
70
- config.add_index_field solr_name("rights", :stored_searchable)
71
- config.add_index_field solr_name("human_readable_type", :stored_searchable)
72
- config.add_index_field solr_name("format", :stored_searchable)
73
- config.add_index_field solr_name("identifier", :stored_searchable)
74
-
75
- # solr fields to be displayed in the show (single result) view
76
- # The ordering of the field names is the order of the display
77
- config.add_show_field solr_name("title", :stored_searchable)
78
- config.add_show_field solr_name("description", :stored_searchable)
79
- config.add_show_field solr_name("tag", :stored_searchable)
80
- config.add_show_field solr_name("subject", :stored_searchable)
81
- config.add_show_field solr_name("creator", :stored_searchable)
82
- config.add_show_field solr_name("contributor", :stored_searchable)
83
- config.add_show_field solr_name("publisher", :stored_searchable)
84
- config.add_show_field solr_name("based_near", :stored_searchable)
85
- config.add_show_field solr_name("language", :stored_searchable)
86
- config.add_show_field solr_name("date_uploaded", :stored_sortable)
87
- config.add_show_field solr_name("date_modified", :stored_sortable)
88
- config.add_show_field solr_name("date_created", :stored_searchable)
89
- config.add_show_field solr_name("rights", :stored_searchable)
90
- config.add_show_field solr_name("human_readable_type", :stored_searchable)
91
- config.add_show_field solr_name("format", :stored_searchable)
92
- config.add_show_field solr_name("identifier", :stored_searchable)
93
-
94
- # "fielded" search configuration. Used by pulldown among other places.
95
- # For supported keys in hash, see rdoc for Blacklight::SearchFields
96
- #
97
- # Search fields will inherit the :qt solr request handler from
98
- # config[:default_solr_parameters], OR can specify a different one
99
- # with a :qt key/value. Below examples inherit, except for subject
100
- # that specifies the same :qt as default for our own internal
101
- # testing purposes.
102
- #
103
- # The :key is what will be used to identify this BL search field internally,
104
- # as well as in URLs -- so changing it after deployment may break bookmarked
105
- # urls. A display label will be automatically calculated from the :key,
106
- # or can be specified manually to be different.
107
- #
108
- # This one uses all the defaults set by the solr request handler. Which
109
- # solr request handler? The one set in config[:default_solr_parameters][:qt],
110
- # since we aren't specifying it otherwise.
111
- config.add_search_field('all_fields', label: 'All Fields', :include_in_advanced_search => false) do |field|
112
- title_name = solr_name("title", :stored_searchable, type: :string)
113
- label_name = solr_name("title", :stored_searchable, type: :string)
114
- contributor_name = solr_name("contributor", :stored_searchable, type: :string)
115
- field.solr_parameters = {
116
- :qf => "#{title_name} #{label_name} file_format_tesim #{contributor_name}",
117
- :pf => "#{title_name}"
118
- }
119
- end
120
-
121
-
122
- # Now we see how to over-ride Solr request handler defaults, in this
123
- # case for a BL "search field", which is really a dismax aggregate
124
- # of Solr search fields.
125
- # creator, title, description, publisher, date_created,
126
- # subject, language, resource_type, format, identifier, based_near,
127
- config.add_search_field('contributor') do |field|
128
- # solr_parameters hash are sent to Solr as ordinary url query params.
129
-
130
- # :solr_local_parameters will be sent using Solr LocalParams
131
- # syntax, as eg {! qf=$title_qf }. This is neccesary to use
132
- # Solr parameter de-referencing like $title_qf.
133
- # See: http://wiki.apache.org/solr/LocalParams
134
- solr_name = solr_name("contributor", :stored_searchable, type: :string)
135
- field.solr_local_parameters = {
136
- :qf => solr_name,
137
- :pf => solr_name
138
- }
139
- end
140
-
141
- config.add_search_field('creator') do |field|
142
- solr_name = solr_name("creator", :stored_searchable, type: :string)
143
- field.solr_local_parameters = {
144
- :qf => solr_name,
145
- :pf => solr_name
146
- }
147
- end
148
-
149
- config.add_search_field('title') do |field|
150
- solr_name = solr_name("title", :stored_searchable, type: :string)
151
- field.solr_local_parameters = {
152
- :qf => solr_name,
153
- :pf => solr_name
154
- }
155
- end
156
-
157
- config.add_search_field('description') do |field|
158
- field.label = "Abstract or Summary"
159
- solr_name = solr_name("description", :stored_searchable, type: :string)
160
- field.solr_local_parameters = {
161
- :qf => solr_name,
162
- :pf => solr_name
163
- }
164
- end
165
-
166
- config.add_search_field('publisher') do |field|
167
- solr_name = solr_name("publisher", :stored_searchable, type: :string)
168
- field.solr_local_parameters = {
169
- :qf => solr_name,
170
- :pf => solr_name
171
- }
172
- end
173
-
174
- config.add_search_field('date_created') do |field|
175
- solr_name = solr_name("created", :stored_searchable, type: :string)
176
- field.solr_local_parameters = {
177
- :qf => solr_name,
178
- :pf => solr_name
179
- }
180
- end
181
-
182
- config.add_search_field('subject') do |field|
183
- solr_name = solr_name("subject", :stored_searchable, type: :string)
184
- field.solr_local_parameters = {
185
- :qf => solr_name,
186
- :pf => solr_name
187
- }
188
- end
189
-
190
- config.add_search_field('language') do |field|
191
- solr_name = solr_name("language", :stored_searchable, type: :string)
192
- field.solr_local_parameters = {
193
- :qf => solr_name,
194
- :pf => solr_name
195
- }
196
- end
197
-
198
- config.add_search_field('human_readable_type') do |field|
199
- solr_name = solr_name("human_readable_type", :stored_searchable, type: :string)
200
- field.solr_local_parameters = {
201
- :qf => solr_name,
202
- :pf => solr_name
203
- }
204
- end
205
-
206
- config.add_search_field('format') do |field|
207
- field.include_in_advanced_search = false
208
- solr_name = solr_name("format", :stored_searchable, type: :string)
209
- field.solr_local_parameters = {
210
- :qf => solr_name,
211
- :pf => solr_name
212
- }
213
- end
214
-
215
- config.add_search_field('identifier') do |field|
216
- field.include_in_advanced_search = false
217
- solr_name = solr_name("id", :stored_searchable, type: :string)
218
- field.solr_local_parameters = {
219
- :qf => solr_name,
220
- :pf => solr_name
221
- }
222
- end
223
-
224
- config.add_search_field('based_near') do |field|
225
- field.label = "Location"
226
- solr_name = solr_name("based_near", :stored_searchable, type: :string)
227
- field.solr_local_parameters = {
228
- :qf => solr_name,
229
- :pf => solr_name
230
- }
231
- end
232
-
233
- config.add_search_field('tag') do |field|
234
- solr_name = solr_name("tag", :stored_searchable, type: :string)
235
- field.solr_local_parameters = {
236
- :qf => solr_name,
237
- :pf => solr_name
238
- }
239
- end
240
-
241
- config.add_search_field('depositor') do |field|
242
- solr_name = solr_name("depositor", :stored_searchable, type: :string)
243
- field.solr_local_parameters = {
244
- :qf => solr_name,
245
- :pf => solr_name
246
- }
247
- end
248
-
249
- config.add_search_field('rights') do |field|
250
- solr_name = solr_name("rights", :stored_searchable, type: :string)
251
- field.solr_local_parameters = {
252
- :qf => solr_name,
253
- :pf => solr_name
254
- }
255
- end
256
-
257
-
258
- # "sort results by" select (pulldown)
259
- # label in pulldown is followed by the name of the SOLR field to sort by and
260
- # whether the sort is ascending or descending (it must be asc or desc
261
- # except in the relevancy case).
262
- # label is key, solr field is value
263
- config.add_sort_field "score desc, #{uploaded_field} desc", label: "relevance \u25BC"
264
- config.add_sort_field "#{uploaded_field} desc", label: "date uploaded \u25BC"
265
- config.add_sort_field "#{uploaded_field} asc", label: "date uploaded \u25B2"
266
- config.add_sort_field "#{modified_field} desc", label: "date modified \u25BC"
267
- config.add_sort_field "#{modified_field} asc", label: "date modified \u25B2"
268
-
269
- # If there are more than this many search results, no spelling ("did you
270
- # mean") suggestion is offered.
271
- config.spell_max = 5
272
- end
273
17
  end
274
18
 
275
19
  module ClassMethods
276
- def t *args
277
- I18n.translate *args
20
+ def t(*args)
21
+ I18n.translate(*args)
278
22
  end
279
23
 
280
24
  def uploaded_field
@@ -283,39 +27,28 @@ module CurationConcerns::CatalogController
283
27
  end
284
28
 
285
29
  def modified_field
286
- solr_name('date_modified', :stored_sortable , type: :date)
30
+ solr_name('date_modified', :stored_sortable, type: :date)
287
31
  end
288
32
 
289
33
  def search_config
290
- {'qf' => ['title_tesim','name_tesim'], 'qt' => 'search', 'rows' => 10}
34
+ { 'qf' => %w(title_tesim name_tesim), 'qt' => 'search', 'rows' => 10 }
291
35
  end
292
36
  end
293
37
 
294
-
295
38
  protected
296
39
 
297
-
298
40
  # Overriding Blacklight so that the search results can be displayed in a way compatible with
299
41
  # tokenInput javascript library. This is used for suggesting "Related Works" to attach.
300
42
  def render_search_results_as_json
301
- {"docs" => @response["response"]["docs"].map {|solr_doc| serialize_work_from_solr(solr_doc) }}
43
+ { 'docs' => @response['response']['docs'].map { |solr_doc| serialize_work_from_solr(solr_doc) } }
302
44
  end
303
45
 
304
46
  def serialize_work_from_solr(solr_doc)
305
- title = solr_doc["title_tesim"].first
306
- title << " (#{solr_doc["human_readable_type_tesim"].first})" if solr_doc["human_readable_type_tesim"].present?
47
+ title = solr_doc['title_tesim'].first
48
+ title << " (#{solr_doc['human_readable_type_tesim'].first})" if solr_doc['human_readable_type_tesim'].present?
307
49
  {
308
- pid: solr_doc["id"],
50
+ pid: solr_doc['id'],
309
51
  title: title
310
52
  }
311
53
  end
312
-
313
- def depositor
314
- #Hydra.config[:permissions][:owner] maybe it should match this config variable, but it doesn't.
315
- Solrizer.solr_name('depositor', :stored_searchable, type: :string)
316
- end
317
-
318
- def sort_field
319
- "#{Solrizer.solr_name('system_create', :sortable)} desc"
320
- end
321
54
  end
@@ -2,11 +2,13 @@ module CurationConcerns
2
2
  module CollectionsControllerBehavior
3
3
  extend ActiveSupport::Concern
4
4
  include Hydra::CollectionsControllerBehavior
5
+ include Hydra::Controller::SearchBuilder
5
6
 
6
7
  included do
7
- before_filter :filter_docs_with_read_access!, except: :show
8
+ before_action :filter_docs_with_read_access!, except: :show
8
9
  self.search_params_logic += [:add_access_controls_to_solr_params, :add_advanced_parse_q_to_solr]
9
- layout "curation_concerns/1_column"
10
+ layout 'curation_concerns/1_column'
11
+ skip_load_and_authorize_resource only: :show
10
12
  end
11
13
 
12
14
  def new
@@ -20,57 +22,66 @@ module CurationConcerns
20
22
  end
21
23
 
22
24
  def show
23
- super
24
25
  presenter
26
+ super
27
+ end
28
+
29
+ # overriding the method in Hydra::Collections so the search builder can find the collection
30
+ def collection
31
+ action_name == 'show' ? @presenter : @collection
25
32
  end
26
33
 
27
34
  protected
28
35
 
29
- def presenter
30
- @presenter ||= presenter_class.new(@collection)
31
- end
36
+ def filter_docs_with_read_access!
37
+ super
38
+ flash.delete(:notice) if flash.notice == 'Select something first'
39
+ end
32
40
 
33
- def presenter_class
34
- CurationConcerns::CollectionPresenter
35
- end
41
+ def presenter
42
+ @presenter ||= begin
43
+ _, document_list = search_results(params, self.class.search_params_logic + [:find_one])
44
+ curation_concern = document_list.first
45
+ raise CanCan::AccessDenied unless curation_concern
46
+ presenter_class.new(curation_concern, current_ability)
47
+ end
48
+ end
36
49
 
37
- def collection_member_search_builder_class
38
- CurationConcerns::SearchBuilder
39
- end
50
+ def presenter_class
51
+ CurationConcerns::CollectionPresenter
52
+ end
40
53
 
41
- def collection_params
42
- form_class.model_attributes(
43
- params.require(:collection).permit(:title, :description, :members, part_of: [],
44
- contributor: [], creator: [], publisher: [], date_created: [], subject: [],
45
- language: [], rights: [], resource_type: [], identifier: [], based_near: [],
46
- tag: [], related_url: [])
47
- )
48
- end
54
+ def collection_member_search_builder_class
55
+ CurationConcerns::SearchBuilder
56
+ end
49
57
 
50
- def query_collection_members
51
- flash[:notice]=nil if flash[:notice] == "Select something first"
52
- params[:q] = params[:cq]
53
- super
54
- end
58
+ def collection_params
59
+ form_class.model_attributes(params[:collection])
60
+ end
55
61
 
56
- def after_destroy(id)
57
- respond_to do |format|
58
- format.html { redirect_to collections_path, notice: 'Collection was successfully deleted.' }
59
- format.json { render json: {id: id}, status: :destroyed, location: @collection }
62
+ def query_collection_members
63
+ params[:q] = params[:cq]
64
+ super
60
65
  end
61
- end
62
66
 
63
- def form
64
- @form ||= form_class.new(@collection)
65
- end
67
+ def after_destroy(id)
68
+ respond_to do |format|
69
+ format.html { redirect_to collections_path, notice: 'Collection was successfully deleted.' }
70
+ format.json { render json: { id: id }, status: :destroyed, location: @collection }
71
+ end
72
+ end
66
73
 
67
- def form_class
68
- CurationConcerns::Forms::CollectionEditForm
69
- end
74
+ def form
75
+ @form ||= form_class.new(@collection)
76
+ end
70
77
 
71
- # Include 'catalog' and 'curation_concerns/base' in the search path for views
72
- def _prefixes
73
- @_prefixes ||= super + ['catalog', 'curation_concerns/base']
74
- end
78
+ def form_class
79
+ CurationConcerns::Forms::CollectionEditForm
80
+ end
81
+
82
+ # Include 'catalog' and 'curation_concerns/base' in the search path for views
83
+ def _prefixes
84
+ @_prefixes ||= super + ['catalog', 'curation_concerns/base']
85
+ end
75
86
  end
76
87
  end
@@ -1,8 +1,10 @@
1
1
  module CurationConcerns::CurationConcernController
2
2
  extend ActiveSupport::Concern
3
- include Blacklight::Catalog::SearchContext
3
+ include Blacklight::Base
4
+ include Hydra::Controller::SearchBuilder
4
5
 
5
6
  included do
7
+ copy_blacklight_config_from(CatalogController)
6
8
  include CurationConcerns::ThemedLayoutController
7
9
  with_themed_layout '1_column'
8
10
  helper CurationConcerns::AbilityHelper
@@ -10,13 +12,11 @@ module CurationConcerns::CurationConcernController
10
12
  class_attribute :curation_concern_type
11
13
  attr_accessor :curation_concern
12
14
  helper_method :curation_concern
13
-
14
- respond_to :html
15
15
  end
16
16
 
17
17
  module ClassMethods
18
18
  def set_curation_concern_type(curation_concern_type)
19
- load_and_authorize_resource class: curation_concern_type, instance_name: :curation_concern
19
+ load_and_authorize_resource class: curation_concern_type, instance_name: :curation_concern, except: :show
20
20
  self.curation_concern_type = curation_concern_type
21
21
  end
22
22
 
@@ -34,16 +34,49 @@ module CurationConcerns::CurationConcernController
34
34
  after_create_response
35
35
  else
36
36
  setup_form
37
- respond_with(:curation_concerns, curation_concern) do |wants|
37
+ respond_to do |wants|
38
38
  wants.html { render 'new', status: :unprocessable_entity }
39
+ wants.json { render_json_response(response_type: :unprocessable_entity, options: { errors: curation_concern.errors }) }
39
40
  end
40
41
  end
41
42
  end
42
43
 
44
+ # Finds a solr document matching the id and sets @presenter
45
+ # @raises CanCan::AccessDenied if the document is not found
46
+ # or the user doesn't have access to it.
43
47
  def show
48
+ respond_to do |wants|
49
+ wants.html do
50
+ _, document_list = search_results(params, CatalogController.search_params_logic + [:find_one])
51
+ curation_concern = document_list.first
52
+ raise CanCan::AccessDenied.new(nil, :show) unless curation_concern
53
+ @presenter = show_presenter.new(curation_concern, current_ability)
54
+ end
55
+ wants.json do
56
+ # load and authorize @curation_concern manually because it's skipped for html
57
+ # This has to use #find instead of #load_instance_from_solr because
58
+ # we want to return values like file_set_ids in the json
59
+ @curation_concern = curation_concern_type.find(params[:id]) unless curation_concern
60
+ authorize! :show, @curation_concern
61
+ render :show, status: :ok
62
+ end
63
+ end
64
+ end
65
+
66
+ # Gives the class of the show presenter. Override this if you want
67
+ # to use a different presenter.
68
+ def show_presenter
69
+ CurationConcerns::WorkShowPresenter
70
+ end
71
+
72
+ # Gives the class of the form. Override this if you want
73
+ # to use a different form.
74
+ def form_class
75
+ CurationConcerns.const_get("#{self.class.curation_concern_type}Form")
44
76
  end
45
77
 
46
78
  def edit
79
+ @form = form_class.new(curation_concern, current_ability)
47
80
  end
48
81
 
49
82
  def update
@@ -51,8 +84,12 @@ module CurationConcerns::CurationConcernController
51
84
  after_update_response
52
85
  else
53
86
  setup_form
54
- respond_with(:curation_concerns, curation_concern) do |wants|
55
- wants.html { render 'edit', status: :unprocessable_entity }
87
+ respond_to do |wants|
88
+ wants.html do
89
+ @form = form_class.new(curation_concern, current_ability)
90
+ render 'edit', status: :unprocessable_entity
91
+ end
92
+ wants.json { render_json_response(response_type: :unprocessable_entity, options: { errors: curation_concern.errors }) }
56
93
  end
57
94
  end
58
95
  end
@@ -66,57 +103,50 @@ module CurationConcerns::CurationConcernController
66
103
  attr_writer :actor
67
104
 
68
105
  protected
106
+
69
107
  def actor
70
108
  @actor ||= CurationConcerns::CurationConcern.actor(curation_concern, current_user, attributes_for_actor)
71
109
  end
72
110
 
73
111
  # Override setup_form in concrete controllers to get the form ready for display
74
112
  def setup_form
75
- if curation_concern.respond_to?(:contributor) && curation_concern.contributor.blank?
76
- curation_concern.contributor << current_user.name
77
- end
113
+ return unless curation_concern.respond_to?(:contributor) && curation_concern.contributor.blank?
114
+ curation_concern.contributor << current_user.user_key
78
115
  end
79
116
 
80
- # def verify_acceptance_of_user_agreement!
81
- # return true if contributor_agreement.is_being_accepted?
82
- # # Calling the new action to make sure we are doing our best to preserve
83
- # # the input values; Its a stretch but hopefully it'll work
84
- # self.new
85
- # respond_with(:curation_concern, curation_concern) do |wants|
86
- # wants.html {
87
- # flash.now[:error] = "You must accept the contributor agreement"
88
- # render 'new', status: :conflict
89
- # }
90
- # end
91
- # false
92
- # end
93
-
94
117
  def _prefixes
95
118
  @_prefixes ||= super + ['curation_concerns/base']
96
119
  end
97
120
 
98
121
  def after_create_response
99
- respond_with(main_app, :curation_concerns, curation_concern)
122
+ respond_to do |wants|
123
+ wants.html { redirect_to [main_app, :curation_concerns, curation_concern] }
124
+ wants.json { render :show, status: :created, location: polymorphic_path([main_app, :curation_concerns, curation_concern]) }
125
+ end
100
126
  end
101
127
 
102
128
  def after_update_response
103
- #TODO visibility or lease/embargo status
129
+ # TODO: visibility or lease/embargo status
104
130
  if actor.visibility_changed?
105
131
  redirect_to main_app.confirm_curation_concerns_permission_path(curation_concern)
106
132
  else
107
- respond_with(main_app, :curation_concerns, curation_concern)
133
+ respond_to do |wants|
134
+ wants.html { redirect_to [main_app, :curation_concerns, curation_concern] }
135
+ wants.json { render :show, status: :ok, location: polymorphic_path([main_app, :curation_concerns, curation_concern]) }
136
+ end
108
137
  end
109
138
  end
110
139
 
111
140
  def after_destroy_response(title)
112
141
  flash[:notice] = "Deleted #{title}"
113
- respond_with { |wants|
142
+ respond_to do |wants|
114
143
  wants.html { redirect_to main_app.catalog_index_path }
115
- }
144
+ wants.json { render_json_response(response_type: :deleted, message: "Deleted #{curation_concern.id}") }
145
+ end
116
146
  end
117
147
 
118
148
  def attributes_for_actor
119
- params.fetch(hash_key_for_curation_concern, {}).permit!
149
+ form_class.model_attributes(params[hash_key_for_curation_concern])
120
150
  end
121
151
 
122
152
  def hash_key_for_curation_concern