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.
- data/LICENSE +7 -0
- data/README.md +49 -0
- data/Rakefile +37 -0
- data/app/assets/images/error.gif +0 -0
- data/app/assets/images/export_bg_bot.gif +0 -0
- data/app/assets/images/export_bg_mid.gif +0 -0
- data/app/assets/images/export_bg_top.gif +0 -0
- data/app/assets/images/famfamfam/book_open.png +0 -0
- data/app/assets/images/famfamfam/cross.png +0 -0
- data/app/assets/images/famfamfam/page_sound.gif +0 -0
- data/app/assets/images/famfamfam/page_text.gif +0 -0
- data/app/assets/images/famfamfam/page_up.gif +0 -0
- data/app/assets/images/famfamfam/page_white.png +0 -0
- data/app/assets/images/famfamfam/readme.html +1495 -0
- data/app/assets/images/famfamfam/tiny_cross.png +0 -0
- data/app/assets/images/frame_remove.gif +0 -0
- data/app/assets/images/ico_go.gif +0 -0
- data/app/assets/images/jhu_findit.gif +0 -0
- data/app/assets/images/list_closed.png +0 -0
- data/app/assets/images/list_open.png +0 -0
- data/app/assets/images/more_info.gif +0 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/request.gif +0 -0
- data/app/assets/images/spinner.gif +0 -0
- data/app/assets/javascripts/umlaut/ajax_windows.js +35 -0
- data/app/assets/javascripts/umlaut/ensure_window_size.js.erb +34 -0
- data/app/assets/javascripts/umlaut/expand_contract_toggle.js +25 -0
- data/app/assets/javascripts/umlaut/search_autocomplete.js +46 -0
- data/app/assets/javascripts/umlaut/simple_visible_toggle.js +8 -0
- data/app/assets/javascripts/umlaut/update_html.js +152 -0
- data/app/assets/javascripts/umlaut.js +17 -0
- data/app/assets/stylesheets/umlaut.css +857 -0
- data/app/controllers/application_controller.rb +14 -0
- data/app/controllers/export_email_controller.rb +123 -0
- data/app/controllers/js_helper_controller.rb +10 -0
- data/app/controllers/link_router_controller.rb +87 -0
- data/app/controllers/open_search_controller.rb +9 -0
- data/app/controllers/resolve_controller.rb +288 -0
- data/app/controllers/resource_controller.rb +83 -0
- data/app/controllers/search_controller.rb +328 -0
- data/app/controllers/search_methods/sfx3.rb +148 -0
- data/app/controllers/search_methods/sfx4.rb +257 -0
- data/app/controllers/search_methods/sfx_api.rb +47 -0
- data/app/controllers/store_controller.rb +64 -0
- data/app/controllers/umlaut/controller_behavior.rb +20 -0
- data/app/controllers/umlaut/controller_logic.rb +96 -0
- data/app/controllers/umlaut/error_handling.rb +48 -0
- data/app/controllers/umlaut_controller.rb +112 -0
- data/app/helpers/application_helper.rb +4 -0
- data/app/helpers/emailer_helper.rb +43 -0
- data/app/helpers/export_email_helper.rb +34 -0
- data/app/helpers/open_search_helper.rb +7 -0
- data/app/helpers/resolve_helper.rb +225 -0
- data/app/helpers/search_helper.rb +50 -0
- data/app/helpers/umlaut/footer_helper.rb +64 -0
- data/app/helpers/umlaut/helper.rb +62 -0
- data/app/helpers/umlaut/html_head_helper.rb +37 -0
- data/app/helpers/umlaut/url_generation.rb +77 -0
- data/app/mailers/emailer.rb +48 -0
- data/app/models/clickthrough.rb +2 -0
- data/app/models/collection.rb +259 -0
- data/app/models/crossref_lookup.rb +2 -0
- data/app/models/dispatched_service.rb +58 -0
- data/app/models/permalink.rb +29 -0
- data/app/models/referent.rb +473 -0
- data/app/models/referent_value.rb +14 -0
- data/app/models/request.rb +449 -0
- data/app/models/service_response.rb +179 -0
- data/app/models/service_store.rb +59 -0
- data/app/models/service_type_value.rb +58 -0
- data/app/models/service_wave.rb +150 -0
- data/app/models/sfx_db/az_additional_title.rb +11 -0
- data/app/models/sfx_db/az_letter_group.rb +11 -0
- data/app/models/sfx_db/az_title.rb +38 -0
- data/app/models/sfx_db/az_title_v2.rb +34 -0
- data/app/models/sfx_db/isbn.rb +12 -0
- data/app/models/sfx_db/issn.rb +12 -0
- data/app/models/sfx_db/object.rb +35 -0
- data/app/models/sfx_db/object_portfolio.rb +6 -0
- data/app/models/sfx_db/publisher.rb +10 -0
- data/app/models/sfx_db/sfx_db_base.rb +54 -0
- data/app/models/sfx_db/target.rb +9 -0
- data/app/models/sfx_db/target_service.rb +10 -0
- data/app/models/sfx_db/title.rb +10 -0
- data/app/models/sfx_db.rb +10 -0
- data/app/models/sfx_url.rb +35 -0
- data/app/views/emailer/citation.text.erb +28 -0
- data/app/views/emailer/short_citation.text.erb +8 -0
- data/app/views/export_email/_email.html.erb +25 -0
- data/app/views/export_email/_send_email.html.erb +3 -0
- data/app/views/export_email/_send_txt.html.erb +3 -0
- data/app/views/export_email/_txt.html.erb +62 -0
- data/app/views/export_email/email.html.erb +3 -0
- data/app/views/export_email/send_email.html.erb +1 -0
- data/app/views/export_email/send_txt.html.erb +1 -0
- data/app/views/export_email/txt.html.erb +3 -0
- data/app/views/js_helper/loader.erb.js +13 -0
- data/app/views/layouts/umlaut.html.erb +52 -0
- data/app/views/open_search/index.html.erb +9 -0
- data/app/views/resolve/_api_in_progress.xml.erb +21 -0
- data/app/views/resolve/_background_progress.html.erb +51 -0
- data/app/views/resolve/_background_updater.html.erb +38 -0
- data/app/views/resolve/_citation.html.erb +87 -0
- data/app/views/resolve/_coins.html.erb +1 -0
- data/app/views/resolve/_compact_citation.html.erb +33 -0
- data/app/views/resolve/_cover_image.html.erb +35 -0
- data/app/views/resolve/_fulltext.html.erb +55 -0
- data/app/views/resolve/_help.html.erb +17 -0
- data/app/views/resolve/_holding.html.erb +91 -0
- data/app/views/resolve/_related_items.html.erb +35 -0
- data/app/views/resolve/_search_inside.html.erb +62 -0
- data/app/views/resolve/_section_display.html.erb +49 -0
- data/app/views/resolve/_service_errors.html.erb +29 -0
- data/app/views/resolve/_standard_response_item.html.erb +89 -0
- data/app/views/resolve/api.xml.builder +72 -0
- data/app/views/resolve/background_status.html.erb +26 -0
- data/app/views/resolve/index.html.erb +73 -0
- data/app/views/resolve/partial_html_sections.xml.erb +30 -0
- data/app/views/search/_a_to_z.html.erb +6 -0
- data/app/views/search/_citation.html.erb +94 -0
- data/app/views/search/_pager.html.erb +60 -0
- data/app/views/search/books.html.erb +103 -0
- data/app/views/search/journal_search.html.erb +90 -0
- data/app/views/search/journals.html.erb +167 -0
- data/app/views/search/opensearch_description.rxml +10 -0
- data/app/views/testing/index.html.erb +1 -0
- data/app/views/umlaut/README +5 -0
- data/app/views/umlaut/error.html.erb +45 -0
- data/db/migrate/01_umlaut_init.rb +113 -0
- data/db/orig_fixed_data/service_type_values.yml +120 -0
- data/db/seeds.rb +7 -0
- data/lib/CronTab.rb +192 -0
- data/lib/aws_product_sign.rb +146 -0
- data/lib/exlibris/aleph/patron.rb +64 -0
- data/lib/exlibris/aleph/record.rb +54 -0
- data/lib/exlibris/aleph/rest_api.rb +29 -0
- data/lib/exlibris/primo/holding.rb +192 -0
- data/lib/exlibris/primo/rsrc.rb +17 -0
- data/lib/exlibris/primo/searcher.rb +276 -0
- data/lib/exlibris/primo/source/aleph.rb +46 -0
- data/lib/exlibris/primo/source/distribution/nyu_aleph.rb +323 -0
- data/lib/exlibris/primo/toc.rb +17 -0
- data/lib/exlibris/primo_ws.rb +140 -0
- data/lib/generators/templates/umlaut_services.yml +237 -0
- data/lib/generators/umlaut/asset_hooks_generator.rb +44 -0
- data/lib/generators/umlaut/install_generator.rb +110 -0
- data/lib/hip3/bib.rb +291 -0
- data/lib/hip3/bib_searcher.rb +302 -0
- data/lib/hip3/custom_field_lookup.rb +44 -0
- data/lib/hip3/holding.rb +50 -0
- data/lib/hip3/item.rb +65 -0
- data/lib/hip3/receipt.rb +7 -0
- data/lib/hip3/serial_copy.rb +82 -0
- data/lib/holding.rb +32 -0
- data/lib/marc_helper.rb +254 -0
- data/lib/metadata_helper.rb +312 -0
- data/lib/opensearch_feed.rb +398 -0
- data/lib/opensearch_query.rb +98 -0
- data/lib/referent_filter.rb +16 -0
- data/lib/referent_filters/dissertation_catch.rb +45 -0
- data/lib/section_renderer.rb +503 -0
- data/lib/service.rb +336 -0
- data/lib/service_adaptors/ajax_export.rb +37 -0
- data/lib/service_adaptors/amazon.rb +412 -0
- data/lib/service_adaptors/blacklight.rb +327 -0
- data/lib/service_adaptors/book_finder.rb +40 -0
- data/lib/service_adaptors/bx.rb +51 -0
- data/lib/service_adaptors/cover_thing.rb +73 -0
- data/lib/service_adaptors/elsevier_cover.rb +57 -0
- data/lib/service_adaptors/email_export.rb +10 -0
- data/lib/service_adaptors/ezproxy.rb +171 -0
- data/lib/service_adaptors/google_book_search.rb +442 -0
- data/lib/service_adaptors/gpo.rb +124 -0
- data/lib/service_adaptors/hathi_trust.rb +308 -0
- data/lib/service_adaptors/hip3_service.rb +150 -0
- data/lib/service_adaptors/hip_holding_search.rb +237 -0
- data/lib/service_adaptors/internet_archive.rb +488 -0
- data/lib/service_adaptors/isbn_db.rb +86 -0
- data/lib/service_adaptors/isi.rb +258 -0
- data/lib/service_adaptors/jcr.rb +146 -0
- data/lib/service_adaptors/opac.rb +351 -0
- data/lib/service_adaptors/open_library.rb +316 -0
- data/lib/service_adaptors/open_library_cover.rb +73 -0
- data/lib/service_adaptors/primo_service.rb +392 -0
- data/lib/service_adaptors/primo_source.rb +78 -0
- data/lib/service_adaptors/pubmed.rb +133 -0
- data/lib/service_adaptors/request_to_fixture.rb +68 -0
- data/lib/service_adaptors/scopus.rb +295 -0
- data/lib/service_adaptors/sfx-new.rb +557 -0
- data/lib/service_adaptors/sfx.rb +566 -0
- data/lib/service_adaptors/sfx_backchannel_record.rb +69 -0
- data/lib/service_adaptors/txt_holding_export.rb +32 -0
- data/lib/service_adaptors/ulrichs_cover.rb +57 -0
- data/lib/service_adaptors/ulrichs_link.rb +47 -0
- data/lib/service_adaptors/worldcat.rb +116 -0
- data/lib/service_adaptors/worldcat_identities.rb +591 -0
- data/lib/tasks/umlaut.rake +134 -0
- data/lib/umlaut/default_configuration.rb +5 -0
- data/lib/umlaut/routes.rb +136 -0
- data/lib/umlaut/version.rb +3 -0
- data/lib/umlaut.rb +37 -0
- data/lib/umlaut_configurable.rb +343 -0
- data/lib/umlaut_http.rb +100 -0
- data/lib/xml_schema_helper.rb +109 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/umlaut_controller.rb +112 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +45 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database-jhu.yml +44 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +34 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +61 -0
- data/test/dummy/config/umlaut_services.yml +237 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/migrate/20111228211210_umlaut_init.rb +113 -0
- data/test/dummy/db/schema.rb +124 -0
- data/test/dummy/log/development.log +12981 -0
- data/test/dummy/log/production.log +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7 +0 -0
- data/test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80 +0 -0
- data/test/dummy/tmp/cache/assets/C73/920/sprockets%2Fd371318f22900492fd180f17c5e2a504 +9268 -0
- data/test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
- data/test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe47e28558116fb5f8038754e60d1961d +11769 -0
- data/test/dummy/tmp/cache/assets/CAA/EB0/sprockets%2F1d179210e8b76f1ea63c802688a015e4 +9271 -0
- data/test/dummy/tmp/cache/assets/CBB/9C0/sprockets%2F706f28923fb754cad04b9107c89986a1 +0 -0
- data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
- data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
- data/test/dummy/tmp/cache/assets/CF6/F20/sprockets%2F5b2ffa1103079dfd555197838f87a99f +0 -0
- data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +862 -0
- data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
- data/test/dummy/tmp/cache/assets/D22/060/sprockets%2F9aec77b768e91a802d284271c58e2f7e +21357 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D33/6D0/sprockets%2F500129c57f1146e556ec3aacd6cd38c1 +0 -0
- data/test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf +0 -0
- data/test/dummy/tmp/cache/assets/D42/C20/sprockets%2Fbcf14e437b1582bf93b77670acf8e090 +21353 -0
- data/test/dummy/tmp/cache/assets/D50/A30/sprockets%2F7d8b294ac433db5d056538f8cf7c66b9 +0 -0
- data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +872 -0
- data/test/dummy/tmp/cache/assets/D65/590/sprockets%2Fc1bb92fc3406a126b7dd302edc96d629 +0 -0
- data/test/dummy/tmp/cache/assets/D71/6B0/sprockets%2Fde558b71b494cf09b1bf055c8dff0353 +0 -0
- data/test/dummy/tmp/cache/assets/D72/610/sprockets%2Fa8c708eeb30ef93de34d755d4f45d023 +859 -0
- data/test/dummy/tmp/cache/assets/D76/AD0/sprockets%2Fe2158cde93188cf5ab6457bc6d6602ec +0 -0
- data/test/dummy/tmp/cache/assets/D7A/E40/sprockets%2F9622ffcc499a57627cd1bb18fe31b8e4 +11772 -0
- data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
- data/test/dummy/tmp/cache/assets/D9B/770/sprockets%2F8aacf02eb7dbb0949704b28f27b87e0b +0 -0
- data/test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
- data/test/dummy/tmp/cache/assets/DF7/F30/sprockets%2F7bc16c4109b17fabe29f8ddbbf732d1c +374 -0
- data/test/dummy/tmp/cache/assets/E03/570/sprockets%2F493bdc0ac14cd4f57fdfe4253f992bde +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E0B/4B0/sprockets%2F7988df51a61c81ce6ede4a2d4c8cce4f +377 -0
- data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
- data/test/fixtures/dispatched_services.yml +5 -0
- data/test/fixtures/permalinks.yml +5 -0
- data/test/fixtures/referent_values.yml +1734 -0
- data/test/fixtures/referents.yml +156 -0
- data/test/fixtures/requests.yml +284 -0
- data/test/fixtures/service_responses.yml +5 -0
- data/test/fixtures/sfx_urls.yml +4 -0
- data/test/performance/browsing_test.rb +9 -0
- data/test/test_helper.rb +10 -0
- data/test/umlaut_test.rb +7 -0
- data/test/unit/aleph_patron_test.rb +39 -0
- data/test/unit/aleph_record_benchmarks.rb +28 -0
- data/test/unit/aleph_record_test.rb +30 -0
- data/test/unit/aws_product_sign_test.rb +93 -0
- data/test/unit/collection_test.rb +76 -0
- data/test/unit/google_book_search_test.rb +101 -0
- data/test/unit/primo_searcher_test.rb +403 -0
- data/test/unit/primo_service_test.rb +939 -0
- data/test/unit/primo_ws_test.rb +131 -0
- data/test/unit/service_response_test.rb +9 -0
- data/test/unit/service_test.rb +33 -0
- metadata +580 -0
@@ -0,0 +1,91 @@
|
|
1
|
+
<%
|
2
|
+
=begin
|
3
|
+
jrochkind's alternative partial for displaying holdings. Displays more
|
4
|
+
information to deal with the more information we need to display from
|
5
|
+
our Horizon. In tabular format. Customized for JH's needs, but should
|
6
|
+
be usable by anyone.
|
7
|
+
=end
|
8
|
+
%>
|
9
|
+
|
10
|
+
|
11
|
+
<div class="section_content_indent">
|
12
|
+
<% holdings = get_service_type('holding') %>
|
13
|
+
<% unless holdings.empty? %>
|
14
|
+
<table style="width: 100%">
|
15
|
+
<%
|
16
|
+
holdings.each do |p|
|
17
|
+
target = p.view_data
|
18
|
+
%>
|
19
|
+
<tr><td class="holding_heading_row"><h4><%= target[:collection_str] %></h4></td>
|
20
|
+
<td class="holding_heading_row"><span style="white-space: nowrap;"><%= target[:call_number]%></span></td>
|
21
|
+
|
22
|
+
<% status_class = (target[:status] == "Not Charged" or target[:status] == "Available") ? 'available' : '' %>
|
23
|
+
|
24
|
+
<td class="holding_heading_row"><span class="<%= status_class %>"><%= target[:status] %></span></td>
|
25
|
+
|
26
|
+
<td class="holding_heading_row"><%= link_to(image_tag("more_info.gif", "border" => 0, "alt" => 'more info'), {:controller=>"link_router", :id=>p.id}, "target" => "_blank") %>
|
27
|
+
|
28
|
+
<% if target[:request_url] %>
|
29
|
+
<br />
|
30
|
+
<%= link_to( image_tag("request.gif", "border" => "0", "alt" => "request"), target[:request_url], "target" => "_blank" ) %>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
</td>
|
34
|
+
</tr>
|
35
|
+
|
36
|
+
<% if (!target[:match_reliability].blank?) && target[:match_reliability] != ServiceResponse::MatchExact %>
|
37
|
+
<tr>
|
38
|
+
<td colspan="4">
|
39
|
+
<div class="section_content_indent edition_warning">
|
40
|
+
<% unless target[:edition_str].blank? %>
|
41
|
+
<em class="note label">Edition information</em> <%= target[:edition_str] %>
|
42
|
+
<% else %>
|
43
|
+
<em class="note label">May be alternate edition.</em>
|
44
|
+
<% end %>
|
45
|
+
<div>
|
46
|
+
</td>
|
47
|
+
</tr>
|
48
|
+
<% end %>
|
49
|
+
|
50
|
+
<% unless target[:notes].blank? %>
|
51
|
+
<tr>
|
52
|
+
<td colspan="4"><div class="section_content_indent"><%= target[:notes] %></div> </td>
|
53
|
+
</tr>
|
54
|
+
<% end %>
|
55
|
+
|
56
|
+
<% unless target[:coverage_str_array].blank? %>
|
57
|
+
<tr>
|
58
|
+
<td colspan="4">
|
59
|
+
|
60
|
+
<%=
|
61
|
+
list_with_limit("copies_#{p.id}", target[:coverage_str_array]) do |item, index|
|
62
|
+
%>
|
63
|
+
<li><%= item %></li>
|
64
|
+
<% end %>
|
65
|
+
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
<% end %>
|
69
|
+
<%
|
70
|
+
end %>
|
71
|
+
</table>
|
72
|
+
<% end %>
|
73
|
+
|
74
|
+
|
75
|
+
<%
|
76
|
+
if holdings.empty?
|
77
|
+
searches = get_service_type('holding_search')
|
78
|
+
searches.each do | result_st |
|
79
|
+
response = result_st.view_data %>
|
80
|
+
<p><%= link_to response[:display_text], {:controller=>'link_router', :id=>result_st.id}, 'target'=>"_blank" %> </p>
|
81
|
+
<%
|
82
|
+
end
|
83
|
+
end
|
84
|
+
if (holdings.blank? && searches.blank? && ! service_types_in_progress?(['holding', 'holding_search']))
|
85
|
+
%>
|
86
|
+
<p class="notAvailable">Not Available </p>
|
87
|
+
<%
|
88
|
+
end %>
|
89
|
+
|
90
|
+
|
91
|
+
</div>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%
|
2
|
+
cited_by = get_service_type('cited_by')
|
3
|
+
similar = get_service_type('similar')
|
4
|
+
%>
|
5
|
+
|
6
|
+
|
7
|
+
<%= list_with_limit('umlaut_cited_by',
|
8
|
+
cited_by,
|
9
|
+
:ul_class => "related_items response_list") do |item, index | %>
|
10
|
+
<%= render(:partial => "standard_response_item", :object=> item, :locals => { :show_source => true, :li_class => "related_item"}) %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<%
|
14
|
+
if (cited_by.length > 0) && (similar.length > 0) %>
|
15
|
+
<!-- a little seperation for readability -->
|
16
|
+
<br class="seperator"/>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<%= list_with_limit('umlaut_similar_items',
|
20
|
+
similar,
|
21
|
+
:ul_class =>"related_items response_list") do |item, index | %>
|
22
|
+
<%= render(:partial => "standard_response_item", :object=> item, :locals => { :show_source => true}) %>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
<% if (!service_types_in_progress?([ServiceTypeValue['cited_by'], ServiceTypeValue['similar']])) && similar.empty? && cited_by.empty? %>
|
28
|
+
<ul class="related_items response_list">
|
29
|
+
<li><i>No related items found.</i></li>
|
30
|
+
</ul>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<%
|
2
|
+
search_providers = search_inside
|
3
|
+
%>
|
4
|
+
|
5
|
+
|
6
|
+
<%
|
7
|
+
# We don't show this block until ALL possible search inside tools
|
8
|
+
# have been found. Too hard to deal with AJAX update of a DIV
|
9
|
+
# that has a text input box in it otherwise.
|
10
|
+
if ( search_providers.length > 0 &&
|
11
|
+
! service_type_in_progress?('search_inside') ) %>
|
12
|
+
<div class="umlaut_section search_inside">
|
13
|
+
<div class="section_heading">
|
14
|
+
<h3>Search inside this
|
15
|
+
<%=
|
16
|
+
thing = @user_request.referent.type_of_thing
|
17
|
+
thing = 'journal' if thing == 'article'
|
18
|
+
thing
|
19
|
+
%></h3>
|
20
|
+
</div>
|
21
|
+
<% # We don't show the search box unless we have a search provider AND
|
22
|
+
# we're completely done loading search providers. Too hard
|
23
|
+
# to deal with AJAX updating of search providers without
|
24
|
+
# interrupting user.
|
25
|
+
%>
|
26
|
+
<div class="umlaut_section_content">
|
27
|
+
|
28
|
+
<form target="_blank" action="<%= url_for(:controller=>'link_router', :action=>'index') %>">
|
29
|
+
|
30
|
+
<span class="source">
|
31
|
+
via
|
32
|
+
<% if search_providers.length > 1 %>
|
33
|
+
<select name="id">
|
34
|
+
<% search_providers.each do |st| %>
|
35
|
+
<option value="<%= st.id %>"><%= st.view_data[:display_text] %></option>
|
36
|
+
<% end %>
|
37
|
+
</select>
|
38
|
+
<% else %>
|
39
|
+
<input type="hidden" name="id" value="<%= search_providers[0].id %>">
|
40
|
+
<%= search_providers[0].view_data[:display_text] %>:
|
41
|
+
<% end %>
|
42
|
+
</span>
|
43
|
+
|
44
|
+
<input name="query" type="text" /> <input value="search" type="submit">
|
45
|
+
</form>
|
46
|
+
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<%end%>
|
50
|
+
<!-- don't show the spinner unless it's identified as a book, otherwise
|
51
|
+
too likely to be a false promise -->
|
52
|
+
<%
|
53
|
+
if ( @user_request.referent.format == 'book' && service_type_in_progress?('search_inside')) %>
|
54
|
+
|
55
|
+
<%= render(:partial => "background_progress",
|
56
|
+
:locals => {
|
57
|
+
:svc_type => "search_inside",
|
58
|
+
:progress_message => "Looking for tools to search inside this #{@user_request.referent.type_of_thing}" }) %>
|
59
|
+
|
60
|
+
<% end %>
|
61
|
+
|
62
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<% # You generally shoudln't call this partial directly, it's called through
|
2
|
+
# the render_section helper method in resolve_helper.rb
|
3
|
+
%>
|
4
|
+
|
5
|
+
<% if presenter.visible? %>
|
6
|
+
|
7
|
+
<% unless presenter.show_partial_only? %>
|
8
|
+
<div class="umlaut_section <%= presenter.div_id %>">
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
|
12
|
+
<% if presenter.show_heading? %>
|
13
|
+
<%= presenter.render_heading %>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<% unless presenter.show_partial_only? %>
|
17
|
+
<div class="umlaut_section_content">
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% if presenter.custom_partial? %>
|
21
|
+
<%= render( presenter.content_render_hash ) %>
|
22
|
+
<% elsif presenter.list_visible_limit %>
|
23
|
+
|
24
|
+
<%= list_with_limit("#{presenter.div_id}_list_with_limit", presenter.responses_list, :limit => presenter.list_visible_limit, :ul_class => "response_list #{presenter.div_id}") do |item, index| %>
|
25
|
+
<%= render( presenter.item_render_hash(item) ) %>
|
26
|
+
<% end %>
|
27
|
+
<% elsif presenter.responses_list.length == 0 && ! presenter.services_in_progress?%>
|
28
|
+
<ul class="response_list">
|
29
|
+
<li>
|
30
|
+
None available.
|
31
|
+
</li>
|
32
|
+
</ul>
|
33
|
+
<% else %>
|
34
|
+
<ul class="response_list <%= presenter.div_id %>">
|
35
|
+
<%= render( presenter.content_render_hash ) %>
|
36
|
+
</ul>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if presenter.show_spinner? %>
|
40
|
+
<%= render(presenter.spinner_render_hash) %>
|
41
|
+
<% end %>
|
42
|
+
|
43
|
+
<% unless presenter.show_partial_only? %>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<% end %>
|
47
|
+
|
48
|
+
|
49
|
+
<% end %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
<%
|
3
|
+
failed_dispatches = failed_service_dispatches()
|
4
|
+
unless ( failed_dispatches.nil? || failed_dispatches.empty? ) %>
|
5
|
+
<div id="service_errors_content" class="small_right_box">
|
6
|
+
|
7
|
+
|
8
|
+
<span class="error_icon">(!)</span><span class="smallText">Some content may not be included due to errors:</span>
|
9
|
+
<ul>
|
10
|
+
<% failed_dispatches.each do | dispatch | %>
|
11
|
+
<li class="smallText">
|
12
|
+
Some <i><%= dispatch.service.service_types_generated.collect { |type|
|
13
|
+
type.display_name_pluralize.downcase}.join(",") %></i>
|
14
|
+
from <a class="simple_visible_toggle"><strong><%= dispatch.service.display_name %> </strong> </a>
|
15
|
+
<% exception_info = dispatch.exception_info %>
|
16
|
+
<div style="display: none;">
|
17
|
+
technical error information
|
18
|
+
<ul>
|
19
|
+
<li> <%= exception_info[:class_name] if exception_info %> </li>
|
20
|
+
<li> <%= exception_info[:message] if exception_info %> </li>
|
21
|
+
<li> dispatched service id: <%= dispatch.id %> </li>
|
22
|
+
</ul>
|
23
|
+
</div>
|
24
|
+
</li>
|
25
|
+
<% end %>
|
26
|
+
</ul>
|
27
|
+
<span class="clear"></span>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
@@ -0,0 +1,89 @@
|
|
1
|
+
<%
|
2
|
+
# Displays a typical Umlaut response element in typical markup.
|
3
|
+
# Pass in a ServiceType object for the response using Rails partial
|
4
|
+
# :object or :collection convention
|
5
|
+
|
6
|
+
#optional argument, :locals =>
|
7
|
+
# :show_source => default false, if true display the source of the link
|
8
|
+
show_source ||= false
|
9
|
+
|
10
|
+
service_response = standard_response_item # passed in via :object or :collection
|
11
|
+
# passed in in :object or :collection
|
12
|
+
view_data = service_response.view_data
|
13
|
+
%>
|
14
|
+
|
15
|
+
<li class="response_item">
|
16
|
+
|
17
|
+
<!-- fancy schmancy ajax? But not if we're generating embed partials,
|
18
|
+
won't work. -->
|
19
|
+
<% if view_data[:link_supports_ajax_call]
|
20
|
+
# Generate a hyperlink that will call our standard service action
|
21
|
+
# due to special class for unobtrusive JS.
|
22
|
+
%>
|
23
|
+
<%= link_to(view_data[:display_text],
|
24
|
+
{:controller=>'link_router',
|
25
|
+
:id=>service_response.id},
|
26
|
+
{:id => "svctype_link_#{service_response.id}",
|
27
|
+
:target => "_blank",
|
28
|
+
:class => "ajax_window"}) %>
|
29
|
+
<% elsif (view_data[:content] )
|
30
|
+
#collapsible content on page
|
31
|
+
%>
|
32
|
+
<%= expand_contract_section(view_data[:display_text], "svc_id_#{service_response.id}") do %>
|
33
|
+
<div class="section_content_indent">
|
34
|
+
<%= view_data[:content] %>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
|
39
|
+
<% else
|
40
|
+
# Ordinary href link.
|
41
|
+
%>
|
42
|
+
<%= link_to view_data[:display_text], {:controller=>'link_router', :id=>service_response.id}, 'target'=>"_blank", 'id' => "svctype_link_#{service_response.id}" %>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<% if show_source %>
|
46
|
+
<div class="link_source">from <%= view_data[:source] || service_response.service.display_name %></div>
|
47
|
+
<% end %>
|
48
|
+
|
49
|
+
<% unless view_data[:coverage].blank? %>
|
50
|
+
<div class="response_coverage_statement">
|
51
|
+
<%= view_data[:coverage] %>
|
52
|
+
</div>
|
53
|
+
<% end
|
54
|
+
%>
|
55
|
+
<% unless view_data[:notes].blank? %>
|
56
|
+
<%-
|
57
|
+
# legacy, the 'notes' field can take raw html, we need to leave it that way for
|
58
|
+
#now, but it's not great.
|
59
|
+
-%>
|
60
|
+
<div class="response_notes"><%= view_data[:notes].html_safe %></div>
|
61
|
+
<% end %>
|
62
|
+
<% unless view_data[:authentication].blank? %>
|
63
|
+
<div class="response_authentication_instructions"><strong>Authentication:</strong> <%= view_data[:authentication] %></div>
|
64
|
+
<% end %>
|
65
|
+
|
66
|
+
|
67
|
+
<% if (!view_data[:match_reliability].blank?) && view_data[:match_reliability] != ServiceResponse::MatchExact %>
|
68
|
+
<div class="edition_warning">
|
69
|
+
<% unless view_data[:edition_str].blank? %>
|
70
|
+
<em class="note label">Edition information</em> <%= view_data[:edition_str] %>
|
71
|
+
<% else %>
|
72
|
+
<em class="note label">May be alternate edition.</em>
|
73
|
+
<% end %>
|
74
|
+
|
75
|
+
</div>
|
76
|
+
<% end %>
|
77
|
+
|
78
|
+
<!-- debug info, hidden with CSS, can be made visible with javascript. -->
|
79
|
+
<div class="debug_info" style="display:none">
|
80
|
+
<b>Debug info:</b> <%= service_response.service.service_id %>
|
81
|
+
|
82
|
+
<% unless view_data[:debug_info].blank? %>
|
83
|
+
; <%= view_data[:debug_info] %>
|
84
|
+
<% end %>
|
85
|
+
|
86
|
+
</div>
|
87
|
+
|
88
|
+
|
89
|
+
</li>
|
@@ -0,0 +1,72 @@
|
|
1
|
+
xml.instruct!
|
2
|
+
xml.umlaut do
|
3
|
+
|
4
|
+
xml.request_id( @user_request.id )
|
5
|
+
|
6
|
+
xml.context_object_xml do
|
7
|
+
xml << @user_request.referent.to_context_object.xml
|
8
|
+
end
|
9
|
+
|
10
|
+
xml << render(:partial=> "api_in_progress", :layout => false)
|
11
|
+
|
12
|
+
xml.service_statuses do
|
13
|
+
@user_request.dispatched_services.each do | dispatched |
|
14
|
+
xml.service(:id => dispatched.service_id ) do
|
15
|
+
xml.class_name( dispatched.service.class )
|
16
|
+
xml.display_name( dispatched.service.display_name )
|
17
|
+
xml.created_at( dispatched.created_at )
|
18
|
+
xml.status( dispatched.status )
|
19
|
+
xml.exception_info do
|
20
|
+
if dispatched.exception_info
|
21
|
+
xml.class_name( dispatched.exception_info[:"class_name"] )
|
22
|
+
xml.message( dispatched.exception_info[:message] )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
xml.service_types_generated do
|
26
|
+
dispatched.service.service_types_generated.each do |type|
|
27
|
+
xml.name(type.name )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
xml.responses do
|
35
|
+
@user_request.service_responses.collect {|response| response.service_type_value}.uniq.each do | type |
|
36
|
+
xml.type_group(:name => type.name ) do
|
37
|
+
xml.display_name( type.display_name )
|
38
|
+
xml.display_name_plural(type.display_name_pluralize)
|
39
|
+
xml.complete(! @user_request.service_type_in_progress?(type) )
|
40
|
+
|
41
|
+
@user_request.get_service_type( type ).each do |response|
|
42
|
+
xml.response( :id => response.id ) do
|
43
|
+
|
44
|
+
xml.service( response.service.service_id )
|
45
|
+
xml.comment!("Attributes really vary depending on particular service, this makes it kind of tricky to deal with in an API. See documentation in ServiceResponse for conventions. Reccommend that you use umlaut_passthrough_url for url. Final destination url isis calculated on-demand by umlaut.")
|
46
|
+
["display_text", "url", "notes"].each do |att|
|
47
|
+
xml.tag!(att, response.attributes[att])
|
48
|
+
end
|
49
|
+
response.service_data.keys.each do |key|
|
50
|
+
|
51
|
+
xml.tag!(key) do
|
52
|
+
value = nil
|
53
|
+
# try calling to_xml, for instance for hashes
|
54
|
+
begin
|
55
|
+
value = response.service_data[key].to_xml(:root => "records", :skip_instruct => true)
|
56
|
+
xml<< value
|
57
|
+
rescue
|
58
|
+
# oh well, no to_xml in there
|
59
|
+
value = response.service_data[key]
|
60
|
+
xml.text!(value.to_s) unless value.blank?
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
xml.umlaut_passthrough_url(url_for(:controller=>'link_router', :action => "index", :id=>response.id, :only_path => false))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<div class="content">
|
2
|
+
<h1>Loading complete information</h1>
|
3
|
+
<p>Please wait, the following information is still loading. You will be automatically returned to the <%= app_name %> screen when finished.
|
4
|
+
<div class="small_right_box">
|
5
|
+
<table>
|
6
|
+
<tr><th>Source</th><th>Content type</th></tr>
|
7
|
+
<% @user_request.services_in_progress.each do |service| %>
|
8
|
+
<tr><td style="padding-right: 10px; vertical-align: top;"><strong><%= service.display_name %></strong></td>
|
9
|
+
<td> <%= service.service_types_generated.collect {|st| html_escape(st.display_name_pluralize) }.join('<br/>').html_safe %> </td>
|
10
|
+
</tr>
|
11
|
+
<% end %>
|
12
|
+
</table>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<%=
|
16
|
+
link_to( "View Current Results", url_for_with_co(
|
17
|
+
{:action => 'index',
|
18
|
+
:'umlaut.skip_resolve_menu' => 'false',
|
19
|
+
'umlaut.request_id' => @user_request.id},
|
20
|
+
@user_request.to_context_object)
|
21
|
+
)
|
22
|
+
%>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
|
26
|
+
|