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,155 @@
1
+ module HydraHelper
2
+
3
+ # collection of stylesheet links to be rendered in the <head>
4
+ def stylesheet_links
5
+ @stylesheet_links ||= []
6
+ end
7
+
8
+ # collection of javascript includes to be rendered in the <head>
9
+ def javascript_includes
10
+ @javascript_includes ||= []
11
+ end
12
+
13
+ def async_load_tag( url, tag )
14
+ javascript_tag do
15
+ "window._token='#{form_authenticity_token}'"
16
+ "async_load('#{url}', '\##{tag}');"
17
+ end
18
+ end
19
+
20
+ def link_to_multifacet( name, args={} )
21
+ facet_params = {}
22
+ options = {}
23
+ args.each_pair do |k,v|
24
+ if k == :options
25
+ options = v
26
+ else
27
+ facet_params[:f] ||= {}
28
+ facet_params[:f][k] ||= []
29
+ v = v.instance_of?(Array) ? v.first : v
30
+ facet_params[:f][k].push(v)
31
+ end
32
+ end
33
+
34
+ link_to(name, catalog_index_path(facet_params), options).html_safe
35
+ end
36
+
37
+ def edit_and_browse_links
38
+ result = ""
39
+ if params[:action] == "edit"
40
+ result << "<a href=\"#{catalog_path(@document[:id], :viewing_context=>"browse")}\" class=\"browse toggle\">Browse</a>"
41
+ result << "<span class=\"edit toggle active\">Edit</span>"
42
+ else
43
+ result << "<span class=\"browse toggle active\">Browse</span>"
44
+ result << "<a href=\"#{edit_catalog_path(@document[:id])}\" class=\"edit toggle\">Edit</a>"
45
+ end
46
+ # result << link_to "Browse", "#", :class=>"browse"
47
+ # result << link_to "Edit", edit_document_path(@document[:id]), :class=>"edit"
48
+ return result.html_safe
49
+ end
50
+
51
+ def grouped_result_count(response, facet_name=nil, facet_value=nil)
52
+ if facet_name && facet_value
53
+ facet = response.facets.detect {|f| f.name == facet_name}
54
+ facet_item = facet.items.detect {|i| i.value == facet_value} if facet
55
+ count = facet_item ? facet_item.hits : 0
56
+ else
57
+ count = response.docs.total
58
+ end
59
+ pluralize(count, 'document')
60
+ end
61
+
62
+ def grouping_facet
63
+ fields = Hash[sort_fields]
64
+ case h(params[:sort])
65
+ when fields['date -']
66
+ 'year_facet'
67
+ when fields['date +']
68
+ 'year_facet'
69
+ when fields['document type']
70
+ 'medium_t'
71
+ when fields['location']
72
+ 'series_facet'
73
+ else
74
+ nil
75
+ end
76
+ end
77
+
78
+ def document_fedora_show_html_title
79
+ @document.datastreams["descMetadata"].title_values.first
80
+ end
81
+
82
+ # Returns the hits for facet_value within facet solr_fname within the solr_result.
83
+ def facet_value_hits(solr_result, solr_fname, facet_value, default_response="1")
84
+ item = solr_result.facets.detect {|f| f.name == solr_fname}.items.detect {|i| i.value == facet_value}
85
+ if item
86
+ return item.hits
87
+ else
88
+ return default_response
89
+ end
90
+ end
91
+
92
+ def get_html_data_with_label(doc, label, field_string, opts={})
93
+ if opts[:default] && !doc[field_string]
94
+ doc[field_string] = opts[:default]
95
+ end
96
+
97
+ if doc[field_string]
98
+ field = doc[field_string]
99
+ text = "<dt>#{label}</dt><dd>"
100
+ if field.is_a?(Array)
101
+ field.each do |l|
102
+ text += "#{CGI::unescapeHTML(l)}"
103
+ if l != h(field.last)
104
+ text += "<br/>"
105
+ end
106
+ end
107
+ else
108
+ text += CGI::unescapeHTML(field)
109
+ end
110
+ #Does the field have a vernacular equivalent?
111
+ if doc["vern_#{field_string}"]
112
+ vern_field = doc["vern_#{field_string}"]
113
+ text += "<br/>"
114
+ if vern_field.is_a?(Array)
115
+ vern_field.each do |l|
116
+ text += "#{CGI::unescapeHTML(l)}"
117
+ if l != h(vern_field.last)
118
+ text += "<br/>"
119
+ end
120
+ end
121
+ else
122
+ text += CGI::unescapeHTML(vern_field)
123
+ end
124
+ end
125
+ text += "</dd>"
126
+ text
127
+ end
128
+ end
129
+
130
+ def get_textile_data_with_label(doc, label, field_string, opts={})
131
+ if opts[:default] && !doc[field_string]
132
+ doc[field_string] = opts[:default]
133
+ end
134
+
135
+ if doc[field_string]
136
+ field = doc[field_string]
137
+ text = "<dt>#{label}</dt><dd>"
138
+ if field.is_a?(Array)
139
+ field.each do |l|
140
+ text += "#{RedCloth.new(l).to_html}"
141
+ if l != h(field.last)
142
+ text += "<br/>"
143
+ end
144
+ end
145
+ else
146
+ text += RedCloth.new(field).to_html
147
+ end
148
+ text += "</dd>"
149
+ text
150
+ end
151
+ end
152
+
153
+
154
+
155
+ end
@@ -0,0 +1,18 @@
1
+ module HydraUploaderHelper
2
+
3
+ # Generate the appropriate url for posting uploads to
4
+ # Uses the +container_id+ method to figure out what container uploads should go into
5
+ def upload_url
6
+ upload_url = asset_file_assets_path(:asset_id=>container_id)
7
+ end
8
+
9
+ # The id of the container that uploads should be posted into
10
+ # If params[:container_id] is not set, it uses params[:id] (assumes that you're uploading items into the current object)
11
+ def container_id
12
+ if !params[:asset_id].nil?
13
+ return params[:asset_id]
14
+ else
15
+ return params[:id]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module InlineEditableMetadataHelper
2
+
3
+ def inline_editable_text_field(object_name, method, options = {})
4
+ end
5
+
6
+ def inline_editable_text_area(object_name, method, options = {})
7
+ end
8
+
9
+ def inline_editable_select(object_name, method, options = {})
10
+ end
11
+
12
+ def inline_editable_checkbox(object_name, method, options = {})
13
+ end
14
+
15
+ end
@@ -0,0 +1,93 @@
1
+ # Use this helper to declare which javascript should be loaded in which views
2
+ # Internally, it relies on include_javascript_for_#{controller}_#{action} helper methods
3
+ # These helper methods will usually append their includes to the controller's javascript_includes array
4
+ #
5
+ # @example Within your views (or in your controllers), call the helper like this
6
+ # include_javascript_for "hydrangea_articles", "edit"
7
+ #
8
+ # To declare your own array of includes for a specific content type or action, define a helper method in your host application or plugin like this
9
+ # @example Declaring the javascript includes for hydrangea_datasets show view while reusing the includes from catalog_edit
10
+ # def include_javascript_for_hydrangea_datasets_show
11
+ # include_javascript_for_catalog_edit
12
+ # javascript_includes << ['hydrangeaArticleBehaviors.js', {:plugin=>:hydrangea_articles}]
13
+ # end
14
+ module JavascriptIncludesHelper
15
+
16
+ # Add the appropriate javascripts for the specified content type & action into the Controller's javascript_includes array
17
+ # If you have defined custom javascript includes for that content_type & action, they will be used.
18
+ # @param [String or Symbol] content_type
19
+ # @param [String or Symbol] action
20
+ # @example This will rely on the include_javascript_for_hydranea_articles_edit helper method if it's defined. Defaults to calling include_default_javascript("edit")
21
+ # include_javascript_for "hydrangea_articles", "edit"
22
+ def include_javascript_for(content_type, action, opts={})
23
+ begin
24
+ method_name = "include_javascript_for_#{content_type.to_s}_#{action.to_s}"
25
+ logger.debug "attempting to include #{method_name}"
26
+ self.send(method_name.to_sym)
27
+ rescue
28
+ logger.debug "... no specific includes defined for #{content_type.to_s}. Using defaults for #{action.to_s} views"
29
+ include_default_javascript( action )
30
+ end
31
+ end
32
+
33
+ # Add the default javascript to the controller's javascript_includes
34
+ # Takes a method argument (ie. show or edit) to decide which defaults to use.
35
+ # Currently configured to use the javascript includes for catalog show / edit.
36
+ # @param [String or Symbol] method Currently only "show" and "edit" have defaults set
37
+ def include_default_javascript(method)
38
+ case method.to_s
39
+ when "show"
40
+ include_javascript_for_catalog_show
41
+ when "edit"
42
+ include_javascript_for_catalog_edit
43
+ else
44
+ logger.debug "No default javascript includes defined for #{method} views. Doing nothing."
45
+ end
46
+ end
47
+
48
+ #
49
+ # Helpers for Catalog Show & Edit Javascript Includes
50
+ #
51
+
52
+ # Adds the appropriate javascripts to javascript_includes for CatalogController show views
53
+ # Override this if you want to change the set of javascript_includes for CatalogController show views
54
+ def include_javascript_for_catalog_show
55
+ javascript_includes << ['custom', {:plugin=>"hydra-head"}]
56
+
57
+ # This file contains the page initialization scripts for catalog show views
58
+ javascript_includes << ["catalog/show", {:plugin=>"hydra-head"}]
59
+ end
60
+
61
+ # Adds the appropriate javascripts to javascript_includes for CatalogController edit views
62
+ # Override this if you want to change the set of javascript_includes for CatalogController edit views
63
+ def include_javascript_for_catalog_edit
64
+ # This _would_ include the fluid infusion javascripts, but we don't want them
65
+ # javascript_includes << infusion_javascripts(:default_no_jquery, :extras=>[:inline_editor_integrations], :debug=>true, :render_html=>false)
66
+
67
+ javascript_includes << ["jquery.jeditable.mini.js", {:plugin=>"hydra-head"}]
68
+ javascript_includes << ["jquery.form.js", {:plugin=>"hydra-head"}]
69
+ javascript_includes << ['custom', {:plugin=>"hydra-head"}]
70
+
71
+ javascript_includes << ["jquery.hydraMetadata.js", {:plugin=>"hydra-head"}]
72
+ javascript_includes << ["jquery.notice.js", {:plugin=>"hydra-head"}]
73
+
74
+ javascript_includes << ["jquery.jeditable.mini.js", "date-picker/js/datepicker", "jquery.form.js", 'custom', "catalog/edit", "jquery.hydraMetadata.js", "jquery.notice.js", {:plugin=>"hydra-head"}]
75
+ javascript_includes << ["../infusion/components/undo/js/Undo.js", {:plugin=>:"fluid-infusion"}]
76
+
77
+ # For DatePicker
78
+ javascript_includes << ["jquery.ui.widget.js","jquery.ui.datepicker.js", "mediashelf.datepicker.js", {:plugin=>"hydra-head" }]
79
+
80
+ # For Fancybox
81
+ javascript_includes << ["fancybox/jquery.fancybox-1.3.1.pack.js", {:plugin=>"hydra-head"}]
82
+ stylesheet_links << ["../javascripts/fancybox/jquery.fancybox-1.3.1.css", {:plugin=>"hydra-head"}]
83
+
84
+ # For slider controls
85
+ javascript_includes << ["select_to_ui_slider/selectToUISlider.jQuery.js", {:plugin=>"hydra-head"}]
86
+ stylesheet_links << ["../javascripts/select_to_ui_slider/css/ui.slider.extras.css", {:plugin=>"hydra-head"}]
87
+ stylesheet_links << ["slider", {:plugin=>"hydra-head"}]
88
+
89
+ # This file contains the page initialization scripts for catalog edit views
90
+ javascript_includes << ["catalog/edit", {:plugin=>"hydra-head"}]
91
+ end
92
+
93
+ end
@@ -0,0 +1,32 @@
1
+ module ReleaseProcessHelper
2
+
3
+ def display_release_status_notice(document)
4
+ readiness = document.test_release_readiness
5
+ if readiness == true
6
+ flash[:notice] ||= []
7
+ if document.submitted_for_release?
8
+ flash[:notice] << "This item has been released for library circulation."
9
+ else
10
+ flash[:notice] << "This item is ready to be released for library circulation."
11
+ end
12
+ else
13
+ flash[:error] ||= []
14
+ flash[:error] = flash[:error] | readiness[:failures]
15
+ end
16
+ end
17
+
18
+ def check_embargo_date_format
19
+ if params.keys.include? [:embargo, :embargo_release_date]
20
+ em_date = params[[:embargo, :embargo_release_date]]["0"]
21
+ unless em_date.blank?
22
+ begin
23
+ !Date.parse(em_date)
24
+ rescue
25
+ params[[:embargo,:embargo_release_date]]["0"] = ""
26
+ raise "Unacceptable date format"
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,8 @@
1
+ require "file_asset"
2
+ class AudioAsset < FileAsset
3
+ def initialize(attrs = {})
4
+ super(attrs)
5
+ add_relationship(:has_model, "info:fedora/afmodel:FileAsset")
6
+ end
7
+
8
+ end
@@ -0,0 +1,111 @@
1
+ # model for a FileAsset ActiveFedora object
2
+ # a file asset is a generic notion of a file, which could have, for example, image or text or video behaviors.
3
+ class FileAsset < ActiveFedora::Base
4
+
5
+ include Hydra::ModelMethods
6
+
7
+ has_relationship "is_member_of_collection", :has_collection_member, :inbound => true
8
+ has_bidirectional_relationship "part_of", :is_part_of, :has_part
9
+
10
+ # deletes the object identified by pid if it does not have any objects asserting has_collection_member
11
+ def self.garbage_collect(pid)
12
+ begin
13
+ obj = FileAsset.load_instance(pid)
14
+ if obj.containers.empty?
15
+ obj.delete
16
+ end
17
+ rescue
18
+ end
19
+ end
20
+
21
+ # Returns a human readable filesize appropriate for the given number of bytes (ie. automatically chooses 'bytes','KB','MB','GB','TB')
22
+ # Based on a bit of python code posted here: http://blogmag.net/blog/read/38/Print_human_readable_file_size
23
+ # @param [Numeric] file size in bits
24
+ def bits_to_human_readable(num)
25
+ ['bytes','KB','MB','GB','TB'].each do |x|
26
+ if num < 1024.0
27
+ return "#{num.to_i} #{x}"
28
+ else
29
+ num = num/1024.0
30
+ end
31
+ end
32
+ end
33
+
34
+ has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream do |m|
35
+ end
36
+
37
+ def label=(label)
38
+ super
39
+ datastreams_in_memory["descMetadata"].title_values = label
40
+ end
41
+
42
+ # augments add_file_datastream to also put file size (in bytes/KB/MB/GB/TB) in dc:extent
43
+ def add_file_datastream(file, opts={})
44
+ super
45
+ if file.respond_to?(:size)
46
+ size = bits_to_human_readable(file.size)
47
+ elsif file.kind_of?(File)
48
+ size = bits_to_human_readable(File.size(file))
49
+ else
50
+ size = ""
51
+ end
52
+ datastreams_in_memory["descMetadata"].extent_values = size
53
+ end
54
+
55
+ # Mimic the relationship accessor that would be created if a containers relationship existed
56
+ # Decided to create this method instead because it combines more than one relationship list
57
+ # from is_member_of_collection and part_of
58
+ # @param [Hash] opts The options hash that can contain a :response_format value of :id_array, :solr, or :load_from_solr
59
+ # @return [Array] Objects found through inbound has_collection_member and part_of relationships
60
+ def containers(opts={})
61
+ is_member_array = is_member_of_collection(:response_format=>:id_array)
62
+
63
+ if !is_member_array.empty?
64
+ logger.warn "This object has inbound collection member assertions. hasCollectionMember will no longer be used to track file_object relationships after active_fedora 1.3. Use isPartOf assertions in the RELS-EXT of child objects instead."
65
+ if opts[:response_format] == :solr || opts[:response_format] == :load_from_solr
66
+ logger.warn ":solr and :load_from_solr response formats for containers search only uses parts relationships (usage of hasCollectionMember is no longer supported)"
67
+ result = part_of(opts)
68
+ else
69
+ con_result = is_member_of_collection(opts)
70
+ part_of_result = part_of(opts)
71
+ ary = con_result+part_of_result
72
+ result = ary.uniq
73
+ end
74
+ else
75
+ result = part_of(opts)
76
+ end
77
+ return result
78
+ end
79
+
80
+ # Calls +containers+ with the :id_array option to return a list of pids for containers found.
81
+ # @return [Array] Container ids (via is_member_of_collection and part_of relationships)
82
+ def containers_ids
83
+ containers(:response_format => :id_array)
84
+ end
85
+
86
+ # Calls +containers+ with the option to load objects found from solr instead of Fedora.
87
+ # @return [Array] ActiveFedora::Base objects populated via solr
88
+ def containers_from_solr
89
+ containers(:response_format => :load_from_solr)
90
+ end
91
+
92
+ # Override ActiveFedora::Base.to_solr to...
93
+ # Check if we are dealing with a child of FileAsset and if so when calling to_solr from Solrizer indexer we want to skip loading parent metadata again
94
+ #
95
+ # if known models greater than one (without ActiveFedora::Base) and
96
+ # known models contains a child of FileAsset and
97
+ # opts[:model_only] == true and
98
+ # current object class is FileAsset
99
+ # that means that the child already has had to_solr called which included metadata from FileAsset
100
+ # if any of the above is false then call to_solr as normal
101
+ def to_solr(solr_doc=Hash.new, opts={})
102
+
103
+ active_fedora_model_s = solr_doc["active_fedora_model_s"] if solr_doc["active_fedora_model_s"]
104
+ actual_class = active_fedora_model_s.constantize if active_fedora_model_s
105
+ if actual_class && actual_class != self.class && actual_class.superclass == FileAsset
106
+ solr_doc
107
+ else
108
+ super(solr_doc,opts)
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,21 @@
1
+ require 'hydra'
2
+
3
+ class GenericContent < ActiveFedora::Base
4
+ include Hydra::ModelMethods
5
+ include Hydra::GenericContent
6
+
7
+ # Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
8
+ has_metadata :name => "rightsMetadata", :type => Hydra::RightsMetadata
9
+
10
+ has_metadata :name => "descMetadata", :type => Hydra::ModsGenericContent
11
+
12
+ # A place to put extra metadata values
13
+ has_metadata :name => "properties", :type => ActiveFedora::MetadataDatastream do |m|
14
+ m.field 'collection', :string
15
+ m.field 'depositor', :string
16
+ end
17
+
18
+ def initialize( attrs={} )
19
+ super
20
+ end
21
+ end