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
@@ -1,36 +0,0 @@
1
- $(function(){
2
- var $window = $(window),
3
- $modal = $('#ajax-modal'),
4
- resolution = screen.width + 'x' + screen.height,
5
- viewport = $window.width() + 'x' + $window.height(),
6
- current_url = document.location.href;
7
-
8
- function populateHelpForm(){
9
- // Removing the "NOT" portion
10
- $('#help-js strong').remove();
11
- $('#help_request_javascript_enabled').val(1);
12
-
13
- $('#help-resolution').text(resolution);
14
- $('#help_request_resolution').val(resolution);
15
-
16
- $('#help-viewport').text(viewport);
17
- $('#help_request_view_port').val(viewport);
18
-
19
- $('#help-url').text(current_url);
20
- $('#help_request_current_url').val(current_url);
21
- }
22
- populateHelpForm();
23
-
24
- $('.request-help').on('click', function(event){
25
- event.preventDefault();
26
-
27
- $('body').modalmanager('loading');
28
-
29
- setTimeout(function(){
30
- $modal.load('/help_requests/new #new_help_request', function(){
31
- $modal.modal();
32
- populateHelpForm();
33
- });
34
- }, 1000);
35
- });
36
- });
@@ -1,123 +0,0 @@
1
- (($, window, document) ->
2
- $this = undefined
3
-
4
- # default settings
5
- _settings =
6
- default: 'cool!'
7
-
8
- _remover = $("<button class=\"btn btn-danger remove\"><i class=\"icon-white glyphicon-minus\"></i><span>Remove</span></button>")
9
- _adder = $("<button class=\"btn btn-success add\"><i class=\"icon-white glyphicon-plus\"></i><span>Add</span></button>")
10
-
11
-
12
- # This is your public API (no leading underscore, see?)
13
- # All public methods must return $this so your plugin is chainable.
14
- methods =
15
- init: (options) ->
16
- $this = $(@)
17
- # The settings object is available under its name: _settings. Let's
18
- # expand it with any custom options the user provided.
19
- $.extend _settings, (options or {})
20
- # Do anything that actually inits your plugin, if needed, right now!
21
- # An important thing to keep in mind, is that jQuery plugins should be
22
- # built so that one can apply them to more than one element, like so:
23
- #
24
- # $('.matching-elements, #another-one').foobar()
25
- #
26
-
27
- #This code sets up all the "Add" and "Remove" buttons for the autocomplete fields.
28
-
29
- #For each autocomplete set on the page, add the "Add" and "Remove" buttons
30
- $this.each (index, el) ->
31
- $('.autocomplete-groups').each (index, el) ->
32
- _internals.autocompleteGroups(el)
33
-
34
- #Make sure these buttons have unique id's
35
- _adder.id = "adder_" + index
36
- _remover.id = "remover_" + index
37
-
38
- #Add the "Remove" button
39
- $('.field-wrapper:not(:last-child) .field-controls', this).append(_remover.clone())
40
-
41
- #Add the "Add" button
42
- $('.field-controls:last', this).append(_adder.clone())
43
-
44
- #Bind the buttons to onClick events
45
- $(el).on 'click', 'button.add', (e) ->
46
- _internals.addToList(this)
47
- $(el).on 'click', 'button.remove', (e) ->
48
- _internals.removeFromList(this)
49
-
50
- return $this
51
-
52
- # This method is often overlooked.
53
- destroy: ->
54
- # Do anything to clean it up (nullify references, unbind events…).
55
- return $this
56
-
57
- _internals =
58
- addToList: (el) ->
59
- $activeControls = $(el).closest('.field-controls')
60
- $listing = $activeControls.closest('.listing')
61
- $('.add', $activeControls).remove()
62
- $removeControl = _remover.clone()
63
- $activeControls.prepend($removeControl)
64
- _internals.newRow($listing, el)
65
- false
66
-
67
- newRow: ($listing, el) ->
68
- $listing.append _internals.newListItem($('li', $listing).size(), $listing, el)
69
- _internals.autocompleteGroups($('.autocomplete-groups:last', $listing))
70
-
71
-
72
- removeFromList: (el) ->
73
- $currentGroup = $(el).closest('li')
74
- $listing = $currentGroup.closest('.listing')
75
- $currentGroup.hide()
76
- # set the destroy flag
77
- $('input:not([value])', $currentGroup).val('true')
78
- false
79
-
80
- newListItem: (index, el) ->
81
- ## We have multiple places in a view where we need these autocomplete fields
82
- ## (Work edit view for example), so we don't want to use the first #entry-template.
83
- ## Using .closest isn't working, but this seems to for now.
84
- source = $(el).parent().children().html()
85
- template = Handlebars.compile(source)
86
- template({index: index})
87
-
88
- addExistingGroup: ($listItem, value, label) ->
89
- source = $listItem.parent().prev().html()
90
- template = Handlebars.compile(source)
91
- $list = $listItem.closest('ul')
92
- $('input[required]', $list).removeAttr('required')
93
- $listItem.replaceWith template({index: $('li', $list).index($listItem), value: value, label: label})
94
- _internals.newRow($list)
95
-
96
- autocompleteGroups: (el) ->
97
- $targetElement = $(el)
98
- $targetElement.autocomplete
99
- source: (request, response) ->
100
- $targetElement.data('url')
101
- $.getJSON $targetElement.data('url'), { q: request.term + "*" }, ( data, status, xhr ) ->
102
- matches = []
103
- $.each data.response.docs, (idx, val) ->
104
- matches.push {label: val['title_tesim'][0], value: val['id']}
105
- response( matches )
106
- minLength: 2
107
- focus: ( event, ui ) ->
108
- $targetElement.val(ui.item.label)
109
- event.preventDefault()
110
- select: ( event, ui ) ->
111
- _internals.addExistingGroup($targetElement.closest('li'), ui.item.value, ui.item.label)
112
- $targetElement.val('')
113
- event.preventDefault()
114
-
115
-
116
- $.fn.linkGroups = (method) ->
117
- if methods[method]
118
- methods[method].apply this, Array::slice.call(arguments, 1)
119
- else if typeof method is "object" or not method
120
- methods.init.apply this, arguments
121
- else
122
- $.error "Method " + method + " does not exist on jquery.linkGroups"
123
- ) jQuery, window, document
@@ -1,126 +0,0 @@
1
- (($, window, document) ->
2
- $this = undefined
3
-
4
- # default settings
5
- _settings =
6
- default: 'cool!'
7
-
8
- _remover = $("<button class=\"btn btn-danger remove\"><i class=\"icon-white icon-minus\"></i><span>Remove</span></button>")
9
- _adder = $("<button class=\"btn btn-success add\"><i class=\"icon-white icon-plus\"></i><span>Add</span></button>")
10
-
11
-
12
- # This is your public API (no leading underscore, see?)
13
- # All public methods must return $this so your plugin is chainable.
14
- methods =
15
- init: (options) ->
16
- $this = $(@)
17
- # The settings object is available under its name: _settings. Let's
18
- # expand it with any custom options the user provided.
19
- $.extend _settings, (options or {})
20
- # Do anything that actually inits your plugin, if needed, right now!
21
- # An important thing to keep in mind, is that jQuery plugins should be
22
- # built so that one can apply them to more than one element, like so:
23
- #
24
- # $('.matching-elements, #another-one').foobar()
25
- #
26
-
27
- #This code sets up all the "Add" and "Remove" buttons for the autocomplete fields.
28
-
29
- #For each autocomplete set on the page, add the "Add" and "Remove" buttons
30
- $this.each (index, el) ->
31
- $('.autocomplete-users').each (index, el) ->
32
- _internals.autocompleteUsers(el)
33
-
34
- #Make sure these buttons have unique id's
35
- _adder.id = "adder_" + index
36
- _remover.id = "remover_" + index
37
-
38
- #Add the "Remove" button
39
- $('.field-wrapper:not(:last-child) .field-controls', this).append(_remover.clone())
40
-
41
- #Add the "Add" button
42
- $('.field-controls:last', this).append(_adder.clone())
43
-
44
- #Bind the buttons to onClick events
45
- $(el).on 'click', 'button.add', (e) ->
46
- _internals.addToList(this)
47
- $(el).on 'click', 'button.remove', (e) ->
48
- _internals.removeFromList(this)
49
-
50
- return $this
51
-
52
- # This method is often overlooked.
53
- destroy: ->
54
- # Do anything to clean it up (nullify references, unbind events…).
55
- return $this
56
-
57
- _internals =
58
- addToList: (el) ->
59
- $activeControls = $(el).closest('.field-controls')
60
- $listing = $activeControls.closest('.listing')
61
- $('.add', $activeControls).remove()
62
- $removeControl = _remover.clone()
63
- $activeControls.prepend($removeControl)
64
- _internals.newRow($listing, el)
65
- false
66
-
67
- newRow: ($listing, el) ->
68
- $listing.append _internals.newListItem($('li', $listing).size(), $listing, el)
69
- _internals.autocompleteUsers($('.autocomplete-users:last', $listing))
70
-
71
-
72
- removeFromList: (el) ->
73
- $currentUser = $(el).closest('li')
74
- $listing = $currentUser.closest('.listing')
75
- $currentUser.hide()
76
- # set the destroy flag
77
- $('input:not([value])', $currentUser).val('true')
78
- false
79
-
80
- newListItem: (index, el) ->
81
- ## We have multiple places in a view where we need these autocomplete fields
82
- ## (Work edit view for example), so we don't want to use the first #entry-template.
83
- ## Using .closest isn't working, but this seems to for now.
84
- source = $(el).parent().children().html()
85
- template = Handlebars.compile(source)
86
- template({index: index})
87
-
88
- addExistingUser: ($listItem, value, label) ->
89
- ## We have multiple places in a view where we need these autocomplete fields
90
- ## (Work edit view for example), so we don't want to use the first #existing-user-template.
91
- ## Using .closest isn't working, but this seems to for now.
92
- source = $listItem.parent().prev().html()
93
- template = Handlebars.compile(source)
94
- $list = $listItem.closest('ul')
95
- $('input[required]', $list).removeAttr('required')
96
- $listItem.replaceWith template({index: $('li', $list).index($listItem), value: value, label: label})
97
- _internals.newRow($list)
98
-
99
- autocompleteUsers: (el) ->
100
- $targetElement = $(el)
101
- $targetElement.autocomplete
102
- source: (request, response) ->
103
- $targetElement.data('url')
104
- $.getJSON $targetElement.data('url'), { q: request.term + "*" }, ( data, status, xhr ) ->
105
- matches = []
106
- $.each data.response.docs, (idx, val) ->
107
- matches.push {label: val['name_tesim'][0], value: val['id']}
108
- response( matches )
109
- minLength: 2
110
- focus: ( event, ui ) ->
111
- $targetElement.val(ui.item.label)
112
- event.preventDefault()
113
- select: ( event, ui ) ->
114
- _internals.addExistingUser($targetElement.closest('li'), ui.item.value, ui.item.label)
115
- $targetElement.val('')
116
- event.preventDefault()
117
-
118
-
119
- $.fn.linkUsers = (method) ->
120
- if methods[method]
121
- methods[method].apply this, Array::slice.call(arguments, 1)
122
- else if typeof method is "object" or not method
123
- methods.init.apply this, arguments
124
- else
125
- $.error "Method " + method + " does not exist on jquery.linkUsers"
126
- ) jQuery, window, document
@@ -1,95 +0,0 @@
1
- (($, window, document) ->
2
- $this = undefined
3
-
4
- # default settings
5
- _settings =
6
- default: 'cool!'
7
-
8
-
9
- # This is your public API (no leading underscore, see?)
10
- # All public methods must return $this so your plugin is chainable.
11
- methods =
12
- init: (options) ->
13
- $this = $(@)
14
- # The settings object is available under its name: _settings. Let's
15
- # expand it with any custom options the user provided.
16
- $.extend _settings, (options or {})
17
- # Do anything that actually inits your plugin, if needed, right now!
18
- # An important thing to keep in mind, is that jQuery plugins should be
19
- # built so that one can apply them to more than one element, like so:
20
- #
21
- # $('.matching-elements, #another-one').foobar()
22
- #
23
- $this.each (index, el) ->
24
- $('#user').each (index, el) ->
25
- _internals.autocompleteUsers(el)
26
-
27
- $(el).on 'click', '.remove-proxy-button', _internals.removeContributor
28
-
29
- return $this
30
-
31
- # This method is often overlooked.
32
- destroy: ->
33
- # Do anything to clean it up (nullify references, unbind events…).
34
- return $this
35
-
36
- _internals =
37
- addContributor: (name, id) ->
38
- source = $("#tmpl-proxy-row").html()
39
- template = Handlebars.compile(source)
40
- row = template({name: name, id: id})
41
- $('#authorizedProxies tbody', $this).append(row)
42
-
43
- # if (settings.afterAdd) {
44
- # settings.afterAdd(this, cloneElem)
45
- # }
46
-
47
- $.ajax({
48
- type: "POST",
49
- url: 'depositors',
50
- dataType: 'json',
51
- data: {grantee_id: id}
52
- })
53
-
54
- false
55
-
56
- removeContributor: ->
57
- # remove the row
58
- $.ajax({
59
- url: $(this).closest('a').prop('href'),
60
- type: "post",
61
- dataType: "json",
62
- data: {"_method":"delete"}
63
- })
64
- $(this).closest('tr').remove()
65
- false
66
-
67
- autocompleteUsers: (el) ->
68
- # Remove the choice from the search widget and put it in the table.
69
- $targetElement = $(el)
70
- $targetElement.autocomplete
71
- source: (request, response) ->
72
- $targetElement.data('url')
73
- $.getJSON $targetElement.data('url'), { q: request.term, user: true}, ( data, status, xhr ) ->
74
- matches = []
75
- $.each data.response.docs, (idx, val) ->
76
- matches.push {label: val['name_tesim'][0], value: val['id']}
77
- response( matches )
78
- minLength: 2
79
- focus: ( event, ui ) ->
80
- $targetElement.val(ui.item.label)
81
- event.preventDefault()
82
- select: ( event, ui ) ->
83
- _internals.addContributor(ui.item.label, ui.item.value)
84
- $targetElement.val('')
85
- event.preventDefault()
86
-
87
-
88
- $.fn.proxyRights = (method) ->
89
- if methods[method]
90
- methods[method].apply this, Array::slice.call(arguments, 1)
91
- else if typeof method is "object" or not method
92
- methods.init.apply this, arguments
93
- else
94
- $.error "Method " + method + " does not exist on jquery.proxyRights"
95
- ) jQuery, window, document
@@ -1,23 +0,0 @@
1
- /**
2
- * This Javascript/JQuery method is used for the population of the contributor field
3
- * when a proxy user is making a deposit on behalf of someone else. The method gets the selected
4
- * person on behalf of whom the proxy person is making the deposit and places that person's name in
5
- * a Contributor field and clicks the contributor Add button.
6
- */
7
- function updateContributors(){
8
-
9
- // Get the selected owner name from the owner control.
10
- // If it is 'Myself', then pluck the name from the display name on the dropdown menu in the title bar of the page.
11
- // If 'nothing' was selected, do nothing and return.
12
-
13
- var ownerName = $("[id*='_owner'] option:selected").text();
14
- if (ownerName == 'Myself') {
15
- ownerName = $(".user-display-name").text().trim();
16
- }
17
- else if (ownerName === "") { return; }
18
-
19
- // Put that name into the "Add" Contributor control and force a click of the Add button.
20
- // Note that the last Contributor control is always the one into which a new user is entered.
21
- $('input[id$=_contributor]').last().val(ownerName);
22
- $("div[class*=_contributor] .add").click();
23
- }
@@ -1,20 +0,0 @@
1
- jQuery ->
2
- $('.autocomplete').each( (index, el) ->
3
- $targetElement = $(el)
4
- $targetElement.tokenInput $targetElement.data("url"), {
5
- theme: 'facebook'
6
- prePopulate: $('.autocomplete').data('load')
7
- jsonContainer: "docs"
8
- propertyToSearch: "title"
9
- preventDuplicates: true
10
- tokenValue: "pid"
11
- onResult: (results) ->
12
- pidsToFilter = $targetElement.data('exclude')
13
- $.each(results.docs, (index, value) ->
14
- # Filter out anything listed in data-exclude. ie. the current object.
15
- if (pidsToFilter.indexOf(value.pid) > -1)
16
- results.docs.splice(index, 1)
17
- )
18
- return results
19
- }
20
- )
@@ -1,3 +0,0 @@
1
- class CatalogController < ApplicationController
2
- include CurationConcerns::CatalogController
3
- end
@@ -1,149 +0,0 @@
1
- module CurationConcerns
2
- module GenericFilesControllerBehavior
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- include CurationConcerns::ThemedLayoutController
7
- with_themed_layout '1_column'
8
- load_and_authorize_resource class: ::GenericFile
9
- helper_method :curation_concern
10
- include CurationConcerns::ParentContainer
11
- end
12
-
13
- def curation_concern
14
- @generic_file
15
- end
16
-
17
- # routed to /files/new
18
- def new
19
- end
20
-
21
- # routed to /files/:id/edit
22
- def edit
23
- # @generic_file.initialize_fields
24
- @groups = current_user.groups
25
- end
26
-
27
- # routed to /files (POST)
28
- def create
29
- create_from_upload(params)
30
- end
31
-
32
- def create_from_upload(params)
33
- # check error condition No files
34
- return json_error("Error! No file to save") if !params.has_key?(:files)
35
-
36
- file = params[:files].detect {|f| f.respond_to?(:original_filename) }
37
- if !file
38
- json_error "Error! No file for upload", 'unknown file', :status => :unprocessable_entity
39
- elsif (empty_file?(file))
40
- json_error "Error! Zero Length File!", file.original_filename
41
- else
42
- process_file(file)
43
- end
44
- rescue RSolr::Error::Http => error
45
- logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error.to_s}\n #{error.backtrace.join("\n")}\n\n"
46
- json_error "Error occurred while creating generic file."
47
- ensure
48
- # remove the tempfile (only if it is a temp file)
49
- file.tempfile.delete if file.respond_to?(:tempfile)
50
- end
51
-
52
- # routed to /files/:id
53
- def show
54
- end
55
-
56
- def destroy
57
- @generic_file.destroy
58
- redirect_to [main_app, :curation_concerns, @generic_file.generic_works.first], notice: "The file has been deleted."
59
- end
60
-
61
- # routed to /files/:id (PUT)
62
- def update
63
- success = if wants_to_revert?
64
- actor.revert_content(params[:revision])
65
- elsif params.has_key? :files
66
- actor.update_content(params[:files].first)
67
- elsif params.has_key? :generic_file
68
- update_metadata
69
- end
70
- if success
71
- redirect_to [main_app, :curation_concerns, @generic_file], notice:
72
- "The file #{view_context.link_to(@generic_file, [main_app, :curation_concerns, @generic_file])} has been updated."
73
- else
74
- render action: 'edit'
75
- end
76
- rescue RSolr::Error::Http => error
77
- flash[:error] = error.message
78
- logger.error "GenericFilesController::update rescued #{error.class}\n\t#{error.message}\n #{error.backtrace.join("\n")}\n\n"
79
- render action: 'edit'
80
- end
81
-
82
- # this is provided so that implementing application can override this behavior and map params to different attributes
83
- def update_metadata
84
- # attrs_without_visibility_info = actor.interpret_visibility(attributes)
85
- file_attributes = CurationConcerns::Forms::GenericFileEditForm.model_attributes(attributes)
86
- actor.update_metadata(file_attributes, attributes)
87
- end
88
-
89
- protected
90
-
91
- def wants_to_revert?
92
- params.has_key?(:revision) && params[:revision] != @generic_file.latest_content_version.label
93
- end
94
-
95
- def actor
96
- @actor ||= ::CurationConcerns::GenericFileActor.new(@generic_file, current_user)
97
- end
98
-
99
- def attributes
100
- # params.fetch(:generic_file, {}).dup # use a copy of the hash so that original params stays untouched when interpret_visibility modifies things
101
- params.fetch(:generic_file, {}).permit!.dup # use a copy of the hash so that original params stays untouched when interpret_visibility modifies things
102
- end
103
-
104
- def json_error(error, name=nil, additional_arguments={})
105
- args = {:error => error}
106
- args[:name] = name if name
107
- render additional_arguments.merge({:json => [args]})
108
- end
109
-
110
- def _prefixes
111
- # This allows us to use the unauthorized and form_permission template in curation_concerns/base
112
- @_prefixes ||= super + ['curation_concerns/base']
113
- end
114
-
115
- def empty_file?(file)
116
- (file.respond_to?(:tempfile) && file.tempfile.size == 0) || (file.respond_to?(:size) && file.size == 0)
117
- end
118
-
119
- def process_file(file)
120
- update_metadata_from_upload_screen
121
- actor.create_metadata(params[:batch_id], parent_id, params[:generic_file])
122
- if actor.create_content(file)
123
- respond_to do |format|
124
- format.html {
125
- if request.xhr?
126
- render 'jq_upload', formats: 'json', content_type: 'text/html'
127
- else
128
- redirect_to [main_app, :curation_concerns, @generic_file.generic_works.first]
129
- end
130
- }
131
- format.json {
132
- render 'jq_upload'
133
- }
134
- end
135
- else
136
- msg = @generic_file.errors.full_messages.join(', ')
137
- flash[:error] = msg
138
- json_error "Error creating generic file: #{msg}"
139
- end
140
- end
141
-
142
- # this is provided so that implementing application can override this behavior and map params to different attributes
143
- def update_metadata_from_upload_screen
144
- # Relative path is set by the jquery uploader when uploading a directory
145
- @generic_file.relative_path = params[:relative_path] if params[:relative_path]
146
- end
147
-
148
- end
149
- end
@@ -1,13 +0,0 @@
1
- module CurationConcerns
2
- class GenericFilesController < ApplicationController
3
- include CurationConcerns::GenericFilesControllerBehavior
4
-
5
- def generic_file_params
6
- if params.has_key?(:generic_file)
7
- params.require(:generic_file).permit!
8
- end
9
- end
10
-
11
- end
12
- end
13
-
@@ -1,57 +0,0 @@
1
- module CurationConcerns::GenericWorkRdfProperties
2
- extend ActiveSupport::Concern
3
- included do
4
- property :part_of, predicate: RDF::DC.isPartOf
5
- property :resource_type, predicate: RDF::DC.type do |index|
6
- index.as :stored_searchable, :facetable
7
- end
8
- property :title, predicate: RDF::DC.title do |index|
9
- index.as :stored_searchable, :facetable
10
- end
11
- property :creator, predicate: RDF::DC.creator do |index|
12
- index.as :stored_searchable, :facetable
13
- end
14
- property :contributor, predicate: RDF::DC.contributor do |index|
15
- index.as :stored_searchable, :facetable
16
- end
17
- property :description, predicate: RDF::DC.description do |index|
18
- index.type :text
19
- index.as :stored_searchable
20
- end
21
- property :relation, predicate: RDF::DC.relation
22
- property :rights, predicate: RDF::DC.rights do |index|
23
- index.as :stored_searchable
24
- end
25
- property :publisher, predicate: RDF::DC.publisher do |index|
26
- index.as :stored_searchable, :facetable
27
- end
28
- property :created, predicate: RDF::DC.created
29
-
30
- property :date, predicate: RDF::DC.date do |index|
31
- index.type :date
32
- index.as :stored_sortable
33
- end
34
- property :date_uploaded, predicate: RDF::DC.dateSubmitted do |index|
35
- index.type :date
36
- index.as :stored_sortable
37
- end
38
- property :date_modified, predicate: RDF::DC.modified do |index|
39
- index.type :date
40
- index.as :stored_sortable
41
- end
42
- property :subject, predicate: RDF::DC.subject do |index|
43
- index.as :stored_searchable, :facetable
44
- end
45
- property :language, predicate: RDF::DC.language do |index|
46
- index.as :stored_searchable, :facetable
47
- end
48
- property :identifier, predicate: RDF::DC.identifier do |index|
49
- index.as :stored_searchable
50
- end
51
- property :bibliographic_citation, predicate: RDF::DC.bibliographicCitation
52
- property :source, predicate: RDF::DC.source
53
- property :coverage, predicate: RDF::DC.coverage
54
- property :type, predicate: RDF::DC.type
55
- property :content_format, predicate: RDF::DC.format
56
- end
57
- end
@@ -1,3 +0,0 @@
1
- class GenericWorkMetadata < ActiveFedora::NtriplesRDFDatastream
2
- include CurationConcerns::GenericWorkRdfProperties
3
- end
@@ -1,15 +0,0 @@
1
- module CurationConcerns
2
- module Forms
3
- class GenericFileEditForm < GenericFilePresenter
4
- include HydraEditor::Form
5
- include HydraEditor::Form::Permissions
6
- self.required_fields = [:title, :creator, :tag, :rights]
7
-
8
- # def self.build_permitted_params
9
- # super.merge {
10
- # :visibility, :visibility_during_embargo, :embargo_release_date, :visibility_after_embargo, :visibility_during_lease, :lease_expiration_date, :visibility_after_lease }
11
- # end
12
- end
13
- end
14
- end
15
-
@@ -1,9 +0,0 @@
1
- module CurationConcerns
2
- module Forms
3
- class GenericWorkEditForm < GenericWorkPresenter
4
- include HydraEditor::Form
5
- include HydraEditor::Form::Permissions
6
- self.required_fields = [:title, :creator, :tag, :rights]
7
- end
8
- end
9
- end