commonwealth-vlr-engine 0.0.1

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 (361) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +91 -0
  3. data/.gitmodules +3 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +202 -0
  6. data/README.md +38 -0
  7. data/Rakefile +43 -0
  8. data/app/assets/images/commonwealth-vlr-engine/bplLoginButton.png +0 -0
  9. data/app/assets/images/commonwealth-vlr-engine/dc_audio-icon.png +0 -0
  10. data/app/assets/images/commonwealth-vlr-engine/dc_collection-icon.png +0 -0
  11. data/app/assets/images/commonwealth-vlr-engine/dc_image-icon.png +0 -0
  12. data/app/assets/images/commonwealth-vlr-engine/dc_institution-icon.png +0 -0
  13. data/app/assets/images/commonwealth-vlr-engine/dc_moving-image-icon.png +0 -0
  14. data/app/assets/images/commonwealth-vlr-engine/dc_text-icon.png +0 -0
  15. data/app/assets/images/commonwealth-vlr-engine/facebookLoginButton.png +0 -0
  16. data/app/assets/images/commonwealth-vlr-engine/loading-wdl-grid.gif +0 -0
  17. data/app/assets/images/commonwealth-vlr-engine/loading-wdl.gif +0 -0
  18. data/app/assets/images/commonwealth-vlr-engine/loading.gif +0 -0
  19. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_grouphover.png +0 -0
  20. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_hover.png +0 -0
  21. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_pressed.png +0 -0
  22. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_rest.png +0 -0
  23. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_grouphover.png +0 -0
  24. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_hover.png +0 -0
  25. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_pressed.png +0 -0
  26. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_rest.png +0 -0
  27. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_grouphover.png +0 -0
  28. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_hover.png +0 -0
  29. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_pressed.png +0 -0
  30. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_rest.png +0 -0
  31. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_grouphover.png +0 -0
  32. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_hover.png +0 -0
  33. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_pressed.png +0 -0
  34. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_rest.png +0 -0
  35. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_grouphover.png +0 -0
  36. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_hover.png +0 -0
  37. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_pressed.png +0 -0
  38. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_rest.png +0 -0
  39. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_grouphover.png +0 -0
  40. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_hover.png +0 -0
  41. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_pressed.png +0 -0
  42. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_rest.png +0 -0
  43. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_grouphover.png +0 -0
  44. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_hover.png +0 -0
  45. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_pressed.png +0 -0
  46. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_rest.png +0 -0
  47. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_grouphover.png +0 -0
  48. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_hover.png +0 -0
  49. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_pressed.png +0 -0
  50. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_rest.png +0 -0
  51. data/app/assets/images/commonwealth-vlr-engine/vlr_logo_img.png +0 -0
  52. data/app/assets/javascripts/blacklight_gallery.js +1 -0
  53. data/app/assets/javascripts/blacklight_google_analytics/blacklight_google_analytics.js.erb +165 -0
  54. data/app/assets/javascripts/bootstrap-accessibility-plugin/bootstrap-accessibility.js +586 -0
  55. data/app/assets/javascripts/commonwealth-vlr-engine.js +22 -0
  56. data/app/assets/javascripts/commonwealth-vlr-engine/collection_facets.js +5 -0
  57. data/app/assets/javascripts/commonwealth-vlr-engine/disable_dropdown_nav.js +21 -0
  58. data/app/assets/javascripts/commonwealth-vlr-engine/feedback_alerts.js.erb +19 -0
  59. data/app/assets/javascripts/commonwealth-vlr-engine/folder_tools.js +26 -0
  60. data/app/assets/javascripts/commonwealth-vlr-engine/multi_img_viewer.js.erb +20 -0
  61. data/app/assets/javascripts/commonwealth-vlr-engine/ocr_search_utils.js.erb +32 -0
  62. data/app/assets/javascripts/commonwealth-vlr-engine/volumes_list.js +5 -0
  63. data/app/assets/javascripts/openseadragon.js +2 -0
  64. data/app/assets/javascripts/respond/respond.min.js +6 -0
  65. data/app/assets/javascripts/wdl-viewer/fd-slider.js +1303 -0
  66. data/app/assets/javascripts/wdl-viewer/jquery-deparam.js +113 -0
  67. data/app/assets/javascripts/wdl-viewer/jquery.ba-throttle-debounce.min.js +9 -0
  68. data/app/assets/javascripts/wdl-viewer/jquery.hammer.min.js +7 -0
  69. data/app/assets/javascripts/wdl-viewer/modernizr-wdl.min.js +3 -0
  70. data/app/assets/javascripts/wdl-viewer/wdl-search.js +33 -0
  71. data/app/assets/javascripts/wdl-viewer/wdl-viewer_commonwealth.js +1147 -0
  72. data/app/assets/stylesheets/blacklight_advanced_search.css +5 -0
  73. data/app/assets/stylesheets/blacklight_gallery.css +1 -0
  74. data/app/assets/stylesheets/blacklight_maps.css +1 -0
  75. data/app/assets/stylesheets/bootstrap-accessibility-plugin/bootstrap-accessibility.css +105 -0
  76. data/app/assets/stylesheets/commonwealth-vlr-engine/advanced_search.scss +139 -0
  77. data/app/assets/stylesheets/commonwealth-vlr-engine/basic_search.scss +47 -0
  78. data/app/assets/stylesheets/commonwealth-vlr-engine/book_viewer.scss +576 -0
  79. data/app/assets/stylesheets/commonwealth-vlr-engine/carousel.scss +94 -0
  80. data/app/assets/stylesheets/commonwealth-vlr-engine/cmmnwlth_defaults.scss +45 -0
  81. data/app/assets/stylesheets/commonwealth-vlr-engine/cmmnwlth_shared.scss +75 -0
  82. data/app/assets/stylesheets/commonwealth-vlr-engine/collections.scss +563 -0
  83. data/app/assets/stylesheets/commonwealth-vlr-engine/commonwealth-vlr-engine.css +32 -0
  84. data/app/assets/stylesheets/commonwealth-vlr-engine/facets.scss +111 -0
  85. data/app/assets/stylesheets/commonwealth-vlr-engine/feedback.scss +10 -0
  86. data/app/assets/stylesheets/commonwealth-vlr-engine/folders.scss +276 -0
  87. data/app/assets/stylesheets/commonwealth-vlr-engine/footer.scss +47 -0
  88. data/app/assets/stylesheets/commonwealth-vlr-engine/header.scss +329 -0
  89. data/app/assets/stylesheets/commonwealth-vlr-engine/home.scss +269 -0
  90. data/app/assets/stylesheets/commonwealth-vlr-engine/index.scss +580 -0
  91. data/app/assets/stylesheets/commonwealth-vlr-engine/institutions.scss +246 -0
  92. data/app/assets/stylesheets/commonwealth-vlr-engine/pages.scss +31 -0
  93. data/app/assets/stylesheets/commonwealth-vlr-engine/search_inside.scss +172 -0
  94. data/app/assets/stylesheets/commonwealth-vlr-engine/searches.scss +55 -0
  95. data/app/assets/stylesheets/commonwealth-vlr-engine/show.scss +840 -0
  96. data/app/assets/stylesheets/commonwealth-vlr-engine/signin.scss +43 -0
  97. data/app/assets/stylesheets/commonwealth-vlr-engine/users.scss +18 -0
  98. data/app/assets/stylesheets/commonwealth-vlr-engine/vlr_dependencies.css +8 -0
  99. data/app/assets/stylesheets/ie_fixes.css +16 -0
  100. data/app/assets/stylesheets/openseadragon.css +1 -0
  101. data/app/assets/stylesheets/wdl-viewer/fd-slider.min.css +2 -0
  102. data/app/controllers/blacklight_advanced_search/advanced_controller.rb +66 -0
  103. data/app/controllers/bookmarks_controller.rb +38 -0
  104. data/app/controllers/collections_controller.rb +128 -0
  105. data/app/controllers/commonwealth_vlr_engine/application_controller.rb +8 -0
  106. data/app/controllers/feedback_controller.rb +39 -0
  107. data/app/controllers/folder_items_actions_controller.rb +72 -0
  108. data/app/controllers/folder_items_controller.rb +90 -0
  109. data/app/controllers/folders_controller.rb +132 -0
  110. data/app/controllers/iiif_manifest_controller.rb +74 -0
  111. data/app/controllers/image_viewer_controller.rb +34 -0
  112. data/app/controllers/institutions_controller.rb +62 -0
  113. data/app/controllers/ocr_search_controller.rb +78 -0
  114. data/app/controllers/pages_controller.rb +5 -0
  115. data/app/controllers/users/omniauth_callbacks_controller.rb +10 -0
  116. data/app/controllers/users/registrations_controller.rb +3 -0
  117. data/app/controllers/users/sessions_controller.rb +3 -0
  118. data/app/controllers/users_controller.rb +27 -0
  119. data/app/helpers/blacklight_maps_helper.rb +3 -0
  120. data/app/helpers/collections_helper.rb +3 -0
  121. data/app/helpers/commonwealth_vlr_engine/application_helper.rb +200 -0
  122. data/app/helpers/commonwealth_vlr_engine/blacklight_helper.rb +35 -0
  123. data/app/helpers/commonwealth_vlr_engine/blacklight_url_helper.rb +53 -0
  124. data/app/helpers/commonwealth_vlr_engine/catalog_helper.rb +414 -0
  125. data/app/helpers/commonwealth_vlr_engine/collections_helper_behavior.rb +19 -0
  126. data/app/helpers/commonwealth_vlr_engine/component_helper.rb +22 -0
  127. data/app/helpers/commonwealth_vlr_engine/facets_helper.rb +20 -0
  128. data/app/helpers/commonwealth_vlr_engine/feedback_helper_behavior.rb +14 -0
  129. data/app/helpers/commonwealth_vlr_engine/folders_helper_behavior.rb +9 -0
  130. data/app/helpers/commonwealth_vlr_engine/image_viewer_helper_behavior.rb +14 -0
  131. data/app/helpers/commonwealth_vlr_engine/institutions_helper_behavior.rb +31 -0
  132. data/app/helpers/commonwealth_vlr_engine/layout_helper.rb +22 -0
  133. data/app/helpers/commonwealth_vlr_engine/ocr_search_helper_behavior.rb +48 -0
  134. data/app/helpers/commonwealth_vlr_engine/pages_helper_behavior.rb +38 -0
  135. data/app/helpers/commonwealth_vlr_engine/vlr_blacklight_maps_helper_behavior.rb +59 -0
  136. data/app/helpers/feedback_helper.rb +3 -0
  137. data/app/helpers/folders_helper.rb +3 -0
  138. data/app/helpers/image_viewer_helper.rb +3 -0
  139. data/app/helpers/institutions_helper.rb +3 -0
  140. data/app/helpers/ocr_search_helper.rb +3 -0
  141. data/app/helpers/pages_helper.rb +3 -0
  142. data/app/mailers/notifier.rb +5 -0
  143. data/app/models/carousel_slide.rb +7 -0
  144. data/app/models/record_mailer.rb +18 -0
  145. data/app/models/user.rb +15 -0
  146. data/app/views/advanced/_advanced_search_date.html.erb +23 -0
  147. data/app/views/advanced/_advanced_search_facets.html.erb +5 -0
  148. data/app/views/advanced/_advanced_search_fields.html.erb +39 -0
  149. data/app/views/advanced/_advanced_search_form.html.erb +51 -0
  150. data/app/views/advanced/_advanced_search_help.html.erb +13 -0
  151. data/app/views/advanced/_facet_layout.html.erb +9 -0
  152. data/app/views/advanced/_facet_limit.html.erb +15 -0
  153. data/app/views/advanced/index.html.erb +29 -0
  154. data/app/views/blacklight_advanced_search/_facet_limit.html.erb +12 -0
  155. data/app/views/bookmarks/_tools.html.erb +25 -0
  156. data/app/views/bookmarks/index.html.erb +64 -0
  157. data/app/views/bookmarks/update.js.erb +1 -0
  158. data/app/views/bpluser/folders/_folder.html.erb +36 -0
  159. data/app/views/catalog/_add_this.html.erb +10 -0
  160. data/app/views/catalog/_az_links.html.erb +15 -0
  161. data/app/views/catalog/_basic_search.html.erb +67 -0
  162. data/app/views/catalog/_citation.html.erb +50 -0
  163. data/app/views/catalog/_constraints.html.erb +26 -0
  164. data/app/views/catalog/_document_collections_gallery.html.erb +7 -0
  165. data/app/views/catalog/_facet_limit_series.html.erb +21 -0
  166. data/app/views/catalog/_facets.html.erb +31 -0
  167. data/app/views/catalog/_facets_series.html.erb +4 -0
  168. data/app/views/catalog/_folder_item_control.html.erb +64 -0
  169. data/app/views/catalog/_index_collections_gallery.html.erb +12 -0
  170. data/app/views/catalog/_index_gallery.html.erb +11 -0
  171. data/app/views/catalog/_index_header_default.html.erb +22 -0
  172. data/app/views/catalog/_index_list_collection.html.erb +33 -0
  173. data/app/views/catalog/_index_list_default.html.erb +13 -0
  174. data/app/views/catalog/_index_map_institutions.html.erb +10 -0
  175. data/app/views/catalog/_index_masonry.html.erb +8 -0
  176. data/app/views/catalog/_index_slideshow.html.erb +18 -0
  177. data/app/views/catalog/_more_like_this.html.erb +9 -0
  178. data/app/views/catalog/_opengraph.html.erb +16 -0
  179. data/app/views/catalog/_previous_next_doc.html.erb +22 -0
  180. data/app/views/catalog/_results_pagination.html.erb +9 -0
  181. data/app/views/catalog/_search_form.html.erb +23 -0
  182. data/app/views/catalog/_search_header.html.erb +5 -0
  183. data/app/views/catalog/_show_default.html.erb +75 -0
  184. data/app/views/catalog/_show_main_content.html.erb +27 -0
  185. data/app/views/catalog/_show_more_like_this.html.erb +15 -0
  186. data/app/views/catalog/_show_partials/_show_book_viewer_link.html.erb +25 -0
  187. data/app/views/catalog/_show_partials/_show_default_img.html.erb +32 -0
  188. data/app/views/catalog/_show_partials/_show_default_metadata.html.erb +486 -0
  189. data/app/views/catalog/_show_partials/_show_default_simple_img_viewer.html.erb +45 -0
  190. data/app/views/catalog/_show_partials/_show_downloads.html.erb +14 -0
  191. data/app/views/catalog/_show_partials/_show_flagged_notice.html.erb +29 -0
  192. data/app/views/catalog/_show_partials/_show_multi_img.html.erb +42 -0
  193. data/app/views/catalog/_show_partials/_show_multi_img_pagination.html.erb +20 -0
  194. data/app/views/catalog/_show_partials/_show_oai_item_img.html.erb +5 -0
  195. data/app/views/catalog/_show_partials/_show_oai_item_link.html.erb +8 -0
  196. data/app/views/catalog/_show_partials/_show_prev_next_carousel_links.html.erb +17 -0
  197. data/app/views/catalog/_show_partials/_show_volumes.html.erb +52 -0
  198. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  199. data/app/views/catalog/_show_tools.html.erb +42 -0
  200. data/app/views/catalog/_zero_results.html.erb +20 -0
  201. data/app/views/catalog/email.html.erb +6 -0
  202. data/app/views/catalog/index.html.erb +17 -0
  203. data/app/views/catalog/metadata_view.html.erb +7 -0
  204. data/app/views/catalog/show.html.erb +13 -0
  205. data/app/views/collections/_search_form_collection.html.erb +23 -0
  206. data/app/views/collections/index.html.erb +30 -0
  207. data/app/views/collections/show.html.erb +116 -0
  208. data/app/views/devise/confirmations/new.html.erb +14 -0
  209. data/app/views/devise/mailer/reset_password_instructions.html.erb +13 -0
  210. data/app/views/devise/passwords/edit.html.erb +33 -0
  211. data/app/views/devise/passwords/new.html.erb +31 -0
  212. data/app/views/devise/registrations/edit.html.erb +83 -0
  213. data/app/views/devise/registrations/new.html.erb +53 -0
  214. data/app/views/devise/sessions/new.html.erb +75 -0
  215. data/app/views/devise/shared/_links.erb +29 -0
  216. data/app/views/feedback/complete.html.erb +9 -0
  217. data/app/views/feedback/show.html.erb +61 -0
  218. data/app/views/folder_items/create.js.erb +1 -0
  219. data/app/views/folder_items/destroy.js.erb +1 -0
  220. data/app/views/folder_items/item_actions.js.erb +2 -0
  221. data/app/views/folder_items/update.js.erb +1 -0
  222. data/app/views/folders/_in_folder.html.erb +2 -0
  223. data/app/views/folders/_new_edit_form_fields.html.erb +36 -0
  224. data/app/views/folders/edit.html.erb +25 -0
  225. data/app/views/folders/index.html.erb +73 -0
  226. data/app/views/folders/new.html.erb +27 -0
  227. data/app/views/folders/public_list.html.erb +44 -0
  228. data/app/views/folders/show.html.erb +98 -0
  229. data/app/views/image_viewer/_book_viewer_help.html.erb +125 -0
  230. data/app/views/image_viewer/_render_book_viewer.html.erb +185 -0
  231. data/app/views/image_viewer/book_viewer.html.erb +57 -0
  232. data/app/views/image_viewer/show.js.erb +19 -0
  233. data/app/views/institutions/_intro_text.html.erb +1 -0
  234. data/app/views/institutions/_map_institutions_search.html.erb +9 -0
  235. data/app/views/institutions/_search_form_institution.html.erb +24 -0
  236. data/app/views/institutions/index.html.erb +31 -0
  237. data/app/views/institutions/show.html.erb +104 -0
  238. data/app/views/layouts/_google_analytics.html.erb +9 -0
  239. data/app/views/layouts/book_viewer.html.erb +37 -0
  240. data/app/views/layouts/commonwealth-vlr-engine.html.erb +59 -0
  241. data/app/views/notifier/feedback.text.erb +6 -0
  242. data/app/views/ocr_search/_index_ocr_list.html.erb +17 -0
  243. data/app/views/ocr_search/_search_form_ocr.html.erb +23 -0
  244. data/app/views/ocr_search/_snippets_more.html.erb +15 -0
  245. data/app/views/ocr_search/_zero_results_ocr.html.erb +9 -0
  246. data/app/views/ocr_search/index.html.erb +49 -0
  247. data/app/views/pages/_carousel.html.erb +46 -0
  248. data/app/views/pages/_home_partials/_banner.html.erb +23 -0
  249. data/app/views/pages/_home_partials/_browse.html.erb +55 -0
  250. data/app/views/pages/_home_partials/_context.html.erb +24 -0
  251. data/app/views/pages/_home_partials/_home_content.html.erb +14 -0
  252. data/app/views/pages/about.html.erb +10 -0
  253. data/app/views/pages/about_site.html.erb +6 -0
  254. data/app/views/pages/explore.html.erb +32 -0
  255. data/app/views/pages/home.html.erb +3 -0
  256. data/app/views/record_mailer/email_record.text.erb +7 -0
  257. data/app/views/saved_searches/index.html.erb +60 -0
  258. data/app/views/search_history/index.html.erb +59 -0
  259. data/app/views/shared/_error_messages.html.erb +9 -0
  260. data/app/views/shared/_flash_msg_maintenance.html.erb +6 -0
  261. data/app/views/shared/_folder_item_actions.html.erb +66 -0
  262. data/app/views/shared/_folder_tools.html.erb +4 -0
  263. data/app/views/shared/_footer.html.erb +14 -0
  264. data/app/views/shared/_header_navbar.html.erb +34 -0
  265. data/app/views/shared/_nav_links.html.erb +58 -0
  266. data/app/views/shared/_search_form_header.html.erb +16 -0
  267. data/app/views/shared/_tools.html.erb +14 -0
  268. data/app/views/shared/_user_util_links.html.erb +43 -0
  269. data/app/views/users/show.html.erb +33 -0
  270. data/commonwealth-vlr-engine.gemspec +47 -0
  271. data/config/initializers/patch_blacklight_advanced_search.rb +74 -0
  272. data/config/initializers/patch_blacklight_maps.rb +20 -0
  273. data/config/jetty.yml +7 -0
  274. data/config/locales/commonwealth-vlr-engine.en.yml +463 -0
  275. data/config/routes.rb +92 -0
  276. data/lib/commonwealth-vlr-engine.rb +55 -0
  277. data/lib/commonwealth-vlr-engine/commonwealth_search_builder.rb +66 -0
  278. data/lib/commonwealth-vlr-engine/controller.rb +69 -0
  279. data/lib/commonwealth-vlr-engine/controller_override.rb +238 -0
  280. data/lib/commonwealth-vlr-engine/engine.rb +40 -0
  281. data/lib/commonwealth-vlr-engine/finder.rb +285 -0
  282. data/lib/commonwealth-vlr-engine/iiif_manifest.rb +189 -0
  283. data/lib/commonwealth-vlr-engine/notifier.rb +33 -0
  284. data/lib/commonwealth-vlr-engine/pages.rb +33 -0
  285. data/lib/commonwealth-vlr-engine/render_constraints_override.rb +57 -0
  286. data/lib/commonwealth-vlr-engine/route_sets.rb +49 -0
  287. data/lib/commonwealth-vlr-engine/routes.rb +21 -0
  288. data/lib/commonwealth-vlr-engine/version.rb +3 -0
  289. data/lib/generators/commonwealth_vlr_engine/controller_generator.rb +92 -0
  290. data/lib/generators/commonwealth_vlr_engine/environment_generator.rb +49 -0
  291. data/lib/generators/commonwealth_vlr_engine/install_generator.rb +57 -0
  292. data/lib/generators/commonwealth_vlr_engine/localassets_generator.rb +29 -0
  293. data/lib/generators/commonwealth_vlr_engine/model_generator.rb +65 -0
  294. data/lib/generators/commonwealth_vlr_engine/routes_generator.rb +39 -0
  295. data/lib/generators/commonwealth_vlr_engine/templates/commonwealth_vlr_engine.css.scss +4 -0
  296. data/lib/generators/commonwealth_vlr_engine/templates/config/contact_emails.yml.sample +13 -0
  297. data/lib/generators/commonwealth_vlr_engine/templates/config/fedora.yml.sample +6 -0
  298. data/lib/generators/commonwealth_vlr_engine/templates/config/geojson_static_file.yml.sample +11 -0
  299. data/lib/generators/commonwealth_vlr_engine/templates/config/google_analytics.yml.sample +10 -0
  300. data/lib/generators/commonwealth_vlr_engine/templates/config/iiif_server.yml.sample +10 -0
  301. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/a_load_commonwealth_vlr_configs.rb +14 -0
  302. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/devise.rb +269 -0
  303. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/secret_token.rb +8 -0
  304. data/lib/generators/commonwealth_vlr_engine/templates/config/locales/blacklight.en.yml +44 -0
  305. data/lib/generators/commonwealth_vlr_engine/templates/config/locales/devise.en.yml +12 -0
  306. data/lib/generators/commonwealth_vlr_engine/templates/config/omniauth-facebook.yml.sample +14 -0
  307. data/lib/generators/commonwealth_vlr_engine/templates/config/omniauth-polaris.yml.sample +20 -0
  308. data/lib/generators/commonwealth_vlr_engine/templates/config/vlr.yml +13 -0
  309. data/lib/generators/commonwealth_vlr_engine/yml_generator.rb +29 -0
  310. data/lib/railties/commonwealth_vlr_engine.rake +6 -0
  311. data/solr_conf/conf/schema.xml +476 -0
  312. data/solr_conf/conf/solrconfig.xml +286 -0
  313. data/spec/controllers/catalog_controller_spec.rb +67 -0
  314. data/spec/controllers/collections_controller_spec.rb +127 -0
  315. data/spec/controllers/feedback_controller_spec.rb +51 -0
  316. data/spec/controllers/folder_items_actions_controller_spec.rb +99 -0
  317. data/spec/controllers/folder_items_controller_spec.rb +90 -0
  318. data/spec/controllers/folders_controller_spec.rb +368 -0
  319. data/spec/controllers/iiif_manifest_controller_spec.rb +85 -0
  320. data/spec/controllers/image_viewer_controller_spec.rb +50 -0
  321. data/spec/controllers/institutions_controller_spec.rb +64 -0
  322. data/spec/controllers/ocr_search_controller_spec.rb +71 -0
  323. data/spec/controllers/pages_controller_spec.rb +58 -0
  324. data/spec/controllers/users_controller_spec.rb +62 -0
  325. data/spec/features/catalog/_az_links_spec.rb +27 -0
  326. data/spec/features/catalog/_show_partials/_show_book_viewer_link_spec.rb +47 -0
  327. data/spec/features/catalog/_show_partials/_show_default_simple_img_viewer_spec.rb +19 -0
  328. data/spec/features/catalog/_show_partials/_show_flagged_notice_spec.rb +23 -0
  329. data/spec/features/catalog/_show_partials/_show_multi_img_spec.rb +18 -0
  330. data/spec/features/catalog/_show_partials/_show_volumes_spec.rb +24 -0
  331. data/spec/features/collections/index_spec.rb +35 -0
  332. data/spec/features/feedback/show_spec.rb +47 -0
  333. data/spec/features/image_viewer/book_viewer_spec.rb +67 -0
  334. data/spec/features/institutions/index_spec.rb +31 -0
  335. data/spec/features/institutions/map_view_spec.rb +37 -0
  336. data/spec/features/more_like_this_search_spec.rb +23 -0
  337. data/spec/features/ocr_search/index_spec.rb +89 -0
  338. data/spec/fixtures/sample_rss_feed.xml +56 -0
  339. data/spec/fixtures/sample_solr_documents.yml +2748 -0
  340. data/spec/helpers/application_helper_spec.rb +114 -0
  341. data/spec/helpers/catalog_helper_spec.rb +386 -0
  342. data/spec/helpers/collections_helper_spec.rb +28 -0
  343. data/spec/helpers/component_helper_spec.rb +34 -0
  344. data/spec/helpers/folders_helper_spec.rb +31 -0
  345. data/spec/helpers/image_viewer_helper_spec.rb +15 -0
  346. data/spec/helpers/institutions_helper_spec.rb +53 -0
  347. data/spec/helpers/ocr_search_helper_spec.rb +70 -0
  348. data/spec/helpers/pages_helper_spec.rb +21 -0
  349. data/spec/lib/commonwealth-vlr-engine/commonwealth_search_builder_spec.rb +101 -0
  350. data/spec/lib/commonwealth-vlr-engine/controller_override_spec.rb +41 -0
  351. data/spec/lib/commonwealth-vlr-engine/controller_spec.rb +33 -0
  352. data/spec/lib/commonwealth-vlr-engine/finder_spec.rb +140 -0
  353. data/spec/lib/commonwealth-vlr-engine/iiif_manifest_spec.rb +157 -0
  354. data/spec/lib/commonwealth-vlr-engine/render_constraints_override_spec.rb +97 -0
  355. data/spec/mailers/notifier_spec.rb +31 -0
  356. data/spec/models/carousel_slide_spec.rb +38 -0
  357. data/spec/spec_helper.rb +40 -0
  358. data/spec/tasks/vlr_engine_rake_spec.rb +28 -0
  359. data/spec/test_app_templates/lib/generators/test_app_generator.rb +23 -0
  360. data/tasks/vlr_engine.rake +46 -0
  361. metadata +788 -0
@@ -0,0 +1,157 @@
1
+ require 'spec_helper'
2
+
3
+ describe CommonwealthVlrEngine::IiifManifest do
4
+
5
+ include Blacklight::SearchHelper
6
+
7
+ class IiifManifestTestClass < IiifManifestController
8
+ include CommonwealthVlrEngine::Finder
9
+ end
10
+
11
+ before { @obj = IiifManifestTestClass.new }
12
+
13
+ let(:document) { Blacklight.default_index.search({:q => "id:\"bpl-dev:h702q6403\"", :rows => 1}).documents.first }
14
+ let(:image_files) { @obj.get_files(document.id)[:images] }
15
+ let(:image_id_suffix) { image_files.first.id.gsub(/\A[\w-]+:/,'/') }
16
+
17
+ describe 'create_iiif_manifest' do
18
+
19
+ before { @manifest = @obj.create_iiif_manifest(document, image_files) }
20
+
21
+ it 'should create an instance of IIIF::Presentation::Manifest' do
22
+ expect(@manifest).not_to be_nil
23
+ expect(@manifest.class).to eq(IIIF::Presentation::Manifest)
24
+ end
25
+
26
+ it 'should have metadata, sequences, canvases, images, and resources' do
27
+ expect(@manifest.metadata.empty?).not_to be_truthy
28
+ expect(@manifest.sequences.empty?).not_to be_truthy
29
+ expect(@manifest.sequences[0].canvases.empty?).not_to be_truthy
30
+ expect(@manifest.sequences[0].canvases[0].images.empty?).not_to be_truthy
31
+ expect(@manifest.sequences[0].canvases[0].images[0].resource).not_to be_nil
32
+ end
33
+
34
+ it 'should have the right id' do
35
+ expect(@manifest['@id']).to eq("#{document[:identifier_uri_ss]}/manifest")
36
+ end
37
+
38
+ end
39
+
40
+ describe 'canvas_from_id' do
41
+
42
+ before { @canvas = @obj.canvas_from_id(image_files.first.id, 'image1', document) }
43
+
44
+ it 'should create an instance of IIIF::Presentation::Canvas' do
45
+ expect(@canvas).not_to be_nil
46
+ expect(@canvas.class).to eq(IIIF::Presentation::Canvas)
47
+ end
48
+
49
+ it 'should have images and resources' do
50
+ expect(@canvas.images.empty?).not_to be_truthy
51
+ expect(@canvas.images[0].resource).not_to be_nil
52
+ end
53
+
54
+ it 'should have the right id' do
55
+ expect(@canvas['@id']).to eq("#{document[:identifier_uri_ss]}/canvas#{image_id_suffix}")
56
+ end
57
+
58
+ end
59
+
60
+ describe 'image_annotation_from_image_id' do
61
+
62
+ before { @annotation = @obj.image_annotation_from_image_id(image_files.first.id, document) }
63
+
64
+ it 'should create an instance of IIIF::Presentation::Annotation' do
65
+ expect(@annotation).not_to be_nil
66
+ expect(@annotation.class).to eq(IIIF::Presentation::Annotation)
67
+ end
68
+
69
+ it 'should have a resource' do
70
+ expect(@annotation.resource).not_to be_nil
71
+ end
72
+
73
+ it 'should have the right id' do
74
+ expect(@annotation['@id']).to eq("#{document[:identifier_uri_ss]}/annotation#{image_id_suffix}")
75
+ end
76
+
77
+ end
78
+
79
+ describe 'image_resource_from_image_id' do
80
+
81
+ before { @image_resource = @obj.image_resource_from_image_id(image_files.first.id, document) }
82
+
83
+ it 'should create an instance of IIIF::Presentation::ImageResource' do
84
+ expect(@image_resource).not_to be_nil
85
+ expect(@image_resource.class).to eq(IIIF::Presentation::ImageResource)
86
+ end
87
+
88
+ it 'should represent an image' do
89
+ expect(@image_resource.format).to eq('image/jpeg')
90
+ expect(@image_resource.width).not_to be_nil
91
+ end
92
+
93
+ it 'should have the right id' do
94
+ expect(@image_resource['@id']).to eq(document[:identifier_uri_ss].gsub(/\/[\w]+\z/, image_id_suffix) + "/large_image")
95
+ end
96
+
97
+ end
98
+
99
+ describe 'collection_for_manifests' do
100
+
101
+ let(:series_document) { Blacklight.default_index.search({:q => "id:\"bpl-dev:3j334b469\"", :rows => 1}).documents.first }
102
+ let(:manifest_docs) { @obj.get_volume_objects(series_document.id) }
103
+
104
+ before { @collection = @obj.collection_for_manifests(series_document, manifest_docs) }
105
+
106
+ it 'should create an instance of IIIF::Presentation::Collection' do
107
+ expect(@collection).not_to be_nil
108
+ expect(@collection.class).to eq(IIIF::Presentation::Collection)
109
+ end
110
+
111
+ it 'should have contain a list of manifests' do
112
+ expect(@collection.manifests.length).to eq(2)
113
+ expect(@collection.manifests.first['@id']).to include('3j334603p')
114
+ end
115
+
116
+ it 'should have the right id' do
117
+ expect(@collection['@id']).to eq(series_document[:identifier_uri_ss].gsub(/\/[\w]+\z/,"/collection\\0"))
118
+ end
119
+
120
+ end
121
+
122
+ describe 'manifest_metadata' do
123
+
124
+ before { @manifest_metadata = @obj.manifest_metadata(document) }
125
+
126
+ it 'should create a hash of metadata' do
127
+ expect(@manifest_metadata.empty?).to be_falsey
128
+ end
129
+
130
+ it 'should have a bunch of metadata about the item' do
131
+ expect(@manifest_metadata.find { |field| field[:label] == I18n.t('blacklight.metadata_display.fields.title') }[:value]).to eq(document[IiifManifestTestClass.blacklight_config.index.title_field.to_sym])
132
+ expect(@manifest_metadata.find { |field| field[:label] == I18n.t('blacklight.metadata_display.fields.collection') }[:value]).to eq(document[:related_item_host_ssim].first)
133
+ end
134
+
135
+ end
136
+
137
+ describe 'manifest_attribution' do
138
+
139
+ before { @manifest_attribution = @obj.manifest_attribution(document) }
140
+
141
+ it 'should create an attribution string' do
142
+ expect(@manifest_attribution).to include('No known copyright restrictions')
143
+ end
144
+
145
+ end
146
+
147
+ describe 'label_for_canvas' do
148
+
149
+ before { @label_for_canvas = @obj.label_for_canvas(image_files.first, 0) }
150
+
151
+ it 'should return the correct label' do
152
+ expect(@label_for_canvas).to eq('Front')
153
+ end
154
+
155
+ end
156
+
157
+ end
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe CommonwealthVlrEngine::RenderConstraintsOverride do
4
+
5
+ class RenderConstraintsOverrideTestClass < CatalogController
6
+ attr_accessor :params
7
+ end
8
+
9
+ before(:each) do
10
+ @fake_controller = RenderConstraintsOverrideTestClass.new
11
+ @fake_controller.extend(CommonwealthVlrEngine::RenderConstraintsOverride)
12
+ @fake_controller.params = { mlt_id: 'bpl-dev:h702q6403' }
13
+ end
14
+
15
+ describe "testing for mlt parameters" do
16
+
17
+ describe "has_mlt_parameters?" do
18
+
19
+ it "should be true if mlt params are present" do
20
+ expect(@fake_controller.has_mlt_parameters?).to be true
21
+ end
22
+
23
+ end
24
+
25
+ describe "has_search_parameters?" do
26
+
27
+ it "should be true if mlt params are present" do
28
+ expect(@fake_controller.has_search_parameters?).to be true
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ describe "render_constraint_element" do
36
+
37
+ # TODO: can't get the spec below to pass, getting error:
38
+ # NoMethodError: super: no superclass method `render_constraint_element'
39
+
40
+ it "should render AZ link constraints properly" #do
41
+ #expect(@fake_controller.render_constraint_element(nil, "title_info_primary_ssort:B*")).to
42
+ #have_content("Starts with")
43
+ #end
44
+
45
+ end
46
+
47
+ describe "render mlt constraints" do
48
+
49
+ before do
50
+ @test_params = @fake_controller.params
51
+ end
52
+
53
+ describe "query_has_constraints?" do
54
+
55
+ it "should be true if there are mlt params" do
56
+ expect(@fake_controller.query_has_constraints?).to be true
57
+ end
58
+
59
+ end
60
+
61
+
62
+ describe "render_mlt_query" do
63
+
64
+ before :each do
65
+ # have to create a request or call to 'url_for' returns an error
66
+ @fake_controller.request = ActionDispatch::Request.new(params:{controller: 'catalog', action: 'index'})
67
+ @fake_controller.request.path_parameters[:controller] = 'catalog'
68
+ end
69
+
70
+ # TODO: can't get these specs to pass, getting error:
71
+ # NoMethodError: undefined method `render_constraint_element'
72
+
73
+ it "should render the mlt id" #do
74
+ #expect(@fake_controller.render_mlt_query(@test_params)).to have_content(@fake_controller.params[:mlt_id])
75
+ #end
76
+
77
+ it "should remove spatial params in the 'remove' link" #do
78
+ #expect(@fake_controller.render_mlt_query(@test_params)).to_not have_content("spatial_search_type")
79
+ #end
80
+
81
+ end
82
+
83
+ describe "render_search_to_s_mlt" do
84
+
85
+ it "should return render_search_to_s_element when mlt params are present" do
86
+ expect(@fake_controller).to receive(:render_search_to_s_element)
87
+ expect(@fake_controller).to receive(:render_filter_value)
88
+ @fake_controller.render_search_to_s_mlt(@test_params)
89
+ end
90
+
91
+ end
92
+
93
+ end
94
+
95
+
96
+
97
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe CommonwealthVlrEngine::Notifier do
4
+
5
+ describe "feedback" do
6
+
7
+ before(:each) do
8
+ @test_params = {
9
+ :name => "Testy McGee",
10
+ :email => "testy@example.com",
11
+ :topic => "image reproduction",
12
+ :message => "Test message"
13
+ }
14
+ @test_feedback_email = Notifier.feedback(@test_params)
15
+ end
16
+
17
+ it "should create the email" do
18
+ expect(@test_feedback_email).not_to be_nil
19
+ end
20
+
21
+ it "should have the right user email in the text" do
22
+ expect(@test_feedback_email.body.encoded).to include(@test_params[:email])
23
+ end
24
+
25
+ it "should have the right receiver email address" do
26
+ expect(@test_feedback_email.to[0]).to eq(CONTACT_EMAILS['image_requests'])
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe CarouselSlide do
4
+
5
+ before(:each) do
6
+ @slide_attr = {
7
+ :sequence => 1,
8
+ :object_pid => 'bpl-dev:123456',
9
+ :image_pid => 'bpl-dev:7891011',
10
+ :size => '570,',
11
+ :region => '250,90,295,570',
12
+ :title => 'The Slide Title',
13
+ :institution => 'Institution Name',
14
+ :context => 'bpl-dev:0022331'
15
+ }
16
+ end
17
+
18
+ it 'should create a new slide given valid attributes' do
19
+ CarouselSlide.create!(@slide_attr)
20
+ end
21
+
22
+ describe 'assign values properly' do
23
+
24
+ before(:each) do
25
+ @slide = CarouselSlide.create!(@slide_attr)
26
+ end
27
+
28
+ it 'should have a title attribute' do
29
+ expect(@slide).to respond_to(:title)
30
+ end
31
+
32
+ it 'should have the right title' do
33
+ expect(@slide.title).to eq('The Slide Title')
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,40 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+
3
+ require 'engine_cart'
4
+ require 'coveralls'
5
+ Coveralls.wear!('rails')
6
+ EngineCart.load_application!
7
+
8
+ require 'capybara/poltergeist'
9
+ Capybara.javascript_driver = :poltergeist
10
+
11
+ Capybara.register_driver :poltergeist do |app|
12
+ options = {}
13
+ options[:js_errors] = false
14
+ options[:timeout] = 120 if RUBY_PLATFORM == "java"
15
+ Capybara::Poltergeist::Driver.new(app, options)
16
+ end
17
+
18
+ if ENV["COVERAGE"] or ENV["CI"]
19
+ require 'simplecov'
20
+
21
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
22
+ SimpleCov.start do
23
+ add_filter "/spec/"
24
+ end
25
+ end
26
+
27
+ require 'commonwealth-vlr-engine'
28
+
29
+ require 'rspec/rails'
30
+ require 'capybara/rspec'
31
+
32
+
33
+ RSpec.configure do |config|
34
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
35
+ # examples within a transaction, remove the following line or assign false
36
+ # instead of true.
37
+ config.use_transactional_fixtures = true
38
+ config.include Devise::TestHelpers, type: :controller
39
+ config.infer_spec_type_from_file_location!
40
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ require 'rake'
3
+
4
+ describe 'vlr_engine namespace rake tasks' do
5
+
6
+ before :all do
7
+ Rake.application.rake_require '../tasks/vlr_engine'
8
+ Rake::Task.define_task(:environment)
9
+ @time = Time.now.to_f
10
+ end
11
+
12
+ describe 'vlr_engine:create_geojson' do
13
+
14
+ let :run_rake_task do
15
+ Rake::Task['vlr_engine:create_geojson'].reenable
16
+ Rake.application.invoke_task 'vlr_engine:create_geojson'
17
+ @file_path = "#{Rails.root.to_s}/#{GEOJSON_STATIC_FILE['filepath']}"
18
+ end
19
+
20
+ it 'should create the geojson file' do
21
+ run_rake_task
22
+ expect(File.file?(@file_path)).not_to be_nil
23
+ expect(File.stat(@file_path).mtime.to_f).to be > @time
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,23 @@
1
+ require 'rails/generators'
2
+
3
+ class TestAppGenerator < Rails::Generators::Base
4
+
5
+ def remove_index
6
+ remove_file "public/index.html"
7
+ end
8
+
9
+ def run_blacklight_generator
10
+ say_status("warning", "GENERATING BL", :yellow)
11
+
12
+ Bundler.with_clean_env do
13
+ run "bundle install"
14
+ end
15
+
16
+ generate 'blacklight:install'
17
+ end
18
+
19
+ def run_vlr_engine_install
20
+ generate 'commonwealth_vlr_engine:install'
21
+ end
22
+
23
+ end
@@ -0,0 +1,46 @@
1
+ # rake tasks for Commonwealth-public-interface
2
+
3
+ namespace :vlr_engine do
4
+
5
+ desc 'generate the static geojson file for catalog#map view'
6
+ task :create_geojson => :environment do
7
+
8
+ include BlacklightMapsHelper
9
+
10
+ def blacklight_config
11
+ CatalogController.blacklight_config
12
+ end
13
+
14
+ class BlacklightGeojsonTestClass < CatalogController
15
+ include Blacklight::SearchHelper
16
+ end
17
+
18
+ @controller = BlacklightGeojsonTestClass.new
19
+ @controller.request = ActionDispatch::TestRequest.new
20
+
21
+ (@response, @document_list) = @controller.search_results({},@controller.search_params_logic)
22
+
23
+ geojson_features = serialize_geojson(map_facet_values, 'index')
24
+ if geojson_features
25
+ File.open("#{Rails.root.to_s}/#{GEOJSON_STATIC_FILE['filepath']}", 'w') {|f| f.write(geojson_features) }
26
+ puts 'The GeoJSON file has successfully been created'
27
+ else
28
+ puts 'ERROR: The GeoJSON file was not created!'
29
+ end
30
+
31
+ end
32
+
33
+ desc "Put sample data into test app solr"
34
+ namespace :test_index do
35
+ task :seed do
36
+ require 'yaml'
37
+ docs = YAML::load(File.open(File.expand_path(File.join('..', '..', '..', 'fixtures', 'sample_solr_documents.yml'), __FILE__)))
38
+ #Blacklight.solr.add docs
39
+ #Blacklight.solr.commit
40
+ conn = Blacklight.default_index.connection
41
+ conn.add docs
42
+ conn.commit
43
+ end
44
+ end
45
+
46
+ end