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
@@ -175,6 +175,7 @@ module ResolveHelper
175
175
  # for limit.
176
176
  options = {:limit => options} unless options.kind_of?(Hash)
177
177
  options[:limit] ||= 5
178
+ options[:ul_class] ||= "list-unstyled"
178
179
  return "" if list.empty?
179
180
  visible_list = (list.length > options[:limit]) ? list.slice(0, options[:limit]-1) : list
180
181
  hidden_list = (list.length > options[:limit]) ? list.slice((options[:limit]-1)..list.length-1) : []
@@ -261,8 +262,8 @@ module ResolveHelper
261
262
  return nil
262
263
  end
263
264
 
264
- start = response[:coverage_begin_date].try(:year) || I18n.t("umlaut.coverage_summary.open_start", :default => "first")
265
- finish = response[:coverage_end_date].try(:year) || I18n.t("umlaut.coverage_summary.open_end", :default => "latest")
265
+ start = response[:coverage_begin_date].try(:year) || I18n.t("umlaut.citation.coverage_summary.open_start")
266
+ finish = response[:coverage_end_date].try(:year) || I18n.t("umlaut.citation.coverage_summary.open_end")
266
267
 
267
268
  content_tag("span", :class=>"coverage_summary") do
268
269
  "#{start} – #{finish}:"
@@ -7,56 +7,53 @@ module SearchHelper
7
7
  end
8
8
 
9
9
  # pass in an openurl context obj.
10
- # return an OpenStruct with atitle_label, title_label
10
+ # return an OpenStruct with :atitle and :title labels
11
+ #
12
+ # Uses i18n
13
+ #
14
+ # Much of this duplicates Referent.type_thing_name and container_type_of_thing,
15
+ # although we don't have a Referent here, that logic should be combined. TODO
11
16
  def referent_labels(context_obj = @current_context_object)
12
17
  ref_meta = context_obj.referent.metadata
13
18
  result = OpenStruct.new
14
- if ref_meta['genre'].blank?
15
- case @current_context_object.referent.format
16
- when 'book'
17
- result.atitle = 'Chapter/Part Title'
18
- when @current_context_object.referent.format == 'journal'
19
- result.atitle = 'Article Title'
20
- end
21
- result.title = 'Title'
22
- else
23
- case ref_meta["genre"]
24
- when /article|journal|issue/
25
- result.atitle = 'Article Title'
26
- result.title = 'Journal Title'
27
- when /bookitem|book/
28
- result.atitle = 'Chapter/Part Title'
29
- result.title = 'Book Title'
30
- when /proceeding|conference/
31
- result.atitle = 'Proceeding Title'
32
- result.title = 'Conference Name'
33
- when 'report'
34
- result.atitle = 'Report Title'
35
- result.title = 'Report'
36
- end
19
+
20
+ type_of_thing_key = ref_meta['genre']
21
+ type_of_thing_key = context_obj.referent.format if type_of_thing_key.blank?
22
+ type_of_thing_key = type_of_thing_key.downcase
23
+
24
+ a_key = type_of_thing_key
25
+ if a_key == "journal" && ref_meta['atitle'].present?
26
+ a_key = "article"
37
27
  end
28
+ result.atitle = I18n.t(a_key, :scope => "umlaut.citation.genre", :default => "")
29
+
30
+ c_key = type_of_thing_key
31
+ c_key = 'journal' if c_key == "article"
32
+ c_key = 'book' if c_key == "bookitem"
33
+ result.title = I18n.t(c_key, :scope => "umlaut.citation.genre", :default => "")
34
+
38
35
  return result
39
36
  end
40
37
 
41
38
  # A-Z buttons in search page
42
39
  def group_list
43
- group_list ||= ('A'..'Z').to_a.push('0-9').push('Other')
40
+ group_list ||= ('A'..'Z').to_a.push('0-9').push(t('umlaut.search.browse_other'))
44
41
  end
45
42
 
46
43
  # Date dropdowns in search page
47
- def date
44
+ def search_date_select
48
45
  years + months + days
49
46
  end
50
47
 
51
48
  def years
52
- select_year(nil, {:prompt => true, :start_year => Date.today.year, :end_year => 1950}, {:name => "__year", :class=>"year input-small"})
49
+ select_year(nil, {:prompt => true, :start_year => Date.today.year, :end_year => 1950}, {:name => "__year", :class=>"year form-control"})
53
50
  end
54
51
 
55
52
  def months
56
- select_month(nil, {:prompt => true, :use_short_month => true}, {:name => "__month", :class=>"month input-small"})
53
+ select_month(nil, {:prompt => true, :use_short_month => true}, {:name => "__month", :class=>"month form-control"})
57
54
  end
58
55
 
59
56
  def days
60
- select_day(nil, {:prompt => true}, {:name => "__day", :class=>"day input-small"})
57
+ select_day(nil, {:prompt => true}, {:name => "__day", :class=>"day form-control"})
61
58
  end
62
59
  end
@@ -11,7 +11,7 @@ module Umlaut::FooterHelper
11
11
  if @collection
12
12
  content = "".html_safe
13
13
 
14
- content << "Powered by ".html_safe + link_to("Umlaut", "https://github.com/team-umlaut/umlaut") + ". ".html_safe
14
+ content << t('umlaut.misc.powered_by_umlaut').html_safe + " " + link_to("Umlaut", "https://github.com/team-umlaut/umlaut") + ". ".html_safe
15
15
 
16
16
  credit_segments = []
17
17
 
@@ -31,9 +31,7 @@ module Umlaut::FooterHelper
31
31
 
32
32
 
33
33
  if credit_segments.length > 0
34
- content << "Using services from ".html_safe
35
- content << credit_segments.join(", ").html_safe
36
- content << " and others.".html_safe
34
+ content << t("umlaut.misc.credits_html", :credits => safe_join(credit_segments, ", "))
37
35
  end
38
36
 
39
37
  return content
@@ -65,9 +63,9 @@ module Umlaut::FooterHelper
65
63
  options = {:text => "[D]", :title => "Toggle on-screen debug info"}.merge(options)
66
64
 
67
65
  text = options.delete(:text)
68
- javascript = " jQuery('.debug_info').toggle();"
66
+ options[:onclick] ||= " jQuery('.debug_info').toggle();"
69
67
 
70
- return link_to_function(text, javascript, options)
68
+ return link_to(text, "#", options)
71
69
  end
72
70
 
73
71
  end
@@ -7,8 +7,6 @@ module Umlaut::Helper
7
7
  include Umlaut::FooterHelper
8
8
  include Umlaut::HtmlHeadHelper
9
9
 
10
-
11
-
12
10
  # pass in an OpenURL::ContextObject, outputs a link.
13
11
  def resolver_link(context_object, params={})
14
12
 
@@ -72,11 +70,12 @@ module Umlaut::Helper
72
70
  end
73
71
 
74
72
  def render_umlaut_permalink_toggle
75
-
76
- link_to({:action => "get_permalink", :"umlaut.request_id" => @user_request.id},
77
- :class => "umlaut-load-permalink btn btn-mini",
73
+ link_to({:controller => "resolve",
74
+ :action => "get_permalink",
75
+ :"umlaut.request_id" => @user_request.id},
76
+ :class => "umlaut-load-permalink btn btn-default btn-xs",
78
77
  :data => {"umlaut-toggle-permalink"=>"true"}) do
79
- content_tag("i") + " Short link"
78
+ content_tag("i") + " #{t('umlaut.permalink.name')}"
80
79
  end
81
80
  end
82
81
 
@@ -94,5 +93,40 @@ module Umlaut::Helper
94
93
  end
95
94
  end
96
95
 
97
-
96
+ # Create dropdown if we have multiple locales, link if just two
97
+ def render_locale_selector
98
+ num_locales = I18n.config.available_locales.size
99
+ if num_locales > 2
100
+ render_locale_dropdown
101
+ elsif num_locales == 2
102
+ render_locale_link
103
+ end
104
+ end
105
+
106
+ # create a link for the non-active locale
107
+ def render_locale_link
108
+ locales = I18n.config.available_locales
109
+ other_locale = (locales - [I18n.locale]).pop
110
+ link_to t(:language_name, :locale => other_locale), params.merge(:'umlaut.locale' => other_locale)
111
+ end
112
+
113
+ # Create a dropdown with the current language at the top
114
+ def render_locale_dropdown
115
+ locale_options = Array.new
116
+ #make sure the locales display with their titles
117
+ I18n.config.available_locales.each do |loc|
118
+ locale_options.push([t('language_name', :locale => loc), loc])
119
+ end
120
+ form_tag({controller: params[:controller], action: params[:action]}, {method: "get"} ) do
121
+ #output select tag with language options, current language set to selected
122
+ concat(select_tag('umlaut.locale'.to_sym, options_for_select(locale_options, I18n.locale), onchange: 'this.form.submit()'))
123
+ # send the url params as hidden fields
124
+ params.each do |param|
125
+ unless param[0] == 'controller' || param[0] == 'action' || param[0] == 'umlaut.locale'
126
+ concat(hidden_field_tag("#{param[0]}", "#{param[1]}"))
127
+ end
128
+ end
129
+ end
130
+ end
131
+
98
132
  end
@@ -11,33 +11,14 @@ module Umlaut::UrlGeneration
11
11
  # This is neccesary for our partial_html_sections service
12
12
  # to work properly. Just set @generate_url_with_host = true
13
13
  # in your controller, and urls will be generated with hostnames
14
- # for the remainder of that action.
15
- def url_for(argument = {})
16
- if @generate_urls_with_host
17
- case argument
18
- when Hash
19
- # Force only_path = false if not already set
20
- argument[:only_path] = false if argument[:only_path].nil?
21
- return super(argument)
22
- when String
23
- # We already have a straight string, if it looks relative,
24
- # absolutize it.
25
- if argument.starts_with?("/")
26
- return root_url.chomp("/") + argument
27
- else
28
- return super(argument)
29
- end
30
- when :back
31
- return super(argument)
32
- else
33
- # polymorphic, we want to force polymorphic_url instead
34
- # of default polymorphic_path
35
- return polymorphic_url(argument)
36
- end
37
- else
38
- # @generate_urls_with_host not set, just super
39
- super(argument)
40
- end
14
+ # for the remainder of that action.
15
+ def url_for(*arguments)
16
+ url = super
17
+ if @generate_urls_with_host && url.starts_with?("/")
18
+ #regex replace trailing slashes or trailing locale if present
19
+ url = root_url.gsub(/(\/$)?(\/\?.*)?/, '') + url
20
+ end
21
+ return url
41
22
  end
42
23
 
43
24
  # over-ride path_to_image to generate complete urls with hostname and everything
@@ -58,7 +39,7 @@ module Umlaut::UrlGeneration
58
39
 
59
40
  # We want stylesheets and javascripts to do the exact same thing,
60
41
  # magic of polymorphous super() makes it work:
61
- def path_to_stylesheet(source)
42
+ def path_to_stylesheet(*args)
62
43
  path = super
63
44
  if @generate_urls_with_host
64
45
  path = request.protocol() + request.host_with_port() + path
@@ -66,7 +47,7 @@ module Umlaut::UrlGeneration
66
47
  return path
67
48
  end
68
49
 
69
- def path_to_javascript(source)
50
+ def path_to_javascript(*args)
70
51
  path = super
71
52
  if @generate_urls_with_host
72
53
  path = request.protocol() + request.host_with_port() + path
@@ -35,11 +35,14 @@ module UmlautHttp
35
35
 
36
36
  # Bunch of headers we proxy as-is from the original client request,
37
37
  # supplying reasonable defaults.
38
-
39
38
  header["User-Agent"] = orig_env['HTTP_USER_AGENT'] || 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0'
40
39
  header['Accept'] = orig_env['HTTP_ACCEPT'] || 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
41
40
  header['Accept-Language'] = orig_env['HTTP_ACCEPT_LANGUAGE'] || 'en-us,en;q=0.5'
42
- header['Accept-Encoding'] = orig_env['HTTP_ACCEPT_ENCODING'] || ''
41
+
42
+ # Do NOT pass on accept-encoding, we don't want gzip or compressed response.
43
+ #header['Accept-Encoding'] = orig_env['HTTP_ACCEPT_ENCODING'] || ''
44
+ header['Accept-Encoding'] = "identity"
45
+
43
46
  header["Accept-Charset"] = orig_env['HTTP_ACCEPT_CHARSET'] || 'UTF-8,*'
44
47
 
45
48
  # Set referrer to be, well, an Umlaut page, like the one we are
@@ -1,4 +1,5 @@
1
1
  require 'cron_tab' # for understanding CronTab format for expiring responses.
2
+ require 'confstruct'
2
3
 
3
4
  # A Collection object encapsulates a given UmlautRequest, and a given
4
5
  # list of Umlaut services that should be run off that request.
@@ -12,13 +13,15 @@ require 'cron_tab' # for understanding CronTab format for expiring responses.
12
13
  # foreground and background, making sure no service is run twice if it's
13
14
  # already in progress, timing out expired services, etc.
14
15
  class Collection
15
-
16
16
  attr_accessor :umlaut_request
17
17
  attr_accessor :logger
18
18
  # configs
19
19
  attr_accessor :response_expire_interval, :response_expire_crontab_format, :background_service_timeout, :requeue_failedtemporary_services
20
20
 
21
-
21
+ # generally only set to true in testing, can be set for the whole class
22
+ # or for particular Collection instances.
23
+ class_attribute :forward_background_exceptions
24
+ self.forward_background_exceptions = true
22
25
 
23
26
  # a_umlaut_request is an UmlautRequest, representing a request for services for a context
24
27
  # object.
@@ -60,12 +63,15 @@ class Collection
60
63
  #
61
64
  # Sets all services in collection to have a 'queued' status if appropriate.
62
65
  # Then actually executes the services that are dispatchable (queued).
66
+ #
67
+ # Returns the Thread object used for dispatching background services
63
68
  def dispatch_services!
64
69
  queued_service_ids = prepare_for_dispatch!
65
70
 
66
71
  dispatch_foreground!(queued_service_ids)
67
72
 
68
- dispatch_background!(queued_service_ids)
73
+ # return main thread for background services.
74
+ return dispatch_background!(queued_service_ids)
69
75
  end
70
76
 
71
77
  # Call prepare_for_dispatch! first, the return value from that call
@@ -96,6 +102,8 @@ class Collection
96
102
  # marked queued in the DispatchedService table.
97
103
  #
98
104
  # Will run such services in background priority waves.
105
+ #
106
+ # Returns the Thread object used for dispatching background services.
99
107
  def dispatch_background!(queued_service_ids)
100
108
  # Now we do some crazy magic, start a Thread to run our background
101
109
  # services. We are NOT going to wait for this thread to join,
@@ -134,7 +142,14 @@ class Collection
134
142
  # and logged to db as well as logfile if possible, only bugs in ServiceWave
135
143
  # itself should wind up caught here.
136
144
  Thread.current[:exception] = e
137
- logger.error("Background Service execution exception: #{e}\n\n " + clean_backtrace(e).join("\n"))
145
+ logger.error("Background Service execution exception: #{e}\n\n " + Rails.backtrace_cleaner.clean(e.backtrace).join("\n"))
146
+
147
+ # One exception is in test environment, when we may be intentionally
148
+ # trying to get exceptions to propagate up from ServiceWave to here,
149
+ # and then onward, in order to be caught by tests.
150
+ if self.forward_background_exceptions
151
+ raise e
152
+ end
138
153
  end
139
154
  end
140
155
  end
@@ -155,6 +170,7 @@ class Collection
155
170
  # Go through currently dispatched services, looking for timed out
156
171
  # services -- services still in progress that have taken too long,
157
172
  # as well as service responses that are too old to be used.
173
+
158
174
  queued_service_ids = []
159
175
  DispatchedService.transaction do
160
176
  umlaut_request.dispatched_services.each do | ds |
@@ -193,8 +209,7 @@ class Collection
193
209
  end
194
210
  end
195
211
 
196
- umlaut_request.dispatched_services.delete(ds)
197
- ds.destroy
212
+ umlaut_request.dispatched_services.destroy(ds)
198
213
  end
199
214
  end
200
215
 
@@ -27,6 +27,19 @@ class DispatchedService < ActiveRecord::Base
27
27
  @service ||= ServiceStore.instantiate_service!( self.service_id, request )
28
28
  end
29
29
 
30
+ # Calls service.service_type_generated, but cautious of service_id
31
+ # that is no longer in the ServiceStore
32
+ #
33
+ # Note, this means all service types that could possibly be generated
34
+ # by this service, not those that actually have been
35
+ def can_generate_service_types
36
+ if ServiceStore.service_definition_for( self.service_id )
37
+ service.service_types_generated
38
+ else
39
+ []
40
+ end
41
+ end
42
+
30
43
  # For old-time's sake, true can be used for Succesful
31
44
  # and false can be used for FailedTemporary (that keeps
32
45
  # previous semantics for false intact).
@@ -1,3 +1,5 @@
1
+ require 'i18n'
2
+
1
3
  # Note: There are a few actual attributes stored as Columns in referent --
2
4
  # these were originally used for identifying a Referent identifying the
3
5
  # 'same thing' as an incoming OpenURL, to re-use it. But we don't re-use
@@ -15,9 +17,9 @@ class Referent < ActiveRecord::Base
15
17
  has_many :referent_values
16
18
  has_many :permalinks
17
19
 
18
- # Does call save! on referent created.
19
- # :permalink => false if you already have a permalink and don't
20
- # need to create one. Caller should attach that permalink to this referent!
20
+ # Pass in :permalink => :force to force creation of a permalink, otherwise
21
+ # no permalink is created by this method, one can be lazily created when
22
+ # needed.
21
23
  def self.create_by_context_object(co, options = {})
22
24
  self.clean_up_context_object(co)
23
25
 
@@ -40,10 +42,10 @@ class Referent < ActiveRecord::Base
40
42
  rft.referent_values.each do | val |
41
43
  rft.atitle = val.normalized_value if val.key_name == 'atitle' and val.metadata?
42
44
  rft.title = val.normalized_value if val.key_name.match(/^[bj]?title$/) and val.metadata?
43
- rft.issn = val.normalized_value if val.key_name == 'issn' and val.metadata?
44
- rft.isbn = val.normalized_value if val.key_name == 'isbn' and val.metadata?
45
+ rft.issn = val.normalized_value.gsub(/[^\d]/, '')[0,8] if val.key_name == 'issn' and val.metadata?
46
+ rft.isbn = val.normalized_value.gsub(/[^\d]/, '')[0,13] if val.key_name == 'isbn' and val.metadata?
45
47
  rft.volume = val.normalized_value if val.key_name == 'volume' and val.metadata?
46
- rft.year = val.normalized_value if val.key_name == 'date' and val.metadata?
48
+ rft.year = val.normalized_value.gsub(/[^\d]/, '')[0,4] if val.key_name == 'date' and val.metadata?
47
49
  end
48
50
  rft.save!
49
51
 
@@ -107,61 +109,44 @@ class Referent < ActiveRecord::Base
107
109
  end
108
110
 
109
111
 
110
- # Find or create a ReferentValue object hanging off this
111
- # Referent, with given key name and value. key_name can
112
- # be 'identifier', 'format', or any metadata key.
113
- def ensure_value!(key_name, value)
114
- normalized_value = ReferentValue.normalize(value)
115
-
116
- rv = ReferentValue.find(:first,
117
- :conditions => { :referent_id => self.id,
118
- :key_name => key_name,
119
- :normalized_value => normalized_value })
120
- unless (rv)
121
- rv = ReferentValue.new
122
- rv.referent = self
123
-
124
- rv.key_name = key_name
125
- rv.value = value
126
- rv.normalized_value = normalized_value
127
-
128
- if key_name == "private_data"
129
- rv.private_data = true
130
- elsif key_name != "identifier" && key_name != "format"
131
- rv.metadata = true
132
- end
133
-
134
- rv.save!
135
- end
136
- return rv
112
+ # private use. Adds a referent_value and returns it, does NOT persist
113
+ # it to db. referent_value is constructed with ActiveRecord build, and
114
+ # will be saved when Referent (self) is saved, works on persisted or
115
+ # unpersisted Referent.
116
+ def build_referent_value(key_name, value)
117
+ return self.referent_values.build(
118
+ :key_name => key_name,
119
+ :value => value,
120
+ :normalized_value => ReferentValue.normalize(value),
121
+ :private_data => (key_name == "private_data"),
122
+ :metadata => (key_name != "identifier" && key_name != "format")
123
+ )
137
124
  end
125
+
138
126
 
139
127
  # Populate the referent_values table with a ropenurl contextobject object
128
+ # Note, does NOT save self, self may still be unsaved.
140
129
  def set_values_from_context_object(co)
141
-
142
130
  rft = co.referent
143
-
144
131
 
145
132
  # Multiple identifiers are possible!
146
133
  rft.identifiers.each do |id_string|
147
- ensure_value!('identifier', id_string)
134
+ build_referent_value('identifier', id_string)
148
135
  end
149
136
  if rft.format
150
- ensure_value!('format', rft.format)
137
+ build_referent_value('format', rft.format)
151
138
  end
152
139
  if rft.private_data
153
140
  # this comes in as "pid" or "rft_dat", we store it in
154
141
  # our database as "private_data", sorry, easiest way to
155
142
  # fit this in at the moment.
156
- ensure_value!("private_data", rft.private_data)
143
+ build_referent_value("private_data", rft.private_data)
157
144
  end
158
145
 
159
146
  rft.metadata.each { | key, value |
160
- next unless value
161
- ensure_value!( key, value)
162
- }
163
-
164
-
147
+ next unless value.present?
148
+ build_referent_value( key, value)
149
+ }
165
150
  end
166
151
 
167
152
  # pass in a Referent, or a ropenurl ContextObjectEntity that has a metadata
@@ -219,17 +204,14 @@ class Referent < ActiveRecord::Base
219
204
 
220
205
  def add_identifier(id)
221
206
  unless ( identifiers.find{|i| i == id} )
222
- self.referent_values.create(:key_name => 'identifier', :value => id, :normalized_value => ReferentValue.normalize(id), :metadata => false, :private_data => false).save!
207
+ Referent.with_connection do
208
+ self.referent_values.create(:key_name => 'identifier', :value => id, :normalized_value => ReferentValue.normalize(id), :metadata => false, :private_data => false).save!
209
+ end
223
210
  end
224
211
  end
225
212
 
226
213
  def format
227
- self.referent_values
228
- self.referent_values.each { | val |
229
- if val.key_name == 'format'
230
- return val.value
231
- end
232
- }
214
+ self.referent_values.to_a.find { | val | val.key_name == 'format'}.try(:value)
233
215
  end
234
216
 
235
217
  # Some shortcuts for pulling out/manipulating specific especially
@@ -281,7 +263,8 @@ class Referent < ActiveRecord::Base
281
263
 
282
264
  # Creates a hash for use in View code to display a citation
283
265
  #
284
- # Crazy if/else tree logic, should be refactored, needs more tests first prob.
266
+ # TODO, move to_citation, type_of_thing, and container_type_of_thing OUT
267
+ # of Refernet, to helper module or own class.
285
268
  def to_citation
286
269
  citation = {}
287
270
  # call self.metadata once and use the array for efficiency, don't
@@ -290,43 +273,24 @@ class Referent < ActiveRecord::Base
290
273
 
291
274
  if my_metadata['atitle'].present?
292
275
  citation[:title] = my_metadata['atitle']
293
- citation[:title_label], citation[:container_label] =
294
- case my_metadata['genre']
295
- when /article|journal|issue/ then ['Article Title', 'Journal']
296
- when /bookitem|book/ then ['Chapter/Part Title', 'book']
297
- when /proceeding|conference/ then ['Proceeding Title', 'conference']
298
- when 'report' then ['Report Title','report']
299
- else
300
- if self.format == 'book'
301
- ['Chapter/Part Title', 'book']
302
- elsif self.format == 'journal'
303
- ['Article Title', 'Journal']
304
- else # default fall through, use much what SFX uses.
305
- ['Title', '']
306
- end
307
- end
308
276
  ['title','btitle','jtitle'].each do | t_type |
309
- if ! my_metadata[t_type].blank?
310
- citation[:subtitle] = my_metadata[t_type]
311
- citation[:container_title] = my_metadata[t_type]
277
+ if my_metadata[t_type].present?
278
+ citation[:container_title] = my_metadata[t_type]
312
279
  break
313
280
  end
314
281
  end
315
- else
316
- citation[:title_label] = case my_metadata["genre"]
317
- when /article|journal|issue/i then 'Journal'
318
- when /bookitem|book/i then 'Book'
319
- when /proceeding|conference/i then 'Conference'
320
- when 'report' then 'Report'
321
- else nil
322
- end
282
+ else # only top-level thing, no sub-thing
323
283
  ['title','btitle','jtitle'].each do | t_type |
324
- if ! my_metadata[t_type].blank?
284
+ if my_metadata[t_type].present?
325
285
  citation[:title] = my_metadata[t_type]
326
286
  break
327
287
  end
328
288
  end
329
289
  end
290
+
291
+ citation[:title_label] = I18n.t("umlaut.citation.title_of_x", :x => self.type_of_thing, :default => "umlaut.citation.title_label")
292
+ citation[:container_label] = self.container_type_of_thing
293
+
330
294
  # add publisher for books
331
295
  if (my_metadata['genre'] =~ /book/i)
332
296
  citation[:pub] = my_metadata['pub'] unless my_metadata['pub'].blank?
@@ -372,26 +336,40 @@ class Referent < ActiveRecord::Base
372
336
  end
373
337
 
374
338
  def type_of_thing
375
- genre = self.metadata["genre"]
376
- genre = nil if genre =~ /^unknown$/i
377
- genre = "book section" if genre =~ /^bookitem$/i
339
+ metadata = self.metadata
378
340
 
379
- return genre
341
+ key = metadata["genre"]
342
+ key = self.format if key.blank?
343
+ key = key.downcase
344
+
345
+ if key == "journal" && metadata['atitle'].present?
346
+ key = 'article'
347
+ end
348
+
349
+ label = I18n.t(key, :scope => "umlaut.citation.genre", :default => "")
350
+ label = nil if label.blank?
351
+
352
+ return label
380
353
  end
381
354
 
382
355
  # Like type_of_thing, but if it's a contained item, give container name instead.
383
- # TODO: All of this should be I18n'd.
384
356
  def container_type_of_thing
385
- case self.metadata["genre"]
386
- when 'article' then 'journal'
387
- when 'bookitem' then 'book'
388
- else self.metadata['genre'] || self.format
357
+ i18n_key = case self.metadata['genre']
358
+ when 'article' then 'journal'
359
+ when 'bookitem' then 'book'
360
+ else self.metadata['genre'] || self.format
389
361
  end
362
+
363
+ label = I18n.t(i18n_key, :scope => "umlaut.citation.genre", :default => "")
364
+ label = nil if label.blank?
365
+
366
+ return label
390
367
  end
391
368
 
392
369
 
393
370
  def remove_value(key)
394
- referent_values.find(:all, :conditions=> ['key_name =?', key]).each do |rv|
371
+ referent_values.where(:key_name => key).to_a.each do |rv|
372
+ rv.delete
395
373
  referent_values.delete(rv)
396
374
  end
397
375
  end