umlaut 3.0.5 → 3.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/README.md +48 -5
- data/app/assets/images/umlaut_icons.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-book-go.png +0 -0
- data/app/assets/images/{famfamfam/book_open.png → umlaut_icons/famfamfam-book-open.png} +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-book.png +0 -0
- data/app/assets/images/{famfamfam/cross.png → umlaut_icons/famfamfam-cross.png} +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-error.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-help.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-information.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-link.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-page-sound.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-page-text.png +0 -0
- data/app/assets/images/umlaut_icons/famfamfam-page-up.png +0 -0
- data/app/assets/images/{famfamfam/page_white.png → umlaut_icons/famfamfam-page-white.png} +0 -0
- data/app/assets/images/{famfamfam/readme.html → umlaut_icons/famfamfam-readme.html} +0 -0
- data/app/assets/images/{famfamfam/tiny_cross.png → umlaut_icons/famfamfam-tiny-cross.png} +0 -0
- data/app/assets/images/{list_closed.png → umlaut_icons/list-closed.png} +0 -0
- data/app/assets/images/{list_open.png → umlaut_icons/list-open.png} +0 -0
- data/app/assets/javascripts/umlaut.js +5 -4
- data/app/assets/javascripts/umlaut/ajax_windows.js +41 -23
- data/app/assets/javascripts/umlaut/expand_contract_toggle.js +21 -29
- data/app/assets/javascripts/umlaut/load_permalink.js +26 -0
- data/app/assets/javascripts/umlaut/search_autocomplete.js +103 -44
- data/app/assets/stylesheets/umlaut.css.scss +19 -0
- data/app/assets/stylesheets/umlaut/_admin.scss +14 -0
- data/app/assets/stylesheets/umlaut/_az.scss +29 -0
- data/app/assets/stylesheets/umlaut/_forms.scss +31 -0
- data/app/assets/stylesheets/umlaut/_icons.scss +64 -0
- data/app/assets/stylesheets/umlaut/_layout.scss +52 -0
- data/app/assets/stylesheets/umlaut/_misc.scss +59 -0
- data/app/assets/stylesheets/umlaut/_mixins.scss +65 -0
- data/app/assets/stylesheets/umlaut/_modal.scss +4 -0
- data/app/assets/stylesheets/umlaut/_resolve.scss +308 -0
- data/app/assets/stylesheets/umlaut/_results.scss +34 -0
- data/app/assets/stylesheets/umlaut/_search.scss +14 -0
- data/app/assets/stylesheets/umlaut/_spinner.scss +12 -0
- data/app/assets/stylesheets/umlaut/_variables.scss +72 -0
- data/app/controllers/export_email_controller.rb +22 -39
- data/app/controllers/journal_tocs_controller +90 -0
- data/app/controllers/js_helper_controller.rb +2 -3
- data/app/controllers/link_router_controller.rb +32 -43
- data/app/controllers/open_search_controller.rb +3 -4
- data/app/controllers/resolve_controller.rb +68 -107
- data/app/controllers/resource_controller.rb +14 -20
- data/app/controllers/search_controller.rb +75 -94
- data/app/controllers/search_methods/README.md +28 -0
- data/app/controllers/search_methods/sfx4.rb +50 -119
- data/app/controllers/search_methods/sfx4_solr/README.md +57 -0
- data/app/controllers/search_methods/sfx4_solr/local.rb +40 -0
- data/app/controllers/search_methods/sfx4_solr/searcher.rb +90 -0
- data/app/controllers/store_controller.rb +24 -30
- data/app/controllers/umlaut/controller_behavior.rb +45 -17
- data/app/controllers/umlaut/error_handling.rb +20 -25
- data/{lib → app/controllers}/umlaut_configurable.rb +35 -21
- data/app/controllers/umlaut_controller.rb +43 -46
- data/app/helpers/emailer_helper.rb +9 -16
- data/app/helpers/export_email_helper.rb +8 -8
- data/app/helpers/open_search_helper.rb +2 -3
- data/app/helpers/resolve_helper.rb +130 -100
- data/app/helpers/search_helper.rb +17 -5
- data/app/helpers/umlaut/footer_helper.rb +1 -1
- data/app/helpers/umlaut/helper.rb +34 -0
- data/app/helpers/umlaut/html_head_helper.rb +12 -21
- data/{lib → app/mixin_logic}/marc_helper.rb +1 -1
- data/{lib → app/mixin_logic}/metadata_helper.rb +6 -5
- data/{lib → app/mixin_logic}/umlaut_http.rb +0 -0
- data/{lib → app/mixin_logic}/xml_schema_helper.rb +0 -0
- data/app/models/collection.rb +97 -95
- data/{lib → app/models}/hip3/bib.rb +0 -0
- data/{lib → app/models}/hip3/bib_searcher.rb +0 -0
- data/{lib → app/models}/hip3/custom_field_lookup.rb +0 -0
- data/{lib → app/models}/hip3/holding.rb +0 -0
- data/{lib → app/models}/hip3/item.rb +0 -0
- data/{lib → app/models}/hip3/receipt.rb +0 -0
- data/{lib → app/models}/hip3/serial_copy.rb +0 -0
- data/app/models/permalink.rb +3 -8
- data/app/models/referent.rb +29 -21
- data/app/models/request.rb +19 -8
- data/app/models/service_response.rb +24 -3
- data/app/models/service_store.rb +108 -39
- data/app/models/service_store.rb-NEW +73 -0
- data/app/models/service_wave.rb +2 -0
- data/app/models/sfx4/abstract/README.md +68 -0
- data/app/models/sfx4/abstract/az_extra_info.rb +44 -0
- data/app/models/sfx4/abstract/az_letter_group.rb +24 -0
- data/app/models/sfx4/abstract/az_title.rb +96 -0
- data/app/models/sfx4/abstract/az_title_search.rb +24 -0
- data/app/models/sfx4/abstract/base.rb +77 -0
- data/app/models/sfx4/global/base.rb +24 -0
- data/app/models/sfx4/global/kb_objects.rb +34 -0
- data/app/models/sfx4/local/az_extra_info.rb +7 -0
- data/app/models/sfx4/local/az_letter_group.rb +7 -0
- data/app/models/sfx4/local/az_title.rb +7 -0
- data/app/models/sfx4/local/az_title_search.rb +7 -0
- data/app/models/sfx4/local/base.rb +26 -0
- data/{lib → app/presentation}/section_renderer.rb +0 -12
- data/app/referent_filters/dissertation_catch.rb +67 -0
- data/{lib → app/referent_filters}/referent_filter.rb +0 -0
- data/{lib → app}/service_adaptors/ajax_export.rb +0 -0
- data/{lib → app}/service_adaptors/amazon.rb +2 -0
- data/{lib → app}/service_adaptors/blacklight.rb +22 -10
- data/{lib → app}/service_adaptors/book_finder.rb +0 -0
- data/{lib → app}/service_adaptors/bx.rb +0 -0
- data/{lib → app}/service_adaptors/cover_thing.rb +0 -0
- data/{lib → app}/service_adaptors/dummy_service.rb +0 -0
- data/{lib → app}/service_adaptors/elsevier_cover.rb +0 -0
- data/{lib → app}/service_adaptors/email_export.rb +0 -0
- data/{lib → app}/service_adaptors/ezproxy.rb +0 -0
- data/{lib → app}/service_adaptors/google_book_search.rb +0 -0
- data/app/service_adaptors/google_scholar_link.rb +71 -0
- data/{lib → app}/service_adaptors/gpo.rb +0 -0
- data/{lib → app}/service_adaptors/hathi_trust.rb +0 -0
- data/{lib → app}/service_adaptors/hip3_service.rb +0 -0
- data/{lib → app}/service_adaptors/hip_holding_search.rb +0 -0
- data/{lib → app}/service_adaptors/internet_archive.rb +0 -0
- data/{lib → app}/service_adaptors/isbn_db.rb +0 -0
- data/{lib → app}/service_adaptors/isi.rb +22 -13
- data/{lib → app}/service_adaptors/jcr.rb +0 -0
- data/{lib → app}/service_adaptors/opac.rb +0 -0
- data/{lib → app}/service_adaptors/open_library.rb +0 -0
- data/{lib → app}/service_adaptors/open_library_cover.rb +0 -0
- data/{lib → app}/service_adaptors/pubmed.rb +0 -0
- data/{lib → app}/service_adaptors/request_to_fixture.rb +0 -0
- data/{lib → app}/service_adaptors/scopus.rb +0 -0
- data/{lib → app/service_adaptors}/service.rb +3 -3
- data/{lib → app}/service_adaptors/sfx.rb +154 -11
- data/{lib → app}/service_adaptors/sfx_backchannel_record.rb +0 -0
- data/app/service_adaptors/tr_link.rb +267 -0
- data/app/service_adaptors/tr_links.rb +278 -0
- data/{lib → app}/service_adaptors/txt_holding_export.rb +0 -0
- data/{lib → app}/service_adaptors/ulrichs_cover.rb +0 -0
- data/{lib → app}/service_adaptors/ulrichs_link.rb +0 -0
- data/{lib → app}/service_adaptors/worldcat.rb +0 -0
- data/{lib → app}/service_adaptors/worldcat_identities.rb +0 -0
- data/app/views/admin/service_errors/_dispatched_service.html.erb +13 -13
- data/app/views/admin/service_errors/index.html.erb +11 -21
- data/app/views/export_email/email.html.erb +17 -2
- data/app/views/export_email/send_email.html.erb +2 -1
- data/app/views/export_email/send_txt.html.erb +2 -1
- data/app/views/export_email/txt.html.erb +30 -2
- data/app/views/layouts/umlaut.html.erb +29 -49
- data/app/views/resolve/_background_progress.html.erb +43 -50
- data/app/views/resolve/_background_updater.html.erb +23 -36
- data/app/views/resolve/_citation.html.erb +63 -87
- data/app/views/resolve/_compact_citation.html.erb +15 -33
- data/app/views/resolve/_cover_image.html.erb +34 -43
- data/app/views/resolve/_fulltext.html.erb +29 -50
- data/app/views/resolve/_help.html.erb +17 -14
- data/app/views/resolve/_holding.html.erb +65 -82
- data/app/views/resolve/_manually_entered_warning.html.erb +7 -0
- data/app/views/resolve/_modal.html.erb +19 -0
- data/app/views/resolve/_related_items.html.erb +20 -35
- data/app/views/resolve/_search_inside.html.erb +34 -57
- data/app/views/resolve/_section_display.html.erb +34 -46
- data/app/views/resolve/_section_heading.html.erb +17 -0
- data/app/views/resolve/_service_errors.html.erb +27 -28
- data/app/views/resolve/_standard_response_item.html.erb +42 -72
- data/app/views/resolve/background_status.html.erb +19 -23
- data/app/views/resolve/get_permalink.html.erb +6 -0
- data/app/views/resolve/index.html.erb +47 -73
- data/app/views/search/_a_to_z.html.erb +9 -6
- data/app/views/search/_citation.html.erb +73 -94
- data/app/views/search/_pager.html.erb +6 -6
- data/app/views/search/books.html.erb +34 -102
- data/app/views/search/journal_search.html.erb +53 -90
- data/app/views/search/journals.html.erb +73 -167
- data/app/views/umlaut/_header.html.erb +9 -0
- data/app/views/umlaut/error.html.erb +44 -44
- data/config/locales/en.yml +5 -0
- data/lib/{CronTab.rb → cron_tab.rb} +0 -0
- data/lib/generators/templates/umlaut_services.yml +57 -43
- data/lib/generators/umlaut/install_generator.rb +12 -0
- data/lib/service_adaptors/README.md +0 -0
- data/lib/tasks/umlaut.rake +8 -24
- data/lib/umlaut.rb +1 -21
- data/lib/umlaut/version.rb +1 -1
- data/test/README.md +75 -0
- data/test/dummy/app/controllers/umlaut_controller.rb +3 -3
- data/test/dummy/config/application.rb +3 -0
- data/test/dummy/config/sunspot.yml +20 -0
- data/test/dummy/config/travis_database.yml +96 -0
- data/test/dummy/config/umlaut_services.yml +16 -23
- data/test/dummy/db/migrate/20120927163304_sfx4_global.rb +26 -0
- data/test/dummy/db/migrate/20120927164040_sfx4_local.rb +54 -0
- data/test/dummy/tmp/cache/assets/BBA/6A0/sprockets%2F2a335471966f33256b321f8324041981 +0 -0
- data/test/dummy/tmp/cache/assets/C2A/410/sprockets%2Fd654b74912b4773a2534616863fb6565 +0 -0
- data/test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26 +0 -0
- data/test/dummy/tmp/cache/assets/C49/730/sprockets%2F212d35831188417b5131e3e693aa69a6 +0 -0
- data/test/dummy/tmp/cache/assets/C55/1D0/sprockets%2F5af2f2a3403040f736981863fd278529 +0 -0
- data/test/dummy/tmp/cache/assets/C5A/A80/sprockets%2F2328c7370b56b4151776981a5f6d394e +0 -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/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
- data/test/dummy/tmp/cache/assets/C94/E20/sprockets%2F19579abc248373f419b1c3e287d74598 +0 -0
- data/test/dummy/tmp/cache/assets/C98/330/sprockets%2F0c81574ba94abc10657315d4190c201f +0 -0
- data/test/dummy/tmp/cache/assets/CA4/440/sprockets%2F0feb4425db6319d7d0582192a503671b +0 -0
- data/test/dummy/tmp/cache/assets/CA7/E80/sprockets%2F33310f455a870eaedd6d938e30620714 +0 -0
- data/test/dummy/tmp/cache/assets/CB8/3C0/sprockets%2F697cd846490fda9f0e20c558320610f8 +0 -0
- data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
- data/test/dummy/tmp/cache/assets/CC7/F10/sprockets%2F939637f806eef3f0f21584659458ab2e +0 -0
- data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +0 -0
- data/test/dummy/tmp/cache/assets/CF8/DA0/sprockets%2Ff5b8c8499d3da954d392fa57739503c5 +0 -0
- data/test/dummy/tmp/cache/assets/CF9/590/sprockets%2F096bcc45cd31b3796fa2121cd203215f +0 -0
- data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
- data/test/dummy/tmp/cache/assets/D04/CC0/sprockets%2Fe9c1b92f2e437e1bbbe020d718739220 +0 -0
- data/test/dummy/tmp/cache/assets/D0B/090/sprockets%2F58009091c95e3ac328c91c68fca30e0e +0 -0
- data/test/dummy/tmp/cache/assets/D1A/B50/sprockets%2F2db5892438129fe94da8429b8be114ec +0 -0
- data/test/dummy/tmp/cache/assets/D2D/1A0/sprockets%2F376426b4896a3cff7969ce6c7b387e0e +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6 +0 -0
- data/test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0 +0 -0
- data/test/dummy/tmp/cache/assets/D46/F80/sprockets%2Fb15c08e749067d7aad9baf5e9388221c +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b +0 -0
- data/test/dummy/tmp/cache/assets/D6E/CF0/sprockets%2F5661c6e4f0cea86fe4523f27261aade5 +0 -0
- data/test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6 +0 -0
- data/test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6 +0 -0
- data/test/dummy/tmp/cache/assets/D9A/2F0/sprockets%2Fbba0f4b972dc53c15ce6c8c1993b82a4 +0 -0
- data/test/dummy/tmp/cache/assets/D9C/860/sprockets%2Fec2d9f20b270d70e698ff33e53c21fca +0 -0
- data/test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1 +0 -0
- data/test/dummy/tmp/cache/assets/DA8/BB0/sprockets%2F0cf1c7e9f966dce425517c0e2a844efe +0 -0
- data/test/dummy/tmp/cache/assets/DA9/BC0/sprockets%2Fcb9062b73291befe5e5bf2a70978dec8 +0 -0
- data/test/dummy/tmp/cache/assets/DB6/ED0/sprockets%2Ff4482d9b9f76fb65eef16430bde2f8e6 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
- data/test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b +0 -0
- data/test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e +0 -0
- data/test/dummy/tmp/cache/assets/E02/C10/sprockets%2F1463cadfce3fc70e61d482f9fcb75ac7 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E38/FE0/sprockets%2Fe1fc875efa817cbb94a5d8de25ea4e6b +0 -0
- data/test/dummy/tmp/cache/assets/E50/F00/sprockets%2Fec61afdbb1cc4df075e3dad46f0af571 +0 -0
- data/test/dummy/tmp/cache/assets/E5E/5F0/sprockets%2Feffaeb4d7f9bf4c0cc840ff320fde046 +0 -0
- data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_accordion.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_alerts.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_button-groups.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_carousel.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_close.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_code.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_component-animations.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_dropdowns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_forms.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_hero-unit.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_labels-badges.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_layouts.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_media.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_mixins.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_modals.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_navbar.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_navs.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_pager.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_popovers.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_progress-bars.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_reset.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_responsive-1200px-min.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_responsive-767px-max.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_responsive-768px-979px.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_responsive-navbar.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_responsive-utilities.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_scaffolding.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_sprites.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_tables.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_thumbnails.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_tooltip.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_type.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_variables.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/_wells.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/bootstrap.scssc +0 -0
- data/test/dummy/tmp/cache/sass/310d901c169042855feb8cf3903e1e2821d27f13/responsive.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_admin.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_az.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_base.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_forms.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_icons.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_misc.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_mixins.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_modal.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_resolve.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_results.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_search.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_spinner.scssc +0 -0
- data/test/dummy/tmp/cache/sass/3af72421a0fbed39d3047687ca0ad6e6e5545041/_variables.scssc +0 -0
- data/test/dummy/tmp/cache/sass/93d65682d6bddb0b2e6788c1232f4849af20a35e/bootstrap-responsive.scssc +0 -0
- data/test/dummy/tmp/cache/sass/93d65682d6bddb0b2e6788c1232f4849af20a35e/bootstrap.scssc +0 -0
- data/test/dummy/tmp/cache/sass/fb58c04fd15fcc38a8c4d91b7070bcfeaf1c3799/umlaut.css.scssc +0 -0
- data/test/fixtures/dispatched_services.yml +0 -4
- data/test/fixtures/permalinks.yml +23 -4
- data/test/fixtures/referent_values.yml +226 -1493
- data/test/fixtures/referents.yml +14 -137
- data/test/fixtures/requests.yml +22 -260
- data/test/fixtures/service_responses.yml +169 -5
- data/test/fixtures/sfx4/global/KB_OBJECTS.yml +46 -0
- data/test/fixtures/sfx4/local/AZ_EXTRA_INFO.yml +4802 -0
- data/test/fixtures/sfx4/local/AZ_LETTER_GROUP.yml +105 -0
- data/test/fixtures/sfx4/local/AZ_TITLE.yml +165 -0
- data/test/fixtures/sfx4/local/AZ_TITLE_SEARCH.yml +341 -0
- data/test/fixtures/sfx_urls.yml +3 -0
- data/test/functional/export_email_controller_test.rb +43 -0
- data/test/functional/link_router_controller_test.rb +16 -0
- data/test/functional/resolve_controller_test.rb +102 -0
- data/test/functional/search_controller_test.rb +40 -0
- data/test/functional/store_controller_test.rb +29 -0
- data/test/helper/list_with_limit_test.rb +90 -0
- data/test/integration/permalinks_test.rb +14 -0
- data/test/support/search_methods/test_case.rb +0 -0
- data/test/support/service_adaptors/test_case.rb +0 -0
- data/test/support/test_with_cassette.rb +37 -0
- data/test/test_helper.rb +76 -30
- data/test/unit/aws_product_sign_test.rb +2 -0
- data/test/unit/determine_services_test.rb +163 -0
- data/test/unit/google_book_search_test.rb +8 -25
- data/test/unit/google_scholar_link_test.rb +81 -0
- data/test/unit/internet_archive_test.rb +33 -0
- data/test/unit/permalink_test.rb +15 -0
- data/test/unit/service_store_test.rb +47 -0
- data/test/unit/service_test.rb +28 -13
- data/test/unit/sfx/sfx_target_roll_up_test.rb +369 -0
- data/test/unit/sfx4_search_test.rb +102 -0
- data/test/unit/sfx4_solr_search_test.rb +77 -0
- data/test/unit/sfx_test.rb +38 -0
- data/test/unit/worldcat_test.rb +7 -0
- data/test/vcr_cassettes/google_book_search/frankenstein_by_OCLC_number.yml +107 -0
- data/test/vcr_cassettes/internet_archive/momo_by_title_author.yml +116 -0
- data/test/vcr_cassettes/resolve/fulltext_with_edition_warning.yml +44 -0
- data/test/vcr_cassettes/resolve/no_holdings.yml +649 -0
- data/test/vcr_cassettes/resolve/nytimes_by_issn.yml +224 -0
- data/test/vcr_cassettes/sfx/nytimes_by_issn.yml +1395 -0
- data/test/vcr_cassettes/sfx4_solr/find_by_group.yml +109 -0
- data/test/vcr_cassettes/sfx4_solr/find_by_title_begins_with.yml +33 -0
- data/test/vcr_cassettes/sfx4_solr/find_by_title_contains.yml +34 -0
- data/test/vcr_cassettes/sfx4_solr/find_by_title_exact.yml +32 -0
- data/test/view/holding_test.rb +30 -0
- metadata +435 -179
- 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/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/ico_go.gif +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/javascripts/umlaut/simple_visible_toggle.js +0 -8
- data/app/assets/stylesheets/umlaut.css +0 -900
- data/app/assets/stylesheets/umlaut/_background_progress_spinner.scss +0 -21
- data/app/assets/stylesheets/umlaut/_expand_contract.scss +0 -28
- data/app/controllers/search_methods/sfx3.rb +0 -148
- data/app/models/sfx_db.rb +0 -10
- data/app/models/sfx_db/az_additional_title.rb +0 -11
- data/app/models/sfx_db/az_letter_group.rb +0 -11
- data/app/models/sfx_db/az_title.rb +0 -40
- data/app/models/sfx_db/az_title_v2.rb +0 -34
- data/app/models/sfx_db/isbn.rb +0 -12
- data/app/models/sfx_db/issn.rb +0 -12
- data/app/models/sfx_db/object.rb +0 -35
- data/app/models/sfx_db/object_portfolio.rb +0 -6
- data/app/models/sfx_db/publisher.rb +0 -10
- data/app/models/sfx_db/sfx_db_base.rb +0 -58
- data/app/models/sfx_db/target.rb +0 -10
- data/app/models/sfx_db/target_service.rb +0 -10
- data/app/models/sfx_db/title.rb +0 -10
- data/app/views/export_email/_email.html.erb +0 -25
- data/app/views/export_email/_send_email.html.erb +0 -3
- data/app/views/export_email/_send_txt.html.erb +0 -3
- data/app/views/export_email/_txt.html.erb +0 -62
- data/lib/holding.rb +0 -32
- data/lib/opensearch_feed.rb +0 -398
- data/lib/opensearch_query.rb +0 -98
- data/lib/referent_filters/dissertation_catch.rb +0 -45
- data/lib/service_adaptors/journal_tocs.progress +0 -68
- data/lib/service_adaptors/primo_service.rb +0 -452
- data/lib/service_adaptors/primo_source.rb +0 -82
- data/lib/umlaut/default_configuration.rb +0 -5
- data/test/dummy/config/primo.yml +0 -271
- data/test/unit/primo_service_test.rb +0 -947
data/app/models/sfx_db/target.rb
DELETED
data/app/models/sfx_db/title.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
unless @user_request.nil?
|
3
|
-
cite = @user_request.referent.to_citation %>
|
4
|
-
|
5
|
-
<div class="inner_modal_dialog">
|
6
|
-
<%= form_tag({:controller => "export_email", :action => "send_email", :id => params[:id]}, :class => "modal_dialog_form" ) do %>
|
7
|
-
<h2>Email the title and locations</h2>
|
8
|
-
|
9
|
-
<div class="formError">
|
10
|
-
<%= validation_error( @error || flash[:error]) if ( @error || flash[:error]) %>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<h3><strong>Title:</strong> <%= h(cite[:title]) %>/<%= h(cite[:author]) %></h3>
|
14
|
-
<div>
|
15
|
-
<%= label_tag 'email', 'Enter your email address:' %>
|
16
|
-
<%= text_field_tag 'email', params[:email] %>
|
17
|
-
</div>
|
18
|
-
<div class="section">
|
19
|
-
<%= submit_tag 'Send!' %>
|
20
|
-
</div>
|
21
|
-
<%
|
22
|
-
end
|
23
|
-
end
|
24
|
-
%>
|
25
|
-
</div>
|
@@ -1,62 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
unless @user_request.nil?
|
3
|
-
%>
|
4
|
-
|
5
|
-
<div class="inner_modal_dialog send_to_txt">
|
6
|
-
<%= form_tag( {:controller => "export_email", :action => "send_txt", :id => params[:id]}, :class => "modal_dialog_form" ) do %>
|
7
|
-
<h2>Send the title and location of an item to your mobile phone</h2>
|
8
|
-
|
9
|
-
<div class="formError">
|
10
|
-
<%= validation_error( @error || flash[:error]) if ( @error || flash[:error]) %>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<h3><strong>Title:</strong>
|
14
|
-
<%= h(brief_citation(@user_request)) %>
|
15
|
-
</h3>
|
16
|
-
<div class="section">
|
17
|
-
<%= label_tag('number', 'Enter your mobile phone number:') %>
|
18
|
-
|
19
|
-
<%= text_field_tag('number', params[:number], :size => 14) %>
|
20
|
-
<p class="smallText"><em>10 digit US cell phone number</em></p>
|
21
|
-
</div>
|
22
|
-
|
23
|
-
<div class="section">
|
24
|
-
<%= label_tag('provider', 'Select your provider:') %>
|
25
|
-
<%
|
26
|
-
providers = @svc_response.service.instance_variable_get("@providers")
|
27
|
-
%>
|
28
|
-
<%= select_tag "provider", options_for_select(providers.sort, params[:provider]) %>
|
29
|
-
</div>
|
30
|
-
<%
|
31
|
-
holdings = @user_request.get_service_type('holding', {})
|
32
|
-
%>
|
33
|
-
<div class="section">
|
34
|
-
<p>Choose the item you want to send:</p>
|
35
|
-
<ul>
|
36
|
-
<%
|
37
|
-
holdings.each do |p|
|
38
|
-
target = p.view_data
|
39
|
-
%>
|
40
|
-
<li>
|
41
|
-
<%= radio_button_tag 'holding', p.id, (params[:holding].to_s == p.id.to_s) || holdings.length == 1 %>
|
42
|
-
<%= label_tag "holding_#{p.id}", formatted_html_holding_status(target) %>
|
43
|
-
</li>
|
44
|
-
<%
|
45
|
-
end
|
46
|
-
%>
|
47
|
-
</ul>
|
48
|
-
</div>
|
49
|
-
|
50
|
-
|
51
|
-
<div class="section">
|
52
|
-
<p class="smallText"><em>Note: charges may apply if your service plan does not cover unlimited texting</em></p>
|
53
|
-
|
54
|
-
<%= submit_tag 'Send!' %>
|
55
|
-
|
56
|
-
|
57
|
-
</div>
|
58
|
-
<%
|
59
|
-
end
|
60
|
-
end
|
61
|
-
%>
|
62
|
-
</div>
|
data/lib/holding.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
class Holding
|
2
|
-
attr_accessor :locations, :identifier
|
3
|
-
def initialize
|
4
|
-
@locations = []
|
5
|
-
end
|
6
|
-
def find_location(location)
|
7
|
-
@locations.each do | loc |
|
8
|
-
return loc if loc.name == location
|
9
|
-
end
|
10
|
-
return nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def find_item_by_attribute(key, value)
|
14
|
-
@locations.each do | loc |
|
15
|
-
loc.items.each do | item |
|
16
|
-
return if item.instance_variable_get('@'+key) == value
|
17
|
-
end
|
18
|
-
end
|
19
|
-
return nil
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class HoldingLocation
|
24
|
-
attr_accessor :name, :code, :items
|
25
|
-
def initialize
|
26
|
-
@items = []
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class HoldingItem
|
31
|
-
attr_accessor :identifier, :status_code, :status_date, :status, :call_number, :enumeration, :chron, :year
|
32
|
-
end
|
data/lib/opensearch_feed.rb
DELETED
@@ -1,398 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2005 Robert Aman
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
require 'feed_tools/feed'
|
25
|
-
require 'opensearch_query'
|
26
|
-
module FeedTools
|
27
|
-
# The <tt>FeedTools::OpensearchFeed</tt> class represents a web feed's structure
|
28
|
-
# for an Opensearch query.
|
29
|
-
class OpensearchFeed < Feed
|
30
|
-
attr_accessor :queries
|
31
|
-
def initialize(attrs={})
|
32
|
-
#super
|
33
|
-
@search_terms = attrs[:search_terms]
|
34
|
-
@total_results = attrs[:total_results]
|
35
|
-
@start_index = attrs[:start_index]
|
36
|
-
@items_per_page = attrs[:count]
|
37
|
-
@search_page = nil
|
38
|
-
@first_page = nil
|
39
|
-
@last_page = nil
|
40
|
-
@previous_page = nil
|
41
|
-
@next_page = nil
|
42
|
-
@queries = {}
|
43
|
-
@queries[:request] = FeedTools::OpensearchQuery.new("request", attrs) if @search_terms
|
44
|
-
end
|
45
|
-
# Generates xml based on the content of the feed
|
46
|
-
def build_xml(feed_type=(self.feed_type or "atom"), feed_version=nil,
|
47
|
-
xml_builder=Builder::XmlMarkup.new(
|
48
|
-
:indent => 2, :escape_attrs => false))
|
49
|
-
xml_builder.instruct! :xml, :version => "1.0",
|
50
|
-
:encoding => (self.configurations[:output_encoding] or "utf-8")
|
51
|
-
if feed_type.nil?
|
52
|
-
feed_type = self.feed_type
|
53
|
-
end
|
54
|
-
if feed_version.nil?
|
55
|
-
feed_version = self.feed_version
|
56
|
-
end
|
57
|
-
if feed_type == "rss" &&
|
58
|
-
(feed_version == nil || feed_version <= 0.0)
|
59
|
-
feed_version = 1.0
|
60
|
-
elsif feed_type == "atom" &&
|
61
|
-
(feed_version == nil || feed_version <= 0.0)
|
62
|
-
feed_version = 1.0
|
63
|
-
end
|
64
|
-
if feed_type == "rss" &&
|
65
|
-
(feed_version == 0.9 || feed_version == 1.0 || feed_version == 1.1)
|
66
|
-
# RDF-based rss format
|
67
|
-
return xml_builder.tag!("rdf:RDF",
|
68
|
-
"xmlns" => FEED_TOOLS_NAMESPACES['rss10'],
|
69
|
-
"xmlns:content" => FEED_TOOLS_NAMESPACES['content'],
|
70
|
-
"xmlns:rdf" => FEED_TOOLS_NAMESPACES['rdf'],
|
71
|
-
"xmlns:dc" => FEED_TOOLS_NAMESPACES['dc'],
|
72
|
-
"xmlns:syn" => FEED_TOOLS_NAMESPACES['syn'],
|
73
|
-
"xmlns:admin" => FEED_TOOLS_NAMESPACES['admin'],
|
74
|
-
"xmlns:taxo" => FEED_TOOLS_NAMESPACES['taxo'],
|
75
|
-
"xmlns:itunes" => FEED_TOOLS_NAMESPACES['itunes'],
|
76
|
-
"xmlns:media" => FEED_TOOLS_NAMESPACES['media'],
|
77
|
-
"xmlns:atom" => FEED_TOOLS_NAMESPACES['atom10'],
|
78
|
-
"xmlns:opensearch"=>"http://a9.com/-/spec/opensearch/1.1/") do
|
79
|
-
channel_attributes = {}
|
80
|
-
unless self.link.nil?
|
81
|
-
channel_attributes["rdf:about"] =
|
82
|
-
FeedTools::HtmlHelper.escape_entities(self.link)
|
83
|
-
end
|
84
|
-
xml_builder.channel(channel_attributes) do
|
85
|
-
unless self.title.blank?
|
86
|
-
xml_builder.title(
|
87
|
-
FeedTools::HtmlHelper.strip_html_tags(self.title))
|
88
|
-
else
|
89
|
-
xml_builder.title
|
90
|
-
end
|
91
|
-
unless self.link.blank?
|
92
|
-
xml_builder.link(self.link)
|
93
|
-
else
|
94
|
-
xml_builder.link
|
95
|
-
end
|
96
|
-
unless self.search_page.blank?
|
97
|
-
xml_builder.tag!("atom:link",
|
98
|
-
{:href=>
|
99
|
-
FeedTools::HtmlHelper.escape_entities(self.search_page),
|
100
|
-
:rel=>"search",
|
101
|
-
:type=>"application/opensearchdescription+xml"
|
102
|
-
}
|
103
|
-
)
|
104
|
-
end
|
105
|
-
self.add_opensearch_tags(xml_builder)
|
106
|
-
unless images.blank?
|
107
|
-
xml_builder.image("rdf:resource" =>
|
108
|
-
FeedTools::HtmlHelper.escape_entities(
|
109
|
-
images.first.url))
|
110
|
-
end
|
111
|
-
unless description.nil? || description == ""
|
112
|
-
xml_builder.description(description)
|
113
|
-
else
|
114
|
-
xml_builder.description
|
115
|
-
end
|
116
|
-
unless self.language.blank?
|
117
|
-
xml_builder.tag!("dc:language", self.language)
|
118
|
-
end
|
119
|
-
unless self.rights.blank?
|
120
|
-
xml_builder.tag!("dc:rights", self.rights)
|
121
|
-
end
|
122
|
-
xml_builder.tag!("syn:updatePeriod", "hourly")
|
123
|
-
xml_builder.tag!("syn:updateFrequency",
|
124
|
-
(self.time_to_live / 1.hour).to_s)
|
125
|
-
xml_builder.tag!("syn:updateBase", Time.mktime(1970).iso8601)
|
126
|
-
xml_builder.items do
|
127
|
-
xml_builder.tag!("rdf:Seq") do
|
128
|
-
unless items.nil?
|
129
|
-
for item in items
|
130
|
-
if item.link.nil?
|
131
|
-
raise "Cannot generate an rdf-based feed with a nil " +
|
132
|
-
"item link field."
|
133
|
-
end
|
134
|
-
xml_builder.tag!("rdf:li", "rdf:resource" =>
|
135
|
-
FeedTools::HtmlHelper.escape_entities(item.link))
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
xml_builder.tag!(
|
141
|
-
"admin:generatorAgent",
|
142
|
-
"rdf:resource" => self.configurations[:generator_href])
|
143
|
-
build_xml_hook(feed_type, feed_version, xml_builder)
|
144
|
-
end
|
145
|
-
unless self.images.blank?
|
146
|
-
best_image = nil
|
147
|
-
for image in self.images
|
148
|
-
if image.link != nil
|
149
|
-
best_image = image
|
150
|
-
break
|
151
|
-
end
|
152
|
-
end
|
153
|
-
best_image = self.images.first if best_image.nil?
|
154
|
-
xml_builder.image("rdf:about" =>
|
155
|
-
FeedTools::HtmlHelper.escape_entities(best_image.url)) do
|
156
|
-
if !best_image.title.blank?
|
157
|
-
xml_builder.title(best_image.title)
|
158
|
-
elsif !self.title.blank?
|
159
|
-
xml_builder.title(self.title)
|
160
|
-
else
|
161
|
-
xml_builder.title
|
162
|
-
end
|
163
|
-
unless best_image.url.blank?
|
164
|
-
xml_builder.url(best_image.url)
|
165
|
-
end
|
166
|
-
if !best_image.link.blank?
|
167
|
-
xml_builder.link(best_image.link)
|
168
|
-
elsif !self.link.blank?
|
169
|
-
xml_builder.link(self.link)
|
170
|
-
else
|
171
|
-
xml_builder.link
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
unless items.nil?
|
176
|
-
for item in items
|
177
|
-
item.build_xml(feed_type, feed_version, xml_builder)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
elsif feed_type == "rss"
|
182
|
-
# normal rss format
|
183
|
-
return xml_builder.rss("version" => "2.0",
|
184
|
-
"xmlns:content" => FEED_TOOLS_NAMESPACES['content'],
|
185
|
-
"xmlns:rdf" => FEED_TOOLS_NAMESPACES['rdf'],
|
186
|
-
"xmlns:dc" => FEED_TOOLS_NAMESPACES['dc'],
|
187
|
-
"xmlns:taxo" => FEED_TOOLS_NAMESPACES['taxo'],
|
188
|
-
"xmlns:trackback" => FEED_TOOLS_NAMESPACES['trackback'],
|
189
|
-
"xmlns:itunes" => FEED_TOOLS_NAMESPACES['itunes'],
|
190
|
-
"xmlns:media" => FEED_TOOLS_NAMESPACES['media'],
|
191
|
-
"xmlns:atom" => FEED_TOOLS_NAMESPACES['atom10'],
|
192
|
-
"xmlns:opensearch"=>"http://a9.com/-/spec/opensearch/1.1/") do
|
193
|
-
xml_builder.channel do
|
194
|
-
unless self.title.blank?
|
195
|
-
xml_builder.title(
|
196
|
-
FeedTools::HtmlHelper.strip_html_tags(self.title))
|
197
|
-
end
|
198
|
-
unless self.link.blank?
|
199
|
-
xml_builder.link(link)
|
200
|
-
end
|
201
|
-
unless self.description.blank?
|
202
|
-
xml_builder.description(description)
|
203
|
-
else
|
204
|
-
xml_builder.description
|
205
|
-
end
|
206
|
-
unless self.author.email.blank?
|
207
|
-
xml_builder.managingEditor(self.author.email)
|
208
|
-
end
|
209
|
-
unless self.publisher.email.blank?
|
210
|
-
xml_builder.webMaster(self.publisher.email)
|
211
|
-
end
|
212
|
-
unless self.published.blank?
|
213
|
-
xml_builder.pubDate(self.published.rfc822)
|
214
|
-
end
|
215
|
-
unless self.updated.blank?
|
216
|
-
xml_builder.lastBuildDate(self.updated.rfc822)
|
217
|
-
end
|
218
|
-
unless self.copyright.blank?
|
219
|
-
xml_builder.copyright(self.copyright)
|
220
|
-
end
|
221
|
-
unless self.search_page.blank?
|
222
|
-
xml_builder.tag!("atom:link",
|
223
|
-
{:href=>
|
224
|
-
FeedTools::HtmlHelper.escape_entities(self.search_page),
|
225
|
-
:rel=>"search",
|
226
|
-
:type=>"application/opensearchdescription+xml"
|
227
|
-
}
|
228
|
-
)
|
229
|
-
end
|
230
|
-
self.add_opensearch_tags(xml_builder)
|
231
|
-
xml_builder.ttl((time_to_live / 1.minute).to_s)
|
232
|
-
xml_builder.generator(
|
233
|
-
self.configurations[:generator_href])
|
234
|
-
build_xml_hook(feed_type, feed_version, xml_builder)
|
235
|
-
unless items.nil?
|
236
|
-
for item in items
|
237
|
-
item.build_xml(feed_type, feed_version, xml_builder)
|
238
|
-
end
|
239
|
-
end
|
240
|
-
end
|
241
|
-
end
|
242
|
-
elsif feed_type == "atom" && feed_version == 0.3
|
243
|
-
raise "Atom 0.3 is obsolete."
|
244
|
-
elsif feed_type == "atom" && feed_version == 1.0
|
245
|
-
namespaces = {}
|
246
|
-
# normal atom format
|
247
|
-
return xml_builder.feed("xmlns" => FEED_TOOLS_NAMESPACES['atom10'],
|
248
|
-
"xmlns:opensearch"=>"http://a9.com/-/spec/opensearch/1.1/",
|
249
|
-
"xml:lang" => language) do
|
250
|
-
unless title.blank?
|
251
|
-
xml_builder.title(title,
|
252
|
-
"type" => "html")
|
253
|
-
end
|
254
|
-
xml_builder.author do
|
255
|
-
unless self.author.nil? || self.author.name.nil?
|
256
|
-
xml_builder.name(self.author.name)
|
257
|
-
else
|
258
|
-
xml_builder.name("n/a")
|
259
|
-
end
|
260
|
-
unless self.author.nil? || self.author.email.nil?
|
261
|
-
xml_builder.email(self.author.email)
|
262
|
-
end
|
263
|
-
unless self.author.nil? || self.author.url.nil?
|
264
|
-
xml_builder.uri(self.author.url)
|
265
|
-
end
|
266
|
-
end
|
267
|
-
unless self.href.blank?
|
268
|
-
xml_builder.link("href" => self.href,
|
269
|
-
"rel" => "self",
|
270
|
-
"type" => "application/atom+xml")
|
271
|
-
end
|
272
|
-
unless self.link.blank?
|
273
|
-
xml_builder.link(
|
274
|
-
"href" =>
|
275
|
-
FeedTools::HtmlHelper.escape_entities(self.link),
|
276
|
-
"rel" => "alternate")
|
277
|
-
end
|
278
|
-
unless self.subtitle.blank?
|
279
|
-
xml_builder.subtitle(self.subtitle,
|
280
|
-
"type" => "html")
|
281
|
-
end
|
282
|
-
unless self.next_page.blank?
|
283
|
-
xml_builder.link(
|
284
|
-
"href" =>
|
285
|
-
FeedTools::HtmlHelper.escape_entities(self.next_page),
|
286
|
-
"type"=>"application/opensearchdescription+xml",
|
287
|
-
"rel" => "next")
|
288
|
-
end
|
289
|
-
unless self.previous_page.blank?
|
290
|
-
xml_builder.link(
|
291
|
-
"href" =>
|
292
|
-
FeedTools::HtmlHelper.escape_entities(self.previous_page),
|
293
|
-
"type"=>"application/opensearchdescription+xml",
|
294
|
-
"rel" => "previous")
|
295
|
-
end
|
296
|
-
unless self.first_page.blank?
|
297
|
-
xml_builder.link(
|
298
|
-
"href" =>
|
299
|
-
FeedTools::HtmlHelper.escape_entities(self.first_page),
|
300
|
-
"type"=>"application/opensearchdescription+xml",
|
301
|
-
"rel" => "first")
|
302
|
-
end
|
303
|
-
unless self.last_page.blank?
|
304
|
-
xml_builder.link(
|
305
|
-
"href" =>
|
306
|
-
FeedTools::HtmlHelper.escape_entities(self.last_page),
|
307
|
-
"type"=>"application/opensearchdescription+xml",
|
308
|
-
"rel" => "last")
|
309
|
-
end
|
310
|
-
unless self.search_page.blank?
|
311
|
-
xml_builder.link(
|
312
|
-
"href" =>
|
313
|
-
FeedTools::HtmlHelper.escape_entities(self.search_page),
|
314
|
-
"type"=>"application/opensearchdescription+xml",
|
315
|
-
"rel" => "last")
|
316
|
-
end
|
317
|
-
self.add_opensearch_tags(xml_builder)
|
318
|
-
if self.updated != nil
|
319
|
-
xml_builder.updated(self.updated.iso8601)
|
320
|
-
elsif self.time != nil
|
321
|
-
# Not technically correct, but a heck of a lot better
|
322
|
-
# than the Time.now fall-back.
|
323
|
-
xml_builder.updated(self.time.iso8601)
|
324
|
-
else
|
325
|
-
xml_builder.updated(Time.now.gmtime.iso8601)
|
326
|
-
end
|
327
|
-
unless self.rights.blank?
|
328
|
-
xml_builder.rights(self.rights)
|
329
|
-
end
|
330
|
-
xml_builder.generator(self.configurations[:generator_name] +
|
331
|
-
" - " + self.configurations[:generator_href])
|
332
|
-
if self.id != nil
|
333
|
-
unless FeedTools::UriHelper.is_uri? self.id
|
334
|
-
if self.link != nil
|
335
|
-
xml_builder.id(FeedTools::UriHelper.build_urn_uri(self.link))
|
336
|
-
else
|
337
|
-
raise "The unique id must be a valid URI."
|
338
|
-
end
|
339
|
-
else
|
340
|
-
xml_builder.id(self.id)
|
341
|
-
end
|
342
|
-
elsif self.link != nil
|
343
|
-
xml_builder.id(FeedTools::UriHelper.build_urn_uri(self.link))
|
344
|
-
else
|
345
|
-
raise "Cannot build feed, missing feed unique id."
|
346
|
-
end
|
347
|
-
build_xml_hook(feed_type, feed_version, xml_builder)
|
348
|
-
unless items.nil?
|
349
|
-
for item in items
|
350
|
-
item.build_xml(feed_type, feed_version, xml_builder)
|
351
|
-
end
|
352
|
-
end
|
353
|
-
end
|
354
|
-
else
|
355
|
-
raise "Unsupported feed format/version."
|
356
|
-
end
|
357
|
-
end
|
358
|
-
def search_page
|
359
|
-
return @search_page
|
360
|
-
end
|
361
|
-
def search_page=(search_page)
|
362
|
-
@search_page=search_page
|
363
|
-
end
|
364
|
-
def first_page
|
365
|
-
return @first_page
|
366
|
-
end
|
367
|
-
def first_page=(first_page)
|
368
|
-
@first_page=first_page
|
369
|
-
end
|
370
|
-
def last_page
|
371
|
-
return @last_page
|
372
|
-
end
|
373
|
-
def last_page=(last_page)
|
374
|
-
@last_page=last_page
|
375
|
-
end
|
376
|
-
def previous_page
|
377
|
-
return @previous_page
|
378
|
-
end
|
379
|
-
def previous_page=(previous_page)
|
380
|
-
@previous_page = previous_page
|
381
|
-
end
|
382
|
-
def next_page
|
383
|
-
return @next_page
|
384
|
-
end
|
385
|
-
def next_page=(next_page)
|
386
|
-
@next_page = next_page
|
387
|
-
end
|
388
|
-
|
389
|
-
def add_opensearch_tags(xml)
|
390
|
-
xml.opensearch(:totalResults){|tr|tr<<@total_results} if @total_results
|
391
|
-
xml.opensearch(:startIndex){|si|si << @start_index} if @start_index
|
392
|
-
xml.opensearch(:itemsPerPage){|ipp|ipp<<@items_per_page} if @items_per_page
|
393
|
-
@queries.each { | key, obj |
|
394
|
-
obj.build_xml(xml)
|
395
|
-
}
|
396
|
-
end
|
397
|
-
end
|
398
|
-
end
|