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
@@ -0,0 +1,236 @@
1
+ class CatalogController < ApplicationController
2
+ include CurationConcerns::CatalogController
3
+ configure_blacklight do |config|
4
+ config.search_builder_class = CurationConcerns::SearchBuilder
5
+ ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params
6
+ config.default_solr_params = {
7
+ qf: search_config['qf'],
8
+ qt: search_config['qt'],
9
+ rows: search_config['rows']
10
+ }
11
+
12
+ # solr field configuration for search results/index views
13
+ config.index.title_field = solr_name('title', :stored_searchable)
14
+ config.index.display_type_field = solr_name('has_model', :symbol)
15
+
16
+ config.index.thumbnail_field = 'thumbnail_path_ss'
17
+ config.index.partials.delete(:thumbnail) # we render this inside _index_default.html.erb
18
+ config.index.partials += [:action_menu]
19
+
20
+ # solr field configuration for document/show views
21
+ # config.show.title_field = solr_name("title", :stored_searchable)
22
+ # config.show.display_type_field = solr_name("has_model", :symbol)
23
+
24
+ # solr fields that will be treated as facets by the blacklight application
25
+ # The ordering of the field names is the order of the display
26
+ config.add_facet_field solr_name('human_readable_type', :facetable)
27
+ config.add_facet_field solr_name('creator', :facetable), limit: 5
28
+ config.add_facet_field solr_name('tag', :facetable), limit: 5
29
+ config.add_facet_field solr_name('subject', :facetable), limit: 5
30
+ config.add_facet_field solr_name('language', :facetable), limit: 5
31
+ config.add_facet_field solr_name('based_near', :facetable), limit: 5
32
+ config.add_facet_field solr_name('publisher', :facetable), limit: 5
33
+ config.add_facet_field solr_name('file_format', :facetable), limit: 5
34
+ config.add_facet_field 'generic_type_sim', show: false, single: true
35
+
36
+ # Have BL send all facet field names to Solr, which has been the default
37
+ # previously. Simply remove these lines if you'd rather use Solr request
38
+ # handler defaults, or have no facets.
39
+ config.add_facet_fields_to_solr_request!
40
+
41
+ # solr fields to be displayed in the index (search results) view
42
+ # The ordering of the field names is the order of the display
43
+ config.add_index_field solr_name('description', :stored_searchable)
44
+ config.add_index_field solr_name('tag', :stored_searchable)
45
+ config.add_index_field solr_name('subject', :stored_searchable)
46
+ config.add_index_field solr_name('creator', :stored_searchable)
47
+ config.add_index_field solr_name('contributor', :stored_searchable)
48
+ config.add_index_field solr_name('publisher', :stored_searchable)
49
+ config.add_index_field solr_name('based_near', :stored_searchable)
50
+ config.add_index_field solr_name('language', :stored_searchable)
51
+ config.add_index_field solr_name('date_uploaded', :stored_sortable)
52
+ config.add_index_field solr_name('date_modified', :stored_sortable)
53
+ config.add_index_field solr_name('date_created', :stored_searchable)
54
+ config.add_index_field solr_name('rights', :stored_searchable)
55
+ config.add_index_field solr_name('human_readable_type', :stored_searchable)
56
+ config.add_index_field solr_name('format', :stored_searchable)
57
+ config.add_index_field solr_name('identifier', :stored_searchable)
58
+
59
+ # "fielded" search configuration. Used by pulldown among other places.
60
+ # For supported keys in hash, see rdoc for Blacklight::SearchFields
61
+ #
62
+ # Search fields will inherit the :qt solr request handler from
63
+ # config[:default_solr_parameters], OR can specify a different one
64
+ # with a :qt key/value. Below examples inherit, except for subject
65
+ # that specifies the same :qt as default for our own internal
66
+ # testing purposes.
67
+ #
68
+ # The :key is what will be used to identify this BL search field internally,
69
+ # as well as in URLs -- so changing it after deployment may break bookmarked
70
+ # urls. A display label will be automatically calculated from the :key,
71
+ # or can be specified manually to be different.
72
+ #
73
+ # This one uses all the defaults set by the solr request handler. Which
74
+ # solr request handler? The one set in config[:default_solr_parameters][:qt],
75
+ # since we aren't specifying it otherwise.
76
+ config.add_search_field('all_fields', label: 'All Fields', include_in_advanced_search: false) do |field|
77
+ title_name = solr_name('title', :stored_searchable, type: :string)
78
+ label_name = solr_name('title', :stored_searchable, type: :string)
79
+ contributor_name = solr_name('contributor', :stored_searchable, type: :string)
80
+ field.solr_parameters = {
81
+ qf: "#{title_name} #{label_name} file_format_tesim #{contributor_name}",
82
+ pf: "#{title_name}"
83
+ }
84
+ end
85
+
86
+ # Now we see how to over-ride Solr request handler defaults, in this
87
+ # case for a BL "search field", which is really a dismax aggregate
88
+ # of Solr search fields.
89
+ # creator, title, description, publisher, date_created,
90
+ # subject, language, resource_type, format, identifier, based_near,
91
+ config.add_search_field('contributor') do |field|
92
+ # solr_parameters hash are sent to Solr as ordinary url query params.
93
+
94
+ # :solr_local_parameters will be sent using Solr LocalParams
95
+ # syntax, as eg {! qf=$title_qf }. This is neccesary to use
96
+ # Solr parameter de-referencing like $title_qf.
97
+ # See: http://wiki.apache.org/solr/LocalParams
98
+ solr_name = solr_name('contributor', :stored_searchable, type: :string)
99
+ field.solr_local_parameters = {
100
+ qf: solr_name,
101
+ pf: solr_name
102
+ }
103
+ end
104
+
105
+ config.add_search_field('creator') do |field|
106
+ solr_name = solr_name('creator', :stored_searchable, type: :string)
107
+ field.solr_local_parameters = {
108
+ qf: solr_name,
109
+ pf: solr_name
110
+ }
111
+ end
112
+
113
+ config.add_search_field('title') do |field|
114
+ solr_name = solr_name('title', :stored_searchable, type: :string)
115
+ field.solr_local_parameters = {
116
+ qf: solr_name,
117
+ pf: solr_name
118
+ }
119
+ end
120
+
121
+ config.add_search_field('description') do |field|
122
+ field.label = 'Abstract or Summary'
123
+ solr_name = solr_name('description', :stored_searchable, type: :string)
124
+ field.solr_local_parameters = {
125
+ qf: solr_name,
126
+ pf: solr_name
127
+ }
128
+ end
129
+
130
+ config.add_search_field('publisher') do |field|
131
+ solr_name = solr_name('publisher', :stored_searchable, type: :string)
132
+ field.solr_local_parameters = {
133
+ qf: solr_name,
134
+ pf: solr_name
135
+ }
136
+ end
137
+
138
+ config.add_search_field('date_created') do |field|
139
+ solr_name = solr_name('created', :stored_searchable, type: :string)
140
+ field.solr_local_parameters = {
141
+ qf: solr_name,
142
+ pf: solr_name
143
+ }
144
+ end
145
+
146
+ config.add_search_field('subject') do |field|
147
+ solr_name = solr_name('subject', :stored_searchable, type: :string)
148
+ field.solr_local_parameters = {
149
+ qf: solr_name,
150
+ pf: solr_name
151
+ }
152
+ end
153
+
154
+ config.add_search_field('language') do |field|
155
+ solr_name = solr_name('language', :stored_searchable, type: :string)
156
+ field.solr_local_parameters = {
157
+ qf: solr_name,
158
+ pf: solr_name
159
+ }
160
+ end
161
+
162
+ config.add_search_field('human_readable_type') do |field|
163
+ solr_name = solr_name('human_readable_type', :stored_searchable, type: :string)
164
+ field.solr_local_parameters = {
165
+ qf: solr_name,
166
+ pf: solr_name
167
+ }
168
+ end
169
+
170
+ config.add_search_field('format') do |field|
171
+ field.include_in_advanced_search = false
172
+ solr_name = solr_name('format', :stored_searchable, type: :string)
173
+ field.solr_local_parameters = {
174
+ qf: solr_name,
175
+ pf: solr_name
176
+ }
177
+ end
178
+
179
+ config.add_search_field('identifier') do |field|
180
+ field.include_in_advanced_search = false
181
+ solr_name = solr_name('id', :stored_searchable, type: :string)
182
+ field.solr_local_parameters = {
183
+ qf: solr_name,
184
+ pf: solr_name
185
+ }
186
+ end
187
+
188
+ config.add_search_field('based_near') do |field|
189
+ field.label = 'Location'
190
+ solr_name = solr_name('based_near', :stored_searchable, type: :string)
191
+ field.solr_local_parameters = {
192
+ qf: solr_name,
193
+ pf: solr_name
194
+ }
195
+ end
196
+
197
+ config.add_search_field('tag') do |field|
198
+ solr_name = solr_name('tag', :stored_searchable, type: :string)
199
+ field.solr_local_parameters = {
200
+ qf: solr_name,
201
+ pf: solr_name
202
+ }
203
+ end
204
+
205
+ config.add_search_field('depositor') do |field|
206
+ solr_name = solr_name('depositor', :stored_searchable, type: :string)
207
+ field.solr_local_parameters = {
208
+ qf: solr_name,
209
+ pf: solr_name
210
+ }
211
+ end
212
+
213
+ config.add_search_field('rights') do |field|
214
+ solr_name = solr_name('rights', :stored_searchable, type: :string)
215
+ field.solr_local_parameters = {
216
+ qf: solr_name,
217
+ pf: solr_name
218
+ }
219
+ end
220
+
221
+ # "sort results by" select (pulldown)
222
+ # label in pulldown is followed by the name of the SOLR field to sort by and
223
+ # whether the sort is ascending or descending (it must be asc or desc
224
+ # except in the relevancy case).
225
+ # label is key, solr field is value
226
+ config.add_sort_field "score desc, #{uploaded_field} desc", label: "relevance \u25BC"
227
+ config.add_sort_field "#{uploaded_field} desc", label: "date uploaded \u25BC"
228
+ config.add_sort_field "#{uploaded_field} asc", label: "date uploaded \u25B2"
229
+ config.add_sort_field "#{modified_field} desc", label: "date modified \u25BC"
230
+ config.add_sort_field "#{modified_field} asc", label: "date modified \u25B2"
231
+
232
+ # If there are more than this many search results, no spelling ("did you
233
+ # mean") suggestion is offered.
234
+ config.spell_max = 5
235
+ end
236
+ end
@@ -0,0 +1,19 @@
1
+ terms:
2
+ - id: http://creativecommons.org/licenses/by/3.0/us/
3
+ term: Attribution 3.0 United States
4
+ - id: http://creativecommons.org/licenses/by-sa/3.0/us/
5
+ term: Attribution-ShareAlike 3.0 United States
6
+ - id: http://creativecommons.org/licenses/by-nc/3.0/us/
7
+ term: Attribution-NonCommercial 3.0 United States
8
+ - id: http://creativecommons.org/licenses/by-nd/3.0/us/
9
+ term: Attribution-NoDerivs 3.0 United States
10
+ - id: http://creativecommons.org/licenses/by-nc-nd/3.0/us/
11
+ term: Attribution-NonCommercial-NoDerivs 3.0 United States
12
+ - id: http://creativecommons.org/licenses/by-nc-sa/3.0/us/
13
+ term: Attribution-NonCommercial-ShareAlike 3.0 United States
14
+ - id: http://creativecommons.org/publicdomain/mark/1.0/
15
+ term: Public Domain Mark 1.0
16
+ - id: http://creativecommons.org/publicdomain/zero/1.0/
17
+ term: CC0 1.0 Universal
18
+ - id: http://www.europeana.eu/portal/rights/rr-r.html
19
+ term: All rights reserved
@@ -3,7 +3,7 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  describe CurationConcerns::<%= class_name %>Actor do
6
- it "should have some tests" do
6
+ it "has tests" do
7
7
  skip "Add your tests here"
8
8
  end
9
9
  end
@@ -3,7 +3,7 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  describe CurationConcerns::<%= class_name.pluralize %>Controller do
6
- it "should have some tests" do
6
+ it "has tests" do
7
7
  skip "Add your tests here"
8
8
  end
9
9
  end
@@ -0,0 +1,8 @@
1
+ # Generated via
2
+ # `rails generate curation_concerns:work <%= class_name %>`
3
+ module CurationConcerns
4
+ class <%= class_name %>Form < CurationConcerns::Forms::WorkForm
5
+ self.model_class = ::<%= class_name %>
6
+ end
7
+ end
8
+
@@ -0,0 +1,10 @@
1
+ # Generated via
2
+ # `rails generate curation_concerns:work <%= class_name %>`
3
+ require 'rails_helper'
4
+
5
+ describe CurationConcerns::<%= class_name %>Form do
6
+ it "has tests" do
7
+ skip "Add your tests here"
8
+ end
9
+ end
10
+
@@ -1,7 +1,7 @@
1
1
  # Generated via
2
2
  # `rails generate curation_concerns:work <%= class_name %>`
3
3
  class <%= class_name %> < ActiveFedora::Base
4
- include ::CurationConcerns::GenericWorkBehavior
4
+ include ::CurationConcerns::WorkBehavior
5
5
  include ::CurationConcerns::BasicMetadata
6
- validates_presence_of :title, message: 'Your work must have a title.'
6
+ validates :title, presence: { message: 'Your work must have a title.' }
7
7
  end
@@ -3,7 +3,7 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  describe <%= class_name %> do
6
- it "should have some tests" do
6
+ it "has tests" do
7
7
  skip "Add your tests here"
8
8
  end
9
9
  end
@@ -3,64 +3,71 @@ require 'rails/generators'
3
3
 
4
4
  class Rails::Generators::NamedBase
5
5
  private
6
- def destroy(what, *args)
7
- log :destroy, what
8
- argument = args.map {|arg| arg.to_s }.flatten.join(" ")
9
6
 
10
- in_root {
11
- run_ruby_script("bin/rails destroy #{what} #{argument}", verbose: true)
12
- }
13
- end
7
+ def destroy(what, *args)
8
+ log :destroy, what
9
+ argument = args.map(&:to_s).flatten.join(' ')
10
+
11
+ in_root do
12
+ run_ruby_script("bin/rails destroy #{what} #{argument}", verbose: true)
13
+ end
14
+ end
14
15
  end
15
16
 
16
17
  class CurationConcerns::WorkGenerator < Rails::Generators::NamedBase
17
- source_root File.expand_path("../templates", __FILE__)
18
+ source_root File.expand_path('../templates', __FILE__)
18
19
 
19
-
20
- argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
20
+ argument :attributes, type: :array, default: [], banner: 'field:type field:type'
21
21
 
22
22
  # Why all of these antics with defining individual methods?
23
23
  # Because I want the output of CurationConcerns::WorkGenerator to include all the processed files.
24
24
  def create_model_spec
25
25
  return unless rspec_installed?
26
- template "model_spec.rb.erb", "spec/models/#{file_name}_spec.rb"
26
+ template 'model_spec.rb.erb', "spec/models/#{file_name}_spec.rb"
27
27
  end
28
28
 
29
29
  def create_model
30
- template("model.rb.erb", "app/models/#{file_name}.rb")
30
+ template('model.rb.erb', "app/models/#{file_name}.rb")
31
31
  end
32
+
32
33
  def create_controller_spec
33
34
  return unless rspec_installed?
34
- template("controller_spec.rb.erb", "spec/controllers/curation_concerns/#{plural_file_name}_controller_spec.rb")
35
+ template('controller_spec.rb.erb', "spec/controllers/curation_concerns/#{plural_file_name}_controller_spec.rb")
35
36
  end
36
37
 
37
38
  def create_actor_spec
38
39
  return unless rspec_installed?
39
- template("actor_spec.rb.erb", "spec/actors/curation_concerns/#{file_name}_actor_spec.rb")
40
+ template('actor_spec.rb.erb', "spec/actors/curation_concerns/#{file_name}_actor_spec.rb")
41
+ end
42
+
43
+ def create_form_spec
44
+ return unless rspec_installed?
45
+ template('form_spec.rb.erb', "spec/forms/curation_concerns/#{file_name}_form_spec.rb")
40
46
  end
41
47
 
42
48
  def create_controller
43
- template("controller.rb.erb", "app/controllers/curation_concerns/#{plural_file_name}_controller.rb")
49
+ template('controller.rb.erb', "app/controllers/curation_concerns/#{plural_file_name}_controller.rb")
44
50
  end
45
51
 
46
52
  def create_actor
47
- template("actor.rb.erb", "app/actors/curation_concerns/#{file_name}_actor.rb")
53
+ template('actor.rb.erb', "app/actors/curation_concerns/#{file_name}_actor.rb")
54
+ end
55
+
56
+ def create_form
57
+ template('form.rb.erb', "app/forms/curation_concerns/#{file_name}_form.rb")
48
58
  end
49
59
 
50
60
  def register_work
51
- inject_into_file 'config/initializers/curation_concerns_config.rb', after: "CurationConcerns.configure do |config|\n" do
52
- data = ""
53
- data << " # Injected via `rails g curation_concerns:work #{class_name}`\n"
54
- data << " config.register_curation_concern :#{file_name}\n"
55
- data
61
+ inject_into_file 'config/initializers/curation_concerns.rb', after: "CurationConcerns.configure do |config|\n" do
62
+ " # Injected via `rails g curation_concerns:work #{class_name}`\n" \
63
+ " config.register_curation_concern :#{file_name}\n"
56
64
  end
57
65
  end
58
66
 
59
67
  def create_views
60
68
  create_file "app/views/curation_concerns/#{plural_file_name}/_#{file_name}.html.erb" do
61
- data = "<%# This is a search result view %>\n"
62
- data << "<%= render 'catalog/document', document: #{file_name}, document_counter: #{file_name}_counter %>\n"
63
- data
69
+ "<%# This is a search result view %>\n" \
70
+ "<%= render 'catalog/document', document: #{file_name}, document_counter: #{file_name}_counter %>\n"
64
71
  end
65
72
  end
66
73
 
@@ -68,11 +75,9 @@ class CurationConcerns::WorkGenerator < Rails::Generators::NamedBase
68
75
  readme 'README'
69
76
  end
70
77
 
71
-
72
78
  private
73
79
 
74
80
  def rspec_installed?
75
81
  defined?(RSpec) && defined?(RSpec::Rails)
76
82
  end
77
-
78
83
  end
@@ -1,48 +1,48 @@
1
1
  require 'spec_helper'
2
- require "cancan/matchers"
2
+ require 'cancan/matchers'
3
3
 
4
- describe "User" do
5
- describe "Abilities" do
4
+ describe 'User' do
5
+ describe 'Abilities' do
6
6
  subject { ability }
7
7
  let(:ability) { Ability.new(current_user) }
8
8
  let(:visibility) { Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE }
9
- let(:creating_user) { FactoryGirl.create(:user) }
10
- let(:user) { FactoryGirl.create(:user) }
9
+ let(:creating_user) { create(:user) }
10
+ let(:user) { create(:user) }
11
11
  let(:current_user) { user }
12
- let(:collection) { FactoryGirl.create(:collection, visibility: visibility, user: creating_user) }
12
+ let(:collection) { create(:collection, visibility: visibility, user: creating_user) }
13
13
  before do
14
14
  collection.visibility = visibility
15
15
  collection.save
16
16
  end
17
17
  describe 'the collection creator' do
18
18
  let(:current_user) { creating_user }
19
- it {
19
+ it do
20
20
  should be_able_to(:create, ::Collection.new)
21
21
  should be_able_to(:create, ::Collection)
22
22
  should be_able_to(:read, collection)
23
23
  should be_able_to(:update, collection)
24
24
  should be_able_to(:destroy, collection)
25
- }
25
+ end
26
26
  end
27
27
 
28
28
  describe 'another authenticated user' do
29
- it {
29
+ it do
30
30
  should be_able_to(:create, ::Collection.new)
31
31
  should be_able_to(:create, ::Collection)
32
32
  should_not be_able_to(:read, collection)
33
33
  should_not be_able_to(:update, collection)
34
34
  should_not be_able_to(:destroy, collection)
35
- }
35
+ end
36
36
  end
37
37
 
38
38
  describe 'a nil user' do
39
39
  let(:current_user) { nil }
40
- it {
41
- should_not be_able_to(:create, GenericFile.new)
40
+ it do
41
+ should_not be_able_to(:create, ::Collection.new)
42
42
  should_not be_able_to(:read, collection)
43
43
  should_not be_able_to(:update, collection)
44
44
  should_not be_able_to(:destroy, collection)
45
- }
45
+ end
46
46
  end
47
47
  end
48
48
  end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ require 'cancan/matchers'
3
+
4
+ describe "Ability on embargos and leases" do
5
+ subject { Ability.new(current_user) }
6
+
7
+ let(:current_user) { create(:user) }
8
+
9
+ describe "a regular user" do
10
+ it do
11
+ should_not be_able_to :index, Hydra::AccessControls::Embargo
12
+ should_not be_able_to :index, Hydra::AccessControls::Lease
13
+ end
14
+ end
15
+
16
+ describe "an admin user" do
17
+ before { allow(current_user).to receive(:groups).and_return(['admin']) }
18
+ it do
19
+ should be_able_to :index, Hydra::AccessControls::Embargo
20
+ should be_able_to :index, Hydra::AccessControls::Lease
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ require 'cancan/matchers'
3
+
4
+ describe 'User' do
5
+ describe 'Abilities' do
6
+ subject { ability }
7
+ let(:ability) { Ability.new(current_user) }
8
+ let(:visibility) { Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE }
9
+ let(:creating_user) { create(:user) }
10
+ let(:user) { create(:user) }
11
+ let(:current_user) { user }
12
+ let(:generic_work) { create(:generic_work, visibility: visibility, user: creating_user) }
13
+ let(:file_set) { create(:file_set, visibility: visibility, user: creating_user) }
14
+
15
+ describe 'without embargo' do
16
+ describe 'creator of object' do
17
+ let(:creating_user) { user }
18
+ let(:current_user) { user }
19
+ it do
20
+ is_expected.to be_able_to(:create, FileSet.new)
21
+ is_expected.to be_able_to(:versions, file_set)
22
+ is_expected.to be_able_to(:read, file_set)
23
+ is_expected.to be_able_to(:update, file_set)
24
+ is_expected.to_not be_able_to(:delete, file_set)
25
+ end
26
+ end
27
+
28
+ describe 'as a repository manager' do
29
+ let(:manager_user) { FactoryGirl.create(:admin) }
30
+ let(:creating_user) { user }
31
+ let(:current_user) { manager_user }
32
+ it do
33
+ is_expected.to be_able_to(:create, FileSet.new)
34
+ is_expected.to be_able_to(:versions, file_set)
35
+ is_expected.to be_able_to(:read, file_set)
36
+ is_expected.to be_able_to(:update, file_set)
37
+ is_expected.to be_able_to(:destroy, file_set)
38
+ end
39
+ end
40
+
41
+ describe 'another authenticated user' do
42
+ let(:creating_user) { FactoryGirl.create(:user) }
43
+ let(:current_user) { user }
44
+
45
+ it do
46
+ is_expected.to be_able_to(:create, FileSet.new)
47
+ is_expected.to_not be_able_to(:versions, file_set)
48
+ is_expected.to_not be_able_to(:read, file_set)
49
+ is_expected.to_not be_able_to(:update, file_set)
50
+ is_expected.to_not be_able_to(:delete, file_set)
51
+ end
52
+ end
53
+
54
+ describe 'a nil user' do
55
+ let(:creating_user) { FactoryGirl.create(:user) }
56
+ let(:current_user) { nil }
57
+ it do
58
+ is_expected.to_not be_able_to(:create, FileSet.new)
59
+ is_expected.to_not be_able_to(:versions, file_set)
60
+ is_expected.to_not be_able_to(:read, file_set)
61
+ is_expected.to_not be_able_to(:update, file_set)
62
+ is_expected.to_not be_able_to(:delete, file_set)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,57 +1,57 @@
1
1
  require 'spec_helper'
2
- require "cancan/matchers"
2
+ require 'cancan/matchers'
3
3
 
4
- describe "User" do
5
- describe "Abilities" do
4
+ describe 'User' do
5
+ describe 'Abilities' do
6
6
  subject { Ability.new(current_user) }
7
7
 
8
- let(:generic_work) { FactoryGirl.create(:private_generic_work, user: creating_user ) }
8
+ let(:generic_work) { FactoryGirl.create(:private_generic_work, user: creating_user) }
9
9
  let(:user) { FactoryGirl.create(:user) }
10
10
 
11
11
  describe 'without embargo' do
12
12
  describe 'creator of object' do
13
13
  let(:creating_user) { user }
14
14
  let(:current_user) { user }
15
- it {
15
+ it do
16
16
  should be_able_to(:create, GenericWork.new)
17
17
  should be_able_to(:read, generic_work)
18
18
  should be_able_to(:update, generic_work)
19
19
  should be_able_to(:destroy, generic_work)
20
- }
20
+ end
21
21
  end
22
22
 
23
23
  describe 'as a repository manager' do
24
24
  let(:manager_user) { FactoryGirl.create(:admin) }
25
25
  let(:creating_user) { user }
26
26
  let(:current_user) { manager_user }
27
- it {
27
+ it do
28
28
  should be_able_to(:create, GenericWork.new)
29
29
  should be_able_to(:read, generic_work)
30
30
  should be_able_to(:update, generic_work)
31
31
  should be_able_to(:destroy, generic_work)
32
- }
32
+ end
33
33
  end
34
34
 
35
35
  describe 'another authenticated user' do
36
36
  let(:creating_user) { FactoryGirl.create(:user) }
37
37
  let(:current_user) { user }
38
- it {
38
+ it do
39
39
  should be_able_to(:create, GenericWork.new)
40
40
  should_not be_able_to(:read, generic_work)
41
41
  should_not be_able_to(:update, generic_work)
42
42
  should_not be_able_to(:destroy, generic_work)
43
- }
43
+ end
44
44
  end
45
45
 
46
46
  describe 'a nil user' do
47
47
  let(:creating_user) { FactoryGirl.create(:user) }
48
48
  let(:current_user) { nil }
49
- it {
49
+ it do
50
50
  should_not be_able_to(:create, GenericWork.new)
51
51
  should_not be_able_to(:read, generic_work)
52
52
  should_not be_able_to(:update, generic_work)
53
53
  should_not be_able_to(:destroy, generic_work)
54
- }
54
+ end
55
55
  end
56
56
  end
57
57
  end