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,15 @@
1
+ if (navigator.userAgent.match("MSIE"))
2
+ $("#new_file_set").validate();
3
+
4
+ $('#permissions_display').show();
5
+
6
+ confirmation_needed = true;
7
+ window.onbeforeunload = confirmExit;
8
+
9
+ function confirmExit(){
10
+ if(confirmation_needed){
11
+ // if you return a string it will be displayed in between "don't navigate away"
12
+ // and "click Ok to navigate away or cancel to stay put" in the confirm dialog
13
+ return "Your metadata has not been saved.";
14
+ }
15
+ }
@@ -0,0 +1,50 @@
1
+ <h2>Individual Titles </h2>
2
+ <div id="" class="well">
3
+ <div class="row">
4
+ <div class="col-sm-8">
5
+ <h3>Applies to individual files uploaded</h3>
6
+ <%= content_tag :p, t('curation_concerns.upload_set.help.title'), class: "help-block" %>
7
+ <% @upload_set.file_sets.sort { |a,b| a.label.downcase <=> b.label.downcase }.each_with_index do |gen_f, index| %>
8
+ <div class="form-group">
9
+ <%= f.input_label :title, as: :multi_value_with_help, label: "Title #{index + 1}" %>
10
+ <div id="additional_title_clone">
11
+ <%= f.text_field :title, name: "title[#{gen_f.id}][]", value: gen_f.label, class: 'form-control', required: true %>
12
+ </div>
13
+ </div>
14
+ <% end %>
15
+ </div>
16
+
17
+ <div class="col-sm-4">
18
+ <!-- put metadata about file being edited here -->
19
+ </div>
20
+ </div>
21
+ </div>
22
+
23
+ <%= hidden_field_tag(:extra_description_count, "1") %>
24
+ <div id="descriptions_display">
25
+ <h2>Bulk Descriptions</h2>
26
+ <div class="well">
27
+ <div class="row">
28
+ <div class="col-sm-6">
29
+ <h3>Applies to all files just uploaded</h3>
30
+ <%= f.input :resource_type, as: :select_with_help, collection: Sufia.config.resource_types,
31
+ input_html: { class: 'form-control', multiple: true } %>
32
+
33
+ <%= f.input :tag, as: :multi_value_with_help %>
34
+
35
+ <%= f.input :creator, as: :multi_value_with_help %>
36
+
37
+ <%= f.input :rights, as: :select_with_modal_help, collection: RightsService.select_options,
38
+ input_html: { class: 'form-control', multiple: true } %>
39
+
40
+ <%= render "file_sets/rights_modal" %>
41
+
42
+ <button id="show_addl_descriptions" class="btn btn-default" aria-label="reveal additional metadata description fields">Show Additional Fields</button>
43
+ <!-- hidden on initial load -->
44
+
45
+ <%= render 'more_metadata', f: f %>
46
+
47
+ </div> <!-- /col-sm-8 -->
48
+ </div> <!-- /row -->
49
+ </div><!-- /well -->
50
+ </div> <!-- /row -->
@@ -0,0 +1,7 @@
1
+ <div id="more_descriptions">
2
+ <button id="hide_addl_descriptions" class="btn btn-default" aria-label="hide additional metadata description fields">Hide Additional Fields</button>
3
+ <% (f.object.terms - [:title, :creator, :rights, :tag, :resource_type]).each do |term| %>
4
+ <%# <%= f.input term, as: :multi_value_with_help, input_html: { required: false} %>
5
+ <%= render_edit_field_partial(term, f: f) %>
6
+ <% end %>
7
+ </div> <!-- /more_descriptions -->
@@ -0,0 +1,26 @@
1
+ <%= javascript_tag do %>
2
+ <%= render partial: "edit", formats: [:js] %>
3
+ <% end %>
4
+
5
+ <h1>Apply Metadata</h1>
6
+ <p>
7
+ The information you provide for Title will be applied to the corresponding file only; however all other
8
+ information you provide will be applied <em>to the entire set of files that were uploaded together</em> you have just
9
+ deposited into <%= t('curation_concerns.product_name') %>. You may edit individual files from
10
+ <%= link_to "<i class='glyphicon glyphicon-dashboard'></i> #{t('curation_concerns.bread_crumb.works_list')}".html_safe, main_app.curation_concerns_generic_works_path %>
11
+ once this step is finished. <span class="required"><abbr title="required">*</abbr></span> indicates required fields.
12
+ </p>
13
+ <%= simple_form_for [main_app, @upload_set, @form], html: { multipart: true }, builder: Sufia::FormBuilder do |f| %>
14
+
15
+ <%= render 'metadata', f: f %>
16
+
17
+ <%#= render 'file_sets/permission_form', f: f, upload_set: @upload_set %>
18
+
19
+ <div id="permissions_submit">
20
+ <%= button_tag type: 'submit', class: 'btn btn-primary btn-lg',
21
+ onclick: "confirmation_needed = false;", id: "upload_submit", name: "update_permission" do %>
22
+ <i class="glyphicon glyphicon-floppy-disk"></i> Save
23
+ <% end %>
24
+ </div>
25
+
26
+ <% end %>
@@ -1,3 +1,4 @@
1
+ <br />
1
2
  <p>
2
3
  <%=t('curation_concerns.product_name') %> is a secure repository service enabling the
3
4
  <%=t('curation_concerns.institution.name') %> community to share its research and scholarly
@@ -20,6 +20,20 @@ SimpleForm.setup do |config|
20
20
  end
21
21
  end
22
22
 
23
+ config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
24
+ b.use :html5
25
+ b.use :placeholder
26
+ b.optional :maxlength
27
+ b.optional :readonly
28
+ b.use :label, class: 'col-sm-3 control-label'
29
+
30
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
31
+ ba.use :input
32
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
33
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
34
+ end
35
+ end
36
+
23
37
  # Wrappers for forms and inputs using the Twitter Bootstrap toolkit.
24
38
  # Check the Bootstrap docs (http://getbootstrap.com/css/)
25
39
  # to learn about the different styles for forms and inputs,
data/config/jetty.yml ADDED
@@ -0,0 +1,5 @@
1
+ default:
2
+ startup_wait: 90
3
+ jetty_port: 8983
4
+ java_opts:
5
+ - "-Xmx1024m"
@@ -7,6 +7,7 @@ en:
7
7
  division:
8
8
  name: "Your Division at Institution"
9
9
  homepage_url: "#"
10
+ document_language: "en"
10
11
  google_analytics_id: ""
11
12
  institution:
12
13
  name: "Your Institution"
@@ -17,10 +18,8 @@ en:
17
18
  q:
18
19
  label: "Search Repository"
19
20
  placeholder: "Type keywords in here"
20
- work:
21
- editor:
22
- legend: "Content Editors"
23
- caption: "Who should be able to make changes to this work?"
21
+ bread_crumb:
22
+ works_list: "the works browser"
24
23
  messages:
25
24
  success:
26
25
  single: "has been saved."
@@ -36,6 +35,26 @@ en:
36
35
  tag: "could not be updated. You do not have sufficient privileges to edit them."
37
36
  title: "Files failed"
38
37
  subject: "Batch upload permission denied"
38
+ api:
39
+ accepted:
40
+ default: "Your request has been accepted for processing, but processing is not complete. See job for more info."
41
+ unauthorized:
42
+ default: "You must be logged in to do that!"
43
+ forbidden:
44
+ default: "You are not authorized to access this content."
45
+ success:
46
+ default: "Your request was processed successfully."
47
+ deleted:
48
+ default: "Deleted the Resource"
49
+ not_found:
50
+ default: "Could not find a resource that matches your request."
51
+ unprocessable_entity:
52
+ default: "The resource you attempted to modify cannot be modified according to your request."
53
+ empty_file: "The file you uploaded has no content."
54
+ bad_request:
55
+ default: "Unable to process your request. See errors for more info."
56
+ internal_error:
57
+ default: "The server encountered an error."
39
58
  blacklight:
40
59
  search:
41
60
  fields:
@@ -86,6 +105,7 @@ en:
86
105
  hints:
87
106
  defaults:
88
107
  description: 'Please keep your description to 300 words or fewer.'
108
+ files: 'A PDF is preferred.'
89
109
  labels:
90
110
  defaults:
91
111
  lease_expiration_date: 'until'
@@ -94,3 +114,4 @@ en:
94
114
  visibility_after_embargo: 'then open it up to'
95
115
  visibility_during_lease: 'Is available for'
96
116
  visibility_after_lease: 'then restrict it to'
117
+ files: 'Upload a file'
data/config/routes.rb CHANGED
@@ -1,4 +1,9 @@
1
1
  CurationConcerns::Engine.routes.draw do
2
+ get 'single_use_link/show/:id' => 'single_use_links_viewer#show', as: :show_single_use_link
3
+ get 'single_use_link/download/:id' => 'single_use_links_viewer#download', as: :download_single_use_link
4
+ get 'single_use_link/generate_download/:id' => 'single_use_links#new_download', as: :generate_download_single_use_link
5
+ get 'single_use_link/generate_show/:id' => 'single_use_links#new_show', as: :generate_show_single_use_link
6
+
2
7
  # mount BrowseEverything::Engine => '/remote_files/browse'
3
8
  resources :classify_concerns, only: [:new, :create]
4
9
  end
@@ -14,19 +14,17 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = ""
15
15
  spec.license = "APACHE2"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0")
17
+ spec.files = `git ls-files | grep -v ^curation_concerns-models`.split($\)
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency 'hydra-head', '~> 9.0'
23
23
  spec.add_dependency "breadcrumbs_on_rails", "~> 2.3.0"
24
- spec.add_dependency "active_attr"
24
+ spec.add_dependency "jquery-ui-rails"
25
25
  spec.add_dependency "simple_form", '~> 3.1.0'
26
26
  spec.add_dependency 'curation_concerns-models', version
27
- spec.add_dependency 'hydra-collections' # allow curation_concerns-models to specify the version
28
- spec.add_dependency 'hydra-derivatives' # allow hydra-works to specify the version
29
- spec.add_dependency 'hydra-editor'
27
+ spec.add_dependency 'hydra-editor', '~> 1.1'
30
28
  spec.add_dependency 'blacklight_advanced_search', ['>= 5.1.4', '< 6.0']
31
29
 
32
30
  spec.add_development_dependency "devise", "~> 3.0"
@@ -38,7 +36,7 @@ Gem::Specification.new do |spec|
38
36
  spec.add_development_dependency "rspec-rails"
39
37
  spec.add_development_dependency 'rspec-html-matchers'
40
38
  spec.add_development_dependency 'rspec-activemodel-mocks', '~> 1.0'
41
- spec.add_development_dependency "capybara"
39
+ spec.add_development_dependency "capybara", '~> 2.5'
42
40
  spec.add_development_dependency "poltergeist", ">= 1.5.0"
43
41
  spec.add_development_dependency "factory_girl"
44
42
  spec.add_development_dependency "database_cleaner", "< 1.1.0"
@@ -0,0 +1,48 @@
1
+ module CurationConcerns
2
+ module Callbacks
3
+ class Registry
4
+ attr_reader :callbacks
5
+
6
+ def initialize
7
+ @callbacks = {}
8
+ end
9
+
10
+ # Enables a callback by specifying one or more hooks.
11
+ def enable(hook, *more_hooks)
12
+ ([hook] + more_hooks).each { |h| @callbacks[h] ||= nil }
13
+ end
14
+
15
+ # Returns all enabled callback hooks.
16
+ def enabled
17
+ @callbacks.keys
18
+ end
19
+
20
+ # Returns true if the callback hook has been enabled.
21
+ def enabled?(hook)
22
+ @callbacks.key? hook
23
+ end
24
+
25
+ # Defines a callback for a given hook.
26
+ def set(hook, &block)
27
+ raise NoBlockGiven, "a block is required when setting a callback" unless block_given?
28
+ @callbacks[hook] = proc(&block)
29
+ end
30
+
31
+ # Returns true if a callback has been defined for a given hook.
32
+ def set?(hook)
33
+ enabled?(hook) && @callbacks[hook].respond_to?(:call)
34
+ end
35
+
36
+ # Runs the callback defined for a given hook, with the arguments provided
37
+ def run(hook, *args)
38
+ raise NotEnabled unless enabled?(hook)
39
+ return nil unless set?(hook)
40
+ @callbacks[hook].call(*args)
41
+ end
42
+ end
43
+
44
+ # Custom exceptions
45
+ class NotEnabled < StandardError; end
46
+ class NoBlockGiven < StandardError; end
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ require 'active_support/concern'
2
+ require 'curation_concerns/callbacks/registry'
3
+
4
+ module CurationConcerns
5
+ module Callbacks
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ # Define class instance variable as endpoint to the
10
+ # Callback::Registry api.
11
+ @callback = Registry.new
12
+ end
13
+
14
+ module ClassMethods
15
+ # Reader for class instance variable containing callback definitions.
16
+ def callback
17
+ @callback
18
+ end
19
+ end
20
+
21
+ # Accessor to Callback::Registry api for instances.
22
+ def callback
23
+ self.class.callback
24
+ end
25
+ end
26
+ end
@@ -2,9 +2,9 @@ module CurationConcerns
2
2
  class ControllerResource < CanCan::ControllerResource
3
3
  protected
4
4
 
5
- # Override resource_params to make this a nop. CurationConcerns uses actors to assign attributes
6
- def resource_params
7
- {}
8
- end
5
+ # Override resource_params to make this a nop. CurationConcerns uses actors to assign attributes
6
+ def resource_params
7
+ {}
8
+ end
9
9
  end
10
10
  end
@@ -1,8 +1,10 @@
1
- #Load blacklight which will give curation_concerns views a higher preference than those in blacklight
1
+ # Load blacklight which will give curation_concerns views a higher preference than those in blacklight
2
2
  require 'blacklight'
3
3
  require 'curation_concerns/models'
4
4
  require 'hydra-collections'
5
5
  require 'hydra-editor'
6
+ require 'jquery-ui-rails'
7
+ require 'qa'
6
8
 
7
9
  module CurationConcerns
8
10
  class Engine < ::Rails::Engine
@@ -10,7 +12,7 @@ module CurationConcerns
10
12
  require 'breadcrumbs_on_rails'
11
13
 
12
14
  config.autoload_paths += %W(
13
- #{config.root}/lib
15
+ #{config.root}/lib
14
16
  )
15
17
 
16
18
  initializer 'curation_concerns.initialize' do
@@ -1,10 +1,13 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
-
4
3
  def curation_concerns_basic_routes
5
4
  resources :downloads, only: :show
5
+ # Batch edit routes
6
+ get 'upload_sets/:id/edit' => 'upload_sets#edit', as: :edit_upload_set
7
+ post 'upload_sets/:id' => 'upload_sets#update', as: :upload_set_file_sets
8
+
6
9
  namespace :curation_concerns, path: :concern do
7
- CurationConcerns.configuration.registered_curation_concern_types.map(&:tableize).each do |curation_concern_name|
10
+ CurationConcerns.config.registered_curation_concern_types.map(&:tableize).each do |curation_concern_name|
8
11
  namespaced_resources curation_concern_name, except: [:index]
9
12
  end
10
13
  resources :permissions, only: [] do
@@ -13,8 +16,8 @@ module ActionDispatch::Routing
13
16
  post :copy
14
17
  end
15
18
  end
16
- resources :generic_files, only: [:new, :create], path: 'container/:parent_id/generic_files'
17
- resources :generic_files, only: [:show, :edit, :update, :destroy] do
19
+ resources :file_sets, only: [:new, :create], path: 'container/:parent_id/file_sets'
20
+ resources :file_sets, only: [:show, :edit, :update, :destroy] do
18
21
  member do
19
22
  get :versions
20
23
  put :rollback
@@ -41,7 +44,7 @@ module ActionDispatch::Routing
41
44
  end
42
45
  end
43
46
 
44
- # kmr added :show to make tests pass
47
+ # kmr added :show to make tests pass
45
48
  def curation_concerns_embargo_management
46
49
  resources :embargoes, only: [:index, :edit, :destroy] do
47
50
  collection do
@@ -56,21 +59,22 @@ module ActionDispatch::Routing
56
59
  end
57
60
 
58
61
  private
59
- # Namespaces routes appropriately
60
- # @example route_namespaced_target("curation_concerns/generic_work") is equivalent to
61
- # namespace "curation_concerns" do
62
- # resources "generic_work", except: [:index]
63
- # end
64
- def namespaced_resources(target, opts={})
65
- if target.include?("/")
66
- the_namespace = target[0..target.index("/")-1]
67
- new_target = target[target.index("/")+1..-1]
68
- namespace the_namespace do
69
- namespaced_resources(new_target, opts)
62
+
63
+ # Namespaces routes appropriately
64
+ # @example route_namespaced_target("curation_concerns/generic_work") is equivalent to
65
+ # namespace "curation_concerns" do
66
+ # resources "generic_work", except: [:index]
67
+ # end
68
+ def namespaced_resources(target, opts = {})
69
+ if target.include?('/')
70
+ the_namespace = target[0..target.index('/') - 1]
71
+ new_target = target[target.index('/') + 1..-1]
72
+ namespace the_namespace do
73
+ namespaced_resources(new_target, opts)
74
+ end
75
+ else
76
+ resources target, opts
70
77
  end
71
- else
72
- resources target, opts
73
78
  end
74
- end
75
79
  end
76
80
  end
@@ -0,0 +1,3 @@
1
+ module CurationConcerns
2
+ class SingleUseError < StandardError; end
3
+ end
@@ -6,5 +6,3 @@ spec_directory = File.expand_path('../../../spec', __FILE__)
6
6
  # Dir["#{spec_directory}/factories/**/*.rb"].each { |f| require f }
7
7
  Dir["#{spec_directory}/support/curation_concerns/*.rb"].each { |f| require f }
8
8
  Dir["#{spec_directory}/support/shared/*.rb"].each { |f| require f }
9
-
10
-
@@ -1,3 +1,3 @@
1
1
  module CurationConcerns
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,8 +1,7 @@
1
- require "curation_concerns/version"
1
+ require 'curation_concerns/version'
2
2
  require 'curation_concerns/engine'
3
3
  require 'curation_concerns/configuration'
4
4
  require 'blacklight_advanced_search'
5
5
 
6
6
  module CurationConcerns
7
-
8
7
  end
@@ -2,45 +2,40 @@ require 'rails/generators'
2
2
 
3
3
  module CurationConcerns
4
4
  class Install < Rails::Generators::Base
5
-
6
5
  source_root File.expand_path('../templates', __FILE__)
7
6
 
8
- argument :model_name, type: :string , default: "user"
9
- desc """
7
+ argument :model_name, type: :string, default: 'user'
8
+ desc ''"
10
9
  This generator makes the following changes to your application:
11
10
  1. Runs installers for blacklight & hydra-head (which also install & configure devise)
12
11
  2. Runs curation_concerns:models:install
13
- 3. Injects CurationConcerns routes
14
- 4. Adds CurationConcerns abilities into the Ability class
15
- 5. Adds controller behavior to the application controller
12
+ 3. Adds controller behavior to the application controller
13
+ 4. Injects CurationConcerns routes
14
+ 5. Adds CurationConcerns abilities into the Ability class
16
15
  6. Copies the catalog controller into the local app
17
16
  7. Adds CurationConcerns::SolrDocumentBehavior to app/models/solr_document.rb
18
- """
17
+ 8. Adds config/authorities/rights.yml to the application
18
+ "''
19
19
 
20
20
  def run_required_generators
21
- say_status("warning", "[CurationConcerns] GENERATING BLACKLIGHT", :yellow)
22
- generate "blacklight:install --devise"
23
- say_status("warning", "[CurationConcerns] GENERATING HYDRA-HEAD", :yellow)
24
- generate "hydra:head -f"
25
- say_status("warning", "[CurationConcerns] GENERATING CURATION_CONCERNS MODELS", :yellow)
21
+ say_status('warning', '[CurationConcerns] GENERATING BLACKLIGHT', :yellow)
22
+ generate 'blacklight:install --devise'
23
+ say_status('warning', '[CurationConcerns] GENERATING HYDRA-HEAD', :yellow)
24
+ generate 'hydra:head -f'
25
+ say_status('warning', '[CurationConcerns] GENERATING CURATION_CONCERNS MODELS', :yellow)
26
26
  generate "curation_concerns:models:install#{options[:force] ? ' -f' : ''}"
27
27
  end
28
28
 
29
- def remove_catalog_controller
30
- say_status("warning", "Removing Blacklight's generated CatalogController...", :yellow)
31
- remove_file('app/controllers/catalog_controller.rb')
32
- end
33
-
34
29
  def inject_application_controller_behavior
35
- inject_into_file 'app/controllers/application_controller.rb', :after => /Blacklight::Controller\s*\n/ do
36
- "\n # Adds CurationConcerns behaviors to the application controller.\n" +
30
+ inject_into_file 'app/controllers/application_controller.rb', after: /Hydra::Controller::ControllerBehavior\s*\n/ do
31
+ "\n # Adds CurationConcerns behaviors to the application controller.\n" \
37
32
  " include CurationConcerns::ApplicationControllerBehavior\n"
38
33
  end
39
34
  end
40
35
 
41
36
  def replace_blacklight_layout
42
37
  gsub_file 'app/controllers/application_controller.rb', /layout 'blacklight'/,
43
- "include CurationConcerns::ThemedLayoutController\n with_themed_layout '1_column'\n"
38
+ "include CurationConcerns::ThemedLayoutController\n with_themed_layout '1_column'\n"
44
39
  end
45
40
 
46
41
  # def insert_builder
@@ -58,9 +53,14 @@ module CurationConcerns
58
53
  # END Blacklight stuff
59
54
 
60
55
  def inject_routes
61
- inject_into_file 'config/routes.rb', :after => /devise_for :users\s*\n/ do
56
+ # Remove root route that was added by blacklight generator
57
+ gsub_file 'config/routes.rb', /root (:to =>|to:) "catalog#index"/, ''
58
+
59
+ inject_into_file 'config/routes.rb', after: /devise_for :users\s*\n/ do
62
60
  " mount Hydra::Collections::Engine => '/'\n"\
63
61
  " mount CurationConcerns::Engine, at: '/'\n"\
62
+ " resources :welcome, only: 'index'\n"\
63
+ " root to: 'welcome#index'\n"\
64
64
  " curation_concerns_collections\n"\
65
65
  " curation_concerns_basic_routes\n"\
66
66
  " curation_concerns_embargo_management\n"\
@@ -68,18 +68,22 @@ module CurationConcerns
68
68
  end
69
69
 
70
70
  def inject_ability
71
- inject_into_file 'app/models/ability.rb', :after => /Hydra::Ability\s*\n/ do
71
+ inject_into_file 'app/models/ability.rb', after: /Hydra::Ability\s*\n/ do
72
72
  " include CurationConcerns::Ability\n"\
73
73
  " self.ability_logic += [:everyone_can_create_curation_concerns]\n\n"
74
74
  end
75
75
  end
76
76
 
77
+ def catalog_controller
78
+ copy_file "catalog_controller.rb", "app/controllers/catalog_controller.rb"
79
+ end
80
+
77
81
  # Add behaviors to the SolrDocument model
78
82
  def inject_solr_document_behavior
79
- file_path = "app/models/solr_document.rb"
80
- if File.exists?(file_path)
83
+ file_path = 'app/models/solr_document.rb'
84
+ if File.exist?(file_path)
81
85
  inject_into_file file_path, after: /include Blacklight::Solr::Document.*$/ do
82
- "\n # Adds CurationConcerns behaviors to the SolrDocument.\n" +
86
+ "\n # Adds CurationConcerns behaviors to the SolrDocument.\n" \
83
87
  " include CurationConcerns::SolrDocumentBehavior\n"
84
88
  end
85
89
  else
@@ -88,16 +92,16 @@ module CurationConcerns
88
92
  end
89
93
 
90
94
  def assets
91
- copy_file "curation_concerns.css.scss", "app/assets/stylesheets/curation_concerns.css.scss"
92
- copy_file "curation_concerns.js", "app/assets/javascripts/curation_concerns.js"
95
+ copy_file 'curation_concerns.scss', 'app/assets/stylesheets/curation_concerns.scss'
96
+ copy_file 'curation_concerns.js', 'app/assets/javascripts/curation_concerns.js'
93
97
  end
94
98
 
95
99
  def add_helper
96
- copy_file "curation_concerns_helper.rb", "app/helpers/curation_concerns_helper.rb"
100
+ copy_file 'curation_concerns_helper.rb', 'app/helpers/curation_concerns_helper.rb'
97
101
  end
98
102
 
99
- def add_config_file
100
- copy_file "curation_concerns_config.rb", "config/initializers/curation_concerns_config.rb"
103
+ def rights_config
104
+ copy_file "config/authorities/rights.yml", "config/authorities/rights.yml"
101
105
  end
102
106
  end
103
107
  end