umlaut 3.3.1 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (555) hide show
  1. data/README.md +13 -12
  2. data/active_record_patch/connection_pool.rb +41 -449
  3. data/app/assets/javascripts/bootstrap3-typeahead.js +415 -0
  4. data/app/assets/javascripts/umlaut.js +8 -4
  5. data/app/assets/javascripts/umlaut/ajax_windows.js +15 -21
  6. data/app/assets/javascripts/umlaut/search_autocomplete.js +95 -90
  7. data/app/assets/javascripts/umlaut/update_html.js +12 -4
  8. data/app/assets/stylesheets/umlaut.css.scss +2 -4
  9. data/app/assets/stylesheets/umlaut/_az.scss +6 -6
  10. data/app/assets/stylesheets/umlaut/_forms.scss +21 -15
  11. data/app/assets/stylesheets/umlaut/_layout.scss +4 -5
  12. data/app/assets/stylesheets/umlaut/_misc.scss +12 -9
  13. data/app/assets/stylesheets/umlaut/_mixins.scss +2 -3
  14. data/app/assets/stylesheets/umlaut/_resolve.scss +45 -24
  15. data/app/assets/stylesheets/umlaut/_results.scss +7 -7
  16. data/app/assets/stylesheets/umlaut/_search.scss +16 -5
  17. data/app/assets/stylesheets/umlaut/_spinner.scss +1 -1
  18. data/app/assets/stylesheets/umlaut/_variables.scss +2 -2
  19. data/app/controllers/export_email_controller.rb +11 -4
  20. data/app/controllers/resolve_controller.rb +14 -30
  21. data/app/controllers/search_controller.rb +3 -8
  22. data/app/controllers/umlaut/controller_behavior.rb +30 -1
  23. data/app/controllers/umlaut/error_handling.rb +1 -1
  24. data/app/controllers/umlaut_configurable.rb +13 -10
  25. data/app/controllers/umlaut_controller.rb +4 -0
  26. data/app/helpers/emailer_helper.rb +10 -10
  27. data/app/helpers/export_email_helper.rb +1 -1
  28. data/app/helpers/resolve_helper.rb +3 -2
  29. data/app/helpers/search_helper.rb +26 -29
  30. data/app/helpers/umlaut/footer_helper.rb +4 -6
  31. data/app/helpers/umlaut/helper.rb +41 -7
  32. data/app/helpers/umlaut/url_generation.rb +10 -29
  33. data/app/mixin_logic/umlaut_http.rb +5 -2
  34. data/app/models/collection.rb +21 -6
  35. data/app/models/dispatched_service.rb +13 -0
  36. data/app/models/referent.rb +66 -88
  37. data/app/models/referent_value.rb +6 -5
  38. data/app/models/request.rb +35 -22
  39. data/app/models/service_response.rb +132 -66
  40. data/app/models/service_type_value.rb +22 -5
  41. data/app/models/service_wave.rb +30 -9
  42. data/app/models/sfx4/local/base.rb +0 -2
  43. data/app/models/sfx_url.rb +2 -2
  44. data/app/presentation/section_renderer.rb +68 -22
  45. data/app/service_adaptors/ajax_export.rb +1 -0
  46. data/app/service_adaptors/amazon.rb +7 -3
  47. data/app/service_adaptors/email_export.rb +1 -0
  48. data/app/service_adaptors/google_book_search.rb +8 -3
  49. data/app/service_adaptors/google_scholar_link.rb +6 -4
  50. data/app/service_adaptors/hathi_trust.rb +23 -18
  51. data/app/service_adaptors/hip_holding_search.rb +1 -1
  52. data/app/service_adaptors/internet_archive.rb +2 -0
  53. data/app/service_adaptors/isi.rb +2 -2
  54. data/app/service_adaptors/service.rb +31 -41
  55. data/app/service_adaptors/txt_holding_export.rb +3 -2
  56. data/app/service_adaptors/ulrichs_link.rb +5 -5
  57. data/app/service_adaptors/worldcat.rb +3 -1
  58. data/app/views/export_email/email.html.erb +10 -9
  59. data/app/views/export_email/send_txt.html.erb +4 -2
  60. data/app/views/export_email/txt.html.erb +44 -22
  61. data/app/views/feedback/new.html.erb +5 -5
  62. data/app/views/resolve/_background_progress.html.erb +23 -4
  63. data/app/views/resolve/_background_updater.html.erb +8 -8
  64. data/app/views/resolve/_citation.html.erb +11 -10
  65. data/app/views/resolve/_compact_citation.html.erb +3 -3
  66. data/app/views/resolve/_cover_image.html.erb +4 -4
  67. data/app/views/resolve/_fulltext.html.erb +1 -1
  68. data/app/views/resolve/_holding.html.erb +13 -13
  69. data/app/views/resolve/_manually_entered_warning.html.erb +9 -5
  70. data/app/views/resolve/_modal.html.erb +19 -15
  71. data/app/views/resolve/_search_inside.html.erb +20 -17
  72. data/app/views/resolve/_service_errors.html.erb +6 -6
  73. data/app/views/resolve/_standard_response_item.html.erb +7 -7
  74. data/app/views/resolve/get_permalink.html.erb +2 -2
  75. data/app/views/resolve/index.html.erb +13 -11
  76. data/app/views/search/_citation.html.erb +16 -16
  77. data/app/views/search/_pager.html.erb +6 -6
  78. data/app/views/search/books.html.erb +59 -19
  79. data/app/views/search/journal_search.html.erb +11 -11
  80. data/app/views/search/journals.html.erb +33 -33
  81. data/app/views/umlaut/_header.html.erb +7 -1
  82. data/app/views/umlaut/error.html.erb +13 -14
  83. data/bin/umlaut +141 -0
  84. data/config/locales/da.yml +122 -0
  85. data/config/locales/en.yml +227 -4
  86. data/db/orig_fixed_data/service_type_values.yml +18 -7
  87. data/lib/generators/templates/umlaut_services.yml +1 -1
  88. data/lib/generators/umlaut/install_generator.rb +0 -12
  89. data/lib/generators/umlaut/remove_turbolinks_generator.rb +14 -0
  90. data/lib/generators/umlaut_app_template.rb +37 -0
  91. data/lib/umlaut.rb +29 -0
  92. data/lib/umlaut/routes.rb +34 -38
  93. data/lib/umlaut/version.rb +6 -1
  94. data/test/dummy/app/assets/javascripts/application.js +1 -1
  95. data/test/dummy/app/controllers/umlaut_controller.rb +4 -2
  96. data/test/dummy/config/application.rb +2 -1
  97. data/test/dummy/config/environments/development.rb +1 -3
  98. data/test/dummy/config/environments/test.rb +2 -2
  99. data/test/dummy/config/travis_database.yml +0 -14
  100. data/test/dummy/config/umlaut_services.yml +9 -0
  101. data/test/dummy/config/umlaut_services.yml-JH +289 -0
  102. data/test/dummy/config/umlaut_services.yml-TEST +250 -0
  103. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_alerts.scssc +0 -0
  104. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_badges.scssc +0 -0
  105. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_breadcrumbs.scssc +0 -0
  106. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_button-groups.scssc +0 -0
  107. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_buttons.scssc +0 -0
  108. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_carousel.scssc +0 -0
  109. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_close.scssc +0 -0
  110. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_code.scssc +0 -0
  111. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_component-animations.scssc +0 -0
  112. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_dropdowns.scssc +0 -0
  113. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_forms.scssc +0 -0
  114. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_glyphicons.scssc +0 -0
  115. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_grid.scssc +0 -0
  116. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_input-groups.scssc +0 -0
  117. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_jumbotron.scssc +0 -0
  118. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_labels.scssc +0 -0
  119. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_list-group.scssc +0 -0
  120. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_media.scssc +0 -0
  121. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_mixins.scssc +0 -0
  122. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_modals.scssc +0 -0
  123. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_navbar.scssc +0 -0
  124. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_navs.scssc +0 -0
  125. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_normalize.scssc +0 -0
  126. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_pager.scssc +0 -0
  127. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_pagination.scssc +0 -0
  128. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_panels.scssc +0 -0
  129. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_popovers.scssc +0 -0
  130. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_print.scssc +0 -0
  131. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_progress-bars.scssc +0 -0
  132. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_responsive-embed.scssc +0 -0
  133. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_responsive-utilities.scssc +0 -0
  134. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_scaffolding.scssc +0 -0
  135. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_tables.scssc +0 -0
  136. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_thumbnails.scssc +0 -0
  137. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_tooltip.scssc +0 -0
  138. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_type.scssc +0 -0
  139. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_utilities.scssc +0 -0
  140. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_variables.scssc +0 -0
  141. data/test/dummy/tmp/cache/assets/development/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_wells.scssc +0 -0
  142. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_admin.scssc +0 -0
  143. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_az.scssc +0 -0
  144. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_forms.scssc +0 -0
  145. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_icons.scssc +0 -0
  146. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_layout.scssc +0 -0
  147. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_misc.scssc +0 -0
  148. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_mixins.scssc +0 -0
  149. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_modal.scssc +0 -0
  150. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_resolve.scssc +0 -0
  151. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_results.scssc +0 -0
  152. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_search.scssc +0 -0
  153. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_spinner.scssc +0 -0
  154. data/test/dummy/tmp/cache/assets/development/sass/524eaf90d4782546823a37b80882f8b66bf73010/_variables.scssc +0 -0
  155. data/test/dummy/tmp/cache/assets/development/sass/6e589d45ad6dae7b9687fd7eac1156e517932854/_bootstrap-sprockets.scssc +0 -0
  156. data/test/dummy/tmp/cache/assets/development/sass/6e589d45ad6dae7b9687fd7eac1156e517932854/bootstrap.scssc +0 -0
  157. data/test/dummy/tmp/cache/assets/development/sass/dc1017bdbb6af49581dc35eda2911a13c557c111/umlaut.css.scssc +0 -0
  158. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_alerts.scssc +0 -0
  159. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_background-variant.scssc +0 -0
  160. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_border-radius.scssc +0 -0
  161. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_buttons.scssc +0 -0
  162. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_center-block.scssc +0 -0
  163. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_clearfix.scssc +0 -0
  164. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_forms.scssc +0 -0
  165. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_gradients.scssc +0 -0
  166. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_grid-framework.scssc +0 -0
  167. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_grid.scssc +0 -0
  168. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_hide-text.scssc +0 -0
  169. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_image.scssc +0 -0
  170. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_labels.scssc +0 -0
  171. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_list-group.scssc +0 -0
  172. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_nav-divider.scssc +0 -0
  173. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_nav-vertical-align.scssc +0 -0
  174. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_opacity.scssc +0 -0
  175. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_pagination.scssc +0 -0
  176. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_panels.scssc +0 -0
  177. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_progress-bar.scssc +0 -0
  178. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_reset-filter.scssc +0 -0
  179. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_resize.scssc +0 -0
  180. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_responsive-visibility.scssc +0 -0
  181. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_size.scssc +0 -0
  182. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_tab-focus.scssc +0 -0
  183. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_table-row.scssc +0 -0
  184. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_text-emphasis.scssc +0 -0
  185. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_text-overflow.scssc +0 -0
  186. data/test/dummy/tmp/cache/assets/development/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_vendor-prefixes.scssc +0 -0
  187. data/test/dummy/tmp/cache/assets/development/sprockets/00fe8b9f2a1f7a1c312f627c379f5a50 +0 -0
  188. data/test/dummy/tmp/cache/assets/{DCB/620/sprockets%2F2332a294ceeab3ab9b5ee643989dc0eb → development/sprockets/04757b33bf029a112819cf86c6e899db} +0 -0
  189. data/test/dummy/tmp/cache/assets/development/sprockets/0bdc06801d1626641264f7c81f0bb383 +0 -0
  190. data/test/dummy/tmp/cache/assets/development/sprockets/1365f0b692ced0628311ee4566e1b707 +0 -0
  191. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  192. data/test/dummy/tmp/cache/assets/{C99/040/sprockets%2F84d95490d4855608b8dd8602192f4f9c → development/sprockets/19f5d7a61a156ff3b78882b11cc679dc} +0 -0
  193. data/test/dummy/tmp/cache/assets/development/sprockets/1b2d587ae29ea4eaabb3bab0f022f3d3 +0 -0
  194. data/test/dummy/tmp/cache/assets/development/sprockets/1d9ea1c7ecfa0067960ac916ce4b65ca +0 -0
  195. data/test/dummy/tmp/cache/assets/development/sprockets/1e127abfd1414d0de67e3d78570c8195 +0 -0
  196. data/test/dummy/tmp/cache/assets/development/sprockets/22a2e14590ab60250be8e55802e0416b +0 -0
  197. data/test/dummy/tmp/cache/assets/{D72/1E0/sprockets%2Fdee77a9fb00d0a6229fd6b54a8f14197 → development/sprockets/29512f3dcf5161d055eb24ebcaaf8613} +0 -0
  198. data/test/dummy/tmp/cache/assets/development/sprockets/2b31649bad46580f69b4c7283d75d7da +0 -0
  199. data/test/dummy/tmp/cache/assets/development/sprockets/2b6799917cb806635bb25ceb87199288 +0 -0
  200. data/test/dummy/tmp/cache/assets/development/sprockets/2dcbebcad08aa99d46c19c8dceebc0e8 +0 -0
  201. data/test/dummy/tmp/cache/assets/{DD1/120/sprockets%2Fbee5967b8282dab9fce5c242bcc14c55 → development/sprockets/2e10962ed25d5e106895b21500eed819} +0 -0
  202. data/test/dummy/tmp/cache/assets/development/sprockets/2e7a2009e7fa93a461d747b153241335 +0 -0
  203. data/test/dummy/tmp/cache/assets/development/sprockets/2edf520c0d6a5e6fe31a96ff6249deb3 +0 -0
  204. data/test/dummy/tmp/cache/assets/{DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 → development/sprockets/2f5173deea6c795b8fdde723bb4b63af} +0 -0
  205. data/test/dummy/tmp/cache/assets/development/sprockets/33effed14152fbf68a290dc9bfdacc49 +0 -0
  206. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  207. data/test/dummy/tmp/cache/assets/development/sprockets/362ddf5dec149d8860307be28f1b6aba +0 -0
  208. data/test/dummy/tmp/cache/assets/development/sprockets/3bb0e2c4964797a92ce18c9265d7c35d +0 -0
  209. data/test/dummy/tmp/cache/assets/development/sprockets/3de79b672a2a13cc1a0ecdb4f14087b6 +0 -0
  210. data/test/dummy/tmp/cache/assets/development/sprockets/4059619b2636e7c20d35170dfe625a63 +0 -0
  211. data/test/dummy/tmp/cache/assets/development/sprockets/43cc6f487d302bad3c176fb117bc8790 +0 -0
  212. data/test/dummy/tmp/cache/assets/development/sprockets/4c4d82da23f69029b0c8346855f2effe +0 -0
  213. data/test/dummy/tmp/cache/assets/development/sprockets/4e00e47769496546d5560ba11077191e +0 -0
  214. data/test/dummy/tmp/cache/assets/development/sprockets/4ed3382d5f8738e189d0fb787a29e487 +0 -0
  215. data/test/dummy/tmp/cache/assets/development/sprockets/50e6046f30d33ebf382887de6500721f +0 -0
  216. data/test/dummy/tmp/cache/assets/development/sprockets/5488b82c680f30f6fd6e237c86e7887a +0 -0
  217. data/test/dummy/tmp/cache/assets/{C9D/060/sprockets%2F5c8956a1666824a1d214531abd22e2a2 → development/sprockets/56381d00a030c7822e9a88c9ddae434f} +0 -0
  218. data/test/dummy/tmp/cache/assets/{D17/BC0/sprockets%2F1ae6578a93a7a3d848319dea314f592d → development/sprockets/5bdde916a6e5824d9c695657aaada893} +0 -0
  219. data/test/dummy/tmp/cache/assets/development/sprockets/5d7a36094a81c5e13f8603581fdcd0a0 +0 -0
  220. data/test/dummy/tmp/cache/assets/development/sprockets/62df0d3ba0011b6ebf283e9e4fd33a59 +0 -0
  221. data/test/dummy/tmp/cache/assets/development/sprockets/685077a71b34728322a6a3df7a818f16 +0 -0
  222. data/test/dummy/tmp/cache/assets/development/sprockets/74007643206dfef480fe67a4ee6a5af9 +0 -0
  223. data/test/dummy/tmp/cache/assets/development/sprockets/747ce3a1a163cd0edc663342abb508c8 +0 -0
  224. data/test/dummy/tmp/cache/assets/development/sprockets/7752e1fdfeb11e34353bb24822e8eddc +0 -0
  225. data/test/dummy/tmp/cache/assets/development/sprockets/7ab84c0db002136373ac7278f78e4d69 +0 -0
  226. data/test/dummy/tmp/cache/assets/{D65/820/sprockets%2Fae5318865ebb4a2b74e84c0e13fb921a → development/sprockets/80f1a2af00dac454055d31d97fa9ea16} +0 -0
  227. data/test/dummy/tmp/cache/assets/development/sprockets/827f39ace148dd5b450c5b5c4f7b7407 +0 -0
  228. data/test/dummy/tmp/cache/assets/{DEF/A60/sprockets%2F3fddcee3e5dbd24f28de1001e5f3a009 → development/sprockets/84bda1ce77f140dbe330abbb9654a389} +0 -0
  229. data/test/dummy/tmp/cache/assets/development/sprockets/91cf221e4f31c9b0e394d61e76e383a6 +0 -0
  230. data/test/dummy/tmp/cache/assets/development/sprockets/91fc9ce33c0477ac8e5c38f43ace64f3 +0 -0
  231. data/test/dummy/tmp/cache/assets/development/sprockets/984eb5d6325666ea28ac61b8f00bbf96 +0 -0
  232. data/test/dummy/tmp/cache/assets/development/sprockets/a5ca1b208ac1648c9233a4f82231cc9d +0 -0
  233. data/test/dummy/tmp/cache/assets/development/sprockets/b0644dc48561692b74e67cfa49f1fccc +0 -0
  234. data/test/dummy/tmp/cache/assets/development/sprockets/b45832a1ef97f445005b6a5ed08ad4e1 +0 -0
  235. data/test/dummy/tmp/cache/assets/development/sprockets/b57b9a3152cba1d2ce51c8890cd2c069 +0 -0
  236. data/test/dummy/tmp/cache/assets/development/sprockets/bf432dfd03a3577b6fecab95f67d3e10 +0 -0
  237. data/test/dummy/tmp/cache/assets/development/sprockets/c10ba9d7ca59eade850d472f4620e679 +0 -0
  238. data/test/dummy/tmp/cache/assets/development/sprockets/c127c56dd327b8471950e4e4eb774d58 +0 -0
  239. data/test/dummy/tmp/cache/assets/development/sprockets/c4883e8efaaa0dd40101433793d62dd0 +0 -0
  240. data/test/dummy/tmp/cache/assets/development/sprockets/ccb8dacf69b5ea6e8638d5659f87e93b +0 -0
  241. data/test/dummy/tmp/cache/assets/{E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af → development/sprockets/cffd775d018f68ce5dba1ee0d951a994} +0 -0
  242. data/test/dummy/tmp/cache/assets/development/sprockets/d06b36a24841048e094f62c017a0e23c +0 -0
  243. data/test/dummy/tmp/cache/assets/development/sprockets/d40077dd950a280248a90c9cd9bf1171 +0 -0
  244. data/test/dummy/tmp/cache/assets/development/sprockets/d49649ea0360b8433251241f77ab88c1 +0 -0
  245. data/test/dummy/tmp/cache/assets/development/sprockets/d6a0c8ca3c8a8f1bde4550db740138b8 +0 -0
  246. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  247. data/test/dummy/tmp/cache/assets/development/sprockets/d81f215f779ce2609d4dfa76b02df41c +0 -0
  248. data/test/dummy/tmp/cache/assets/development/sprockets/de3f87130aaf9847386d1f5e5c9893f1 +0 -0
  249. data/test/dummy/tmp/cache/assets/development/sprockets/dea953187fcf46b6d47f7653acc099c6 +0 -0
  250. data/test/dummy/tmp/cache/assets/development/sprockets/e1bf78affc4ede54eac4249af8f16e82 +0 -0
  251. data/test/dummy/tmp/cache/assets/development/sprockets/eaff4713f011dd8b1946264e8f120fb6 +0 -0
  252. data/test/dummy/tmp/cache/assets/development/sprockets/ef4a528b7df4e9417e42bc5aaf40ef9b +0 -0
  253. data/test/dummy/tmp/cache/assets/development/sprockets/f6be26089ea600503193ac4a8119a33b +0 -0
  254. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  255. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_alerts.scssc +0 -0
  256. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_badges.scssc +0 -0
  257. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_breadcrumbs.scssc +0 -0
  258. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_button-groups.scssc +0 -0
  259. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_buttons.scssc +0 -0
  260. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_carousel.scssc +0 -0
  261. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_close.scssc +0 -0
  262. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_code.scssc +0 -0
  263. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_component-animations.scssc +0 -0
  264. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_dropdowns.scssc +0 -0
  265. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_forms.scssc +0 -0
  266. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_glyphicons.scssc +0 -0
  267. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_grid.scssc +0 -0
  268. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_input-groups.scssc +0 -0
  269. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_jumbotron.scssc +0 -0
  270. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_labels.scssc +0 -0
  271. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_list-group.scssc +0 -0
  272. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_media.scssc +0 -0
  273. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_mixins.scssc +0 -0
  274. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_modals.scssc +0 -0
  275. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_navbar.scssc +0 -0
  276. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_navs.scssc +0 -0
  277. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_normalize.scssc +0 -0
  278. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_pager.scssc +0 -0
  279. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_pagination.scssc +0 -0
  280. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_panels.scssc +0 -0
  281. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_popovers.scssc +0 -0
  282. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_print.scssc +0 -0
  283. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_progress-bars.scssc +0 -0
  284. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_responsive-embed.scssc +0 -0
  285. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_responsive-utilities.scssc +0 -0
  286. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_scaffolding.scssc +0 -0
  287. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_tables.scssc +0 -0
  288. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_thumbnails.scssc +0 -0
  289. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_tooltip.scssc +0 -0
  290. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_type.scssc +0 -0
  291. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_utilities.scssc +0 -0
  292. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_variables.scssc +0 -0
  293. data/test/dummy/tmp/cache/assets/test/sass/05e2dc436ff96d50f418a3e756bafafe98e914ae/_wells.scssc +0 -0
  294. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_alerts.scssc +0 -0
  295. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_badges.scssc +0 -0
  296. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_breadcrumbs.scssc +0 -0
  297. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_button-groups.scssc +0 -0
  298. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_buttons.scssc +0 -0
  299. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_carousel.scssc +0 -0
  300. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_close.scssc +0 -0
  301. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_code.scssc +0 -0
  302. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_component-animations.scssc +0 -0
  303. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_dropdowns.scssc +0 -0
  304. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_forms.scssc +0 -0
  305. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_glyphicons.scssc +0 -0
  306. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_grid.scssc +0 -0
  307. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_input-groups.scssc +0 -0
  308. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_jumbotron.scssc +0 -0
  309. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_labels.scssc +0 -0
  310. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_list-group.scssc +0 -0
  311. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_media.scssc +0 -0
  312. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_mixins.scssc +0 -0
  313. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_modals.scssc +0 -0
  314. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_navbar.scssc +0 -0
  315. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_navs.scssc +0 -0
  316. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_normalize.scssc +0 -0
  317. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_pager.scssc +0 -0
  318. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_pagination.scssc +0 -0
  319. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_panels.scssc +0 -0
  320. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_popovers.scssc +0 -0
  321. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_print.scssc +0 -0
  322. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_progress-bars.scssc +0 -0
  323. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_responsive-embed.scssc +0 -0
  324. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_responsive-utilities.scssc +0 -0
  325. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_scaffolding.scssc +0 -0
  326. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_tables.scssc +0 -0
  327. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_thumbnails.scssc +0 -0
  328. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_tooltip.scssc +0 -0
  329. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_type.scssc +0 -0
  330. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_utilities.scssc +0 -0
  331. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_variables.scssc +0 -0
  332. data/test/dummy/tmp/cache/assets/test/sass/17fd8969872067ebc37af75de84fcc03527156bc/_wells.scssc +0 -0
  333. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_admin.scssc +0 -0
  334. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_az.scssc +0 -0
  335. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_forms.scssc +0 -0
  336. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_icons.scssc +0 -0
  337. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_layout.scssc +0 -0
  338. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_misc.scssc +0 -0
  339. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_mixins.scssc +0 -0
  340. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_modal.scssc +0 -0
  341. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_resolve.scssc +0 -0
  342. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_results.scssc +0 -0
  343. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_search.scssc +0 -0
  344. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_spinner.scssc +0 -0
  345. data/test/dummy/tmp/cache/assets/test/sass/524eaf90d4782546823a37b80882f8b66bf73010/_variables.scssc +0 -0
  346. data/test/dummy/tmp/cache/assets/test/sass/6e589d45ad6dae7b9687fd7eac1156e517932854/_bootstrap-sprockets.scssc +0 -0
  347. data/test/dummy/tmp/cache/assets/test/sass/6e589d45ad6dae7b9687fd7eac1156e517932854/bootstrap.scssc +0 -0
  348. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_alerts.scssc +0 -0
  349. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_background-variant.scssc +0 -0
  350. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_border-radius.scssc +0 -0
  351. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_buttons.scssc +0 -0
  352. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_center-block.scssc +0 -0
  353. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_clearfix.scssc +0 -0
  354. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_forms.scssc +0 -0
  355. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_gradients.scssc +0 -0
  356. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_grid-framework.scssc +0 -0
  357. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_grid.scssc +0 -0
  358. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_hide-text.scssc +0 -0
  359. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_image.scssc +0 -0
  360. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_labels.scssc +0 -0
  361. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_list-group.scssc +0 -0
  362. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_nav-divider.scssc +0 -0
  363. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_nav-vertical-align.scssc +0 -0
  364. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_opacity.scssc +0 -0
  365. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_pagination.scssc +0 -0
  366. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_panels.scssc +0 -0
  367. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_progress-bar.scssc +0 -0
  368. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_reset-filter.scssc +0 -0
  369. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_resize.scssc +0 -0
  370. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_responsive-visibility.scssc +0 -0
  371. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_size.scssc +0 -0
  372. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_tab-focus.scssc +0 -0
  373. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_table-row.scssc +0 -0
  374. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_text-emphasis.scssc +0 -0
  375. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_text-overflow.scssc +0 -0
  376. data/test/dummy/tmp/cache/assets/test/sass/881c1ba03280ae14123609245e8314b2ba917406/_vendor-prefixes.scssc +0 -0
  377. data/test/dummy/tmp/cache/assets/test/sass/d66be29359c981abd965733fad9a31a018759486/_bootstrap-sprockets.scssc +0 -0
  378. data/test/dummy/tmp/cache/assets/test/sass/d66be29359c981abd965733fad9a31a018759486/_bootstrap.scssc +0 -0
  379. data/test/dummy/tmp/cache/assets/test/sass/dc1017bdbb6af49581dc35eda2911a13c557c111/umlaut.css.scssc +0 -0
  380. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_alerts.scssc +0 -0
  381. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_background-variant.scssc +0 -0
  382. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_border-radius.scssc +0 -0
  383. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_buttons.scssc +0 -0
  384. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_center-block.scssc +0 -0
  385. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_clearfix.scssc +0 -0
  386. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_forms.scssc +0 -0
  387. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_gradients.scssc +0 -0
  388. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_grid-framework.scssc +0 -0
  389. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_grid.scssc +0 -0
  390. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_hide-text.scssc +0 -0
  391. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_image.scssc +0 -0
  392. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_labels.scssc +0 -0
  393. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_list-group.scssc +0 -0
  394. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_nav-divider.scssc +0 -0
  395. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_nav-vertical-align.scssc +0 -0
  396. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_opacity.scssc +0 -0
  397. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_pagination.scssc +0 -0
  398. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_panels.scssc +0 -0
  399. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_progress-bar.scssc +0 -0
  400. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_reset-filter.scssc +0 -0
  401. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_resize.scssc +0 -0
  402. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_responsive-visibility.scssc +0 -0
  403. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_size.scssc +0 -0
  404. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_tab-focus.scssc +0 -0
  405. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_table-row.scssc +0 -0
  406. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_text-emphasis.scssc +0 -0
  407. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_text-overflow.scssc +0 -0
  408. data/test/dummy/tmp/cache/assets/test/sass/f8ee09d7b9a6023c8ba1b1569df57c6a072dd36e/_vendor-prefixes.scssc +0 -0
  409. data/test/dummy/tmp/cache/assets/test/sprockets/00fe8b9f2a1f7a1c312f627c379f5a50 +0 -0
  410. data/test/dummy/tmp/cache/assets/test/sprockets/04757b33bf029a112819cf86c6e899db +0 -0
  411. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  412. data/test/dummy/tmp/cache/assets/test/sprockets/1a72ab0727d6b1c53a2425bce68ccd29 +0 -0
  413. data/test/dummy/tmp/cache/assets/{D02/B30/sprockets%2Fb9332ebd1d306cc9120a386ca986034d → test/sprockets/1b2d587ae29ea4eaabb3bab0f022f3d3} +0 -0
  414. data/test/dummy/tmp/cache/assets/test/sprockets/1d9ea1c7ecfa0067960ac916ce4b65ca +0 -0
  415. data/test/dummy/tmp/cache/assets/{D65/0D0/sprockets%2F9fd0b369f009be410bdb0b6e5458b3a6 → test/sprockets/1e127abfd1414d0de67e3d78570c8195} +0 -0
  416. data/test/dummy/tmp/cache/assets/test/sprockets/204c5ef815c91ad1dba36952ada84453 +0 -0
  417. data/test/dummy/tmp/cache/assets/test/sprockets/29512f3dcf5161d055eb24ebcaaf8613 +0 -0
  418. data/test/dummy/tmp/cache/assets/test/sprockets/2b31649bad46580f69b4c7283d75d7da +0 -0
  419. data/test/dummy/tmp/cache/assets/test/sprockets/2b6799917cb806635bb25ceb87199288 +0 -0
  420. data/test/dummy/tmp/cache/assets/test/sprockets/2dcbebcad08aa99d46c19c8dceebc0e8 +0 -0
  421. data/test/dummy/tmp/cache/assets/test/sprockets/2e10962ed25d5e106895b21500eed819 +0 -0
  422. data/test/dummy/tmp/cache/assets/test/sprockets/2e7a2009e7fa93a461d747b153241335 +0 -0
  423. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  424. data/test/dummy/tmp/cache/assets/test/sprockets/300b3cf1812a5e2ba89266b8198caf8c +0 -0
  425. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  426. data/test/dummy/tmp/cache/assets/test/sprockets/3bb0e2c4964797a92ce18c9265d7c35d +0 -0
  427. data/test/dummy/tmp/cache/assets/test/sprockets/3de79b672a2a13cc1a0ecdb4f14087b6 +0 -0
  428. data/test/dummy/tmp/cache/assets/test/sprockets/4059619b2636e7c20d35170dfe625a63 +0 -0
  429. data/test/dummy/tmp/cache/assets/test/sprockets/42d8221eac1dc91b1c055df56147f009 +0 -0
  430. data/test/dummy/tmp/cache/assets/test/sprockets/43bdfbe7d60eec9cab5eda9af30fae29 +0 -0
  431. data/test/dummy/tmp/cache/assets/test/sprockets/43cc6f487d302bad3c176fb117bc8790 +0 -0
  432. data/test/dummy/tmp/cache/assets/test/sprockets/4403ea9870ef12ff2940eb16ee72aefd +0 -0
  433. data/test/dummy/tmp/cache/assets/test/sprockets/4c4d82da23f69029b0c8346855f2effe +0 -0
  434. data/test/dummy/tmp/cache/assets/test/sprockets/4e00e47769496546d5560ba11077191e +0 -0
  435. data/test/dummy/tmp/cache/assets/{DAB/C70/sprockets%2Ff8ac0db14f84bce083a7c58f965e806f → test/sprockets/4ed3382d5f8738e189d0fb787a29e487} +0 -0
  436. data/test/dummy/tmp/cache/assets/test/sprockets/50e6046f30d33ebf382887de6500721f +0 -0
  437. data/test/dummy/tmp/cache/assets/test/sprockets/5488b82c680f30f6fd6e237c86e7887a +0 -0
  438. data/test/dummy/tmp/cache/assets/test/sprockets/58901a70c4225a06a7b7402515a9b987 +0 -0
  439. data/test/dummy/tmp/cache/assets/test/sprockets/5bdde916a6e5824d9c695657aaada893 +0 -0
  440. data/test/dummy/tmp/cache/assets/test/sprockets/5d7a36094a81c5e13f8603581fdcd0a0 +0 -0
  441. data/test/dummy/tmp/cache/assets/test/sprockets/62df0d3ba0011b6ebf283e9e4fd33a59 +0 -0
  442. data/test/dummy/tmp/cache/assets/test/sprockets/641d193a017d5c7220a38ee54b714fa3 +0 -0
  443. data/test/dummy/tmp/cache/assets/test/sprockets/65c94ad4022a7bb639254a1716375313 +0 -0
  444. data/test/dummy/tmp/cache/assets/test/sprockets/661a6079c9ca1cbcf6215e9113867d30 +0 -0
  445. data/test/dummy/tmp/cache/assets/test/sprockets/685077a71b34728322a6a3df7a818f16 +0 -0
  446. data/test/dummy/tmp/cache/assets/test/sprockets/74007643206dfef480fe67a4ee6a5af9 +0 -0
  447. data/test/dummy/tmp/cache/assets/test/sprockets/747ce3a1a163cd0edc663342abb508c8 +0 -0
  448. data/test/dummy/tmp/cache/assets/{D47/690/sprockets%2Fd92186d33469ff2bd01ba096f33dfd78 → test/sprockets/7752e1fdfeb11e34353bb24822e8eddc} +0 -0
  449. data/test/dummy/tmp/cache/assets/test/sprockets/7ab84c0db002136373ac7278f78e4d69 +0 -0
  450. data/test/dummy/tmp/cache/assets/test/sprockets/80f1a2af00dac454055d31d97fa9ea16 +0 -0
  451. data/test/dummy/tmp/cache/assets/test/sprockets/84bda1ce77f140dbe330abbb9654a389 +0 -0
  452. data/test/dummy/tmp/cache/assets/test/sprockets/91cf221e4f31c9b0e394d61e76e383a6 +0 -0
  453. data/test/dummy/tmp/cache/assets/test/sprockets/91fc9ce33c0477ac8e5c38f43ace64f3 +0 -0
  454. data/test/dummy/tmp/cache/assets/test/sprockets/9424bf97ebe97817bf589d5409eb1b49 +0 -0
  455. data/test/dummy/tmp/cache/assets/test/sprockets/97197c94037eb886f290e1db6db71839 +0 -0
  456. data/test/dummy/tmp/cache/assets/test/sprockets/984eb5d6325666ea28ac61b8f00bbf96 +0 -0
  457. data/test/dummy/tmp/cache/assets/test/sprockets/9e9540a6ef6178fdc44134b8170b9104 +0 -0
  458. data/test/dummy/tmp/cache/assets/test/sprockets/a4605dfa1ec12c0c0a5fa6149836e146 +0 -0
  459. data/test/dummy/tmp/cache/assets/test/sprockets/a5ca1b208ac1648c9233a4f82231cc9d +0 -0
  460. data/test/dummy/tmp/cache/assets/test/sprockets/a8ae1c833918295d04a2921439ec6dda +0 -0
  461. data/test/dummy/tmp/cache/assets/test/sprockets/b0644dc48561692b74e67cfa49f1fccc +0 -0
  462. data/test/dummy/tmp/cache/assets/test/sprockets/b45832a1ef97f445005b6a5ed08ad4e1 +0 -0
  463. data/test/dummy/tmp/cache/assets/test/sprockets/b530e8eed86f8a06c34ebfba012ced9f +0 -0
  464. data/test/dummy/tmp/cache/assets/test/sprockets/bbff1f14224b48e4d838bcfb3ed8a610 +0 -0
  465. data/test/dummy/tmp/cache/assets/test/sprockets/c10ba9d7ca59eade850d472f4620e679 +0 -0
  466. data/test/dummy/tmp/cache/assets/test/sprockets/c127c56dd327b8471950e4e4eb774d58 +0 -0
  467. data/test/dummy/tmp/cache/assets/test/sprockets/c4883e8efaaa0dd40101433793d62dd0 +0 -0
  468. data/test/dummy/tmp/cache/assets/test/sprockets/c696c2db7d8317ca35a7243d8bd4f3b2 +0 -0
  469. data/test/dummy/tmp/cache/assets/test/sprockets/ccb8dacf69b5ea6e8638d5659f87e93b +0 -0
  470. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  471. data/test/dummy/tmp/cache/assets/test/sprockets/d40077dd950a280248a90c9cd9bf1171 +0 -0
  472. data/test/dummy/tmp/cache/assets/test/sprockets/d49649ea0360b8433251241f77ab88c1 +0 -0
  473. data/test/dummy/tmp/cache/assets/test/sprockets/d6a0c8ca3c8a8f1bde4550db740138b8 +0 -0
  474. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  475. data/test/dummy/tmp/cache/assets/test/sprockets/db71108aa3843a309c5247dd6481dd12 +0 -0
  476. data/test/dummy/tmp/cache/assets/test/sprockets/dd484b056ce971aa93a7b69c6ec28fb3 +0 -0
  477. data/test/dummy/tmp/cache/assets/test/sprockets/de3f87130aaf9847386d1f5e5c9893f1 +0 -0
  478. data/test/dummy/tmp/cache/assets/test/sprockets/dea953187fcf46b6d47f7653acc099c6 +0 -0
  479. data/test/dummy/tmp/cache/assets/test/sprockets/df2a44cb5db91d63eb01e3d4a1673b75 +0 -0
  480. data/test/dummy/tmp/cache/assets/test/sprockets/e1bf78affc4ede54eac4249af8f16e82 +0 -0
  481. data/test/dummy/tmp/cache/assets/test/sprockets/e776d52f6ae606355fa1070b2eb7825b +0 -0
  482. data/test/dummy/tmp/cache/assets/test/sprockets/eaff4713f011dd8b1946264e8f120fb6 +0 -0
  483. data/test/dummy/tmp/cache/assets/test/sprockets/f6be26089ea600503193ac4a8119a33b +0 -0
  484. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  485. data/test/functional/feedback_controller_test.rb +1 -1
  486. data/test/functional/resolve_controller_test-NOFIXTURES.rb +227 -0
  487. data/test/functional/resolve_controller_test.rb +155 -14
  488. data/test/functional/search_controller_test.rb +1 -1
  489. data/test/helper/list_with_limit_test.rb +11 -0
  490. data/test/test_helper.rb +63 -26
  491. data/test/unit/active_record_connection_pool_test.rb +43 -25
  492. data/test/unit/aws_product_sign_test.rb +3 -3
  493. data/test/unit/collection_test.rb +39 -3
  494. data/test/unit/determine_services_test.rb +11 -11
  495. data/test/unit/dispatched_service_test.rb +16 -0
  496. data/test/unit/dissertation_catch_test.rb +1 -2
  497. data/test/unit/google_book_search_test.rb +6 -8
  498. data/test/unit/internet_archive_test.rb +6 -5
  499. data/test/unit/permalink_test.rb +4 -2
  500. data/test/unit/referent_test.rb +60 -0
  501. data/test/unit/referent_to_citation_test.rb +29 -2
  502. data/test/unit/request_test.rb +48 -0
  503. data/test/unit/service_response_test.rb +63 -4
  504. data/test/unit/service_test.rb +35 -5
  505. data/test/unit/service_type_value_test.rb +25 -0
  506. data/test/unit/sfx4_search_test.rb +1 -1
  507. data/test/unit/sfx_test.rb +4 -2
  508. data/test/unit/worldcat_test.rb +1 -3
  509. data/test/vcr_cassettes/collection/live_dispatch.yml +311 -0
  510. data/test/vcr_cassettes/sfx/nytimes_by_issn.yml +1 -1
  511. metadata +831 -145
  512. data/app/controllers/search_methods/sfx4_solr/README.md +0 -57
  513. data/app/controllers/search_methods/sfx4_solr/local.rb +0 -40
  514. data/app/controllers/search_methods/sfx4_solr/searcher.rb +0 -118
  515. data/app/models/sfx4/global/base.rb +0 -24
  516. data/app/models/sfx4/global/kb_objects.rb +0 -34
  517. data/app/views/search/opensearch_description.rxml +0 -10
  518. data/lib/service_adaptors/README.md +0 -0
  519. data/test/dummy/db/migrate/20120927163304_sfx4_global.rb +0 -26
  520. data/test/dummy/tmp/cache/assets/BFF/760/sprockets%2Fe00969069e468419c393709f042b4527 +0 -0
  521. data/test/dummy/tmp/cache/assets/CC7/D80/sprockets%2F62a4c21a1d5bac4064e25082f523f238 +0 -0
  522. data/test/dummy/tmp/cache/assets/CC8/C70/sprockets%2F397590f867a06c2d0595c75ed4269e9b +0 -0
  523. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  524. data/test/dummy/tmp/cache/assets/CE3/1F0/sprockets%2F9a3b0380fe964d77f0013845d3d355fd +0 -0
  525. data/test/dummy/tmp/cache/assets/CE7/FA0/sprockets%2F98df08987c1b5c0f643a21538a7182ec +0 -0
  526. data/test/dummy/tmp/cache/assets/CEA/930/sprockets%2F42ebf67295336dfb5725a8bb12881a98 +0 -0
  527. data/test/dummy/tmp/cache/assets/D15/FC0/sprockets%2F8cbf3a8b7acb7fc27a42168846226385 +0 -0
  528. data/test/dummy/tmp/cache/assets/D2D/240/sprockets%2F6610ec2488ff4a57d54efb798f1a9994 +0 -0
  529. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  530. data/test/dummy/tmp/cache/assets/D33/2C0/sprockets%2F790e9527eead8b020b92b34dc6a600d2 +0 -0
  531. data/test/dummy/tmp/cache/assets/D38/930/sprockets%2F45cee52fe11df0057793a6751aa65a4c +0 -0
  532. data/test/dummy/tmp/cache/assets/D39/B30/sprockets%2Fcb7b9f6963b829c678ff9267c63577ce +0 -0
  533. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  534. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  535. data/test/dummy/tmp/cache/assets/D5F/690/sprockets%2Febe18c52ead548a955a1f2be191130b3 +0 -0
  536. data/test/dummy/tmp/cache/assets/D6A/A80/sprockets%2F22d5d4e74a9a3f3deb5a92704ae750f3 +0 -0
  537. data/test/dummy/tmp/cache/assets/D6B/020/sprockets%2Ffba640f8143fc0c24e3e6616e2eb93a9 +0 -0
  538. data/test/dummy/tmp/cache/assets/D6B/8C0/sprockets%2Fa0dc07225af433e77fd6a9028a8e3c6e +0 -0
  539. data/test/dummy/tmp/cache/assets/D98/990/sprockets%2F710ede3e7f5ebab14e9772fa88c00c02 +0 -0
  540. data/test/dummy/tmp/cache/assets/DAD/BA0/sprockets%2F193f81f7e4eae26eaaa7d909c0c8e956 +0 -0
  541. data/test/dummy/tmp/cache/assets/DD6/010/sprockets%2F15a8fcbaccc97804fce2ee514e371f79 +0 -0
  542. data/test/dummy/tmp/cache/assets/E2E/350/sprockets%2Fbea81b7c4fdf19664eff44b21ea53dbe +0 -0
  543. data/test/dummy/tmp/cache/assets/EF1/680/sprockets%2Fed8ede7dea4bd22aacb9584fbe7d6cad +0 -0
  544. data/test/fixtures/sfx4/global/KB_OBJECTS.yml +0 -46
  545. data/test/integration/request_test.rb +0 -25
  546. data/test/performance/browsing_test.rb +0 -9
  547. data/test/unit/sfx4_solr_search_test.rb +0 -81
  548. data/test/vcr_cassettes/resolve/fulltext_with_edition_warning.yml +0 -44
  549. data/test/vcr_cassettes/resolve/manually_entered.yml +0 -84
  550. data/test/vcr_cassettes/resolve/no_holdings.yml +0 -649
  551. data/test/vcr_cassettes/resolve/nytimes_by_issn.yml +0 -224
  552. data/test/vcr_cassettes/sfx4_solr/find_by_group.yml +0 -125
  553. data/test/vcr_cassettes/sfx4_solr/find_by_title_begins_with.yml +0 -71
  554. data/test/vcr_cassettes/sfx4_solr/find_by_title_contains.yml +0 -72
  555. data/test/vcr_cassettes/sfx4_solr/find_by_title_exact.yml +0 -36
@@ -1,8 +1,6 @@
1
1
  module Sfx4
2
2
  module Local
3
3
  class Base < ActiveRecord::Base
4
- attr_accessible
5
-
6
4
  # Was a SFX DB connection set in database.yml to connect directly to sfx?
7
5
  def self.connection_configured?
8
6
  config = ActiveRecord::Base.configurations["sfx_db"]
@@ -14,7 +14,7 @@ class SfxUrl < ActiveRecord::Base
14
14
  ActiveRecord::Base.connection_pool.with_connection do
15
15
  # Does it match any of our supplementary configged strings or regexps?
16
16
  UmlautController.umlaut_config.lookup!("sfx.additional_sfx_controlled_urls", []).each do |test|
17
- '===' # will match a regexp or equality on a string
17
+ # '===' will match a regexp or equality on a string
18
18
  return true if test === url
19
19
  end
20
20
 
@@ -29,7 +29,7 @@ class SfxUrl < ActiveRecord::Base
29
29
  # If URI was malformed, just punt and say no.
30
30
  return false unless host
31
31
 
32
- return SfxUrl.find(:all, :conditions => ["url = ?", host]).length > 0
32
+ return SfxUrl.where(:url => host).count > 0
33
33
  end
34
34
  end
35
35
  end
@@ -63,6 +63,8 @@
63
63
  # ServiceTypeValue["fulltext"]
64
64
  #
65
65
  # * The section will be displayed with stock heading block including a title
66
+ # from Rails i18n under key `umlaut.display_sections.#{section_id}.title`,
67
+ # or if not there then
66
68
  # constructed from the display_name of ServiceTypeValue["fulltext"], or
67
69
  # in general the display_name of the first ServiceTypeValue included
68
70
  # in this section.
@@ -102,10 +104,17 @@
102
104
  #
103
105
  # === Customizing heading display
104
106
  #
105
- # You can supply a title for the section that's different than what would
107
+ # Using Rails i18n, you can supply a title for the section that's different than what would
106
108
  # be guessed from it's ServiceTypeValues. You can also supply a prompt.
107
109
  #
108
- # {:div_id =>"excerpts", :section_title=>"Lots of good stuff", :section_prompt => "Limited previes and excerpts."}
110
+ # {:div_id =>"excerpts"}
111
+ #
112
+ # In your config/locales/en.yml (or other language):
113
+ # umlaut:
114
+ # display_sections:
115
+ # excerpts:
116
+ # title: "Really great Excerpts"
117
+ # prompt: "Click on them to see them, far out!"
109
118
  #
110
119
  # You can also suppress display of the stock section heading at all:
111
120
  # {:show_heading => false, ...}
@@ -120,8 +129,15 @@
120
129
  # {:show_spinner => false, ...}
121
130
  #
122
131
  # By default, the spinner displays what type of thing it's waiting on, guessing
123
- # from the ServiceTypeValue configured. If you want to specify this item name:
124
- # {:item_name_plural => "Related Items", ...}
132
+ # from the ServiceTypeValue configured. If you want to specify this item name,
133
+ # use Rails i18n under the section_id in config/locales/en.yml, generally
134
+ # using a plural name:
135
+ #
136
+ # umlaut:
137
+ # display_sections:
138
+ # excerpts:
139
+ # load_more_item_name: "amazing excerpts"
140
+ #
125
141
  #
126
142
  # === Customizing visibility of section
127
143
  #
@@ -231,15 +247,12 @@ class SectionRenderer
231
247
  # generally as unique ID for the section.
232
248
  # * [service_type_values] ServiceTypeValue's that this section contains.
233
249
  # defaults to [ServiceTypeValue[div_id]]
234
- # * [section_title] Title for the section. Defaults to
250
+ # * [section_title] (DEPRECATED, use Rails i18n) Title for the section. Defaults to
235
251
  # service_type_values.first.display_name
236
252
  # * [section_prompt] Prompt. Default nil.
237
253
  # * [show_heading] Show the heading section at all. Default true.
238
254
  # * [show_spinner] Show a stock spinner for bg action for service_type_values.
239
255
  # default true.
240
- # * [item_name_plural] Pluralized name of the objects included, used in
241
- # spinner message. Default
242
- # service_type_values.first.display_name_pluralize
243
256
  # * [visibilty] What logic to use to decide whether to show the section at
244
257
  # all. true|false|:any_services|:in_progress|:responses_exist|:complete_with_responses|(lambda object)
245
258
  # * [list_visible_limit] Use list_with_limit to limit initially displayed
@@ -287,7 +300,7 @@ class SectionRenderer
287
300
  @responses = {}
288
301
  service_type_values.each do |st|
289
302
  @responses[st.name] = @umlaut_request.get_service_type(st)
290
- end
303
+ end
291
304
  end
292
305
  @responses
293
306
  end
@@ -323,11 +336,15 @@ class SectionRenderer
323
336
  # a spinner for this section. Called by section_display partial,
324
337
  # nobody else should need to call it.
325
338
  def spinner_render_hash
339
+ custom_item_name = I18n.t("load_more_item_name", :scope => "umlaut.display_sections.#{self.div_id}", :default => "")
340
+ custom_item_name = nil if custom_item_name.blank?
341
+
326
342
  { :partial => "background_progress",
327
343
  :locals =>{ :svc_types => service_type_values,
328
344
  :div_id => "progress_#{@section_id}",
329
345
  :current_set_empty => responses_empty?,
330
- :item_name => @options[:item_name_plural]}
346
+ :item_name => custom_item_name
347
+ }
331
348
  }
332
349
  end
333
350
 
@@ -397,7 +414,7 @@ class SectionRenderer
397
414
  # if they've completed without doing so?.
398
415
  def any_services?
399
416
  nil != @umlaut_request.dispatched_services.to_a.find do |ds|
400
- ! (service_type_values & ds.service.service_types_generated ).empty?
417
+ ! (service_type_values & ds.can_generate_service_types ).empty?
401
418
  end
402
419
  end
403
420
 
@@ -405,12 +422,49 @@ class SectionRenderer
405
422
  @options[:list_visible_limit]
406
423
  end
407
424
 
425
+ # Display title of the section can come from several places, in order
426
+ # of precedence:
427
+ # * 1. (DEPRECATED) :section_title key in config hash. Prefer i18n instead.
428
+ # * 2. Rails i18n, under key 'umlaut.display_sections.#{section_id}.title'
429
+ # * 3. If not given, as a default we use the display_name of the first ServiceTypeValue
430
+ # object included in this section's results.
431
+ # If still blank after all those lookups, then no section title. Set a section title
432
+ # to the empty string in i18n to force no section title.
408
433
  def section_title
409
- @options[:section_title]
434
+ section_title = nil
435
+
436
+ if @options.has_key? :section_title
437
+ # deprecation warning? Not sure the right way to do that.
438
+ section_title = @options[:section_title]
439
+ else
440
+ section_title = I18n.t("title", :scope => "umlaut.display_sections.#{self.div_id}",
441
+ :default => Proc.new {
442
+ # Look up from service_type name if possible as default
443
+ if (service_type_values.length > 0)
444
+ service_type_values.first.display_name_pluralize.titlecase
445
+ else
446
+ ""
447
+ end
448
+ })
449
+ end
450
+
451
+ section_title = nil if section_title.blank?
452
+ return section_title
410
453
  end
411
454
 
455
+ # Optional section prompt, from Rails i18n key `umlaut.display_sections.#{section_div_id}.prompt`
456
+ # Deprecated legacy, you can force with :section_prompt key in section config hash.
412
457
  def section_prompt
413
- @options[:section_prompt]
458
+ prompt = nil
459
+
460
+ if @options.has_key?(:section_prompt)
461
+ prompt = @options[:section_prompt]
462
+ else
463
+ prompt = I18n.t("prompt", :scope => "umlaut.display_sections.#{self.div_id}", :default => "")
464
+ end
465
+
466
+ prompt = nil if prompt.blank?
467
+ return prompt
414
468
  end
415
469
 
416
470
  # For a given resonse type section, returns a string that will change
@@ -450,15 +504,7 @@ class SectionRenderer
450
504
 
451
505
 
452
506
  # service type value default to same name as section_id
453
- @options[:service_type_values] ||= [@section_id]
454
-
455
-
456
- # Fill in calculatable-defaults
457
- if (service_type_values.length > 0)
458
- @options = {:section_title =>
459
- service_type_values.first.display_name
460
- }.merge(@options)
461
- end
507
+ @options[:service_type_values] ||= [@section_id]
462
508
 
463
509
  # Partials to display. Default to _standard_response_item item partial.
464
510
  if ( @options[:partial] == true)
@@ -18,6 +18,7 @@ class AjaxExport < Service
18
18
 
19
19
  request.add_service_response(:service=>self,
20
20
  :display_text => @display_text,
21
+ :display_text_i18n => @display_text_i18n,
21
22
  :link_supports_ajax_call => true,
22
23
  :notes=> @note,
23
24
  :service_type_value => 'export_citation' )
@@ -239,7 +239,8 @@ class Amazon < Service
239
239
  unless ( desc_text.blank? )
240
240
  request.add_service_response(
241
241
  :service=>self,
242
- :display_text => "Description from Amazon.com",
242
+ :display_text => "Description from Amazon.com",
243
+ :display_text_i18n => "description",
243
244
  :url => item_url,
244
245
  :key=>'abstract',
245
246
  :value_string=>asin,
@@ -341,6 +342,7 @@ class Amazon < Service
341
342
  request.add_service_response(
342
343
  :service => self,
343
344
  :display_text=>@display_name,
345
+ :display_text_i18n => "display_name",
344
346
  :url=> reader_url,
345
347
  :service_type_value => :search_inside
346
348
  )
@@ -357,7 +359,8 @@ class Amazon < Service
357
359
  :service=>self,
358
360
  :url => reader_url,
359
361
  :asin=>asin,
360
- :display_text => @display_name,
362
+ :display_text => @display_name,
363
+ :display_text_i18n => "display_name",
361
364
  :service_type_value => 'excerpts')
362
365
 
363
366
  elsif ( @service_types.include?("highlighted_link"))
@@ -372,7 +375,8 @@ class Amazon < Service
372
375
  :service=>self,
373
376
  :url => amazon_page,
374
377
  :asin=>asin,
375
- :display_text => @display_text,
378
+ :display_text => @display_text,
379
+ :display_text_i18n => "display_text",
376
380
  :service_type_value => 'highlighted_link')
377
381
  end
378
382
 
@@ -2,6 +2,7 @@ class EmailExport < AjaxExport
2
2
 
3
3
  def initialize(config)
4
4
  @display_text ||= "Email"
5
+ @display_text_i18n ||= "display_text"
5
6
  @form_controller ||= "export_email"
6
7
  @form_action ||= "email"
7
8
  super(config)
@@ -296,8 +296,6 @@ class GoogleBookSearch < Service
296
296
  # We only create a fulltext service response if we have a full view.
297
297
  # We create only as many full views as are specified in config.
298
298
  def create_fulltext_service_response(request, data)
299
- display_name = @display_name
300
-
301
299
  full_views = find_entries(data, ViewFullValue)
302
300
  return nil if full_views.empty?
303
301
 
@@ -308,7 +306,8 @@ class GoogleBookSearch < Service
308
306
 
309
307
  request.add_service_response(
310
308
  :service => self,
311
- :display_text => display_name,
309
+ :display_text => @display_name,
310
+ :display_text_i18n => "display_name",
312
311
  :url => remove_query_context(uri),
313
312
  :service_type_value => :fulltext
314
313
  )
@@ -328,6 +327,7 @@ class GoogleBookSearch < Service
328
327
  request.add_service_response(
329
328
  :service => self,
330
329
  :display_text=>@display_name,
330
+ :display_text_i18n => "display_name",
331
331
  :url=> remove_query_context(url),
332
332
  :service_type_value => :search_inside
333
333
  )
@@ -358,16 +358,21 @@ class GoogleBookSearch < Service
358
358
  if (viewability == ViewPartialValue &&
359
359
  url = iv["volumeInfo"]["previewLink"])
360
360
  display_text = @display_name
361
+ display_text_i18n = "display_name"
361
362
  type = ServiceTypeValue[:excerpts]
362
363
  else
363
364
  url = url = iv["volumeInfo"]["infoLink"]
364
365
  display_text = "Book Information"
366
+ display_text_i18n = "book_information"
365
367
  type = ServiceTypeValue[:highlighted_link]
366
368
  end
369
+
370
+
367
371
  request.add_service_response(
368
372
  :service=>self,
369
373
  :url=> remove_query_context(url),
370
374
  :display_text=>display_text,
375
+ :display_text_i18n => display_text_i18n,
371
376
  :service_type_value => type
372
377
  )
373
378
  end
@@ -36,11 +36,13 @@ class GoogleScholarLink < Service
36
36
  link = "http://scholar.google.com/scholar?q=#{CGI.escape construct_query(request)}"
37
37
 
38
38
  request.add_service_response(
39
- :service => self,
40
- :display_text => "Look for article on Google Scholar",
41
- :url => link,
39
+ :service => self,
40
+ :display_text => "Look for article on Google Scholar",
41
+ :display_text_i18n => "display_text",
42
+ :url => link,
42
43
  :service_type_value => @service_type,
43
- :notes => "This article <b>may</b> be available on the public web, look for links labelled <span class='gscholar_example'>[html]</span> or <span class='gscholar_example'>[pdf]</span>".html_safe
44
+ :notes => "This article <b>may</b> be available on the public web, look for links labelled <span class='gscholar_example'>[html]</span> or <span class='gscholar_example'>[pdf]</span>".html_safe,
45
+ :notes_i18n => "notes_html"
44
46
  )
45
47
 
46
48
  return request.dispatched(self, true)
@@ -149,7 +149,6 @@ class HathiTrust < Service
149
149
  def create_fulltext_service_response(request, items)
150
150
  return nil if items.empty?
151
151
 
152
- display_name = @display_name
153
152
  count = 0
154
153
 
155
154
  items.each do |item|
@@ -160,9 +159,11 @@ class HathiTrust < Service
160
159
 
161
160
  request.add_service_response(
162
161
  :service=>self,
163
- :display_text=>display_name,
162
+ :display_text=> @display_name,
163
+ :display_text_i18n => "display_name",
164
164
  :url=> direct_url_to(item),
165
- :notes=> note_for(item),
165
+ :add_i18n_notes => "single_volume", # signal for transform_view_data
166
+ :source_for_i18n => item['orig'],
166
167
  :service_type_value => :fulltext
167
168
  )
168
169
  count += 1
@@ -183,12 +184,16 @@ class HathiTrust < Service
183
184
  full_ids.each do |recordId|
184
185
  record = ht_json.values.first["records"][recordId]
185
186
  next unless record && record["recordURL"]
186
-
187
+
188
+ record_title = record["titles"].first if record["titles"].kind_of?(Array)
189
+
187
190
  request.add_service_response(
188
191
  :service=>self,
189
- :display_text=>@display_name,
192
+ :display_text=> @display_name,
193
+ :display_text_i18n => "display_name",
190
194
  :url=> record["recordURL"],
191
- :notes => excerpt_note_for(record),
195
+ :add_i18n_notes => "partial_volume", # signal for transform_view_data
196
+ :title_for_i18n => record_title,
192
197
  :service_type_value => :excerpts
193
198
  )
194
199
  end
@@ -204,7 +209,8 @@ class HathiTrust < Service
204
209
 
205
210
  request.add_service_response(
206
211
  :service=>self,
207
- :display_text=>"Search inside some volumes",
212
+ :display_text=> "Search inside some volumes",
213
+ :display_text_i18n => "search_inside_some_vols",
208
214
  :url=> record["recordURL"],
209
215
  :service_type_value => :highlighted_link
210
216
  )
@@ -231,7 +237,8 @@ class HathiTrust < Service
231
237
 
232
238
  request.add_service_response(
233
239
  :service => self,
234
- :display_text=>@display_name,
240
+ :display_text=> @display_name,
241
+ :display_text_i18n => "display_name",
235
242
  :url=> direct_url,
236
243
  :service_type_value => :search_inside
237
244
  )
@@ -248,19 +255,17 @@ class HathiTrust < Service
248
255
  item['itemURL']
249
256
  end
250
257
  end
251
-
252
- def note_for(item)
253
- if item['orig']
254
- "Digitized from #{item['orig']}"
255
- else
256
- nil
258
+
259
+ def transform_view_data(hash)
260
+ if hash[:add_i18n_notes] == "single_volume"
261
+ hash[:notes] = translate("note_for_single_vol", :source => (hash[:source_for_i18n] || ""))
262
+ elsif hash[:add_i18n_notes] == "partial_volume"
263
+ hash[:notes] = translate("note_for_multi_vol", :title => (hash[:title_for_i18n] || ""))
257
264
  end
265
+
266
+ return hash
258
267
  end
259
268
 
260
- def excerpt_note_for(record)
261
- return nil unless record["titles"].kind_of?(Array)
262
- "Some volumes of: #{record["titles"].first}"
263
- end
264
269
 
265
270
  def is_serial_part?(item)
266
271
  # if it's got enumCron, then it's just part of a serial,
@@ -31,7 +31,7 @@ class HipHoldingSearch < Hip3Service
31
31
  def handle(request)
32
32
 
33
33
  # Only do anything if we have no holdings results from someone else.
34
- holdings = request.service_types.find(:all, :conditions=>["service_type_value_name = ?", "holding"])
34
+ holdings = request.service_types.where(:service_type_value_name => "holding")
35
35
 
36
36
  if (holdings.length > 0)
37
37
  return request.dispatched(self, true)
@@ -146,6 +146,7 @@ class InternetArchive < Service
146
146
  request.add_service_response(
147
147
  :service => self,
148
148
  :display_text=> @display_name,
149
+ :display_text_i18n => "display_name",
149
150
  :url => direct_url.to_s,
150
151
  :service_type_value => :search_inside
151
152
  )
@@ -170,6 +171,7 @@ class InternetArchive < Service
170
171
  request.add_service_response(
171
172
  :service=>self,
172
173
  :display_text=>display_name,
174
+ :display_text_i18n => "display_name",
173
175
  :url=>create_result_url(result),
174
176
  :match_reliability => ServiceResponse::MatchUnsure,
175
177
  :edition_str => edition_str(result),
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- # Uses ISI Web of Knowledge to generates links to "cited by" and "similar"
3
+ # Uses ISI Web of Science to generates links to "cited by" and "similar"
4
4
  # articles.
5
5
  #
6
6
  # REQUIREMENTS: You must be an ISI customer if you want these links to actually
@@ -39,7 +39,7 @@ class Isi < Service
39
39
  def initialize(config)
40
40
  #defaults
41
41
  @wos_app_name = "Umlaut"
42
- @display_name = "Web of Knowledge\xc2\xae" # trademark symbol
42
+ @display_name = "Web of Science\xc2\xae" # trademark symbol
43
43
  @api_url = "https://ws.isiknowledge.com/cps/xrpc"
44
44
  @include_cited_by = true
45
45
  @include_similar = true
@@ -30,7 +30,9 @@
30
30
  # A link_out_filter service defines link_out_filter(request, url). If service
31
31
  # returns a new url from filter_url, that's the url the user will be directed
32
32
  # to. If service returns original url or nil, original url will still be used.
33
-
33
+ #
34
+ # See documentation at ServiceResponse regarding how a service generates
35
+ # ServiceResponses to respond to a user request.
34
36
  class Service
35
37
  attr_reader :priority, :service_id, :url, :task, :status, :name, :group
36
38
  attr_accessor :request
@@ -115,43 +117,15 @@ class Service
115
117
  raise Exception.new("#{self.class}: #link_out_filter must be implemented by Service concrete sub-class with task link_out_filter!")
116
118
  end
117
119
 
118
-
119
- def display_name
120
- # If no display_name is set, default to the id string. Not a good idea,
121
- # but hey.
122
- return @display_name ||= self.service_id
120
+ # Name of this service, like "Amazon", or "OCLC Worldcat".
121
+ # First tries to look up an i18n translation using #translate, if not
122
+ # found, uses a @display_name set in this service, if still not found
123
+ # uses service_id for lack of anything else.
124
+ def display_name
125
+ self.translate("display_name", :default => @display_name || self.service_id)
123
126
  end
124
127
 
125
128
 
126
- # Pass this method a ServiceResponse object, it will return a hash-like object of
127
- # display values, for the view. Implementation is usually in sub-class, by
128
- # means of a set of methods "to_[service type name]" implemented in sub-class
129
- #. parseResponse will find those. Subclasses will not generally override
130
- # view_data_from_service_type, although they can for complete custom
131
- # handling. Make sure to return a Hash or hash-like (duck-typed) object.
132
- def view_data_from_service_type(service_response)
133
-
134
- service_type_code = service_response.service_type_value.name
135
-
136
- begin
137
- # try to call a method named "to_#{service_type_code}", implemented by sub-class
138
- self.send("to_#{service_type_code}", service_response)
139
- rescue NoMethodError
140
- # No to_#{response_type} method? How about the catch-all method?
141
- # If not implemented in sub-class, we have a VERY basic
142
- # default implementation in this class.
143
- self.send("response_to_view_data", service_response)
144
- end
145
- end
146
-
147
- # Default implementation to take a ServiceResponse and parse
148
- # into a hash of values useful to the view. Basic implementation
149
- # just asks ServiceResposne for it's data_values object, which
150
- # contains all ServiceResponse data (including arbitrary keys serialized
151
- # in the hash) in an object with the hash accessor method [] .
152
- def response_to_view_data(service_response)
153
- return service_response.data_values
154
- end
155
129
 
156
130
  # Sub-class can call class method like:
157
131
  # required_config_params :symbol1, :symbol2, symbol3
@@ -183,6 +157,21 @@ class Service
183
157
  return url
184
158
  end
185
159
 
160
+ # Look up an i18n key scoped to this service, first under the unique ID of
161
+ # the service, then under the service class name:
162
+ # * First look for translation under `umlaut.services.#{service_id.underscore}.key`
163
+ # * If not found, look for translation under `umlaut.services.#{service_class_name.underscore}`
164
+ # * If still not found, pass in optional default, otherwise you'll get I18n
165
+ # configured failure behavior.
166
+ #
167
+ # second arg is options that can be passed to standard I18n.t, including defaults
168
+ # and template arguments.
169
+ def translate(key, options = {})
170
+ # Modify/add options[:default] to look up under class name too
171
+ options[:default] = [:"umlaut.services.#{self.class.name.underscore}.#{key}"].concat(Array( options[:default] ))
172
+
173
+ I18n.t("umlaut.services.#{self.service_id.underscore}.#{key}", options)
174
+ end
186
175
 
187
176
  # Pre-emption hashes specify a combination of existing responses or
188
177
  # service executions that can pre-empt this service. Can specify
@@ -240,12 +229,13 @@ class Service
240
229
  end
241
230
  else
242
231
  # Check service responses
243
- preemption =
244
- uml_request.service_responses.to_a.find do |response|
245
- ( other_type == "*" || other_type == "+" ||
246
- response.service_type_value.name == other_type) &&
247
- ( service == "*" ||
248
- response.service_id == service)
232
+ preemption = Request.connection_pool.with_connection do
233
+ uml_request.service_responses.to_a.find do |response|
234
+ ( other_type == "*" || other_type == "+" ||
235
+ response.service_type_value.name == other_type) &&
236
+ ( service == "*" ||
237
+ response.service_id == service)
238
+ end
249
239
  end
250
240
  end
251
241
  break if preemption