umlaut 3.0.0alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. data/LICENSE +7 -0
  2. data/README.md +49 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/images/error.gif +0 -0
  5. data/app/assets/images/export_bg_bot.gif +0 -0
  6. data/app/assets/images/export_bg_mid.gif +0 -0
  7. data/app/assets/images/export_bg_top.gif +0 -0
  8. data/app/assets/images/famfamfam/book_open.png +0 -0
  9. data/app/assets/images/famfamfam/cross.png +0 -0
  10. data/app/assets/images/famfamfam/page_sound.gif +0 -0
  11. data/app/assets/images/famfamfam/page_text.gif +0 -0
  12. data/app/assets/images/famfamfam/page_up.gif +0 -0
  13. data/app/assets/images/famfamfam/page_white.png +0 -0
  14. data/app/assets/images/famfamfam/readme.html +1495 -0
  15. data/app/assets/images/famfamfam/tiny_cross.png +0 -0
  16. data/app/assets/images/frame_remove.gif +0 -0
  17. data/app/assets/images/ico_go.gif +0 -0
  18. data/app/assets/images/jhu_findit.gif +0 -0
  19. data/app/assets/images/list_closed.png +0 -0
  20. data/app/assets/images/list_open.png +0 -0
  21. data/app/assets/images/more_info.gif +0 -0
  22. data/app/assets/images/rails.png +0 -0
  23. data/app/assets/images/request.gif +0 -0
  24. data/app/assets/images/spinner.gif +0 -0
  25. data/app/assets/javascripts/umlaut/ajax_windows.js +35 -0
  26. data/app/assets/javascripts/umlaut/ensure_window_size.js.erb +34 -0
  27. data/app/assets/javascripts/umlaut/expand_contract_toggle.js +25 -0
  28. data/app/assets/javascripts/umlaut/search_autocomplete.js +46 -0
  29. data/app/assets/javascripts/umlaut/simple_visible_toggle.js +8 -0
  30. data/app/assets/javascripts/umlaut/update_html.js +152 -0
  31. data/app/assets/javascripts/umlaut.js +17 -0
  32. data/app/assets/stylesheets/umlaut.css +857 -0
  33. data/app/controllers/application_controller.rb +14 -0
  34. data/app/controllers/export_email_controller.rb +123 -0
  35. data/app/controllers/js_helper_controller.rb +10 -0
  36. data/app/controllers/link_router_controller.rb +87 -0
  37. data/app/controllers/open_search_controller.rb +9 -0
  38. data/app/controllers/resolve_controller.rb +288 -0
  39. data/app/controllers/resource_controller.rb +83 -0
  40. data/app/controllers/search_controller.rb +328 -0
  41. data/app/controllers/search_methods/sfx3.rb +148 -0
  42. data/app/controllers/search_methods/sfx4.rb +257 -0
  43. data/app/controllers/search_methods/sfx_api.rb +47 -0
  44. data/app/controllers/store_controller.rb +64 -0
  45. data/app/controllers/umlaut/controller_behavior.rb +20 -0
  46. data/app/controllers/umlaut/controller_logic.rb +96 -0
  47. data/app/controllers/umlaut/error_handling.rb +48 -0
  48. data/app/controllers/umlaut_controller.rb +112 -0
  49. data/app/helpers/application_helper.rb +4 -0
  50. data/app/helpers/emailer_helper.rb +43 -0
  51. data/app/helpers/export_email_helper.rb +34 -0
  52. data/app/helpers/open_search_helper.rb +7 -0
  53. data/app/helpers/resolve_helper.rb +225 -0
  54. data/app/helpers/search_helper.rb +50 -0
  55. data/app/helpers/umlaut/footer_helper.rb +64 -0
  56. data/app/helpers/umlaut/helper.rb +62 -0
  57. data/app/helpers/umlaut/html_head_helper.rb +37 -0
  58. data/app/helpers/umlaut/url_generation.rb +77 -0
  59. data/app/mailers/emailer.rb +48 -0
  60. data/app/models/clickthrough.rb +2 -0
  61. data/app/models/collection.rb +259 -0
  62. data/app/models/crossref_lookup.rb +2 -0
  63. data/app/models/dispatched_service.rb +58 -0
  64. data/app/models/permalink.rb +29 -0
  65. data/app/models/referent.rb +473 -0
  66. data/app/models/referent_value.rb +14 -0
  67. data/app/models/request.rb +449 -0
  68. data/app/models/service_response.rb +179 -0
  69. data/app/models/service_store.rb +59 -0
  70. data/app/models/service_type_value.rb +58 -0
  71. data/app/models/service_wave.rb +150 -0
  72. data/app/models/sfx_db/az_additional_title.rb +11 -0
  73. data/app/models/sfx_db/az_letter_group.rb +11 -0
  74. data/app/models/sfx_db/az_title.rb +38 -0
  75. data/app/models/sfx_db/az_title_v2.rb +34 -0
  76. data/app/models/sfx_db/isbn.rb +12 -0
  77. data/app/models/sfx_db/issn.rb +12 -0
  78. data/app/models/sfx_db/object.rb +35 -0
  79. data/app/models/sfx_db/object_portfolio.rb +6 -0
  80. data/app/models/sfx_db/publisher.rb +10 -0
  81. data/app/models/sfx_db/sfx_db_base.rb +54 -0
  82. data/app/models/sfx_db/target.rb +9 -0
  83. data/app/models/sfx_db/target_service.rb +10 -0
  84. data/app/models/sfx_db/title.rb +10 -0
  85. data/app/models/sfx_db.rb +10 -0
  86. data/app/models/sfx_url.rb +35 -0
  87. data/app/views/emailer/citation.text.erb +28 -0
  88. data/app/views/emailer/short_citation.text.erb +8 -0
  89. data/app/views/export_email/_email.html.erb +25 -0
  90. data/app/views/export_email/_send_email.html.erb +3 -0
  91. data/app/views/export_email/_send_txt.html.erb +3 -0
  92. data/app/views/export_email/_txt.html.erb +62 -0
  93. data/app/views/export_email/email.html.erb +3 -0
  94. data/app/views/export_email/send_email.html.erb +1 -0
  95. data/app/views/export_email/send_txt.html.erb +1 -0
  96. data/app/views/export_email/txt.html.erb +3 -0
  97. data/app/views/js_helper/loader.erb.js +13 -0
  98. data/app/views/layouts/umlaut.html.erb +52 -0
  99. data/app/views/open_search/index.html.erb +9 -0
  100. data/app/views/resolve/_api_in_progress.xml.erb +21 -0
  101. data/app/views/resolve/_background_progress.html.erb +51 -0
  102. data/app/views/resolve/_background_updater.html.erb +38 -0
  103. data/app/views/resolve/_citation.html.erb +87 -0
  104. data/app/views/resolve/_coins.html.erb +1 -0
  105. data/app/views/resolve/_compact_citation.html.erb +33 -0
  106. data/app/views/resolve/_cover_image.html.erb +35 -0
  107. data/app/views/resolve/_fulltext.html.erb +55 -0
  108. data/app/views/resolve/_help.html.erb +17 -0
  109. data/app/views/resolve/_holding.html.erb +91 -0
  110. data/app/views/resolve/_related_items.html.erb +35 -0
  111. data/app/views/resolve/_search_inside.html.erb +62 -0
  112. data/app/views/resolve/_section_display.html.erb +49 -0
  113. data/app/views/resolve/_service_errors.html.erb +29 -0
  114. data/app/views/resolve/_standard_response_item.html.erb +89 -0
  115. data/app/views/resolve/api.xml.builder +72 -0
  116. data/app/views/resolve/background_status.html.erb +26 -0
  117. data/app/views/resolve/index.html.erb +73 -0
  118. data/app/views/resolve/partial_html_sections.xml.erb +30 -0
  119. data/app/views/search/_a_to_z.html.erb +6 -0
  120. data/app/views/search/_citation.html.erb +94 -0
  121. data/app/views/search/_pager.html.erb +60 -0
  122. data/app/views/search/books.html.erb +103 -0
  123. data/app/views/search/journal_search.html.erb +90 -0
  124. data/app/views/search/journals.html.erb +167 -0
  125. data/app/views/search/opensearch_description.rxml +10 -0
  126. data/app/views/testing/index.html.erb +1 -0
  127. data/app/views/umlaut/README +5 -0
  128. data/app/views/umlaut/error.html.erb +45 -0
  129. data/db/migrate/01_umlaut_init.rb +113 -0
  130. data/db/orig_fixed_data/service_type_values.yml +120 -0
  131. data/db/seeds.rb +7 -0
  132. data/lib/CronTab.rb +192 -0
  133. data/lib/aws_product_sign.rb +146 -0
  134. data/lib/exlibris/aleph/patron.rb +64 -0
  135. data/lib/exlibris/aleph/record.rb +54 -0
  136. data/lib/exlibris/aleph/rest_api.rb +29 -0
  137. data/lib/exlibris/primo/holding.rb +192 -0
  138. data/lib/exlibris/primo/rsrc.rb +17 -0
  139. data/lib/exlibris/primo/searcher.rb +276 -0
  140. data/lib/exlibris/primo/source/aleph.rb +46 -0
  141. data/lib/exlibris/primo/source/distribution/nyu_aleph.rb +323 -0
  142. data/lib/exlibris/primo/toc.rb +17 -0
  143. data/lib/exlibris/primo_ws.rb +140 -0
  144. data/lib/generators/templates/umlaut_services.yml +237 -0
  145. data/lib/generators/umlaut/asset_hooks_generator.rb +44 -0
  146. data/lib/generators/umlaut/install_generator.rb +110 -0
  147. data/lib/hip3/bib.rb +291 -0
  148. data/lib/hip3/bib_searcher.rb +302 -0
  149. data/lib/hip3/custom_field_lookup.rb +44 -0
  150. data/lib/hip3/holding.rb +50 -0
  151. data/lib/hip3/item.rb +65 -0
  152. data/lib/hip3/receipt.rb +7 -0
  153. data/lib/hip3/serial_copy.rb +82 -0
  154. data/lib/holding.rb +32 -0
  155. data/lib/marc_helper.rb +254 -0
  156. data/lib/metadata_helper.rb +312 -0
  157. data/lib/opensearch_feed.rb +398 -0
  158. data/lib/opensearch_query.rb +98 -0
  159. data/lib/referent_filter.rb +16 -0
  160. data/lib/referent_filters/dissertation_catch.rb +45 -0
  161. data/lib/section_renderer.rb +503 -0
  162. data/lib/service.rb +336 -0
  163. data/lib/service_adaptors/ajax_export.rb +37 -0
  164. data/lib/service_adaptors/amazon.rb +412 -0
  165. data/lib/service_adaptors/blacklight.rb +327 -0
  166. data/lib/service_adaptors/book_finder.rb +40 -0
  167. data/lib/service_adaptors/bx.rb +51 -0
  168. data/lib/service_adaptors/cover_thing.rb +73 -0
  169. data/lib/service_adaptors/elsevier_cover.rb +57 -0
  170. data/lib/service_adaptors/email_export.rb +10 -0
  171. data/lib/service_adaptors/ezproxy.rb +171 -0
  172. data/lib/service_adaptors/google_book_search.rb +442 -0
  173. data/lib/service_adaptors/gpo.rb +124 -0
  174. data/lib/service_adaptors/hathi_trust.rb +308 -0
  175. data/lib/service_adaptors/hip3_service.rb +150 -0
  176. data/lib/service_adaptors/hip_holding_search.rb +237 -0
  177. data/lib/service_adaptors/internet_archive.rb +488 -0
  178. data/lib/service_adaptors/isbn_db.rb +86 -0
  179. data/lib/service_adaptors/isi.rb +258 -0
  180. data/lib/service_adaptors/jcr.rb +146 -0
  181. data/lib/service_adaptors/opac.rb +351 -0
  182. data/lib/service_adaptors/open_library.rb +316 -0
  183. data/lib/service_adaptors/open_library_cover.rb +73 -0
  184. data/lib/service_adaptors/primo_service.rb +392 -0
  185. data/lib/service_adaptors/primo_source.rb +78 -0
  186. data/lib/service_adaptors/pubmed.rb +133 -0
  187. data/lib/service_adaptors/request_to_fixture.rb +68 -0
  188. data/lib/service_adaptors/scopus.rb +295 -0
  189. data/lib/service_adaptors/sfx-new.rb +557 -0
  190. data/lib/service_adaptors/sfx.rb +566 -0
  191. data/lib/service_adaptors/sfx_backchannel_record.rb +69 -0
  192. data/lib/service_adaptors/txt_holding_export.rb +32 -0
  193. data/lib/service_adaptors/ulrichs_cover.rb +57 -0
  194. data/lib/service_adaptors/ulrichs_link.rb +47 -0
  195. data/lib/service_adaptors/worldcat.rb +116 -0
  196. data/lib/service_adaptors/worldcat_identities.rb +591 -0
  197. data/lib/tasks/umlaut.rake +134 -0
  198. data/lib/umlaut/default_configuration.rb +5 -0
  199. data/lib/umlaut/routes.rb +136 -0
  200. data/lib/umlaut/version.rb +3 -0
  201. data/lib/umlaut.rb +37 -0
  202. data/lib/umlaut_configurable.rb +343 -0
  203. data/lib/umlaut_http.rb +100 -0
  204. data/lib/xml_schema_helper.rb +109 -0
  205. data/test/dummy/Rakefile +7 -0
  206. data/test/dummy/app/assets/javascripts/application.js +13 -0
  207. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  208. data/test/dummy/app/controllers/application_controller.rb +3 -0
  209. data/test/dummy/app/controllers/umlaut_controller.rb +112 -0
  210. data/test/dummy/app/helpers/application_helper.rb +2 -0
  211. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  212. data/test/dummy/config/application.rb +45 -0
  213. data/test/dummy/config/boot.rb +10 -0
  214. data/test/dummy/config/database-jhu.yml +44 -0
  215. data/test/dummy/config/database.yml +25 -0
  216. data/test/dummy/config/environment.rb +5 -0
  217. data/test/dummy/config/environments/development.rb +34 -0
  218. data/test/dummy/config/environments/production.rb +60 -0
  219. data/test/dummy/config/environments/test.rb +39 -0
  220. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  221. data/test/dummy/config/initializers/inflections.rb +10 -0
  222. data/test/dummy/config/initializers/mime_types.rb +5 -0
  223. data/test/dummy/config/initializers/secret_token.rb +7 -0
  224. data/test/dummy/config/initializers/session_store.rb +8 -0
  225. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  226. data/test/dummy/config/locales/en.yml +5 -0
  227. data/test/dummy/config/routes.rb +61 -0
  228. data/test/dummy/config/umlaut_services.yml +237 -0
  229. data/test/dummy/config.ru +4 -0
  230. data/test/dummy/db/migrate/20111228211210_umlaut_init.rb +113 -0
  231. data/test/dummy/db/schema.rb +124 -0
  232. data/test/dummy/log/development.log +12981 -0
  233. data/test/dummy/log/production.log +0 -0
  234. data/test/dummy/public/404.html +26 -0
  235. data/test/dummy/public/422.html +26 -0
  236. data/test/dummy/public/500.html +26 -0
  237. data/test/dummy/public/favicon.ico +0 -0
  238. data/test/dummy/script/rails +6 -0
  239. data/test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7 +0 -0
  240. data/test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80 +0 -0
  241. data/test/dummy/tmp/cache/assets/C73/920/sprockets%2Fd371318f22900492fd180f17c5e2a504 +9268 -0
  242. data/test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
  243. data/test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe47e28558116fb5f8038754e60d1961d +11769 -0
  244. data/test/dummy/tmp/cache/assets/CAA/EB0/sprockets%2F1d179210e8b76f1ea63c802688a015e4 +9271 -0
  245. data/test/dummy/tmp/cache/assets/CBB/9C0/sprockets%2F706f28923fb754cad04b9107c89986a1 +0 -0
  246. data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
  247. data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
  248. data/test/dummy/tmp/cache/assets/CF6/F20/sprockets%2F5b2ffa1103079dfd555197838f87a99f +0 -0
  249. data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +862 -0
  250. data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
  251. data/test/dummy/tmp/cache/assets/D22/060/sprockets%2F9aec77b768e91a802d284271c58e2f7e +21357 -0
  252. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  253. data/test/dummy/tmp/cache/assets/D33/6D0/sprockets%2F500129c57f1146e556ec3aacd6cd38c1 +0 -0
  254. data/test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf +0 -0
  255. data/test/dummy/tmp/cache/assets/D42/C20/sprockets%2Fbcf14e437b1582bf93b77670acf8e090 +21353 -0
  256. data/test/dummy/tmp/cache/assets/D50/A30/sprockets%2F7d8b294ac433db5d056538f8cf7c66b9 +0 -0
  257. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +872 -0
  258. data/test/dummy/tmp/cache/assets/D65/590/sprockets%2Fc1bb92fc3406a126b7dd302edc96d629 +0 -0
  259. data/test/dummy/tmp/cache/assets/D71/6B0/sprockets%2Fde558b71b494cf09b1bf055c8dff0353 +0 -0
  260. data/test/dummy/tmp/cache/assets/D72/610/sprockets%2Fa8c708eeb30ef93de34d755d4f45d023 +859 -0
  261. data/test/dummy/tmp/cache/assets/D76/AD0/sprockets%2Fe2158cde93188cf5ab6457bc6d6602ec +0 -0
  262. data/test/dummy/tmp/cache/assets/D7A/E40/sprockets%2F9622ffcc499a57627cd1bb18fe31b8e4 +11772 -0
  263. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  264. data/test/dummy/tmp/cache/assets/D9B/770/sprockets%2F8aacf02eb7dbb0949704b28f27b87e0b +0 -0
  265. data/test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1 +0 -0
  266. data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
  267. data/test/dummy/tmp/cache/assets/DF7/F30/sprockets%2F7bc16c4109b17fabe29f8ddbbf732d1c +374 -0
  268. data/test/dummy/tmp/cache/assets/E03/570/sprockets%2F493bdc0ac14cd4f57fdfe4253f992bde +0 -0
  269. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  270. data/test/dummy/tmp/cache/assets/E0B/4B0/sprockets%2F7988df51a61c81ce6ede4a2d4c8cce4f +377 -0
  271. data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
  272. data/test/fixtures/dispatched_services.yml +5 -0
  273. data/test/fixtures/permalinks.yml +5 -0
  274. data/test/fixtures/referent_values.yml +1734 -0
  275. data/test/fixtures/referents.yml +156 -0
  276. data/test/fixtures/requests.yml +284 -0
  277. data/test/fixtures/service_responses.yml +5 -0
  278. data/test/fixtures/sfx_urls.yml +4 -0
  279. data/test/performance/browsing_test.rb +9 -0
  280. data/test/test_helper.rb +10 -0
  281. data/test/umlaut_test.rb +7 -0
  282. data/test/unit/aleph_patron_test.rb +39 -0
  283. data/test/unit/aleph_record_benchmarks.rb +28 -0
  284. data/test/unit/aleph_record_test.rb +30 -0
  285. data/test/unit/aws_product_sign_test.rb +93 -0
  286. data/test/unit/collection_test.rb +76 -0
  287. data/test/unit/google_book_search_test.rb +101 -0
  288. data/test/unit/primo_searcher_test.rb +403 -0
  289. data/test/unit/primo_service_test.rb +939 -0
  290. data/test/unit/primo_ws_test.rb +131 -0
  291. data/test/unit/service_response_test.rb +9 -0
  292. data/test/unit/service_test.rb +33 -0
  293. metadata +580 -0
@@ -0,0 +1,3 @@
1
+ <div class="no_js">
2
+ <%= render :partial=>"email" %>
3
+ </div>
@@ -0,0 +1 @@
1
+ <div class="no_js"><div class="ajax_div"><%= render :partial=>"send_email" %></div></div>
@@ -0,0 +1 @@
1
+ <div class="no_js"><div class="ajax_div"><%= render :partial=>"send_txt" %></div></div>
@@ -0,0 +1,3 @@
1
+ <div class="no_js">
2
+ <%= render :partial=>"txt" %>
3
+ </div>
@@ -0,0 +1,13 @@
1
+ (function($) {
2
+
3
+ function Loader() {
4
+ this.load = function(option_list) {
5
+ throw('Umlaut Loader object no longer supported.');
6
+ }
7
+ }
8
+ //Export it to the global object.
9
+ if (window.Umlaut == undefined)
10
+ window.Umlaut = new Object();
11
+ window.Umlaut.Loader = Loader;
12
+
13
+ })(jQuery);
@@ -0,0 +1,52 @@
1
+ <!DOCTYPE html>
2
+ <html lang="EN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+
6
+ <%= csrf_meta_tags %>
7
+
8
+ <%= stylesheet_link_tag 'application' %>
9
+ <%= javascript_include_tag 'application' %>
10
+
11
+ <title>
12
+ <%= umlaut_config.app_name %> <%= "| #{@page_title}" if @page_title %>
13
+ </title>
14
+
15
+ <%= render_umlaut_head_content %>
16
+
17
+ </head>
18
+ <body>
19
+
20
+ <div class="umlaut container">
21
+
22
+ <div class="header">
23
+ <h1><%= umlaut_config.app_name %></h1>
24
+ </div>
25
+
26
+
27
+ <% if @user_request %>
28
+ <div class="headerStatusBar">
29
+ <div align="right" class="largeText">URL:
30
+ <% url = permalink_url(request, @user_request) %>
31
+ <%= link_to url, url %>
32
+ </div>
33
+ </div>
34
+ <% end %>
35
+
36
+
37
+ <%= yield %>
38
+
39
+ <!-- even with nothing in it, footer neccesary for CSS clear=both -->
40
+ <div id="footer" class="footer">
41
+ <%= render_service_credits %>
42
+ <!-- links to aid in debugging openurls gone wrong when in production -->
43
+ <%= link_to_test_resolve %>
44
+ <%= link_to_direct_sfx %>
45
+ <%= link_to_toggle_debug_info %>
46
+ </div>
47
+
48
+ </div>
49
+
50
+ </body>
51
+ </html>
52
+
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
3
+ <ShortName><%= umlaut_config.lookup!("opensearch_short_name", "Find Journals") %></ShortName>
4
+ <Description><%= umlaut_config.lookup!("opensearch_description") %></Description>
5
+ <InputEncoding>UTF-8</InputEncoding>
6
+ <Url type="text/html"
7
+ template="<%= opensearch_template_url %>" />
8
+ <Query role="example" searchTerms="journal" />
9
+ </OpenSearchDescription>
@@ -0,0 +1,21 @@
1
+ <%
2
+ if any_services_in_progress? %>
3
+ <complete value="false">false</complete>
4
+ <in_progress>
5
+ <% # URLS delivered by url_for already come with &amp; rather than & seperating query params, no need to XML-escape them. I used to not realize that and send them through REXML::Text to escape them. Old versions of REXML were buggy, and avoided double escaping. New versions are not buggy and the unneccesary trip through REXML::Text messed them up. Phew, that was crazy to debug
6
+ %>
7
+ <umlaut_request_id><%= @user_request.id %></umlaut_request_id>
8
+ <refresh_url><%=
9
+ url_for(params.merge( :'umlaut.request_id' => @user_request.id, :only_path => false ) ) %></refresh_url>
10
+ <refresh_url_path><%= url_for(params.merge( :'umlaut.request_id' => @user_request.id, :only_path => true ) ) %></refresh_url_path>
11
+ <refresh_url_partial_path><%= url_for(params.merge( :'umlaut.request_id' => @user_request.id, :only_path => true, :skip_relative_url_root => true ) ) %></refresh_url_partial_path>
12
+ <requested_wait_seconds><%= umlaut_config.lookup!("poll_wait_seconds", 4)%></requested_wait_seconds>
13
+ <services_in_progress>
14
+ <% @user_request.services_in_progress.collect { |s| s.service_types_generated}.flatten.uniq.each do |type| %>
15
+ <service name="<%= type.name %>" />
16
+ <% end %>
17
+ </services_in_progress>
18
+ </in_progress>
19
+ <% else %>
20
+ <complete value="true">true</complete>
21
+ <% end %>
@@ -0,0 +1,51 @@
1
+ <% # Partial to display spinner for background services in progress.
2
+ # Also degrades fairly nicely to non-javascript.
3
+ #
4
+ # Pass in local variables as arguments (:locals param to render method):
5
+ #
6
+ # svc_type : String or ServiceTypeValue that we should be
7
+ # paying attention to. This or service_types is required.
8
+ #
9
+ # svc_types: Array of Strings or ServiceTypeValue for multiple.
10
+ #
11
+ # div_id: id of div that progress content is put in. Optional, defaults
12
+ # to "progress_#{svc_type.name}", good idea especially if it won't be
13
+ # unique otherwise.
14
+ #
15
+ # current_set_empty: optional. defaults to false. If true, then
16
+ # the word 'more' won't be used in note to user, since it's not 'more'!
17
+
18
+ # Strategy of this output: We start out outputting our non-js
19
+ # version. Then we immediately use js to over-write it with our
20
+ # js version. So js people get js, non get non, everyone is happy.
21
+ # Further investigation may need to be done to optimize specifically
22
+ # for JAWS (which is neither full js nor non js, but some js--right
23
+ # now I think they'll just get the non-js version, but we can do better.)
24
+
25
+ svc_types = [] if svc_types.nil?
26
+ svc_types.push(svc_type).uniq! if defined?(svc_type) && ! svc_type.nil?
27
+ # convert any Strings to ServiceTypeValues.
28
+ svc_types = svc_types.collect { |t| t.kind_of?(ServiceTypeValue) ? t : ServiceTypeValue[t] }
29
+
30
+
31
+ div_id = "progress_#{svc_types[0].name}" unless div_id
32
+ current_set_empty = false if current_set_empty.nil?
33
+
34
+ item_name ||= svc_types[0].display_name_pluralize
35
+ progress_message ||= "Searching for #{current_set_empty ? "" : "more "} #{item_name}"
36
+ %>
37
+
38
+ <% # only display if there are more!
39
+ if service_types_in_progress?(svc_types) %>
40
+ <div id="<%= div_id %>" class="background_progress_spinner" >
41
+
42
+ <%=
43
+ image_tag('spinner.gif', :alt =>"") %>
44
+ <span class="message"><%= progress_message %></span>
45
+
46
+ <noscript>
47
+ <%= link_to "Load #{current_set_empty ? "" : "more"} #{item_name}.", {:action => "background_status", :"umlaut.request_id" => @user_request.id, :"umlaut.skip_resolve_menu" => params['umlaut.skip_resolve_menu']} %>
48
+ </noscript>
49
+ </div>
50
+
51
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <%-
2
+ # Include this partial to put the background updater device on your page.
3
+ # This actually just sets up the Umlaut JQuery background updater, for
4
+ # unobtrusive adding of background html content to menu page.
5
+ -%>
6
+
7
+ <%
8
+ # only include if we have any background services. We could check to make
9
+ # sure we only have background services we care about, but it's more work--
10
+ # the updater will only run ONCE at most wrongly, then the
11
+ # background_update action will stop it.
12
+ if ( any_services_in_progress? )
13
+ %>
14
+ <script type="text/javascript">
15
+ //<![CDATA[
16
+ jQuery(document).ready( function($) {
17
+ var updater = new Umlaut.HtmlUpdater("<%= root_url %>" , "umlaut.request_id=<%= @user_request.id %>" );
18
+
19
+ <% bg_update_sections.collect do |section| %>
20
+ updater.add_section_target({ umlaut_section_id: "<%= section[:div_id] %>" });
21
+ <% end %>
22
+
23
+
24
+ //Wait the designated number of seconds before kicking off the first bg
25
+ //update request. Future requests will be automatically made with delay..
26
+ setTimeout(function() { updater.update(); },
27
+ <%= umlaut_config.lookup!("poll_wait_seconds", 4)*1000 %>
28
+ );
29
+
30
+ });
31
+
32
+
33
+
34
+
35
+ //]]>
36
+ </script>
37
+
38
+ <% end %>
@@ -0,0 +1,87 @@
1
+
2
+
3
+
4
+ <table id="citation" width="100%" cellpadding="3" cellspacing="0">
5
+ <%
6
+ cite = @user_request.referent.to_citation
7
+ #rft_metadata = @user_request.referent.metadata
8
+ %>
9
+
10
+ <tr>
11
+ <td class="largeTextb" width="90" valign="TOP"><div align="right"><%= cite[:title_label] %>:</div></td>
12
+
13
+ <td class="largeText"><%= cite[:title] %></td>
14
+ </tr>
15
+ <% # Try to warn if this could be a typo. If we have an rft.object_id, then
16
+ # SFX recognized it as an actually existing journal. If not, then it
17
+ # might be a typo. If it came from a manually entered citation, warn them.
18
+
19
+ if display_not_found_warning?(@user_request)
20
+ %>
21
+ <tr><td class="largeTextb notice"><div align="right">(!) Warning:</div></td><td class="largeText notice"><%= umlaut_config.app_name %> does not know about a <%= (@user_request.referent.format).downcase %> with this name. Please check your entry.</td></tr>
22
+
23
+ <% end %>
24
+
25
+
26
+ <%
27
+ @page_title = cite[:title]
28
+ if cite[:author]
29
+ %>
30
+ <tr>
31
+ <td width="90" class="largeTextb"><div align="right">Author:</div></td>
32
+ <td class="largeText"><%= cite[:author] %></td>
33
+ </tr>
34
+ <%
35
+ end
36
+ if cite[:subtitle] %>
37
+ <tr>
38
+ <td width="90"><div align="right" class="smallTextb"><strong><%= cite[:subtitle_label] %>:</strong></div></td>
39
+ <td><span class="smallText"><%= cite[:subtitle] %></span></td>
40
+ </tr>
41
+ <%
42
+ end
43
+
44
+ if (cite[:issn] && ! cite[:issn].empty?) %>
45
+ <tr>
46
+ <td><div align="right" class="smallTextb"><strong>ISSN:</strong></div></td>
47
+ <td><span class="smallText"><%= cite[:issn] %></span></td>
48
+ </tr>
49
+ <%
50
+ end
51
+
52
+ if (cite[:isbn] && ! cite[:isbn].empty? ) %>
53
+ <tr>
54
+ <td><div align="right" class="smallTextb">ISBN:</strong></div></td>
55
+ <td><span class="smallText"><%= cite[:isbn] %></span></td>
56
+ </tr>
57
+ <%
58
+ end %>
59
+
60
+ <% unless cite[:pub].blank? %>
61
+ <tr>
62
+ <td><div align="right" class="smallTextb">Publisher:</div></td>
63
+ <td><span class="smallText"><%= cite[:pub] %> <td></tr>
64
+ <% end %>
65
+
66
+ <% unless cite[:date].blank? && cite[:volume].blank? && cite[:issue].blank? && cite[:page].blank? %>
67
+ <tr>
68
+ <td><div align="right" class="smallTextb">Published:</div></td>
69
+ <td><span class="smallText">
70
+ <%= date_format(cite[:date]) %>&nbsp;&nbsp;
71
+
72
+ <% unless cite[:volume].blank? %>
73
+ Volume:&nbsp;&nbsp;<%= cite[:volume] %>&nbsp;&nbsp;
74
+ <% end %>
75
+ <% unless cite[:issue].blank? %>
76
+ Issue:&nbsp;&nbsp;<%= cite[:issue] %>&nbsp;&nbsp;
77
+ <% end %>
78
+ <% unless cite[:page].blank? %>
79
+ Page:&nbsp;&nbsp;<%= cite[:page] %>&nbsp;&nbsp;
80
+ <% end %>
81
+ </span></td>
82
+ </tr>
83
+ <% end %>
84
+ </table>
85
+
86
+
87
+
@@ -0,0 +1 @@
1
+ <%= @user_request.to_context_object.coins.html_safe %>
@@ -0,0 +1,33 @@
1
+ <% # When you need a citation in a tiny amount of space, just the
2
+ # most important info, displayed compactly.
3
+ %>
4
+
5
+ <%
6
+ cite = @user_request.referent.to_citation
7
+ %>
8
+
9
+ <%
10
+ if cite[:author]
11
+ %><span class="smallText"><%= h(cite[:author].chomp) -%>.</span>
12
+ <% end %>
13
+
14
+ <span class="smallText">"<%= h(truncate(cite[:title], :length => 70, :seperator => '...')) %>"
15
+
16
+
17
+
18
+ <%
19
+ if cite[:subtitle] %>
20
+ <%= content_tag( ((@user_request.referent.format =~ /article|journal|issue|report/i) ? 'i' : 'span'), cite[:subtitle]) %>
21
+ <% end %>
22
+ <%
23
+ pub = []
24
+ pub << '.' << date_format(cite[:date]) unless cite[:date].blank?
25
+ pub << '. Volume:&nbsp;'+cite[:volume] unless cite[:volume].blank?
26
+ pub << '. Issue:&nbsp;'+cite[:issue] unless cite[:issue].blank?
27
+ pub << '. Page:&nbsp;'+cite[:page] unless cite[:page].blank?
28
+ if pub.length > 0
29
+ %>
30
+ <%= pub.join(' ')%>.
31
+
32
+ <% end %>
33
+ </span>
@@ -0,0 +1,35 @@
1
+ <%=
2
+ # Set parameter for size, small|medium|large if you like
3
+ size ||= "medium"
4
+ fix_size ||= true
5
+
6
+ # small med and x-large correspond roughly to amazon sm, med and lg.
7
+ # large corresponds roughly to google medium. Just one dimension to
8
+ # prevent disproportionate scaling.
9
+ dimensions = { "small" => { "height" => 80 },
10
+ "medium" => { "height" => 160},
11
+ "large" => { "height" => 200 },
12
+ "extra-large" => { "height" => 475}}
13
+
14
+
15
+
16
+ img_st = cover_image_response(size)
17
+ if img_st
18
+ img_data = img_st.view_data
19
+
20
+ img_params = {'src'=>img_data[:url],
21
+ 'class'=>'cover_image',
22
+ 'alt'=>h(img_data[:display_text])}
23
+
24
+ # If we're in https mode, and the original url is http, use
25
+ # Umlaut proxy to avoid browser security warning.
26
+ if (request.protocol != img_params['src'][0..6])
27
+ img_params['src'] = url_for(:controller => "resource", :action => "proxy", :id => img_st.id )
28
+ end
29
+
30
+ img_params.merge!( dimensions[size]) if fix_size
31
+
32
+ tag('img', img_params )
33
+
34
+ end %>
35
+
@@ -0,0 +1,55 @@
1
+ <%
2
+
3
+ #debugger
4
+ all_responses = fulltext
5
+
6
+ (title_level_fulltxt, fulltxt) =
7
+ all_responses.partition {|i| i.view_data[:coverage_checked] == false || i.view_data[:can_link_to_article] == false}
8
+ # order em with full fulltxt before title_level_fulltxt
9
+ all_responses = fulltxt + title_level_fulltxt
10
+ %>
11
+
12
+ <div class="umlaut_section fulltext <%= unless fulltxt.blank? && title_level_fulltxt.blank?; 'highlighted_section' ; end %>">
13
+
14
+ <%= renderer.render_heading %>
15
+
16
+
17
+ <div class="umlaut_section_content">
18
+
19
+ <%= list_with_limit('umlaut_fulltext',
20
+ all_responses,
21
+ :ul_class => "response_list",
22
+ :limit => renderer.list_visible_limit ) do |item, index | %>
23
+
24
+ <%
25
+ # Display special warnign header if it's title-level only,
26
+ # and it's an article or issue level link. Are we
27
+ # at the beginning of title level display?
28
+ if ( index == fulltxt.length &&
29
+ !title_level_request? )
30
+ genre = @user_request.referent.metadata['genre']
31
+ genre = "Journal" if genre && genre.downcase == 'article' %>
32
+ </ul>
33
+ <div class="section_subheading">
34
+ <h4><%= genre ? genre.titlecase : "Title" %>-level Page Only</h4>
35
+ <p><span class="notice">Can not link directly to citation. Dates or extent of coverage may be unknown.</span></p>
36
+ </div>
37
+ <ul class="response_list">
38
+ <% end %>
39
+
40
+ <%= render(:partial => "standard_response_item", :object=> item) %>
41
+ <% end %>
42
+
43
+ <%
44
+ if (fulltxt.empty? && title_level_fulltxt.empty? &&
45
+ ! service_type_in_progress?('fulltext'))
46
+ %>
47
+ <ul class="response_list fulltext">
48
+ <li><p class="notAvailable">Not Available </p></li>
49
+ </ul>
50
+ <% end %>
51
+
52
+ <%= render( renderer.spinner_render_hash) if renderer.services_in_progress? %>
53
+ </div>
54
+ </div>
55
+
@@ -0,0 +1,17 @@
1
+
2
+
3
+
4
+ <span id="helpicon">?</span>
5
+ <span class="smallText">Question? Problem? Contact:</span>
6
+ <ul style="text-align: right">
7
+ <% help.each do |help|
8
+ value_hash = help.view_data %>
9
+ <li> <%= link_to value_hash[:display_text], {:controller=>'link_router', :id=>help.id}, 'target'=>"_blank" %>
10
+ <% unless value_hash[:note].blank? %>
11
+ <br />
12
+ <%= value_hash[:note] %>
13
+ <% end %>
14
+ </li>
15
+ <% end %>
16
+ </ul>
17
+