hydra-head 3.0.0pre1

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 (366) hide show
  1. data/.gitignore +71 -0
  2. data/.gitmodules +6 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +257 -0
  5. data/README.textile +150 -0
  6. data/README_RAILS3_CHANGES.textile +42 -0
  7. data/Rakefile +5 -0
  8. data/TESTING.textile +85 -0
  9. data/app/controllers/assets_controller.rb +117 -0
  10. data/app/controllers/contributors_controller.rb +54 -0
  11. data/app/controllers/file_assets_controller.rb +152 -0
  12. data/app/controllers/permissions_controller.rb +137 -0
  13. data/app/controllers/user_sessions_controller.rb +14 -0
  14. data/app/helpers/article_metadata_helper.rb +80 -0
  15. data/app/helpers/blacklight_helper.rb +192 -0
  16. data/app/helpers/downloads_helper.rb +19 -0
  17. data/app/helpers/generic_content_objects_helper.rb +16 -0
  18. data/app/helpers/hydra_assets_helper.rb +75 -0
  19. data/app/helpers/hydra_djatoka_helper.rb +23 -0
  20. data/app/helpers/hydra_fedora_metadata_helper.rb +365 -0
  21. data/app/helpers/hydra_helper.rb +155 -0
  22. data/app/helpers/hydra_uploader_helper.rb +18 -0
  23. data/app/helpers/inline_editable_metadata_helper.rb +15 -0
  24. data/app/helpers/javascript_includes_helper.rb +93 -0
  25. data/app/helpers/release_process_helper.rb +32 -0
  26. data/app/models/audio_asset.rb +8 -0
  27. data/app/models/file_asset.rb +111 -0
  28. data/app/models/generic_content.rb +21 -0
  29. data/app/models/generic_image.rb +62 -0
  30. data/app/models/image_asset.rb +8 -0
  31. data/app/models/mods_asset.rb +6 -0
  32. data/app/models/role_mapper.rb +22 -0
  33. data/app/models/superuser.rb +6 -0
  34. data/app/models/video_asset.rb +8 -0
  35. data/app/views/_add_assets_links.html.erb +13 -0
  36. data/app/views/_brown_sidebar.html +15 -0
  37. data/app/views/_user_util_links.html.erb +31 -0
  38. data/app/views/catalog/_citation.html.erb +11 -0
  39. data/app/views/catalog/_constraints_element.html.erb +34 -0
  40. data/app/views/catalog/_delete_partials/_default.html.erb +29 -0
  41. data/app/views/catalog/_document_list.html.erb +11 -0
  42. data/app/views/catalog/_edit_partials/_default.html.erb +64 -0
  43. data/app/views/catalog/_edit_partials/_default_details.html.erb +15 -0
  44. data/app/views/catalog/_email_form.html.erb +9 -0
  45. data/app/views/catalog/_facets.html.erb +37 -0
  46. data/app/views/catalog/_flash_msg.html.erb +17 -0
  47. data/app/views/catalog/_home.html.erb +6 -0
  48. data/app/views/catalog/_home_text.html.erb +10 -0
  49. data/app/views/catalog/_index_partials/_default.html.erb +20 -0
  50. data/app/views/catalog/_index_partials/_default_details.html.erb +11 -0
  51. data/app/views/catalog/_index_partials/_default_group.html.erb +15 -0
  52. data/app/views/catalog/_search_form.html.erb +12 -0
  53. data/app/views/catalog/_show_partials/_default.html.erb +23 -0
  54. data/app/views/catalog/_show_partials/_default_details.html.erb +12 -0
  55. data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
  56. data/app/views/catalog/_sms_form.html.erb +21 -0
  57. data/app/views/catalog/_sort_and_per_page.html.erb +22 -0
  58. data/app/views/catalog/_uva_tabs.html.erb +10 -0
  59. data/app/views/catalog/about.html.erb +0 -0
  60. data/app/views/catalog/show.html.erb +48 -0
  61. data/app/views/contributors/_add_contributor_split_button.html.erb +10 -0
  62. data/app/views/contributors/_edit_conference.html.erb +29 -0
  63. data/app/views/contributors/_edit_organization.html.erb +29 -0
  64. data/app/views/contributors/_edit_person.html.erb +42 -0
  65. data/app/views/contributors/_index.html.erb +12 -0
  66. data/app/views/contributors/_new.html.erb +10 -0
  67. data/app/views/contributors/_show_conference.html.erb +22 -0
  68. data/app/views/contributors/_show_organization.html.erb +29 -0
  69. data/app/views/contributors/_show_person.html.erb +17 -0
  70. data/app/views/contributors/new.html.erb +13 -0
  71. data/app/views/downloads/index.html.erb +1 -0
  72. data/app/views/file_assets/_deletable_result.html.erb +5 -0
  73. data/app/views/file_assets/_index.html.erb +15 -0
  74. data/app/views/file_assets/_new.html.erb +2 -0
  75. data/app/views/file_assets/_result.html.erb +16 -0
  76. data/app/views/file_assets/index.html.erb +5 -0
  77. data/app/views/fluid_infusion/_uploader.html.erb +81 -0
  78. data/app/views/fluid_infusion/_uploader_generic_content_objects.js.erb +38 -0
  79. data/app/views/fluid_infusion/_uploader_js.erb +45 -0
  80. data/app/views/generic_content_objects/_edit_description.html.erb +50 -0
  81. data/app/views/generic_content_objects/_new.html.erb +0 -0
  82. data/app/views/generic_content_objects/_show_description.html.erb +68 -0
  83. data/app/views/generic_content_objects/contributors/_edit_conference.html.erb +29 -0
  84. data/app/views/generic_content_objects/contributors/_edit_organization.html.erb +29 -0
  85. data/app/views/generic_content_objects/contributors/_edit_person.html.erb +37 -0
  86. data/app/views/generic_content_objects/contributors/_new.html.erb +10 -0
  87. data/app/views/generic_content_objects/contributors/_show_conference.html.erb +22 -0
  88. data/app/views/generic_content_objects/contributors/_show_organization.html.erb +22 -0
  89. data/app/views/generic_content_objects/contributors/_show_person.html.erb +38 -0
  90. data/app/views/generic_contents/_edit.html.erb +59 -0
  91. data/app/views/generic_contents/_index.html.erb +23 -0
  92. data/app/views/generic_contents/_show.html.erb +18 -0
  93. data/app/views/generic_contents/_show_content.html.erb +4 -0
  94. data/app/views/generic_images/_edit.html.erb +59 -0
  95. data/app/views/generic_images/_index.html.erb +24 -0
  96. data/app/views/generic_images/_show.html.erb +18 -0
  97. data/app/views/generic_images/_show_all.html.erb +14 -0
  98. data/app/views/generic_images/_show_content.html.erb +7 -0
  99. data/app/views/layouts/application.html.erb +57 -0
  100. data/app/views/layouts/hydra-head.html.erb +12 -0
  101. data/app/views/mods_assets/_edit.html.erb +49 -0
  102. data/app/views/mods_assets/_edit_description.html.erb +82 -0
  103. data/app/views/mods_assets/_edit_journal.html.erb +72 -0
  104. data/app/views/mods_assets/_index.html.erb +1 -0
  105. data/app/views/mods_assets/_index_list.html.erb +37 -0
  106. data/app/views/mods_assets/_index_table.html.erb +7 -0
  107. data/app/views/mods_assets/_progress_box.html.erb +82 -0
  108. data/app/views/mods_assets/_show.html.erb +44 -0
  109. data/app/views/mods_assets/_show_description.html.erb +44 -0
  110. data/app/views/mods_assets/_show_journal.html.erb +42 -0
  111. data/app/views/mods_assets/_show_permissions.html.erb +14 -0
  112. data/app/views/permissions/_edit_person_permissions.html.erb +35 -0
  113. data/app/views/permissions/_index.html.erb +55 -0
  114. data/app/views/permissions/_new.html.erb +18 -0
  115. data/app/views/permissions/index.html.erb +1 -0
  116. data/app/views/permissions/new.html.erb +1 -0
  117. data/app/views/shared/_delete_asset_confirmation.html.erb +17 -0
  118. data/app/views/user_sessions/_login_form.html.erb +10 -0
  119. data/app/views/user_sessions/logged_out.html.erb +1 -0
  120. data/config/routes.rb +12 -0
  121. data/fedora_conf/conf/fedora.fcfg +1021 -0
  122. data/hydra-head.gemspec +70 -0
  123. data/lib/application_controller.rb +25 -0
  124. data/lib/application_helper.rb +2 -0
  125. data/lib/engine.rb +30 -0
  126. data/lib/generators/hydra/head_generator.rb +152 -0
  127. data/lib/generators/hydra/templates/config/fedora.yml +17 -0
  128. data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +246 -0
  129. data/lib/generators/hydra/templates/config/initializers/fedora_config.rb +23 -0
  130. data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +29 -0
  131. data/lib/generators/hydra/templates/config/role_map_cucumber.yml +10 -0
  132. data/lib/generators/hydra/templates/config/role_map_development.yml +12 -0
  133. data/lib/generators/hydra/templates/config/role_map_production.yml +2 -0
  134. data/lib/generators/hydra/templates/config/role_map_test.yml +15 -0
  135. data/lib/generators/hydra/templates/config/solr.yml +10 -0
  136. data/lib/generators/hydra/templates/config/solr_mappings.yml +22 -0
  137. data/lib/generators/hydra/templates/fedora_conf/conf/fedora.fcfg +1021 -0
  138. data/lib/generators/hydra/templates/migrations/add_user_attributes_table.rb +15 -0
  139. data/lib/generators/hydra/templates/migrations/create_superusers.rb +12 -0
  140. data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +118 -0
  141. data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +332 -0
  142. data/lib/generators/hydra/templates/solr_conf/solr.xml +35 -0
  143. data/lib/hydra-head.rb +29 -0
  144. data/lib/hydra-head/engine.rb +9 -0
  145. data/lib/hydra-head/routes.rb +87 -0
  146. data/lib/hydra-head/version.rb +4 -0
  147. data/lib/hydra.rb +22 -0
  148. data/lib/hydra/access_controls_enforcement.rb +236 -0
  149. data/lib/hydra/access_controls_evaluation.rb +97 -0
  150. data/lib/hydra/assets_controller_helper.rb +144 -0
  151. data/lib/hydra/catalog.rb +64 -0
  152. data/lib/hydra/common_mods_index_methods.rb +42 -0
  153. data/lib/hydra/controller.rb +7 -0
  154. data/lib/hydra/file_assets_helper.rb +144 -0
  155. data/lib/hydra/fixtures.rb +43 -0
  156. data/lib/hydra/generic_content.rb +113 -0
  157. data/lib/hydra/generic_image.rb +100 -0
  158. data/lib/hydra/image.rb +177 -0
  159. data/lib/hydra/model_methods.rb +95 -0
  160. data/lib/hydra/model_mixins.rb +2 -0
  161. data/lib/hydra/model_mixins/common_metadata.rb +24 -0
  162. data/lib/hydra/model_mixins/mods_object.rb +16 -0
  163. data/lib/hydra/mods_article.rb +505 -0
  164. data/lib/hydra/mods_dataset.rb +165 -0
  165. data/lib/hydra/mods_generic_content.rb +494 -0
  166. data/lib/hydra/mods_image.rb +494 -0
  167. data/lib/hydra/repository_controller.rb +102 -0
  168. data/lib/hydra/rights_metadata.rb +189 -0
  169. data/lib/hydra/superuser_attributes.rb +12 -0
  170. data/lib/hydra/testing_server.rb +183 -0
  171. data/lib/hydra/user.rb +22 -0
  172. data/lib/mediashelf/active_fedora_helper.rb +72 -0
  173. data/lib/railties/all_tests.rake +23 -0
  174. data/lib/railties/hydra-fixtures.rake +184 -0
  175. data/lib/railties/hydra_jetty.rake +79 -0
  176. data/lib/railties/hyhead_cucumber.rake +127 -0
  177. data/lib/railties/hyhead_rspec.rake +137 -0
  178. data/lib/stanford/searchworks_helper.rb +1338 -0
  179. data/lib/stanford/solr_helper.rb +108 -0
  180. data/lib/uva/mods_index_methods.rb +24 -0
  181. data/solr_conf/conf/schema.xml +122 -0
  182. data/solr_conf/conf/solrconfig.xml +332 -0
  183. data/solr_conf/solr.xml +35 -0
  184. data/tasks/hydra-head-fixtures.rake +54 -0
  185. data/tasks/hydra-head.rake +247 -0
  186. data/tasks/hydra_jetty.rake +79 -0
  187. data/tasks/replicator.rake +27 -0
  188. data/tasks/solrizer-fedora.rake +53 -0
  189. data/tasks/solrizer.rake +13 -0
  190. data/test_support/etc/Gemfile +29 -0
  191. data/test_support/etc/rvmrc +32 -0
  192. data/test_support/features/button_add_assets.feature +22 -0
  193. data/test_support/features/button_add_generic_content.feature +11 -0
  194. data/test_support/features/button_add_image.feature +11 -0
  195. data/test_support/features/button_add_mods_asset.feature +11 -0
  196. data/test_support/features/contributor_add.feature +39 -0
  197. data/test_support/features/file_assets_list.feature +32 -0
  198. data/test_support/features/file_upload.feature +40 -0
  199. data/test_support/features/home_page.feature +9 -0
  200. data/test_support/features/html_validity.feature +47 -0
  201. data/test_support/features/mods_asset_contributors_edit.feature +80 -0
  202. data/test_support/features/mods_asset_create.feature +12 -0
  203. data/test_support/features/mods_asset_edit.feature +33 -0
  204. data/test_support/features/mods_asset_edit_without_permission.feature +10 -0
  205. data/test_support/features/mods_asset_search_result.feature +13 -0
  206. data/test_support/features/mods_asset_show.feature +39 -0
  207. data/test_support/features/permissions_add.feature +15 -0
  208. data/test_support/features/permissions_edit.feature +63 -0
  209. data/test_support/features/step_definitions/catalog_index_steps.rb +14 -0
  210. data/test_support/features/step_definitions/create_asset_steps.rb +7 -0
  211. data/test_support/features/step_definitions/edit_metadata_steps.rb +73 -0
  212. data/test_support/features/step_definitions/file_list_steps.rb +28 -0
  213. data/test_support/features/step_definitions/hydra_metadata_steps.rb +3 -0
  214. data/test_support/features/step_definitions/hydra_steps.rb +8 -0
  215. data/test_support/features/step_definitions/inline_editable_edit_steps.rb +77 -0
  216. data/test_support/features/step_definitions/search_steps.rb +88 -0
  217. data/test_support/features/step_definitions/searching_steps.rb +22 -0
  218. data/test_support/features/step_definitions/show_document_steps.rb +85 -0
  219. data/test_support/features/step_definitions/user_steps.rb +36 -0
  220. data/test_support/features/step_definitions/web_steps.rb +219 -0
  221. data/test_support/features/support/env.rb +55 -0
  222. data/test_support/features/support/paths.rb +80 -0
  223. data/test_support/features/switch_users.feature +14 -0
  224. data/test_support/features/view_catalog_index.feature +18 -0
  225. data/test_support/fixtures/empty_file.txt +0 -0
  226. data/test_support/fixtures/hydrangea_fixture_archivist_only_mods_article.foxml.xml +1212 -0
  227. data/test_support/fixtures/hydrangea_fixture_file_asset1.foxml.xml +4946 -0
  228. data/test_support/fixtures/hydrangea_fixture_mods_article1.foxml.xml +234 -0
  229. data/test_support/fixtures/hydrangea_fixture_mods_article2.foxml.xml +177 -0
  230. data/test_support/fixtures/hydrangea_fixture_mods_article3.foxml.xml +170 -0
  231. data/test_support/fixtures/hydrangea_fixture_mods_dataset1.foxml.xml +187 -0
  232. data/test_support/fixtures/hydrangea_fixture_uploaded_svg1.foxml.xml +676 -0
  233. data/test_support/fixtures/image.jp2 +0 -0
  234. data/test_support/fixtures/libra-oa_1.foxml.xml +2324 -0
  235. data/test_support/fixtures/libra-oa_2.foxml.xml +2422 -0
  236. data/test_support/spec/controllers/assets_controller_spec.rb +113 -0
  237. data/test_support/spec/controllers/catalog_controller_spec.rb +148 -0
  238. data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +62 -0
  239. data/test_support/spec/controllers/contributors_controller_spec.rb +47 -0
  240. data/test_support/spec/controllers/file_assets_controller_spec.rb +189 -0
  241. data/test_support/spec/controllers/hydra_controller_spec.rb +15 -0
  242. data/test_support/spec/controllers/permissions_controller_spec.rb +80 -0
  243. data/test_support/spec/controllers/user_sessions_controller_spec.rb +35 -0
  244. data/test_support/spec/generators/hydra-head_generator_spec.rb +14 -0
  245. data/test_support/spec/helpers/access_controls_enforcement_spec.rb +212 -0
  246. data/test_support/spec/helpers/access_controls_evaluation_spec.rb +35 -0
  247. data/test_support/spec/helpers/assets_controller_helper_spec.rb +71 -0
  248. data/test_support/spec/helpers/blacklight_helper_spec.rb +64 -0
  249. data/test_support/spec/helpers/file_assets_helper_spec.rb +107 -0
  250. data/test_support/spec/helpers/hydra-repository_controller_spec.rb +32 -0
  251. data/test_support/spec/helpers/hydra_assets_helper_spec.rb +195 -0
  252. data/test_support/spec/helpers/hydra_djatoka_helper_spec.rb +32 -0
  253. data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +215 -0
  254. data/test_support/spec/helpers/hydra_helper_spec.rb +73 -0
  255. data/test_support/spec/helpers/hydra_model_methods_spec.rb +95 -0
  256. data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +18 -0
  257. data/test_support/spec/helpers/javascript_includes_helper_spec.rb +43 -0
  258. data/test_support/spec/integration/file_asset_spec.rb +150 -0
  259. data/test_support/spec/lib/active_fedora_helper_spec.rb +56 -0
  260. data/test_support/spec/lib/catalog_spec.rb +16 -0
  261. data/test_support/spec/lib/common_mods_index_methods_spec.rb +28 -0
  262. data/test_support/spec/models/audio_asset_spec.rb +23 -0
  263. data/test_support/spec/models/file_asset_spec.rb +42 -0
  264. data/test_support/spec/models/generic_content_spec.rb +29 -0
  265. data/test_support/spec/models/generic_image_spec.rb +58 -0
  266. data/test_support/spec/models/hydra_rights_metadata_spec.rb +162 -0
  267. data/test_support/spec/models/image_asset_spec.rb +23 -0
  268. data/test_support/spec/models/mods_asset_spec.rb +29 -0
  269. data/test_support/spec/models/role_mapper_spec.rb +22 -0
  270. data/test_support/spec/models/user_spec.rb +52 -0
  271. data/test_support/spec/models/video_asset_spec.rb +23 -0
  272. data/test_support/spec/rcov.opts +3 -0
  273. data/test_support/spec/spec.opts +4 -0
  274. data/test_support/spec/spec_helper.rb +44 -0
  275. data/test_support/spec/support/matchers/helper_matcher.rb +14 -0
  276. data/test_support/spec/support/matchers/solr_matchers.rb +60 -0
  277. data/test_support/spec/unit/hydra-head-engine_spec.rb +8 -0
  278. data/test_support/spec/unit/hydra-head_spec.rb +8 -0
  279. data/test_support/spec/utilities/hydra_testing_server_spec.rb +49 -0
  280. data/test_support/spec/views/uploader.html.erb_spec.rb +30 -0
  281. data/vendor/cache/RedCloth-4.2.3.gem +0 -0
  282. data/vendor/cache/abstract-1.0.0.gem +0 -0
  283. data/vendor/cache/actionmailer-3.0.9.gem +0 -0
  284. data/vendor/cache/actionpack-3.0.9.gem +0 -0
  285. data/vendor/cache/active-fedora-2.3.3.gem +0 -0
  286. data/vendor/cache/activemodel-3.0.9.gem +0 -0
  287. data/vendor/cache/activerecord-3.0.9.gem +0 -0
  288. data/vendor/cache/activeresource-3.0.9.gem +0 -0
  289. data/vendor/cache/activesupport-3.0.9.gem +0 -0
  290. data/vendor/cache/arel-2.0.10.gem +0 -0
  291. data/vendor/cache/blacklight-3.0.0.gem +0 -0
  292. data/vendor/cache/block_helpers-0.3.3.gem +0 -0
  293. data/vendor/cache/builder-2.1.2.gem +0 -0
  294. data/vendor/cache/capybara-1.0.0.gem +0 -0
  295. data/vendor/cache/childprocess-0.2.0.gem +0 -0
  296. data/vendor/cache/columnize-0.3.4.gem +0 -0
  297. data/vendor/cache/crack-0.1.8.gem +0 -0
  298. data/vendor/cache/cucumber-1.0.2.gem +0 -0
  299. data/vendor/cache/cucumber-rails-1.0.2.gem +0 -0
  300. data/vendor/cache/curb-0.7.15.gem +0 -0
  301. data/vendor/cache/daemons-1.1.4.gem +0 -0
  302. data/vendor/cache/database_cleaner-0.6.7.gem +0 -0
  303. data/vendor/cache/diff-lcs-1.1.2.gem +0 -0
  304. data/vendor/cache/equivalent-xml-0.2.7.gem +0 -0
  305. data/vendor/cache/erubis-2.6.6.gem +0 -0
  306. data/vendor/cache/facets-2.8.4.gem +0 -0
  307. data/vendor/cache/factory_girl-1.3.3.gem +0 -0
  308. data/vendor/cache/fastercsv-1.5.4.gem +0 -0
  309. data/vendor/cache/ffi-1.0.9.gem +0 -0
  310. data/vendor/cache/gherkin-2.4.5.gem +0 -0
  311. data/vendor/cache/haml-3.1.2.gem +0 -0
  312. data/vendor/cache/httparty-0.7.8.gem +0 -0
  313. data/vendor/cache/i18n-0.5.0.gem +0 -0
  314. data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
  315. data/vendor/cache/json-1.5.3.gem +0 -0
  316. data/vendor/cache/json_pure-1.5.3.gem +0 -0
  317. data/vendor/cache/kaminari-0.12.4.gem +0 -0
  318. data/vendor/cache/launchy-2.0.3.gem +0 -0
  319. data/vendor/cache/linecache-0.46.gem +0 -0
  320. data/vendor/cache/logger-1.2.8.gem +0 -0
  321. data/vendor/cache/mail-2.2.19.gem +0 -0
  322. data/vendor/cache/marc-0.4.3.gem +0 -0
  323. data/vendor/cache/mediashelf-loggable-0.4.2.gem +0 -0
  324. data/vendor/cache/mime-types-1.16.gem +0 -0
  325. data/vendor/cache/mocha-0.9.12.gem +0 -0
  326. data/vendor/cache/multipart-post-1.1.2.gem +0 -0
  327. data/vendor/cache/nokogiri-1.5.0.gem +0 -0
  328. data/vendor/cache/om-1.2.5.gem +0 -0
  329. data/vendor/cache/polyglot-0.3.1.gem +0 -0
  330. data/vendor/cache/rack-1.2.3.gem +0 -0
  331. data/vendor/cache/rack-mount-0.6.14.gem +0 -0
  332. data/vendor/cache/rack-test-0.5.7.gem +0 -0
  333. data/vendor/cache/rails-3.0.9.gem +0 -0
  334. data/vendor/cache/railties-3.0.9.gem +0 -0
  335. data/vendor/cache/rake-0.9.2.gem +0 -0
  336. data/vendor/cache/rbx-require-relative-0.0.5.gem +0 -0
  337. data/vendor/cache/rcov-0.9.9.gem +0 -0
  338. data/vendor/cache/rdoc-3.8.gem +0 -0
  339. data/vendor/cache/rsolr-1.0.2.gem +0 -0
  340. data/vendor/cache/rsolr-ext-1.0.3.gem +0 -0
  341. data/vendor/cache/rspec-2.6.0.gem +0 -0
  342. data/vendor/cache/rspec-core-2.6.4.gem +0 -0
  343. data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
  344. data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
  345. data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
  346. data/vendor/cache/ruby-debug-0.10.4.gem +0 -0
  347. data/vendor/cache/ruby-debug-base-0.10.4.gem +0 -0
  348. data/vendor/cache/rubyzip-0.9.4.gem +0 -0
  349. data/vendor/cache/sanitize-2.0.3.gem +0 -0
  350. data/vendor/cache/selenium-webdriver-0.2.2.gem +0 -0
  351. data/vendor/cache/solr-ruby-0.0.8.gem +0 -0
  352. data/vendor/cache/solrizer-1.1.0.gem +0 -0
  353. data/vendor/cache/solrizer-fedora-1.1.0.gem +0 -0
  354. data/vendor/cache/sqlite3-ruby-1.2.5.gem +0 -0
  355. data/vendor/cache/stomp-1.1.9.gem +0 -0
  356. data/vendor/cache/term-ansicolor-1.0.5.gem +0 -0
  357. data/vendor/cache/thor-0.14.6.gem +0 -0
  358. data/vendor/cache/treetop-1.4.9.gem +0 -0
  359. data/vendor/cache/trollop-1.16.2.gem +0 -0
  360. data/vendor/cache/tzinfo-0.3.29.gem +0 -0
  361. data/vendor/cache/unicode-0.4.0.gem +0 -0
  362. data/vendor/cache/will_paginate-2.3.15.gem +0 -0
  363. data/vendor/cache/xml-simple-1.1.0.gem +0 -0
  364. data/vendor/cache/xpath-0.1.4.gem +0 -0
  365. data/vendor/cache/yard-0.7.2.gem +0 -0
  366. metadata +1110 -0
@@ -0,0 +1,144 @@
1
+ require "om"
2
+ module Hydra::AssetsControllerHelper
3
+
4
+ def apply_depositor_metadata(asset)
5
+ if asset.respond_to?(:apply_depositor_metadata) && current_user.respond_to?(:login)
6
+ asset.apply_depositor_metadata(current_user.login)
7
+ end
8
+ end
9
+
10
+ def set_collection_type(asset, collection)
11
+ if asset.respond_to?(:set_collection_type)
12
+ asset.set_collection_type(collection)
13
+ end
14
+ end
15
+
16
+ #
17
+ # parses your params hash, massaging them into an appropriate set of params and opts to pass into ActiveFedora::Base.update_indexed_attributes
18
+ #
19
+ def prep_updater_method_args
20
+ logger.warn "DEPRECATED: Hydra::AssetsControllerHelper.prep_updater_method_args is deprecated. Use/override sanitize_update_params instead."
21
+ args = {:params=>{}, :opts=>{}}
22
+
23
+ params["asset"].each_pair do |datastream_name,fields|
24
+
25
+ args[:opts][:datastreams] = datastream_name
26
+
27
+ # TEMPORARY HACK: special case for supporting textile
28
+ if params["field_id"]=="abstract_0"
29
+ params[:field_selectors] = {"descMetadata" => {"abstract" => [:abstract]}}
30
+ end
31
+
32
+ if params.fetch("field_selectors",false) && params["field_selectors"].fetch(datastream_name, false)
33
+ # If there is an entry in field_selectors for the datastream (implying a nokogiri datastream), retrieve the field_selector for this field.
34
+ # if no field selector, exists, use the field name
35
+ fields.each_pair do |field_name,field_values|
36
+ parent_select = OM.destringify( params["field_selectors"][datastream_name].fetch(field_name, field_name) )
37
+ args[:params][parent_select] = field_values
38
+ end
39
+ else
40
+ args[:params] = unescape_keys(params[:asset][datastream_name])
41
+ end
42
+ end
43
+
44
+ @sanitized_params = args
45
+ return args
46
+
47
+ end
48
+
49
+
50
+ # Builds a Hash that you can feed into ActiveFedora::Base.update_datstream_attributes
51
+ # If params[:asset] is empty, returns an empty Hash
52
+ # @return [Hash] a Hash that you can feed into ActiveFedora::Base.update_datstream_attributes
53
+ # {
54
+ # "descMetadata"=>{ [{:person=>0}, :role]=>{"0"=>"role1", "1"=>"role2", "2"=>"role3"} },
55
+ # "properties"=>{ "notes"=>"foo" }
56
+ # }
57
+ def sanitize_update_params
58
+ @sanitized_params ||= {}
59
+
60
+ unless params["asset"].nil?
61
+ params["asset"].each_pair do |datastream_name,fields|
62
+
63
+ @sanitized_params[datastream_name] = {}
64
+
65
+ # TEMPORARY HACK: special case for supporting textile
66
+ if params["field_id"]=="abstract_0"
67
+ params[:field_selectors] = {"descMetadata" => {"abstract" => [:abstract]}}
68
+ end
69
+
70
+ if params.fetch("field_selectors",false) && params["field_selectors"].fetch(datastream_name, false)
71
+ # If there is an entry in field_selectors for the datastream (implying a nokogiri datastream), retrieve the field_selector for this field.
72
+ # if no field selector, exists, use the field name
73
+ fields.each_pair do |field_name,field_values|
74
+ parent_select = OM.destringify( params["field_selectors"][datastream_name].fetch(field_name, field_name) )
75
+ @sanitized_params[datastream_name][parent_select] = field_values
76
+ end
77
+ else
78
+ @sanitized_params[datastream_name] = unescape_keys(params[:asset][datastream_name])
79
+ end
80
+ end
81
+ end
82
+
83
+ return @sanitized_params
84
+ end
85
+
86
+ # Tidies up the response from updating the document, making it more JSON-friendly
87
+ # @param [Hash] response_from_update the response from updating the object's values
88
+ # @return [Hash] A Hash where value of "updated" is an array with fieldname / index / value Hash for each field updated
89
+ def tidy_response_from_update(response_from_update)
90
+ response = Hash["updated"=>[]]
91
+ last_result_value = ""
92
+ response_from_update.each_pair do |field_name,changed_values|
93
+ changed_values.each_pair do |index,value|
94
+ response["updated"] << {"field_name"=>field_name,"index"=>index,"value"=>value}
95
+ last_result_value = value
96
+ end
97
+ end
98
+ # If handling submission from jeditable (which will only submit one value at a time), return the value it submitted
99
+ if params.has_key?(:field_id)
100
+ response = last_result_value
101
+ end
102
+ return response
103
+ end
104
+
105
+
106
+ # Updates the document based on the provided parameters
107
+ # @param [ActiveFedora::Base] document
108
+ # @param [Hash] params should be the type expected by ActiveFedora::Base.update_datastream_attributes
109
+ def update_document(document, params)
110
+ # this will only work if there is only one datastream being updated.
111
+ # once ActiveFedora::MetadataDatastream supports .update_datastream_attributes, use that method instead (will also be able to pass through params["asset"] as-is without usin prep_updater_method_args!)
112
+ # result = document.update_indexed_attributes(params[:params], params[:opts])
113
+ result = document.update_datastream_attributes(params)
114
+ end
115
+
116
+ # moved destringify into OM gem.
117
+ # ie. OM.destringify( params )
118
+ # Note: OM now handles destringifying params internally. You probably don't have to do it!
119
+
120
+ private
121
+
122
+ def send_datastream(datastream)
123
+ send_data datastream.content, :filename=>datastream.label, :type=>datastream.attributes["mimeType"]
124
+ end
125
+
126
+ #underscores are escaped w/ + signs, which are unescaped by rails to spaces
127
+ def unescape_keys(attrs)
128
+ h=Hash.new
129
+ attrs.each do |k,v|
130
+ h[k.gsub(/ /, '_')]=v
131
+
132
+ end
133
+ h
134
+ end
135
+ def escape_keys(attrs)
136
+ h=Hash.new
137
+ attrs.each do |k,v|
138
+ h[k.gsub(/_/, '+')]=v
139
+
140
+ end
141
+ h
142
+ end
143
+
144
+ end
@@ -0,0 +1,64 @@
1
+ require "hydra/access_controls_enforcement"
2
+ # Include this module into any of your Blacklight Catalog classes (ie. CatalogController) to add Hydra functionality
3
+ #
4
+ # The primary function of this module is to mix in a number of other Hydra Modules, including
5
+ # Hydra::AccessControlsEnforcement
6
+ #
7
+ # This module will only work if you also include Blacklight::Catalog in the Controller you're extending.
8
+ # The hydra head rails generator will create the CatalogController for you in app/controllers/catalog_controller.rb
9
+ # @example
10
+ # require 'blacklight/catalog'
11
+ # require 'hydra/catalog'
12
+ # class CustomCatalogController < ApplicationController
13
+ # include Blacklight::Catalog
14
+ # include Hydra::Catalog
15
+ # end
16
+ module Hydra::Catalog
17
+
18
+ def self.included(klass)
19
+ # Other modules to auto-include
20
+ klass.send(:include, Hydra::AccessControlsEnforcement)
21
+ klass.send(:include, MediaShelf::ActiveFedoraHelper)
22
+ klass.send(:include, Hydra::RepositoryController)
23
+
24
+
25
+ # Controller filters
26
+ # Also see the generator (or generated CatalogController) to see more before_filters in action
27
+ klass.before_filter :require_solr, :require_fedora, :only=>[:show, :edit, :index, :delete]
28
+ klass.before_filter :load_fedora_document, :only=>[:show,:edit]
29
+ klass.before_filter :lookup_facets, :only=>:edit
30
+
31
+ # View Helpers
32
+ klass.helper :hydra
33
+ klass.helper :hydra_assets
34
+ klass.helper :hydra_uploader
35
+ klass.helper :article_metadata
36
+ end
37
+
38
+ def edit
39
+ show
40
+ render "show"
41
+ end
42
+
43
+ # This will render the "delete" confirmation page and a form to submit a destroy request to the assets controller
44
+ def delete
45
+ show
46
+ render "show"
47
+ end
48
+
49
+ def load_fedora_document
50
+ af_base = ActiveFedora::Base.load_instance(params[:id])
51
+ the_model = ActiveFedora::ContentModel.known_models_for( af_base ).first
52
+ if the_model.nil?
53
+ @document_fedora = af_base
54
+ else
55
+ @document_fedora = the_model.load_instance(params[:id])
56
+ end
57
+ @file_assets = @document_fedora.file_objects(:response_format=>:solr)
58
+ end
59
+
60
+ def lookup_facets
61
+ params = {:qt=>"search",:defType=>"dismax",:q=>"*:*",:rows=>"0",:facet=>"true", :facets=>{:fields=>Blacklight.config[:facet][:field_names]}}
62
+ @facet_lookup = Blacklight.solr.find params
63
+ end
64
+ end
@@ -0,0 +1,42 @@
1
+ # Provides some helper methods for indexing compound or non-standard facets
2
+ #
3
+ # == Methods
4
+ #
5
+ # extract_person_full_names
6
+ # This method returns a Hash of person_full_name_facet values which combine Lastname, Firstname
7
+ # extract_person_organizations
8
+ # This method returns a Hash of person_full_name_facet values which extract the persons affiliation and puts it in an mods_organization_facet
9
+
10
+ module Hydra::CommonModsIndexMethods
11
+ # Extracts the first and last names of persons and creates Solr::Field objects with for person_full_name_facet
12
+ #
13
+ # == Returns:
14
+ # An array of Solr::Field objects
15
+ #
16
+ def extract_person_full_names
17
+ names = {}
18
+ self.find_by_terms(:person).each do |person|
19
+ name_parts = person.children.inject({}) do |hash,child|
20
+ hash[child.get_attribute(:type)] = child.text if ["family","given"].include? child.get_attribute(:type)
21
+ hash
22
+ end
23
+ ::Solrizer::Extractor.insert_solr_field_value(names, "person_full_name_facet", [name_parts["family"], name_parts["given"]].join(", ") ) if name_parts.keys == ["family","given"]
24
+ names
25
+ end
26
+ return names
27
+ end
28
+
29
+ # Extracts the affiliations of persons and creates Solr::Field objects for them
30
+ #
31
+ # == Returns:
32
+ # An array of Solr::Field objects
33
+ #
34
+ def extract_person_organizations
35
+ # self.find_by_terms(:person,:affiliation).map { |org| Solr::Field.new({:mods_organization_facet=>org.text}) }
36
+ orgs = {}
37
+ self.find_by_terms(:person,:affiliation).each do |org|
38
+ ::Solrizer::Extractor.insert_solr_field_value(orgs, "mods_organization_facet", org.text)
39
+ end
40
+ return orgs
41
+ end
42
+ end
@@ -0,0 +1,7 @@
1
+ # Adds behaviors that Hydra needs all controllers to have. (mostly view helpers)
2
+ module Hydra::Controller
3
+ def self.included(base)
4
+ base.helper :hydra_assets
5
+ base.helper :hydra_fedora_metadata
6
+ end
7
+ end
@@ -0,0 +1,144 @@
1
+ module Hydra::FileAssetsHelper
2
+
3
+ # Creates a File Asset, adding the posted blob to the File Asset's datastreams and saves the File Asset
4
+ #
5
+ # @return [FileAsset] the File Asset
6
+ def create_and_save_file_asset_from_params
7
+ if params.has_key?(:Filedata)
8
+ @file_asset = create_asset_from_params
9
+ add_posted_blob_to_asset
10
+ @file_asset.save
11
+ return @file_asset
12
+ else
13
+ render :text => "400 Bad Request", :status => 400
14
+ end
15
+ end
16
+
17
+ # Puts the contents of params[:Filedata] (posted blob) into a datastream within the given @asset
18
+ # Sets asset label and title to filename if they're empty
19
+ #
20
+ # @param [FileAsset] the File Asset to add the blob to
21
+ # @return [FileAsset] the File Asset
22
+ def add_posted_blob_to_asset(asset=@file_asset)
23
+ file_name = filename_from_params
24
+ asset.add_file_datastream(posted_file, :label=>file_name, :mimeType=>mime_type(file_name))
25
+ asset.set_title_and_label( file_name, :only_if_blank=>true )
26
+ end
27
+
28
+ # Associate the new file asset with its container
29
+ def associate_file_asset_with_container(file_asset=nil, container_id=nil)
30
+ if container_id.nil?
31
+ container_id = params[:asset_id]
32
+ end
33
+ if file_asset.nil?
34
+ file_asset = @file_asset
35
+ end
36
+ file_asset.add_relationship(:is_part_of, container_id)
37
+ file_asset.datastreams["RELS-EXT"].dirty = true
38
+ file_asset.save
39
+ end
40
+
41
+ # Apply any posted file metadata to the file asset
42
+ def apply_posted_file_metadata
43
+ @metadata_update_response = update_document(@file_asset, @sanitized_params)
44
+ @file_asset.save
45
+ end
46
+
47
+
48
+ # The posted File
49
+ # @return [File] the posted file. Defaults to nil if no file was posted.
50
+ def posted_file
51
+ params[:Filedata]
52
+ end
53
+
54
+ # A best-guess filename based on POST params
55
+ # If Filename was submitted, it uses that. Otherwise, it calls +original_filename+ on the posted file
56
+ def filename_from_params
57
+ if !params[:Filename].nil?
58
+ file_name = params[:Filename]
59
+ else
60
+ file_name = posted_file.original_filename
61
+ params[:Filename] = file_name
62
+ end
63
+ end
64
+
65
+ # Creates a File Asset and sets its label from params[:Filename]
66
+ #
67
+ # @return [FileAsset] the File Asset
68
+ def create_asset_from_params
69
+ file_asset = FileAsset.new
70
+ file_asset.label = params[:Filename]
71
+
72
+ return file_asset
73
+ end
74
+
75
+ # This is pre-Hydra code that created an AudioAsset, VideoAsset or ImageAsset based on the
76
+ # current params in the controller.
77
+ #
78
+ # @return [Constant] the recommended Asset class
79
+ def asset_class_from_params
80
+ if params.has_key?(:type)
81
+ chosen_type = case params[:type]
82
+ when "AudioAsset"
83
+ AudioAsset
84
+ when "VideoAsset"
85
+ VideoAsset
86
+ when "ImageAsset"
87
+ ImageAsset
88
+ else
89
+ FileAsset
90
+ end
91
+ elsif params.has_key?(:Filename)
92
+ chosen_type = choose_model_by_filename( params[:Filename] )
93
+ else
94
+ chosen_type = FileAsset
95
+ end
96
+
97
+ return chosen_type
98
+ end
99
+
100
+ def choose_model_by_filename(filename)
101
+ choose_model_by_filename_extension( File.extname(filename) )
102
+ end
103
+
104
+ # Rudimentary method to choose an Asset class based on a filename extension
105
+ #
106
+ # @param [String] extension
107
+ # @return [Constant] the recommended Asset class. Default: FileAsset
108
+ #
109
+ # Recognized extensions:
110
+ # AudioAsset => ".wav", ".mp3", ".aiff"
111
+ # VideoAsset => ".mov", ".flv", ".mp4"
112
+ # ImageAsset => ".jpeg", ".jpg", ".gif", ".png"
113
+ def choose_model_by_filename_extension(extension)
114
+
115
+ Hydra.config[:file_asset_types][:extension_mappings].each_pair do |klass, extensions|
116
+ if extensions.include?(extension)
117
+ return klass
118
+ end
119
+ end
120
+
121
+ return Hydra.config[:file_asset_types][:default]
122
+
123
+ # case extension
124
+ # when ".wav", ".mp3", ".aiff"
125
+ # AudioAsset
126
+ # when ".mov", ".flv", ".mp4", ".m4v"
127
+ # VideoAsset
128
+ # when ".jpeg", ".jpg", ".gif", ".png"
129
+ # ImageAsset
130
+ # else
131
+ # FileAsset
132
+ # end
133
+ end
134
+
135
+ private
136
+ # Return the mimeType for a given file name
137
+ # @param [String] file_name The filename to use to get the mimeType
138
+ # @return [String] mimeType for filename passed in. Default: application/octet-stream if mimeType cannot be determined
139
+ def mime_type file_name
140
+ mime_types = MIME::Types.of(file_name)
141
+ mime_type = mime_types.empty? ? "application/octet-stream" : mime_types.first.content_type
142
+ end
143
+
144
+ end
@@ -0,0 +1,43 @@
1
+ module Hydra
2
+
3
+ class Fixtures
4
+ def self.filename_for_pid(pid)
5
+ File.join("test_support","fixtures","#{pid.gsub(":","_")}.foxml.xml")
6
+ end
7
+
8
+ def self.delete(pid)
9
+ begin
10
+ ActiveFedora::Base.load_instance(pid).delete
11
+ 1
12
+ rescue ActiveFedora::ObjectNotFoundError
13
+ logger.debug "The object #{pid} has already been deleted (or was never created)."
14
+ 0
15
+ end
16
+ end
17
+
18
+ def self.reload(pid)
19
+ delete(pid)
20
+ import_and_index(pid)
21
+ end
22
+
23
+ def self.import_and_index(pid)
24
+ body = import_to_fedora(filename_for_pid(pid))
25
+ index(pid)
26
+ body
27
+ end
28
+
29
+ def self.index(pid)
30
+ solrizer = Solrizer::Fedora::Solrizer.new
31
+ solrizer.solrize(pid)
32
+ end
33
+
34
+ def self.import_to_fedora(filename)
35
+ file = File.new(filename, "r")
36
+ puts "Loading #{filename}"
37
+ result = foxml = Fedora::Repository.instance.ingest(file.read)
38
+ raise "Failed to ingest the fixture." unless result
39
+ result.body
40
+ end
41
+ end
42
+
43
+ end