├── .byebug_history ├── .codeclimate.yml ├── .coveralls.yml ├── .gitignore ├── .gitmodules ├── .hooves ├── .rspec ├── .rubocop.yml ├── .travis.yml ├── Capfile ├── Gemfile ├── Gemfile.lock ├── Guardfile ├── README.md ├── Rakefile ├── VERSION ├── app ├── assets │ ├── fonts │ │ ├── TrajanPro-Bold.otf │ │ ├── TrajanPro-Regular.otf │ │ ├── trajanpro-regular-webfont.eot │ │ ├── trajanpro-regular-webfont.svg │ │ ├── trajanpro-regular-webfont.ttf │ │ └── trajanpro-regular-webfont.woff │ ├── images │ │ ├── QuestionMark.png │ │ ├── TrajanPro-Bold.otf │ │ ├── TrajanPro-Regular.otf │ │ ├── ajax-indicator.gif │ │ ├── ajax-loader.gif │ │ ├── apple-touch-icon-144x144.png │ │ ├── blacklight │ │ │ ├── bg.png │ │ │ ├── border.png │ │ │ ├── bul_sq_gry.gif │ │ │ ├── checkmark.gif │ │ │ ├── logo.png │ │ │ ├── magnifying_glass.gif │ │ │ ├── remove.gif │ │ │ ├── separator.gif │ │ │ └── start_over.gif │ │ ├── clio-beta.png │ │ ├── clio-logo.png │ │ ├── clio-new-arrivals.png │ │ ├── clio-spectrum.png │ │ ├── clio_beta.jpg │ │ ├── clio_beta_logos_4a_5.png │ │ ├── clio_beta_logos_small.png │ │ ├── colorbox │ │ │ ├── border.png │ │ │ ├── controls.png │ │ │ ├── internet_explorer │ │ │ │ ├── borderBottomCenter.png │ │ │ │ ├── borderBottomLeft.png │ │ │ │ ├── borderBottomRight.png │ │ │ │ ├── borderMiddleLeft.png │ │ │ │ ├── borderMiddleRight.png │ │ │ │ ├── borderTopCenter.png │ │ │ │ ├── borderTopLeft.png │ │ │ │ └── borderTopRight.png │ │ │ ├── loading.gif │ │ │ ├── loading_background.png │ │ │ └── overlay.png │ │ ├── contact.png │ │ ├── contactable │ │ │ ├── ajax-loader.gif │ │ │ └── contact.png │ │ ├── ds_pointer.png │ │ ├── elink.gif │ │ ├── favicon-crown.png │ │ ├── format_icons │ │ │ ├── default.png │ │ │ ├── doc.png │ │ │ ├── mp3.png │ │ │ ├── mp4.png │ │ │ ├── pdf.png │ │ │ ├── ppt.png │ │ │ ├── xls.png │ │ │ └── xlsx.png │ │ ├── gb_preview.png │ │ ├── help.png │ │ ├── help_button.png │ │ ├── icons │ │ │ ├── 24-book-blue-add.png │ │ │ ├── 24-book-blue-remove.png │ │ │ ├── art-work.png │ │ │ ├── article.png │ │ │ ├── available.png │ │ │ ├── book.png │ │ │ ├── cancel.png │ │ │ ├── cdc-burst.png │ │ │ ├── cdc1.png │ │ │ ├── checked_out.png │ │ │ ├── computer-file.png │ │ │ ├── conference.png │ │ │ ├── database.png │ │ │ ├── ebook.png │ │ │ ├── facet_cancel.png │ │ │ ├── facet_minus.png │ │ │ ├── facet_plus.png │ │ │ ├── facet_x.png │ │ │ ├── govdoc.png │ │ │ ├── image.png │ │ │ ├── journal.png │ │ │ ├── link-old.png │ │ │ ├── link.png │ │ │ ├── manuscript.png │ │ │ ├── map-or-globe.png │ │ │ ├── microform.png │ │ │ ├── musical-recording.png │ │ │ ├── musical-score.png │ │ │ ├── newspaper.png │ │ │ ├── non-musical-recording.png │ │ │ ├── non_circulating.png │ │ │ ├── noncirc.png │ │ │ ├── none.png │ │ │ ├── none_yellow_question_mark.png │ │ │ ├── not_available.png │ │ │ ├── online.png │ │ │ ├── page.png │ │ │ ├── serial.png │ │ │ ├── some_available.png │ │ │ ├── spacer12x12.png │ │ │ ├── stock_inbox.png │ │ │ ├── stock_spam.png │ │ │ ├── thesis.png │ │ │ ├── unavailable.png │ │ │ ├── unknown.png │ │ │ ├── video.png │ │ │ └── volume.png │ │ ├── information_icon.png │ │ ├── ldpd-toolkit │ │ │ ├── bg_stripes.gif │ │ │ ├── clio_beta_logo.png │ │ │ ├── clio_logo.png │ │ │ ├── crown-bts-24x24.png │ │ │ ├── cul-banner-txt-02.png │ │ │ ├── cul-banner-txt-services.png │ │ │ ├── cul-banner-txt-simple.png │ │ │ ├── cul-banner-txt.png │ │ │ ├── culblog-icon-sq.png │ │ │ ├── engineering-banner-txt.png │ │ │ ├── facebook-icon-sq.png │ │ │ ├── foursquare-icon-sq.png │ │ │ ├── glyphicons-halflings-white.png │ │ │ ├── glyphicons-halflings.png │ │ │ ├── math-banner-txt.png │ │ │ ├── math-science-banner-txt.png │ │ │ ├── request-it-banner-txt.png │ │ │ ├── rss-icon-sq.png │ │ │ ├── search-delivery-banner-txt.png │ │ │ └── twitter-icon-sq.png │ │ ├── level-blue.gif │ │ ├── level-green.gif │ │ ├── level-orange.gif │ │ ├── level-red.gif │ │ ├── orange-clock.png │ │ ├── rails.png │ │ ├── rss-feed-icon-14x14.png │ │ ├── search.png │ │ ├── select-arrow.png │ │ ├── spacer-.png │ │ ├── spacer.png │ │ ├── start_over.gif │ │ ├── warning-icon.png │ │ └── warning_icon.png │ ├── javascripts │ │ ├── advanced.js.coffee │ │ ├── application.js │ │ ├── arrows.js.coffee │ │ ├── articles.js │ │ ├── astroids.js │ │ ├── async-search.js.coffee │ │ ├── best_bets.js │ │ ├── bootstrap-datepicker.js │ │ ├── catalog.js.coffee │ │ ├── confetti.js │ │ ├── datasources.js.coffee │ │ ├── dropdown_select.js.coffee │ │ ├── es6_bits.js │ │ ├── google_analytics.js │ │ ├── hathi.js.UNUSED │ │ ├── holdings.js.coffee │ │ ├── ie_warnings.js │ │ ├── in_viewport.js │ │ ├── item_actions.js.coffee │ │ ├── item_alerts.js.coffee │ │ ├── konami.js │ │ ├── ldpd_feedback.js │ │ ├── location.js │ │ ├── location │ │ │ ├── google_map.js │ │ │ └── underscore-min.js │ │ ├── log.js │ │ ├── matomo.js │ │ ├── modal_manager_override.js.coffee │ │ ├── nearby.js.coffee │ │ ├── preferences.coffee │ │ ├── resolver.js │ │ ├── saved_lists.js.coffee │ │ ├── scroll_memory.js.coffee │ │ └── xls.js │ └── stylesheets │ │ ├── _hours.sass │ │ ├── _layout.sass │ │ ├── _print.sass │ │ ├── a_local_application.sass │ │ ├── advanced_search.sass │ │ ├── application.sass │ │ ├── articles.sass │ │ ├── best_bets.sass │ │ ├── blacklight_range_limit_local.scss │ │ ├── book_cover.sass │ │ ├── bootstrap_bits.sass │ │ ├── callouts.scss │ │ ├── catalog.sass │ │ ├── clio_last.scss │ │ ├── datasources.sass │ │ ├── datepicker.scss │ │ ├── debug.sass │ │ ├── donor_info_icon.sass │ │ ├── facets.sass │ │ ├── gmaps4rails.sass │ │ ├── header.sass │ │ ├── item_alerts.sass │ │ ├── libraryh3lp.sass │ │ ├── log.sass │ │ ├── lweb.sass │ │ ├── navbar.scss │ │ ├── preferences.sass │ │ ├── redesign.sass │ │ ├── saved_lists.sass │ │ ├── scaffolds.scss │ │ └── search.sass ├── controllers │ ├── admin_controller.rb │ ├── application_controller.rb │ ├── authorities_controller.rb │ ├── backend_controller.rb │ ├── best_bets_controller.rb │ ├── browse_controller.rb │ ├── catalog_controller.rb │ ├── item_alerts_controller.rb │ ├── local_subject_controller.rb │ ├── locations_controller.rb │ ├── logs_controller.rb │ ├── preferences_controller.rb │ ├── saved_list_items_controller.rb │ ├── saved_lists_controller.rb │ ├── search_history_controller.rb │ ├── spectrum_controller.rb │ └── users │ │ ├── omniauth_callbacks_controller.rb │ │ └── sessions_controller.rb ├── helpers │ ├── advanced_helper.rb │ ├── application_helper.rb │ ├── articles_helper.rb │ ├── browse_helper.rb │ ├── cul_catalog_helper.rb │ ├── cul_facets_helper.rb │ ├── datasources_helper.rb │ ├── display_helper.rb │ ├── holdings_helper.rb │ ├── item_alert_helper.rb │ ├── local_solr_helper_extension.rb │ ├── logs_helper.rb │ ├── marc_helper.rb │ ├── preferences_helper.rb │ ├── saved_lists_helper.rb │ └── search_helper.rb ├── lib │ ├── clancy │ │ └── caia_soft.rb │ ├── recap │ │ └── scsb_rest.rb │ └── traject_utility.rb ├── mailers │ ├── application_mailer.rb │ ├── rake_mailer.rb │ └── record_mailer.rb ├── models │ ├── ability.rb │ ├── ac_document.rb │ ├── application_record.rb │ ├── best_bet.rb │ ├── hours_db │ │ ├── calendar.rb │ │ └── hours_library.rb │ ├── item_alert.rb │ ├── library.rb │ ├── library_hours.rb │ ├── library_web │ │ └── document.rb │ ├── local_subject.rb │ ├── location.rb │ ├── log.rb │ ├── lweb_document.rb │ ├── option.rb │ ├── preference.rb │ ├── saved_list.rb │ ├── saved_list_item.rb │ ├── search_builder.rb │ ├── simplye_link.rb │ ├── solr_document.rb │ ├── spectrum │ │ ├── queries │ │ │ └── solr.rb │ │ ├── search_engines │ │ │ ├── ac.rb │ │ │ ├── google_appliance.rb │ │ │ ├── google_custom_search.rb │ │ │ ├── solr.rb │ │ │ └── summon.rb │ │ └── solr_repository.rb │ └── user.rb └── views │ ├── _ask_a_librarian.html.haml │ ├── _async_setting.html.haml │ ├── _authority_variants.html.haml │ ├── _coins.html.haml │ ├── _datasource_warning.html.haml │ ├── _datasources_dropdown.html.haml │ ├── _debug_mode.html.haml │ ├── _display │ ├── browse │ │ ├── _compact_list.html.haml │ │ └── _standard_list.html.haml │ ├── catalog │ │ ├── _compact_list.html.haml │ │ ├── _show.html.haml │ │ └── _standard_list.html.haml │ └── databases │ │ └── _a_to_z.html.haml │ ├── _dropdown_select.html.haml │ ├── _footer.html.haml │ ├── _formats │ ├── ac │ │ ├── _ac.html.haml │ │ ├── _aggregate.html.haml │ │ └── _standard_list_item.html.haml │ ├── art_work │ │ └── _catalog_show.html.haml │ ├── article │ │ ├── _aggregate.html.haml │ │ └── _summon.html.haml │ ├── book-tbd │ │ └── _catalog_show.html.haml.tbd │ ├── clio │ │ ├── _aggregate.html.haml │ │ ├── _catalog_list_details.html.haml │ │ ├── _catalog_show.html.haml │ │ ├── _catalog_show_holdings.html.haml │ │ ├── _catalog_show_holdings_clio.html.haml │ │ ├── _catalog_show_holdings_display.html.haml │ │ ├── _catalog_show_holdings_ebook.html.haml │ │ ├── _catalog_show_holdings_google.html.haml │ │ ├── _catalog_show_holdings_hathi.html.haml │ │ ├── _catalog_show_holdings_online.html.haml │ │ ├── _catalog_show_holdings_pegasus.haml │ │ ├── _catalog_show_holdings_simplye.html.haml │ │ ├── _catalog_show_nearby.html.haml │ │ ├── _catalog_show_toolbar.html.haml │ │ ├── _catalog_show_worldcat_link.haml │ │ ├── _compact_browse_item.html.haml │ │ ├── _compact_list_details.html.haml │ │ ├── _compact_list_item.html.haml │ │ ├── _standard_browse_item.html.haml │ │ └── _standard_list_item.html.haml │ ├── database │ │ ├── _aggregate.html.haml │ │ ├── _catalog_list.html.haml │ │ ├── _catalog_list_details.html.haml │ │ ├── _catalog_manage_alert.html.haml │ │ └── _catalog_show.html.haml.tbd │ ├── dlc │ │ ├── _aggregate.html.haml │ │ └── _standard_list_item.html.haml │ ├── geo │ │ ├── _aggregate.html.haml │ │ └── _standard_list_item.html.haml │ ├── lweb │ │ ├── _aggregate.html.haml │ │ └── _lweb.html.haml │ ├── manuscript_archive │ │ └── _catalog_show.html.haml │ ├── map_globe │ │ └── _catalog_show.html.haml.tbd │ ├── music │ │ └── _catalog_show.html.haml │ ├── music_recording │ │ └── _catalog_show.html.haml │ ├── serial │ │ └── _catalog_show.html.haml │ ├── summon │ │ └── _summon_show.html.haml │ └── video │ │ └── _catalog_show.html.haml │ ├── _header_with_search.html.haml │ ├── _item_number.haml │ ├── _link_to_prod.html.haml │ ├── _marc_view.html.haml │ ├── _search │ ├── _constraints.html.haml │ ├── _facets.html.haml │ └── _search_box.html.haml │ ├── _summon_warning.html.haml │ ├── _top_banner.html.haml │ ├── _top_navigation_bar.html.haml │ ├── admin │ ├── format_icons.html.haml │ ├── request_services.html.haml │ └── system.html.haml │ ├── authorities │ ├── author.haml │ ├── author_marc.haml │ ├── index.haml │ └── show.haml │ ├── browse │ ├── _browse_focus_bookmark.html.haml │ ├── _browse_title.html.haml │ ├── _browse_toolbar_full.haml │ ├── _browse_toolbar_mini.haml │ ├── _call_number_toggle.html.haml │ ├── _mini_browse_panel.html.haml │ ├── _per_page_widget.html.haml │ ├── shelfkey_full.html.haml │ └── shelfkey_mini.html.haml │ ├── catalog │ ├── _advanced_search.html.haml │ ├── _atom_summary.html.haml │ ├── _bound_with.html.haml │ ├── _constraint_dropdown.html.haml │ ├── _constraints.html.haml │ ├── _constraints_delete.html.haml │ ├── _donor_info.html.haml │ ├── _download_menu.html.haml │ ├── _email_form.html.erb │ ├── _facet_callnumber.html.haml │ ├── _facet_callnumber_letter.html.haml │ ├── _facet_callnumber_subclass.html.haml │ ├── _facet_layout.html.haml │ ├── _facet_limit.html.haml │ ├── _facets.html.haml │ ├── _google_books_check.html.haml │ ├── _holdings_check.html.haml │ ├── _index_toolbar.haml │ ├── _no_results_blurb.haml │ ├── _per_page_widget.haml │ ├── _results_pagination.html.haml │ ├── _selections_widget.html.haml │ ├── _sms_form.html.erb │ ├── _sort_widget.html.erb │ ├── email.html.erb │ ├── facet.html.haml │ ├── hathi_holdings.haml │ ├── index.atom.builder │ ├── index.csv.haml │ ├── index.html.haml │ ├── index.rss.builder │ ├── index.xls.erb │ ├── librarian_view.html.haml │ ├── show.html.haml │ ├── xls_form.html.erb │ └── xlsx_form.html.erb │ ├── item_alerts │ ├── _form.html.haml │ ├── _show_table_row.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ ├── new.html.haml │ ├── show.html.haml │ └── show_table_row.html.haml │ ├── kaminari │ └── blacklight_compact │ │ └── _paginator.html.erb │ ├── landing_pages │ ├── _ac.html.haml │ ├── _academic_commons.html.haml │ ├── _archives.html.haml │ ├── _articles.html.haml │ ├── _catalog.html.haml │ ├── _databases.html.haml │ ├── _dissertations.html.haml │ ├── _dlc.html.haml │ ├── _ebooks.html.haml │ ├── _geo.html.haml │ ├── _govdocs.html.haml │ ├── _journals.html.haml │ ├── _library_web.html.haml │ ├── _lweb.html.haml │ ├── _new_arrivals.html.haml │ ├── _quicksearch.html.haml │ └── _research_data.html.haml │ ├── layouts │ ├── _best_bets.html.haml │ ├── _common_head.html.haml │ ├── _common_tail.html.haml │ ├── _messages.html.haml │ ├── blank.html.haml │ ├── js_return.html.haml │ ├── location.html.haml │ ├── mailer.html.erb │ ├── mailer.text.erb │ ├── no_sidebar.html.haml │ ├── no_sidebar_no_search.html.haml │ └── quicksearch.html.haml │ ├── locations │ ├── _infowindow.html.haml │ └── show.html.haml │ ├── logs │ ├── index.csv.erb │ ├── index.html.erb │ ├── month_list.html.erb │ └── set_list.html.erb │ ├── preferences │ ├── _datasource_sidebar_form.haml │ ├── _form.html.haml │ ├── _quicksearch_bentos_form.haml │ ├── _summon_facet_form.haml │ ├── edit.html.haml │ ├── index.html.haml │ └── new.html.haml │ ├── record_mailer │ ├── email_record.html.haml │ └── sms_record.text.erb │ ├── saved_list_items │ ├── _form.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ └── new.html.haml │ ├── saved_lists │ ├── _email_form.html.erb │ ├── _form.html.haml │ ├── _item_select_checkbox.html.haml │ ├── _list_actions_widget.html.haml │ ├── _menu_list.html.haml │ ├── _move_or_copy_items.html.haml │ ├── _savedlist_control_panel.html.haml │ ├── edit.html.haml │ ├── email.html.erb │ ├── new.html.haml │ ├── show.atom.builder │ └── show.html.haml │ ├── spectrum │ ├── _ac.html.haml │ ├── _aggregate.html.haml │ ├── _lweb.html.erb │ ├── _lweb.html.haml.OLD │ ├── _summon.html.haml │ ├── ac │ │ ├── _constraints.html.haml │ │ ├── _facets.html.haml │ │ ├── _index_toolbar.haml │ │ ├── _no_results_blurb.haml │ │ └── _result_docs.html.haml │ ├── aggregate │ │ ├── _result_docs.html.haml │ │ ├── _result_footer.html.haml │ │ ├── _result_header.html.haml │ │ ├── _result_header_async.html.haml │ │ └── _result_set.html.haml │ ├── checked_out_items.html.haml │ ├── facet.html.haml │ ├── hits.html.haml │ ├── lweb │ │ ├── _constraints.html.haml │ │ ├── _index_toolbar.haml │ │ ├── _no_results_blurb.haml │ │ ├── _quicksearch_panel.html.haml │ │ └── _result_docs.html.haml │ ├── search.html.haml │ ├── search.marc │ ├── searchjson.html.haml │ └── summon │ │ ├── _advanced_search.html.haml │ │ ├── _constraints.html.haml │ │ ├── _facets.html.haml │ │ ├── _index_toolbar.haml │ │ ├── _no_results_blurb.haml │ │ └── _result_docs.html.haml │ └── top_nav │ ├── _ask_a_librarian.html.haml │ ├── _crown_menu.html.haml │ ├── _help_menu.html.haml │ └── _login_menu.html.haml ├── bin ├── bundle ├── rails ├── rake ├── setup ├── update └── yarn ├── config.ru ├── config ├── app_config.yml.EXAMPLE ├── app_config.yml.travis ├── application.rb ├── blacklight.yml.EXAMPLE ├── blacklight.yml.travis ├── boot.rb ├── cable.yml ├── cas.yml.EXAMPLE ├── database.yml.EXAMPLE ├── database.yml.travis ├── database_browse.yml ├── datasources.yml ├── deploy.rb ├── deploy │ ├── clio_app_prod.rb │ ├── clio_batch_dev.rb │ ├── clio_batch_prod.rb │ ├── clio_batch_test.rb │ ├── clio_dev.rb │ ├── clio_prod.rb │ ├── clio_test.rb │ └── staging.rb ├── donor_info.yml ├── environment.rb ├── environments │ ├── clio_dev.rb │ ├── clio_prod.rb │ ├── clio_test.rb │ ├── development.rb │ ├── production.rb │ ├── spectrum_prod_master.rb │ └── test.rb ├── initializers │ ├── aaa_load_app_config.rb │ ├── application_controller_renderer.rb │ ├── assets.rb │ ├── backtrace_silencers.rb │ ├── cookies_serializer.rb │ ├── devise.rb │ ├── facets_override.rb │ ├── filter_parameter_logging.rb │ ├── footnotes.rb │ ├── google_analytics.rb │ ├── google_api_client.rb │ ├── has_options.rb │ ├── inflections.rb │ ├── load_local_subjects.rb │ ├── mime_types.rb │ ├── new_framework_defaults_5_1.rb │ ├── rack_attack.rb │ ├── recaptcha.rb │ ├── secret_token.rb │ ├── session_store.rb │ ├── uptime.rb │ └── wrap_parameters.rb ├── item_status_codes.yml ├── locales │ ├── blacklight.en.yml │ ├── devise.en.yml │ └── en.yml ├── locations_fixture.yml ├── marc_display_fields.yml ├── newrelic.yml ├── offsite.yml ├── opac_searches_sorted.txt ├── order_status_codes.yml ├── permissions.yml ├── puma.rb ├── routes.rb ├── schedule.rb ├── searches.yml ├── solr │ ├── README.txt │ └── configsets │ │ └── clio │ │ └── conf │ │ ├── lang │ │ ├── contractions_ca.txt │ │ ├── contractions_fr.txt │ │ ├── contractions_ga.txt │ │ ├── contractions_it.txt │ │ ├── hyphenations_ga.txt │ │ ├── stemdict_nl.txt │ │ ├── stoptags_ja.txt │ │ ├── stopwords_ar.txt │ │ ├── stopwords_bg.txt │ │ ├── stopwords_ca.txt │ │ ├── stopwords_cz.txt │ │ ├── stopwords_da.txt │ │ ├── stopwords_de.txt │ │ ├── stopwords_el.txt │ │ ├── stopwords_en.txt │ │ ├── stopwords_es.txt │ │ ├── stopwords_eu.txt │ │ ├── stopwords_fa.txt │ │ ├── stopwords_fi.txt │ │ ├── stopwords_fr.txt │ │ ├── stopwords_ga.txt │ │ ├── stopwords_gl.txt │ │ ├── stopwords_hi.txt │ │ ├── stopwords_hu.txt │ │ ├── stopwords_hy.txt │ │ ├── stopwords_id.txt │ │ ├── stopwords_it.txt │ │ ├── stopwords_ja.txt │ │ ├── stopwords_lv.txt │ │ ├── stopwords_nl.txt │ │ ├── stopwords_no.txt │ │ ├── stopwords_pt.txt │ │ ├── stopwords_ro.txt │ │ ├── stopwords_ru.txt │ │ ├── stopwords_sv.txt │ │ ├── stopwords_th.txt │ │ ├── stopwords_tr.txt │ │ └── userdict_ja.txt │ │ ├── managed-schema │ │ ├── mapping-apostropheish.txt │ │ ├── params.json │ │ ├── protwords.txt │ │ ├── solrconfig.xml │ │ ├── stopwords.txt │ │ └── synonyms.txt ├── spring.rb ├── traject │ ├── authorities.rb │ └── bibliographic.rb └── wet_ranges.yml ├── db ├── migrate │ ├── 20090611201815_create_options.rb │ ├── 20101130172511_create_locations.rb │ ├── 20101213160031_create_libraries.rb │ ├── 20101213191638_create_library_hours.rb │ ├── 20110512152511_create_searches.rb │ ├── 20110512152512_create_bookmarks.rb │ ├── 20110512152513_remove_editable_fields_from_bookmarks.rb │ ├── 20110512152514_add_user_types_to_bookmarks_searches.rb │ ├── 20120131170432_add_sessions_table.rb │ ├── 20120713135411_create_users.rb │ ├── 20120716182701_add_devise_to_users.rb │ ├── 20120718165239_add_password_salt.rb │ ├── 20121113211955_create_item_alerts.rb │ ├── 20130614173623_create_saved_lists.rb │ ├── 20130614173638_create_saved_list_items.rb │ ├── 20130702170157_create_versions.rb │ ├── 20150218220036_add_location_code_to_locations.rb │ ├── 20150304151755_change_length_of_category_to_12.rb │ ├── 20150604161023_add_polymorphic_type_to_bookmarks.blacklight.rb │ ├── 20160930143849_create_preferences.rb │ ├── 20180101010101_library_code.rb │ ├── 20180401010101_best_bets.rb │ ├── 20181001010101_logs.rb │ ├── 20181101010101_affils.rb │ ├── 20190601010101_add_tags_to_best_bets.rb │ ├── 20210101010101_create_local_subjects.rb │ └── 20210201010101_create_simplye.rb ├── schema.rb └── seeds.rb ├── doc └── README_FOR_APP ├── lib ├── browse_support.rb ├── covid.rb ├── format_macro.rb ├── has_options.rb ├── hathi_macro.rb ├── holdings │ ├── collection.rb │ ├── item.rb │ └── record.rb ├── monkey_patches.rb ├── nearby_on_shelf.rb ├── preference_support.rb ├── response_timer.rb ├── tasks │ ├── .gitkeep │ ├── authorities.rake │ ├── bibliographic.rake │ ├── foia.rake │ ├── hathi.rake │ ├── load_locations.rake │ ├── recap.rake │ ├── sessions.rake │ ├── shared_support.rake │ ├── simplye.rake │ └── sync_hours.rake └── translation_maps │ ├── callnumber_full_map.properties │ ├── callnumber_map.properties │ ├── country_map.rb │ ├── database_discipline_map.properties │ ├── database_resource_type_map.properties │ ├── language_map.properties │ └── location_map.properties ├── public ├── 404.html ├── 422.html ├── 500.html ├── apple-touch-icon-114x114-precomposed.png ├── apple-touch-icon-120x120-precomposed.png ├── apple-touch-icon-120x120.png ├── apple-touch-icon-144x144-precomposed.png ├── apple-touch-icon-72x72-precomposed.png ├── apple-touch-icon-precomposed.png ├── apple-touch-icon.png ├── colors.css ├── demo.html ├── favicon.ico ├── googleb46478bf96590e15.html ├── img │ └── cul-mob-topbanner_crown.png ├── r.html ├── sitemap.xml ├── static-icons │ ├── available.png │ ├── crown-bts-24x24.png │ ├── default.png │ ├── doc.png │ ├── mp3.png │ ├── mp4.png │ ├── none.png │ ├── pdf.png │ ├── ppt.png │ ├── some_available.png │ ├── unavailable.png │ ├── xls.png │ └── xlsx.png └── stylesheets │ ├── .gitkeep │ └── colorbox │ ├── colorbox.css │ └── images │ ├── border.png │ ├── controls.png │ ├── internet_explorer │ ├── borderBottomCenter.png │ ├── borderBottomLeft.png │ ├── borderBottomRight.png │ ├── borderMiddleLeft.png │ ├── borderMiddleRight.png │ ├── borderTopCenter.png │ ├── borderTopLeft.png │ └── borderTopRight.png │ ├── loading.gif │ ├── loading_background.png │ └── overlay.png └── spec ├── controllers ├── application_controller_spec.rb ├── backend_controller_spec.rb ├── catalog_controller_spec.rb ├── google_appliance_controller_spec.rb ├── item_alerts_controller_spec.rb ├── locations_controller_spec.rb ├── preferences_controller_spec.rb ├── saved_lists_controller_spec.rb └── spectrum_controller_spec.rb ├── factories ├── item_alert.rb ├── library_web_apis.rb ├── library_web_documents.rb └── user.rb ├── features ├── academic_commons │ ├── ac_dissertations_spec.rb │ └── academic_commons_interface_spec.rb ├── archives │ └── archives_interface_spec.rb ├── articles │ ├── articles_advanced_search_spec.rb │ ├── filter_settings_spec.rb │ ├── pagination_links_spec.rb │ └── summon_interface_spec.rb ├── catalog │ ├── catalog_advanced_search_spec.rb │ ├── catalog_interface_spec.rb │ ├── linked_fields_spec.rb │ ├── virtual_shelf_browse_spec.rb │ └── worldcat_links_spec.rb ├── coins_encoding_for_zotero_spec.rb ├── databases │ ├── databases_interface_spec.rb │ └── highlighted_spec.rb ├── email_item_spec.rb ├── html_escape_spec.rb ├── invalid_urls_spec.rb ├── journals │ └── journals_interface_spec.rb ├── law_support_spec.rb ├── libraries_website │ ├── lweb_interface_spec.rb │ └── pagination_links_spec.rb ├── library_hours_spec.rb ├── locations_spec.rb ├── menus_spec.rb ├── new_arrivals │ └── new_arrivals_interface_spec.rb ├── prod_settings_spec.rb ├── quicksearch_spec.rb ├── saved_lists │ └── saved_list_interface_spec.rb ├── search_boxes_cross_fill_spec.rb ├── source_sanity_check_spec.rb └── voyager_api │ ├── README.txt │ ├── test_collection_output_spec.rb │ ├── test_collection_spec.rb │ └── test_record_spec.rb ├── fixtures └── README.txt ├── helpers ├── display_helper_spec.rb ├── helper_exceptions_spec.rb ├── holdings_helper_spec.rb └── item_alert_helper_spec.rb ├── models ├── search_engines │ ├── google_appliance │ │ └── basic_tests_spec.rb │ ├── solr │ │ └── basic_tests_spec.rb │ └── summon │ │ └── basic_tests_spec.rb ├── test_spec.rb └── user_spec.rb ├── relevancy ├── anchored_spec.rb ├── author_searching_spec.rb ├── authorities_spec.rb ├── boosts_spec.rb ├── call_number_searching_spec.rb ├── format_spec.rb ├── isbn_spec.rb ├── misc_spec.rb ├── one-word-titles_spec.rb ├── quoting_spec.rb ├── sorting_spec.rb ├── test_spec.rb └── tibetan_spec.rb ├── routing └── item_alerts_routing_spec.rb ├── spec_helper.rb └── support ├── database_cleaner.rb ├── devise.rb ├── feature_helpers.rb ├── mailer_macros.rb ├── matchers.rb ├── rspec_solr.rb └── vcr_setup.rb /.byebug_history: -------------------------------------------------------------------------------- 1 | quit 2 | where 3 | marc 4 | continue 5 | marc 6 | continue 7 | params[:forgiving] 8 | num_fields = directory.length / DIRECTORY_ENTRY_LENGTH 9 | raise MARC::Exception.new("invalid directory in record") if directory == nil 10 | directory = marc[LEADER_LENGTH..base_address-1] 11 | marc[LEADER_LENGTH..base_address-1] 12 | base_address = record.leader[12..16].to_i 13 | record.leader = marc[0..LEADER_LENGTH-1] 14 | LEADER_LENGTH 15 | record = Record.new() 16 | marc.force_encoding("binary") 17 | marc.respond_to?(:force_encoding) 18 | params[:external_encoding] = marc.encoding 19 | marc.encoding 20 | marc.respond_to?(:encoding) 21 | params.has_key?(:encoding) 22 | -------------------------------------------------------------------------------- /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | # Save as .codeclimate.yml (note leading .) in project root directory 2 | languages: 3 | Ruby: true 4 | JavaScript: true 5 | PHP: true 6 | Python: true 7 | # exclude_paths: 8 | # - "foo/bar.rb" 9 | - "app/assets/javascripts/bootstrap-datepicker.js" 10 | -------------------------------------------------------------------------------- /.coveralls.yml: -------------------------------------------------------------------------------- 1 | 2 | service_name: travis-ci 3 | 4 | repo_token: RmHvC1EZQxk5InhQWE3mMLtWdZlL7P1dv 5 | 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | config/database.yml 2 | config/app_config.yml 3 | config/service_locations.yml 4 | config/solr.yml 5 | config/blacklight.yml 6 | config/cas.yml 7 | config/secrets.yml 8 | config/recapftp_rsa 9 | config/initializers/secret_token.rb 10 | config/*.sphinx.conf 11 | config/s3_credentials.yml 12 | config/initializers/computer_specific_config.rb 13 | *~ 14 | *.cache 15 | *.log 16 | *.log.* 17 | *.pid 18 | tmp/**/* 19 | tmp/* 20 | *.sqlite3-journal 21 | private/** 22 | .DS_Store 23 | db/cstore/** 24 | db/sphinx/** 25 | doc/api 26 | doc/app 27 | doc/plugins 28 | doc/*.dot 29 | jetty/ 30 | coverage/* 31 | db/*.sqlite3 32 | *.tmproj 33 | *.ruby-version* 34 | *.rvmrc* 35 | *.sw? 36 | .sass-cache/**/* 37 | public/clicktale 38 | public/assets 39 | spec/reports 40 | spec/examples.txt 41 | token.txt 42 | 43 | # Elastic Beanstalk Files 44 | .elasticbeanstalk/* 45 | !.elasticbeanstalk/*.cfg.yml 46 | !.elasticbeanstalk/*.global.yml 47 | TUNNELS 48 | EXAMPLES.txt 49 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/.gitmodules -------------------------------------------------------------------------------- /.hooves: -------------------------------------------------------------------------------- 1 | worker_processes 5 2 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --color --format documentation 2 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | 2 | Metrics/LineLength: 3 | Max: 200 4 | 5 | Style/NumericLiterals: 6 | MinDigits: 10 7 | 8 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | v9.5.13 2 | -------------------------------------------------------------------------------- /app/assets/fonts/TrajanPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/fonts/TrajanPro-Bold.otf -------------------------------------------------------------------------------- /app/assets/fonts/TrajanPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/fonts/TrajanPro-Regular.otf -------------------------------------------------------------------------------- /app/assets/fonts/trajanpro-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/fonts/trajanpro-regular-webfont.eot -------------------------------------------------------------------------------- /app/assets/fonts/trajanpro-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/fonts/trajanpro-regular-webfont.ttf -------------------------------------------------------------------------------- /app/assets/fonts/trajanpro-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/fonts/trajanpro-regular-webfont.woff -------------------------------------------------------------------------------- /app/assets/images/QuestionMark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/QuestionMark.png -------------------------------------------------------------------------------- /app/assets/images/TrajanPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/TrajanPro-Bold.otf -------------------------------------------------------------------------------- /app/assets/images/TrajanPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/TrajanPro-Regular.otf -------------------------------------------------------------------------------- /app/assets/images/ajax-indicator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ajax-indicator.gif -------------------------------------------------------------------------------- /app/assets/images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ajax-loader.gif -------------------------------------------------------------------------------- /app/assets/images/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /app/assets/images/blacklight/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/bg.png -------------------------------------------------------------------------------- /app/assets/images/blacklight/border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/border.png -------------------------------------------------------------------------------- /app/assets/images/blacklight/bul_sq_gry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/bul_sq_gry.gif -------------------------------------------------------------------------------- /app/assets/images/blacklight/checkmark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/checkmark.gif -------------------------------------------------------------------------------- /app/assets/images/blacklight/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/logo.png -------------------------------------------------------------------------------- /app/assets/images/blacklight/magnifying_glass.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/magnifying_glass.gif -------------------------------------------------------------------------------- /app/assets/images/blacklight/remove.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/remove.gif -------------------------------------------------------------------------------- /app/assets/images/blacklight/separator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/separator.gif -------------------------------------------------------------------------------- /app/assets/images/blacklight/start_over.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/blacklight/start_over.gif -------------------------------------------------------------------------------- /app/assets/images/clio-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio-beta.png -------------------------------------------------------------------------------- /app/assets/images/clio-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio-logo.png -------------------------------------------------------------------------------- /app/assets/images/clio-new-arrivals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio-new-arrivals.png -------------------------------------------------------------------------------- /app/assets/images/clio-spectrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio-spectrum.png -------------------------------------------------------------------------------- /app/assets/images/clio_beta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio_beta.jpg -------------------------------------------------------------------------------- /app/assets/images/clio_beta_logos_4a_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio_beta_logos_4a_5.png -------------------------------------------------------------------------------- /app/assets/images/clio_beta_logos_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/clio_beta_logos_small.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/border.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/controls.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderBottomCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderBottomCenter.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderBottomLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderBottomLeft.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderBottomRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderBottomRight.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderMiddleLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderMiddleLeft.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderMiddleRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderMiddleRight.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderTopCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderTopCenter.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderTopLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderTopLeft.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/internet_explorer/borderTopRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/internet_explorer/borderTopRight.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/loading.gif -------------------------------------------------------------------------------- /app/assets/images/colorbox/loading_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/loading_background.png -------------------------------------------------------------------------------- /app/assets/images/colorbox/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/colorbox/overlay.png -------------------------------------------------------------------------------- /app/assets/images/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/contact.png -------------------------------------------------------------------------------- /app/assets/images/contactable/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/contactable/ajax-loader.gif -------------------------------------------------------------------------------- /app/assets/images/contactable/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/contactable/contact.png -------------------------------------------------------------------------------- /app/assets/images/ds_pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ds_pointer.png -------------------------------------------------------------------------------- /app/assets/images/elink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/elink.gif -------------------------------------------------------------------------------- /app/assets/images/favicon-crown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/favicon-crown.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/default.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/doc.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/mp3.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/mp4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/mp4.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/pdf.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/ppt.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/xls.png -------------------------------------------------------------------------------- /app/assets/images/format_icons/xlsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/format_icons/xlsx.png -------------------------------------------------------------------------------- /app/assets/images/gb_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/gb_preview.png -------------------------------------------------------------------------------- /app/assets/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/help.png -------------------------------------------------------------------------------- /app/assets/images/help_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/help_button.png -------------------------------------------------------------------------------- /app/assets/images/icons/24-book-blue-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/24-book-blue-add.png -------------------------------------------------------------------------------- /app/assets/images/icons/24-book-blue-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/24-book-blue-remove.png -------------------------------------------------------------------------------- /app/assets/images/icons/art-work.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/art-work.png -------------------------------------------------------------------------------- /app/assets/images/icons/article.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/article.png -------------------------------------------------------------------------------- /app/assets/images/icons/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/available.png -------------------------------------------------------------------------------- /app/assets/images/icons/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/book.png -------------------------------------------------------------------------------- /app/assets/images/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/cancel.png -------------------------------------------------------------------------------- /app/assets/images/icons/cdc-burst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/cdc-burst.png -------------------------------------------------------------------------------- /app/assets/images/icons/cdc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/cdc1.png -------------------------------------------------------------------------------- /app/assets/images/icons/checked_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/checked_out.png -------------------------------------------------------------------------------- /app/assets/images/icons/computer-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/computer-file.png -------------------------------------------------------------------------------- /app/assets/images/icons/conference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/conference.png -------------------------------------------------------------------------------- /app/assets/images/icons/database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/database.png -------------------------------------------------------------------------------- /app/assets/images/icons/ebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/ebook.png -------------------------------------------------------------------------------- /app/assets/images/icons/facet_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/facet_cancel.png -------------------------------------------------------------------------------- /app/assets/images/icons/facet_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/facet_minus.png -------------------------------------------------------------------------------- /app/assets/images/icons/facet_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/facet_plus.png -------------------------------------------------------------------------------- /app/assets/images/icons/facet_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/facet_x.png -------------------------------------------------------------------------------- /app/assets/images/icons/govdoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/govdoc.png -------------------------------------------------------------------------------- /app/assets/images/icons/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/image.png -------------------------------------------------------------------------------- /app/assets/images/icons/journal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/journal.png -------------------------------------------------------------------------------- /app/assets/images/icons/link-old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/link-old.png -------------------------------------------------------------------------------- /app/assets/images/icons/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/link.png -------------------------------------------------------------------------------- /app/assets/images/icons/manuscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/manuscript.png -------------------------------------------------------------------------------- /app/assets/images/icons/map-or-globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/map-or-globe.png -------------------------------------------------------------------------------- /app/assets/images/icons/microform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/microform.png -------------------------------------------------------------------------------- /app/assets/images/icons/musical-recording.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/musical-recording.png -------------------------------------------------------------------------------- /app/assets/images/icons/musical-score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/musical-score.png -------------------------------------------------------------------------------- /app/assets/images/icons/newspaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/newspaper.png -------------------------------------------------------------------------------- /app/assets/images/icons/non-musical-recording.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/non-musical-recording.png -------------------------------------------------------------------------------- /app/assets/images/icons/non_circulating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/non_circulating.png -------------------------------------------------------------------------------- /app/assets/images/icons/noncirc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/noncirc.png -------------------------------------------------------------------------------- /app/assets/images/icons/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/none.png -------------------------------------------------------------------------------- /app/assets/images/icons/none_yellow_question_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/none_yellow_question_mark.png -------------------------------------------------------------------------------- /app/assets/images/icons/not_available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/not_available.png -------------------------------------------------------------------------------- /app/assets/images/icons/online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/online.png -------------------------------------------------------------------------------- /app/assets/images/icons/page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/page.png -------------------------------------------------------------------------------- /app/assets/images/icons/serial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/serial.png -------------------------------------------------------------------------------- /app/assets/images/icons/some_available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/some_available.png -------------------------------------------------------------------------------- /app/assets/images/icons/spacer12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/spacer12x12.png -------------------------------------------------------------------------------- /app/assets/images/icons/stock_inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/stock_inbox.png -------------------------------------------------------------------------------- /app/assets/images/icons/stock_spam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/stock_spam.png -------------------------------------------------------------------------------- /app/assets/images/icons/thesis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/thesis.png -------------------------------------------------------------------------------- /app/assets/images/icons/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/unavailable.png -------------------------------------------------------------------------------- /app/assets/images/icons/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/unknown.png -------------------------------------------------------------------------------- /app/assets/images/icons/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/video.png -------------------------------------------------------------------------------- /app/assets/images/icons/volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/icons/volume.png -------------------------------------------------------------------------------- /app/assets/images/information_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/information_icon.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/bg_stripes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/bg_stripes.gif -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/clio_beta_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/clio_beta_logo.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/clio_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/clio_logo.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/crown-bts-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/crown-bts-24x24.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/cul-banner-txt-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/cul-banner-txt-02.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/cul-banner-txt-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/cul-banner-txt-services.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/cul-banner-txt-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/cul-banner-txt-simple.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/cul-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/cul-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/culblog-icon-sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/culblog-icon-sq.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/engineering-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/engineering-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/facebook-icon-sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/facebook-icon-sq.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/foursquare-icon-sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/foursquare-icon-sq.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/glyphicons-halflings.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/math-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/math-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/math-science-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/math-science-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/request-it-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/request-it-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/rss-icon-sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/rss-icon-sq.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/search-delivery-banner-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/search-delivery-banner-txt.png -------------------------------------------------------------------------------- /app/assets/images/ldpd-toolkit/twitter-icon-sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/ldpd-toolkit/twitter-icon-sq.png -------------------------------------------------------------------------------- /app/assets/images/level-blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/level-blue.gif -------------------------------------------------------------------------------- /app/assets/images/level-green.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/level-green.gif -------------------------------------------------------------------------------- /app/assets/images/level-orange.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/level-orange.gif -------------------------------------------------------------------------------- /app/assets/images/level-red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/level-red.gif -------------------------------------------------------------------------------- /app/assets/images/orange-clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/orange-clock.png -------------------------------------------------------------------------------- /app/assets/images/rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/rails.png -------------------------------------------------------------------------------- /app/assets/images/rss-feed-icon-14x14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/rss-feed-icon-14x14.png -------------------------------------------------------------------------------- /app/assets/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/search.png -------------------------------------------------------------------------------- /app/assets/images/select-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/select-arrow.png -------------------------------------------------------------------------------- /app/assets/images/spacer-.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/spacer-.png -------------------------------------------------------------------------------- /app/assets/images/spacer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/spacer.png -------------------------------------------------------------------------------- /app/assets/images/start_over.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/start_over.gif -------------------------------------------------------------------------------- /app/assets/images/warning-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/warning-icon.png -------------------------------------------------------------------------------- /app/assets/images/warning_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/assets/images/warning_icon.png -------------------------------------------------------------------------------- /app/assets/javascripts/advanced.js.coffee: -------------------------------------------------------------------------------- 1 | 2 | 3 | $ -> 4 | # Set hide/show state of any .search_box on page load 5 | # (although this should be done already on render) 6 | $('.search_box.selected').show() 7 | $('.search_box').not('.selected').hide() 8 | 9 | # And, listen to the toggle link to flip visibility 10 | $('.advanced_search_toggle').click -> 11 | parent = $(this).parents('.search_boxes') 12 | parent.find('.advanced_search .search_box').toggle() 13 | parent.find('.basic_search .search_box').toggle() 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/assets/javascripts/async-search.js.coffee: -------------------------------------------------------------------------------- 1 | $ -> 2 | 3 | $('.result_set.async_result_set').each -> 4 | result_set = $(this) 5 | url = result_set.attr('data-result-set') 6 | $.get(url, (data) -> 7 | result_set.html(data) 8 | # re-activate popovers on the re-written html: 9 | $("a[rel='popover']").popover() 10 | async_lookup_item_details(result_set) 11 | async_fill_in_hit_count(result_set) 12 | ) 13 | 14 | -------------------------------------------------------------------------------- /app/assets/javascripts/dropdown_select.js.coffee: -------------------------------------------------------------------------------- 1 | 2 | # "Call the dropdowns via JavaScript" - what does this mean? 3 | # http://getbootstrap.com/2.3.2/javascript.html#dropdowns 4 | $('.dropdown-toggle').dropdown() 5 | 6 | # remove Bootstrap-Dropdown-Menu-as-Select-Tag 7 | # $(document).ready -> 8 | # $('.dropdown_select_tag').each (index, container) -> 9 | # $(container).children('select').hide() 10 | # $(container).children('.dropdown-toggle').show() 11 | -------------------------------------------------------------------------------- /app/assets/javascripts/ie_warnings.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | // alert("testing AAA") 4 | 5 | if ( navigator.userAgent.match(/MSIE ([0-9]+)\./) ) { 6 | 7 | if (RegExp.$1 <= 9) { 8 | // alert("old browser: MSIE " + RegExp.$1); 9 | 10 | firefox = 'Firefox' 11 | chrome = 'Chrome' 12 | safari = 'Safari' 13 | msie = 'Internet Explorer (IE) 10' 14 | 15 | $('#outer-container').prepend('
Warning: Your browser is not fully supported. Please use the latest version of one of our fully supported browsers: ' + firefox + ', ' + chrome + ', ' + safari + ', or ' + msie + '. IE 9 is not fully supported and will only offer basic functionality.
'); 16 | } 17 | 18 | } 19 | 20 | }); //ready 21 | 22 | -------------------------------------------------------------------------------- /app/assets/javascripts/item_actions.js.coffee: -------------------------------------------------------------------------------- 1 | 2 | @OpenTextMessage = (bibid) -> 3 | url = 'http://www.columbia.edu/cgi-bin/cul/forms/text?' + bibid 4 | OpenWindow(url) 5 | 6 | @OpenInprocessRequest = (bibid) -> 7 | url = 'https://www1.columbia.edu/sec-cgi-bin/cul/forms/inprocess?' + bibid 8 | OpenWindow(url) 9 | 10 | @OpenSearchRequest = (bibid) -> 11 | url = 'https://www1.columbia.edu/sec-cgi-bin/cul/forms/search?' + bibid 12 | OpenWindow(url) 13 | 14 | # @OpenPrecatRequest = (bibid) -> 15 | # url = 'https://www1.columbia.edu/sec-cgi-bin/cul/forms/precat?' + bibid 16 | # OpenWindow(url) 17 | 18 | @OpenItemFeedback = (bibid) -> 19 | url = 'https://www1.columbia.edu/sec-cgi-bin/cul/forms/itemfeedback?' + bibid 20 | OpenWindow(url) 21 | 22 | @OpenURLinWindow = (bibid, url) -> 23 | full_url = url + bibid 24 | OpenWindow(full_url) 25 | 26 | @OpenWindow = (url) -> 27 | window.open(url,'','left=200,top=200,width=650,height=700,scrollbars') 28 | return false 29 | -------------------------------------------------------------------------------- /app/assets/javascripts/location.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file for the JS that's specific 2 | // to the locations pages. This includes Underscore 3 | // and code for Google Maps integration 4 | 5 | // based on: 6 | // http://www.foraker.com/rails-asset-pipeline-handling-of-css-and-js/ 7 | 8 | //= require_tree ./location 9 | 10 | // This one comes from the gmaps4rails gem 11 | //= require gmaps/google 12 | 13 | -------------------------------------------------------------------------------- /app/assets/javascripts/log.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $('.log-datatable').DataTable( { 3 | pageLength: 100, 4 | lengthMenu: [ [20, 50, 100, -1], [20, 50, 100, "All"] ], 5 | dom: '<"top"flip>', 6 | 'aaSorting': [] 7 | } ); 8 | 9 | } ); 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/assets/javascripts/matomo.js: -------------------------------------------------------------------------------- 1 | // Matomo - NEXT-1862 2 | var _paq = window._paq = window._paq || []; 3 | /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 4 | _paq.push(['trackPageView']); 5 | _paq.push(['enableLinkTracking']); 6 | (function() { 7 | // Matomo only in prod - there is no SiteId for testing 8 | if ($("body").data('environment') == 'clio_prod') { 9 | var u="https://columbia-libraries.matomo.cloud/"; 10 | _paq.push(['setTrackerUrl', u+'matomo.php']); 11 | _paq.push(['setSiteId', '9']); 12 | var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 13 | g.async=true; 14 | g.src='//cdn.matomo.cloud/columbia-libraries.matomo.cloud/matomo.js'; 15 | s.parentNode.insertBefore(g,s); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /app/assets/javascripts/modal_manager_override.js.coffee: -------------------------------------------------------------------------------- 1 | # Unused? 2 | 3 | # $ -> 4 | # $('a[data-toggle="modal"]').click -> 5 | # $('body').addClass('page-overflow') 6 | -------------------------------------------------------------------------------- /app/assets/javascripts/preferences.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | 5 | $ -> 6 | $('#bento_left, #bento_right, #bento_inactive').sortable 7 | connectWith: '.bento_list' 8 | 9 | $('#serialize').click -> 10 | left_sources = $('#bento_left').sortable("toArray") 11 | left_counts = [] 12 | for source in left_sources 13 | id = "#" + source + "_count" 14 | param = source + ":" + $(id).val() 15 | left_counts.push(param) 16 | right_counts = [] 17 | 18 | right_sources = $('#bento_right').sortable("toArray") 19 | for source in right_sources 20 | id = "#" + source + "_count" 21 | param = source + ":" + $(id).val() 22 | right_counts.push(param) 23 | 24 | $.post $(this).data("bento-url"), {bento_left: left_counts, bento_right: right_counts} -------------------------------------------------------------------------------- /app/assets/javascripts/resolver.js: -------------------------------------------------------------------------------- 1 | 2 | // NEXT-1852 - new resolver links in CLIO test 3 | 4 | if (resolver_rewrite_javascript) { 5 | 6 | startTime = new Date(); 7 | 8 | var anchors = document.getElementsByTagName('a'); 9 | 10 | for (var i = 0; i < anchors.length; i++) { 11 | url = anchors[i].href 12 | 13 | old_resolver_url = 'http://www.columbia.edu/cgi-bin/cul/resolve?'; 14 | new_resolver_url = 'https://resolver.library.columbia.edu/'; 15 | 16 | //console.log("found:" + url) 17 | if (url.startsWith(old_resolver_url)) { 18 | console.log("replacing:" + url) 19 | new_url = url.replace(old_resolver_url, new_resolver_url) 20 | anchors[i].href = new_url; 21 | } 22 | 23 | } 24 | 25 | 26 | endTime = new Date(); 27 | timeElapsed = endTime - startTime; 28 | 29 | console.log("Time Elapsed (s):" + (timeElapsed/1000) ); 30 | 31 | } 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/assets/javascripts/xls.js: -------------------------------------------------------------------------------- 1 | 2 | $('#xls_download').click(function(event) { 3 | setTimeout(function() { window.history.back() }, 500) 4 | }); 5 | 6 | 7 | $('#xlsx_download').click(function(event) { 8 | setTimeout(function() { window.history.back() }, 500) 9 | setTimeout(function() { window.focus() }, 1000) 10 | }); 11 | 12 | -------------------------------------------------------------------------------- /app/assets/stylesheets/a_local_application.sass: -------------------------------------------------------------------------------- 1 | 2 | #appliedParams 3 | 4 | h3.label 5 | display: inline 6 | padding-right: .5em 7 | 8 | #intro-text 9 | min-height: 250px 10 | 11 | .closed_icon 12 | vertical-align: bottom 13 | 14 | 15 | //.change_view 16 | // float: left 17 | 18 | #footnotes_debug 19 | background: white 20 | 21 | #startOverLink 22 | padding-left: 1em 23 | padding-top: 5px 24 | float: right 25 | 26 | 27 | #show_previousNextDocument 28 | .previous_next 29 | margin-top: .5em 30 | .back_to_catalog 31 | float: right 32 | 33 | a.folder_link_submit 34 | border-bottom: none 35 | 36 | span.folder_link_text 37 | vertical-align: 20% 38 | padding-left: 2px 39 | border-bottom: 1px dotted #AAA 40 | 41 | a#feedLink 42 | display: inline 43 | text-decoration: none 44 | border-bottom: none 45 | 46 | 47 | img 48 | position: static 49 | padding-left: 3px 50 | 51 | 52 | 53 | h1.site_title 54 | margin: 0 55 | height: 26px 56 | width: 175px 57 | 58 | 59 | -------------------------------------------------------------------------------- /app/assets/stylesheets/advanced_search.sass: -------------------------------------------------------------------------------- 1 | /* Classes used for styling our custom components on the search results page */ 2 | 3 | 4 | .inclusive_or .operator 5 | margin-right: 1em 6 | 7 | 8 | .inclusive_or .appliedFilter 9 | background-color: #F0F0F0 10 | 11 | 12 | #appliedParams .inclusive_or .operator 13 | font-weight: bold 14 | color: #555555 15 | font-size: 108% 16 | 17 | 18 | #facets .advanced_facet_limit ul 19 | border-bottom: none 20 | padding-bottom: 0 21 | 22 | 23 | 24 | .facet_limit .inclusive_or h4 25 | margin-bottom: 0.5em 26 | 27 | 28 | .facet_limit .inclusive_or li 29 | margin-left: 1em 30 | 31 | 32 | .search .advanced_search 33 | font-size: 83.33% 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/assets/stylesheets/best_bets.sass: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* Styles related to Best Bets */ 4 | 5 | 6 | .best-bets-snippet .best-bets-title 7 | font-weight: bold 8 | 9 | .best-bets-snippet.tt-suggestion 10 | padding-left: 2em 11 | text-indent: -1em 12 | font-size: 100% 13 | /* font-size: 95% */ 14 | 15 | 16 | .tt-hint 17 | display: none 18 | 19 | @media (min-width: 400px) 20 | .twitter-typeahead 21 | width: 100% !important 22 | 23 | @media (min-width: 800px) 24 | .twitter-typeahead 25 | width: auto !important 26 | -------------------------------------------------------------------------------- /app/assets/stylesheets/debug.sass: -------------------------------------------------------------------------------- 1 | 2 | .debug_instruction 3 | padding: 1em 4 | background: #f6f6f6 5 | 6 | .debug_entries 7 | padding-top: 1em 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/assets/stylesheets/donor_info_icon.sass: -------------------------------------------------------------------------------- 1 | .donor_info_icon 2 | padding: 3px 4px 3px 28px 3 | margin-right: 3px 4 | background-image: url(/static-icons/crown-bts-24x24.png) 5 | background-repeat: no-repeat 6 | background-size: 24px 24px 7 | background-color: #779bc3 8 | border-radius: 1px 9 | border: 1px solid #779bc3 10 | background-position: 0 11 | color: white 12 | height: 2.2em 13 | font-size: 104% 14 | font-style: normal 15 | line-height: 1.3 16 | 17 | .donor_info, .donor_info_button, .donor_info_message 18 | display: inline-block 19 | 20 | -------------------------------------------------------------------------------- /app/assets/stylesheets/gmaps4rails.sass: -------------------------------------------------------------------------------- 1 | .map_container 2 | padding: 6px 3 | border-width: 1px 4 | border-style: solid 5 | border-color: #ccc #ccc #999 #ccc 6 | -webkit-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px 7 | -moz-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px 8 | box-shadow: rgba(64, 64, 64, 0.1) 0 2px 5px 9 | width: 800px 10 | 11 | 12 | .container.infowindow 13 | max-width: 400px 14 | background-color: #FFFFFF 15 | 16 | 17 | .gmaps4rails_map 18 | width: 800px 19 | height: 400px 20 | 21 | 22 | .bing_map 23 | position: absolute 24 | top: 20 25 | left: 10 26 | width: 400px 27 | height: 400px 28 | border: #555555 2px solid 29 | 30 | // The gmaps4rails gem sets max-width to none for ALL images. 31 | // Undo this for any images of class img-responsive to allow 32 | // bootstrap's reponsiveness to work 33 | .gm-style img.img-responsive 34 | max-width: 100% 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/assets/stylesheets/item_alerts.sass: -------------------------------------------------------------------------------- 1 | 2 | #show_alert_management 3 | +clearfix 4 | margin-top: 2em 5 | margin-bottom: 2em 6 | 7 | 8 | .edit_form 9 | background-color: #eee 10 | width: 50% 11 | padding: 1em 12 | display: none 13 | .message_column 14 | width: 30% 15 | 16 | .action_column 17 | width: 12em 18 | vertical-align: middle 19 | 20 | .control-note 21 | font-size: 0.9em 22 | color: #666 23 | padding-bottom: 1em 24 | 25 | .alert_alert 26 | font-weight: bold 27 | color: #F00 28 | padding-bottom: 1em 29 | margin-left: 0px !important 30 | -------------------------------------------------------------------------------- /app/assets/stylesheets/libraryh3lp.sass: -------------------------------------------------------------------------------- 1 | 2 | .libraryh3lp 3 | float: right 4 | //display: none 5 | 6 | #askalibrarianchat 7 | width: 320px 8 | height: 200px 9 | border: 2px ridge black 10 | max-width: 98% 11 | border-radius: 5px 12 | margin-left: 20px 13 | margin-right: 20px 14 | 15 | -------------------------------------------------------------------------------- /app/assets/stylesheets/log.sass: -------------------------------------------------------------------------------- 1 | 2 | 3 | // Our Log tables may have very long un-spaced text (e.g., referrer) 4 | // Break lines within words, and don't expand to fit very long strings 5 | table.log-datatable 6 | word-wrap: break-word 7 | table-layout: fixed 8 | -------------------------------------------------------------------------------- /app/assets/stylesheets/preferences.sass: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the Preferences controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | 5 | .bento_list 6 | list-style-type: none 7 | margin: 0 8 | float: left 9 | margin-right: 10px 10 | background: #eee 11 | padding: 5px 12 | min-width: 150px 13 | min-height: 20px 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/assets/stylesheets/redesign.sass: -------------------------------------------------------------------------------- 1 | /* CLIO styles via er2576 2 | * temporary straight-css overrides (to be loaded last) for redesign until rewritten in SASS 3 | */ 4 | 5 | // 3/15 - Do we have Trajan Pro? I don't see it in the CLIO codebase. 6 | //@font-face 7 | // font-family: 'Trajan Pro' 8 | // src: asset_url("TrajanPro-Regular.otf", images) 9 | // font-weight: normal 10 | // font-style: normal 11 | // 12 | // 13 | //@font-face 14 | // font-family: 'Trajan Pro Bold' 15 | // src: asset_url("TrajanPro-Bold.otf", images) 16 | // font-weight: bold 17 | // font-style: normal 18 | 19 | 20 | 21 | .site_title a 22 | width: auto 23 | 24 | 25 | #sources 26 | background: transparent 27 | height: 100% 28 | margin-right: 0px!important 29 | 30 | 31 | .two_lopsided 32 | padding: 0 10px 33 | float: none 34 | 35 | -------------------------------------------------------------------------------- /app/assets/stylesheets/saved_lists.sass: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the Lists controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | 5 | //.saved_list_header 6 | // * 7 | // padding-left: 1em 8 | // //padding-right: 1em 9 | // 10 | 11 | 12 | #documents.saved_list_documents 13 | .document 14 | font-size: 12px 15 | .title 16 | font-size: 1.1em 17 | font-weight: bold 18 | padding-bottom: .5em 19 | padding-top: .5em 20 | 21 | 22 | .saved_list_list 23 | padding-bottom: 0.5em 24 | 25 | .no-gutter > [class*='col-'] 26 | padding-right: 0px 27 | padding-left: 0px 28 | -------------------------------------------------------------------------------- /app/controllers/local_subject_controller.rb: -------------------------------------------------------------------------------- 1 | class LocalSubjectsController < ApplicationController 2 | end 3 | -------------------------------------------------------------------------------- /app/controllers/search_history_controller.rb: -------------------------------------------------------------------------------- 1 | class SearchHistoryController < ApplicationController 2 | include Blacklight::SearchHistory 3 | 4 | helper BlacklightRangeLimit::ViewHelperOverride 5 | helper RangeLimitHelper 6 | end 7 | -------------------------------------------------------------------------------- /app/controllers/users/omniauth_callbacks_controller.rb: -------------------------------------------------------------------------------- 1 | class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 2 | 3 | include Cul::Omniauth::Callbacks 4 | 5 | def new_session_path(scope) 6 | new_user_session_path # this accomodates Users namespace of the controller 7 | end 8 | 9 | def affiliations(user, affils) 10 | return unless user 11 | user.affils = affils.sort 12 | end 13 | 14 | end 15 | -------------------------------------------------------------------------------- /app/controllers/users/sessions_controller.rb: -------------------------------------------------------------------------------- 1 | class Users::SessionsController < Devise::SessionsController 2 | 3 | def new_session_path(scope) 4 | new_user_session_path # this accomodates Users namespace of the controller 5 | end 6 | 7 | def omniauth_provider_key 8 | # there is support for :wind, :cas, and :saml in Cul::Omniauth 9 | end 10 | 11 | # (Without this, visit /users/auth/saml explicitly) 12 | # GET /resource/sign_in 13 | def new 14 | redirect_to user_saml_omniauth_authorize_path 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /app/helpers/preferences_helper.rb: -------------------------------------------------------------------------------- 1 | module PreferencesHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/saved_lists_helper.rb: -------------------------------------------------------------------------------- 1 | module SavedListsHelper 2 | def get_full_url(list) 3 | root_url.sub(/\/$/, '') + list.url 4 | end 5 | 6 | def get_permissions_label(permissions) 7 | case permissions 8 | when 'private' 9 | html = "private" 10 | when 'public' 11 | html = "public" 12 | else 13 | raise "get_permissions_label: unexpected value: #{permission}" 14 | end 15 | html.html_safe 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /app/mailers/application_mailer.rb: -------------------------------------------------------------------------------- 1 | class ApplicationMailer < ActionMailer::Base 2 | default from: 'from@example.com' 3 | layout 'mailer' 4 | end 5 | -------------------------------------------------------------------------------- /app/mailers/rake_mailer.rb: -------------------------------------------------------------------------------- 1 | class RakeMailer < ApplicationMailer 2 | default from: 'CLIO ' 3 | 4 | def rake_mail(params) 5 | mail(params) 6 | end 7 | 8 | end 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/models/ability.rb: -------------------------------------------------------------------------------- 1 | class Ability 2 | include CanCan::Ability 3 | 4 | def initialize(user) 5 | user ||= User.new 6 | 7 | can :manage, ItemAlert if user.has_role?('item_alerts', 'manage') 8 | 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/models/application_record.rb: -------------------------------------------------------------------------------- 1 | class ApplicationRecord < ActiveRecord::Base 2 | self.abstract_class = true 3 | end 4 | -------------------------------------------------------------------------------- /app/models/best_bet.rb: -------------------------------------------------------------------------------- 1 | class BestBet < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/models/item_alert.rb: -------------------------------------------------------------------------------- 1 | class ItemAlert < ApplicationRecord 2 | belongs_to :author, class_name: 'User', foreign_key: 'author_id' 3 | 4 | # remove for Rails 4 5 | # attr_accessible :source, :item_key, :author_id, :alert_type, 6 | # :start_date, :end_date, :message 7 | 8 | validates :author_id, presence: true 9 | validates :message, presence: true 10 | validates :source, presence: true 11 | validates :item_key, presence: true 12 | 13 | ALERT_TYPES = { 14 | 'access_requirements' => 'Access Requirements', 15 | 'alert' => 'Alert', 16 | # 'alternate_connect' => 'Alternate Connect', 17 | # 'elink_enabled' => 'eLink Enabled', 18 | # 'related_resources' => 'Related Resources' 19 | }.freeze 20 | 21 | def active? 22 | # puts "==== start_date=#{start_date} end_date=#{end_date} DateTime.now=#{DateTime.now}" 23 | (start_date.nil? || start_date < DateTime.now) && 24 | (end_date.nil? || end_date > DateTime.now) 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /app/models/library.rb: -------------------------------------------------------------------------------- 1 | # class Library < ApplicationRecord 2 | # validates_uniqueness_of :hours_db_code 3 | # has_many :hours, class_name: 'LibraryHours', dependent: :destroy 4 | # 5 | # def hours_for_range(startdate, enddate) 6 | # # hours.find(:all, conditions: ['library_hours.date BETWEEN ? and ?', startdate.to_date, enddate.to_date]).sort { |x, y| x.date <=> y.date } 7 | # hours.where('library_hours.date BETWEEN ? and ?', startdate.to_date, enddate.to_date).sort { |x, y| x.date <=> y.date } 8 | # end 9 | # 10 | # # def is_open?(check_at = Datetime.now) 11 | # # hours_res = hours.find_by_date(check_at.to_date) 12 | # # 13 | # # return false if hours_res.nil? || hours_res.opens.nil? 14 | # # hours_res ? (hours_res.opens <= check_at && check_at <= hours_res.closes) : false 15 | # # 16 | # # end 17 | # end 18 | -------------------------------------------------------------------------------- /app/models/library_web/document.rb: -------------------------------------------------------------------------------- 1 | class LibraryWeb::Document 2 | attr_accessor :url, :title, :summary, :mime 3 | 4 | def initialize(xml_node = nil) 5 | if xml_node 6 | 7 | content_or_nil = ->(node) { node ? node.content : nil } 8 | 9 | @url = content_or_nil.call(xml_node.at_css('UE')) 10 | @title = content_or_nil.call(xml_node.at_css('T')) 11 | @summary = content_or_nil.call(xml_node.at_css('S')) 12 | @mime = content_or_nil.call(xml_node.attribute('MIME')) 13 | 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/models/local_subject.rb: -------------------------------------------------------------------------------- 1 | class LocalSubject < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/models/log.rb: -------------------------------------------------------------------------------- 1 | class Log < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/models/lweb_document.rb: -------------------------------------------------------------------------------- 1 | class LwebDocument 2 | attr_accessor :url, :title, :summary, :mime 3 | 4 | def initialize(item = nil) 5 | if item 6 | 7 | # content_or_nil = lambda { |node| node ? node.content : nil } 8 | # @url = content_or_nil.call(xml_node.at_css('UE')) 9 | # @title = content_or_nil.call(xml_node.at_css('T')) 10 | # @summary = content_or_nil.call(xml_node.at_css('S')) 11 | # @mime = content_or_nil.call(xml_node.attribute('MIME')) 12 | 13 | @url = item.link 14 | @title = item.title 15 | @summary = item.html_snippet 16 | @mime = item.mime 17 | 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/models/option.rb: -------------------------------------------------------------------------------- 1 | class Option < ApplicationRecord 2 | acts_as_option 3 | end 4 | -------------------------------------------------------------------------------- /app/models/preference.rb: -------------------------------------------------------------------------------- 1 | class Preference < ApplicationRecord 2 | validates :login, uniqueness: true, presence: true 3 | validates :settings, presence: true 4 | end 5 | -------------------------------------------------------------------------------- /app/models/saved_list_item.rb: -------------------------------------------------------------------------------- 1 | class SavedListItem < ApplicationRecord 2 | # attr_accessible :item_key, :saved_list_id, :sort_order 3 | belongs_to :saved_list 4 | # has_paper_trail 5 | end 6 | -------------------------------------------------------------------------------- /app/models/simplye_link.rb: -------------------------------------------------------------------------------- 1 | class SimplyeLink < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/views/_ask_a_librarian.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# NEXT-956 - Show "Ask a Librarian" chat box when a search has no hits 3 | 4 | / LibraryH3lp iFrame Widget 5 | 6 | - baseURL ='https://libraryh3lp.com/chat/askalibrariancolumbia@chat.libraryh3lp.com?skin=20173&theme=gtalk&identity=librarian' 7 | 8 | -# INTERFERES WITH CAPYBARA TESTING? 9 | 10 | .libraryh3lp{:style => 'display:none', :jid => "askalibrariancolumbia@chat.libraryh3lp.com"} 11 | %iframe#askalibrarianchat{:src => "#{baseURL}&title=C+U+-+Ask+A+Librarian", :frameborder => '1'} 12 | 13 | .libraryh3lp{:style => 'display:none'} 14 | %iframe#askalibrarianchat{:src => "#{baseURL}&title=We+are+offline", :frameborder => '1'} 15 | 16 | -# Only bring in the JavaScript from libraryh3lp.com when the widget is rendered 17 | - content_for :jstemplates do 18 | %script{:type => "text/javascript", 19 | :src => "https://libraryh3lp.com/js/libraryh3lp.js?multi"} 20 | 21 | -------------------------------------------------------------------------------- /app/views/_async_setting.html.haml: -------------------------------------------------------------------------------- 1 | -# .async_options 2 | -# - if @action_has_async 3 | -# - if session[:async_off] 4 | -# .async_change.turn_async_on 5 | -# You have loading results dynamically turned off. 6 | -# Click 7 | -# = link_to "here", request.fullpath.gsub(/(&|\?)async_(on|off)=true/,'') + "&async_on=true" 8 | -# to turn it back on. 9 | -# - else 10 | -# .async_change.turn_async_off.hidden 11 | -# This page attempts to load results dynamically. If this is not working. 12 | -# Click 13 | -# = link_to "here", request.fullpath.gsub(/(&|\?)async_(on|off)=true/,'') + "&async_off=true" 14 | -# to turn it off. 15 | -------------------------------------------------------------------------------- /app/views/_authority_variants.html.haml: -------------------------------------------------------------------------------- 1 | %h4= "Authority Variants" 2 | 3 | #authority_variants 4 | 5 | - none = '-- none --' 6 | - author_variants = Array(document['author_variant_txt']).join.present? ? document['author_variant_txt'] : none 7 | - subject_variants = Array(document['subject_variant_txt']).join.present? ? document['subject_variant_txt'] : none 8 | - geo_variants = Array(document['geo_variant_txt']).join.present? ? document['geo_variant_txt'] : none 9 | - last_variant_update = document['authorities_dt'].present? ? Time.zone.parse(document['authorities_dt']).strftime("%F %l:%M%P") : 'never' 10 | 11 | = add_row('Author Variants', author_variants) 12 | = add_row('Subject Variants', subject_variants) 13 | = add_row('Geographic Variants', geo_variants) 14 | = add_row('Last Variant Update', last_variant_update) 15 | 16 | -------------------------------------------------------------------------------- /app/views/_coins.html.haml: -------------------------------------------------------------------------------- 1 | - cache("coins_#{document.cache_key}") do 2 | %span.coins_wrapper 3 | / COinS 4 | %span.Z3988{ title: catalog_to_openurl_ctx_kev(document).html_safe } 5 | -------------------------------------------------------------------------------- /app/views/_datasource_warning.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - if defined?(warning) && warning 3 | .alert.alert-danger 4 | = image_tag('warning_icon.png', :size => "20x20") 5 |   #{warning.html_safe} 6 | -------------------------------------------------------------------------------- /app/views/_datasources_dropdown.html.haml: -------------------------------------------------------------------------------- 1 | 2 | #source_select.sidenav.source_select.visible-xs 3 | 4 | - datasource_names = datasource_list(:all).collect { |source| [DATASOURCES_CONFIG['datasources'][source]['name'], source] } 5 | 6 | =select_tag :mobile_datasource_select, options_for_select(datasource_names, active_source), class: 'form-control' 7 | 8 | %h4 9 | Source 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/views/_display/browse/_compact_list.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# catalog search-results listing, COMPACT list format 3 | 4 | / _display/browse/_compact_list.html.haml 5 | 6 | -# Are we inside the mini-browse? 7 | - mini ||= false 8 | 9 | -# The "documents" are Browse-Items, 10 | -# A Browse-Item is a hash reflecting a doc with it's currently 11 | -# activated position within the browse context: 12 | -# { 13 | -# doc: SolrDocument, 14 | -# current_call_number: 15 | -# current_shelfkey: 16 | -# current_reverse_shelfkey: 17 | -# } 18 | 19 | 20 | - document_list.each do |browse_item| 21 | - document = browse_item[:doc] 22 | -# - highlight = (browse_item[:current_shelfkey] == @shelfkey) 23 | 24 | = render_document_view(document, format: 'clio', template: 'compact_browse_item', source: 'catalog', call_number: browse_item[:current_call_number], mini: mini) 25 | -------------------------------------------------------------------------------- /app/views/_display/browse/_standard_list.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# catalog search-results listing, STANDARD list format 3 | 4 | / _display/browse/_standard_list.html.haml 5 | 6 | -# Are we inside the mini-browse? 7 | - mini ||= false 8 | 9 | -# The "documents" are Browse-Items, 10 | -# A Browse-Item is a hash reflecting a doc with it's currently 11 | -# activated position within the browse context: 12 | -# { 13 | -# doc: SolrDocument, 14 | -# current_call_number: 15 | -# current_shelfkey: 16 | -# current_reverse_shelfkey: 17 | -# } 18 | 19 | - document_list.each do |browse_item| 20 | - document = browse_item[:doc] 21 | - highlight = (browse_item[:current_shelfkey] == @shelfkey) 22 | 23 | = render_document_view(document, format: 'clio', template: 'standard_browse_item', source: 'catalog', call_number: browse_item[:current_call_number], highlight: highlight, mini: mini) 24 | -------------------------------------------------------------------------------- /app/views/_display/catalog/_compact_list.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# catalog search-results listing, COMPACT list format 3 | 4 | / _display/catalog/_compact_list.html.haml 5 | 6 | - document_list.each_with_index do |document,counter| 7 | - blacklight_counter = counter + 1 + @response.params[:start].to_i 8 | 9 | = render_document_view(document, :format => 'clio', :template => 'compact_list_item', :counter => blacklight_counter) 10 | 11 | -------------------------------------------------------------------------------- /app/views/_display/catalog/_standard_list.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# catalog search-results listing, STANDARD list format 3 | 4 | / _display/catalog/_standard_list.html.haml 5 | 6 | - document_list.each_with_index do |document, counter| 7 | - blacklight_counter = counter + 1 + @response.params[:start].to_i 8 | 9 | = render_document_view(document, :format => 'clio', :template => 'standard_list_item', :counter => blacklight_counter) 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/views/_display/databases/_a_to_z.html.haml: -------------------------------------------------------------------------------- 1 | - letters = ["0-9"] | ("A".."Z").to_a 2 | 3 | 4 | .a_to_z.databases.on_search 5 | .links_label List by title: 6 | .links 7 | - letters.each do |letter| 8 | = link_to letter, databases_index_path('f[title_first_facet][]' => letter, 'sort' => 'title_sort asc') 9 | 10 | -------------------------------------------------------------------------------- /app/views/_dropdown_select.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# 3 | -# .dropdown.btn-group.dropdown_select_tag 4 | -# %btn.btn.btn-default.add-on.dropdown-toggle(data-toggle="dropdown" href="#") 5 | -# = dropdown_default 6 | -# %span.caret 7 | -# %ul.dropdown-menu 8 | -# 9 | -# - field_options.each do |name, value| 10 | -# %li 11 | -# %a(href="#" data-value=value)= name 12 | -# = select_tag(name, options_for_select(field_options, field_default), select_options) 13 | 14 | 15 | 16 | 17 | -# remove Bootstrap-Dropdown-Menu-as-Select-Tag 18 | -# .input-group-btn.dropdown_select_tag 19 | -# 20 | -# %btn.btn.btn-default.dropdown-toggle{ data: {toggle: 'dropdown'}} 21 | -# = dropdown_default 22 | -# %span.caret 23 | -# 24 | -# %ul.dropdown-menu{style: "left: auto"} 25 | -# - field_options.each do |name, value| 26 | -# %li 27 | -# %a(href="#" data-value=value)= name 28 | -# = select_tag(name, options_for_select(field_options, field_default), select_options) 29 | -------------------------------------------------------------------------------- /app/views/_footer.html.haml: -------------------------------------------------------------------------------- 1 | / footer partial begin 2 | #ft 3 | = @footer 4 | -# = render :partial => "/async_setting" 5 | = render :partial => "/debug_mode" 6 | 7 | .clear-both 8 | / div.clear-both end 9 | 10 | / footer partial end 11 | 12 | -------------------------------------------------------------------------------- /app/views/_formats/article/_aggregate.html.haml: -------------------------------------------------------------------------------- 1 | 2 | / _formats/article/_aggregate.html.haml 3 | 4 | .result{:class => alternating_line} 5 | .result_title= link_to_article document 6 | = add_row('Author', document.src['Author'].listify.collect(&:html_safe)) 7 | = add_row('Citation', get_article_citation(document)) 8 | = add_row('Format', get_article_type(document)) 9 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_holdings_display.html.haml: -------------------------------------------------------------------------------- 1 | - content_for :jstemplates do 2 | :javascript 3 | $(document).ready(function() { 4 | load_clio_holdings(#{clio_id}); 5 | }); 6 | 7 | 8 | #legacy_clio_holdings 9 | .holdings_check 10 | Loading holdings... 11 | %span.holding_spinner=image_tag ("ajax-indicator.gif") 12 | .holdings_error 13 | Unable to load. 14 | = link_to "Retry?", "#", :onclick => "javascript:load_clio_holdings(#{h(clio_id)});" 15 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_holdings_ebook.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - content_for :jstemplates do 3 | :javascript 4 | $(document).ready(function() { 5 | load_ebook_holdings('#{clio_id}'); 6 | }); 7 | 8 | - if APP_CONFIG['show_ebook_links'] && (ebook_base_url = APP_CONFIG['ebook_base_url']).present? 9 | 10 | #ebook_holdings.holdings_section{ data: {ebook_base_url: ebook_base_url} } 11 | .holdings_title Mobile 12 | #ebook_holdings_links 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_holdings_online.html.haml: -------------------------------------------------------------------------------- 1 | // _formats/clio/_catalog_show_holdings_online.html.haml 2 | 3 | -# _catalog_show_holdings_online.html.haml 4 | 5 | -# Skip Hathi links found in the 856 field. 6 | -# These will be handled by catalog_show_holdings_hathi 7 | - online_links_except_hathi = online_links.delete_if { |link| link[:title].match(/HathiTrust/) || link[:url].match(/catalog.hathitrust.org/) } 8 | 9 | - unless online_links_except_hathi.empty? 10 | #online_holdings 11 | .holding{:class => alternating_line} 12 | .location_box 13 | .location 14 | = is_database ? database_link_label(online_links) : "Online" 15 | 16 | 17 | - online_links.each do |link| 18 | .url_link 19 | = image_tag("icons/online.png") 20 | = link_to process_online_title(link[:title]), link[:url] 21 | %span.url_link_note= link[:note] 22 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_holdings_pegasus.haml: -------------------------------------------------------------------------------- 1 | // _formats/clio/_catalog_show_holdings_pegasus.html.haml 2 | 3 | - if document.in_pegasus? 4 | 5 | -# re-use add_display_elements(), meant to process JSON backend holdings lookups, 6 | -# as a short-cut to fetching location links and library hours 7 | - clean_call_number = document[:location_call_number_id_display].first.sub(/.* >> /, '') 8 | - dummy_entry = create_dummy_entry(:location_name => "Law Library", :call_number => clean_call_number ) 9 | 10 | - add_display_elements( Array.wrap(dummy_entry) ).listify.each do |entry| 11 | 12 | .holding{:class => alternating_line} 13 | .location_box 14 | .location 15 | -# -# NEXT-1041 - Icon or other visual cue 16 | -# %span.glyphicon.glyphicon-map-marker.text-primary 17 | = entry['location_link'] 18 | .hours= entry['hours'] 19 | 20 | .call_number= entry['call_number'] 21 | .group 22 | .status= pegasus_item_link(document, "Item View") 23 | 24 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_holdings_simplye.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - if APP_CONFIG['simplye_enabled'] && document.simplye_link 3 | .holdings_section 4 | .holdings_title Mobile 5 | =link_to APP_CONFIG['simplye']['anchor_text'], document.simplye_link, class: 'simplye_link', target: '_blank' 6 | 7 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_nearby.html.haml: -------------------------------------------------------------------------------- 1 | -# No - don't pre-load the hidden div. 2 | -# This adds load to the Solr server and increases client traffic, 3 | -# when we think this panel will be un-hidden only occasionally. 4 | -# 5 | -# 6 | -# - content_for :jstemplates do 7 | -# :javascript 8 | -# $(document).ready(function() { 9 | -# load_nearby("#{ first_shelfkey }"); 10 | -# }); 11 | 12 | - return unless document['shelfkey'] 13 | 14 | #nearby 15 | .nearby_spinner 16 | %br 17 | Loading browse list. 18 | %span=image_tag ("ajax-indicator.gif") 19 | .nearby_error 20 | %br 21 | Unable to load. 22 | = link_to "Retry?", "#", :onclick => "javascript:load_active_shelfkey();" 23 | .nearby_content 24 | 25 | -------------------------------------------------------------------------------- /app/views/_formats/clio/_catalog_show_worldcat_link.haml: -------------------------------------------------------------------------------- 1 | 2 | - if APP_CONFIG['show_worldcat_links'] && defined?(worldcat_link) && worldcat_link.present? 3 | .holdings_title WorldCat 4 | = worldcat_link -------------------------------------------------------------------------------- /app/views/_formats/clio/_compact_list_details.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %div= document.fetch('author_display', nil) || document.fetch('author_vern_display', nil) 3 | 4 | %div= document.fetch('full_publisher_display', nil) 5 | 6 | %div= holdings_compact(document) 7 | 8 | %div= formats_with_icons(document) 9 | 10 | -------------------------------------------------------------------------------- /app/views/_formats/database/_aggregate.html.haml: -------------------------------------------------------------------------------- 1 | -# - classlist = alternating_line("catalog") 2 | -# - classlist = "#{classlist} database_record" if document['source_display'].include? 'database' 3 | -# .result{class: classlist, source: 'catalog', item_id: document.fetch(:id), standard_ids: extract_standard_bibkeys(document)} 4 | 5 | .result.database_record{class: alternating_line("catalog"), source: 'catalog', item_id: document.fetch(:id), data: document_data_attributes(document), standard_ids: extract_standard_bibkeys(document)} 6 | 7 | .result_title= link_to document.first('title_display'), {:controller => 'catalog', :action => 'show', :id => document.id, :counter => (counter + 1)} 8 | 9 | = render :partial => "/_formats/database/catalog_list_details", :locals => {:document => document} 10 | -------------------------------------------------------------------------------- /app/views/_formats/dlc/_aggregate.html.haml: -------------------------------------------------------------------------------- 1 | -# container for a single doc - within AGGREGATE views, e.g., QuickSearch 2 | 3 | .result{source: 'dlc', item_id: document.id} 4 | 5 | -# https://dlc.library.columbia.edu/catalog/ldpd:166321 6 | .result_title= link_to document.fetch('title_display_ssm'), APP_CONFIG['dlc_catalog_url'] + document.id 7 | 8 | 9 | / main container for doc partial view 10 | 11 | -# What do we want in QuickSearch panel? 12 | -# = add_row('Library Location', document['lib_repo_short_ssim']) 13 | = add_row('Name', document['lib_name_ssm']) 14 | -# = add_row('Format', document['lib_format_ssm']) 15 | -# = add_row('Digital Project', document['lib_project_short_ssim']) 16 | -# = add_row('Collection', document['lib_collection_ssm']) 17 | -------------------------------------------------------------------------------- /app/views/_formats/geo/_aggregate.html.haml: -------------------------------------------------------------------------------- 1 | -# container for a single doc - within AGGREGATE views, e.g., QuickSearch 2 | 3 | / _formats/geo/_aggregate.html.haml 4 | 5 | .result{source: 'geo', item_id: document.id, class: alternating_line('geo')} 6 | 7 | -# https://dlc.library.columbia.edu/catalog/ldpd:166321 8 | .result_title= link_to document.fetch('dct_title_s'), APP_CONFIG['geo_catalog_url'] + document.id 9 | 10 | 11 | / main container for doc partial view 12 | 13 | -# What do we want in QuickSearch panel? 14 | = add_row('Description', document['dct_description_sm'].join('').to_s.abbreviate(120)) 15 | = add_row('Publisher', document['dct_publisher_sm']) 16 | 17 | -# = add_row('Library Location', document['lib_repo_short_ssim']) 18 | -# = add_row('Name', document['lib_name_ssm']) 19 | -# = add_row('Format', document['lib_format_ssm']) 20 | -# = add_row('Digital Project', document['lib_project_short_ssim']) 21 | -# = add_row('Collection', document['lib_collection_ssm']) 22 | -------------------------------------------------------------------------------- /app/views/_formats/lweb/_aggregate.html.haml: -------------------------------------------------------------------------------- 1 | 2 | .result{:class => alternating_line('lweb')} 3 | .result_title=link_to document.title.to_s.html_safe, document.url.listify.first.to_s.html_safe 4 | .blockquote= document.summary.to_s.html_safe 5 | -------------------------------------------------------------------------------- /app/views/_formats/lweb/_lweb.html.haml: -------------------------------------------------------------------------------- 1 | - display_title = document.title ||= File.basename(document.url.first) 2 | 3 | .result.document 4 | 5 | .row 6 | .title.col-sm-12 7 | 8 | .item_anchor 9 | = render '/item_number', :counter => counter 10 | 11 | .item_number_allowance 12 | = link_to display_title.html_safe, document.url.html_safe 13 | 14 | .lweb_summary.item_select_allowance=document.summary.html_safe 15 | 16 | - if document.mime 17 | .lweb_dam_document.item_select_allowance 18 | = dam_document_icon(document) 19 | = dam_document_link(document) 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/views/_formats/summon/_summon_show.html.haml: -------------------------------------------------------------------------------- 1 | -# _formats /summon/_summon_show.html.haml 2 | -# Used to generate text for Email - ok to be verbose 3 | -# This should be a fall-back for ANY Summon document, 4 | -# independent of any more specific content-type ('Journal Article', 'Book', etc.) 5 | 6 | - if document.authors.any? 7 | = add_row('Author', get_article_authors(document), :html_safe => true) 8 | = add_row('Citation', get_article_citation(document)) 9 | = add_row('Format', get_article_type(document)) 10 | - if document.abstract 11 | \ 12 | = add_row('Abstract', document.abstract) -------------------------------------------------------------------------------- /app/views/_header_with_search.html.haml: -------------------------------------------------------------------------------- 1 | = render :partial => "/datasources_dropdown" 2 | 3 | -------------------------------------------------------------------------------- /app/views/_item_number.haml: -------------------------------------------------------------------------------- 1 | 2 | %label.small.text-muted= "#{counter ||= ''}." 3 | -------------------------------------------------------------------------------- /app/views/_link_to_prod.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - return unless ['development', 'clio_test'].include?(Rails.env) 3 | 4 | 5 | - link = "https://clio.columbia.edu/catalog/#{id}" 6 | - link += "/librarian_view" if (view.present? && view == 'xml') 7 | 8 | %h4 9 | =link_to "(BACKSTAGE_TEST -- open prod in new window/tab)", link, target: '_blank' 10 | -------------------------------------------------------------------------------- /app/views/_search/_constraints.html.haml: -------------------------------------------------------------------------------- 1 | // views/_search/_constraints.html.haml 2 | -------------------------------------------------------------------------------- /app/views/_search/_facets.html.haml: -------------------------------------------------------------------------------- 1 | // views/_search/_facets.html.haml 2 | 3 | // main container for facets/limits menu 4 | #facets.facets 5 | %h2 Limit your search 6 | - facets.each do |facet| 7 | = render :partial => "/_search/facet", :locals => {:facet => Facet.new(facet)} 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/views/_search/_search_box.html.haml: -------------------------------------------------------------------------------- 1 | // views/_search/_search_box.html.haml 2 | 3 | .landing_across.row 4 | .col-sm-12 5 | .search_boxes.pull-left 6 | .basic_search 7 | = display_basic_search_form(source) 8 | .advanced_search 9 | = display_advanced_search_form(source) 10 | 11 | -# / Start-Over link, only present during searching 12 | .start_over.hidden-xs.text-right.pull-right 13 | - if has_search_parameters? 14 | = display_start_over_link(source) 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/views/_summon_warning.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - unless current_user || @user_characteristics[:on_campus] 3 | .alert.alert-warning.well-sm.summon-warning 4 | %a{href: new_user_session_path, class: 'alert-link'} Log In 5 | to see full article results 6 | -------------------------------------------------------------------------------- /app/views/_top_banner.html.haml: -------------------------------------------------------------------------------- 1 | - if $top_bannner_content.present? 2 | .alert.alert-info.top_banner 3 | = $top_bannner_content.html_safe 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/views/admin/format_icons.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %h2 CLIO Format Icons 3 | 4 | %h4 Document Content Formats 5 | 6 | %table.table 7 | 8 | - DisplayHelper.const_get(:FORMAT_ICON_MAPPINGS).sort.each do |format,icon| 9 | %tr 10 | %td= format 11 | %td= image_tag("icons/#{icon}.png", size: '16x16') 12 | %td= "#{icon}.png" 13 | 14 | %h4 File Formats 15 | 16 | %table.table 17 | 18 | - Dir.glob("#{Rails.root.to_s}/app/assets/images/format_icons/*.png") do |filename| 19 | - filename.sub! /.*format_icons./, '' 20 | %tr 21 | %td= image_tag("format_icons/#{filename}", size: '32x32') 22 | %td= filename 23 | -------------------------------------------------------------------------------- /app/views/admin/request_services.html.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %h2 CLIO Request Service Details 4 | 5 | %h4 Request Service Locations 6 | 7 | 8 | 9 | 10 | %table.table.table-bordered.table-striped.table-hover.table-condensed 11 | %thead 12 | %tr 13 | %th 14 | - @configured_services.each do |service| 15 | %th.sticky=service 16 | %tbody 17 | - @all_locations.each do |location| 18 | %tr 19 | %th=location 20 | - @configured_services.each do |service| 21 | %td.text-center 22 | - location_list = SERVICE_LOCATIONS["#{service}_locations"] || [] 23 | - if location_list.include?(location) 24 | Yes 25 | - else 26 | ='-' 27 | 28 | -------------------------------------------------------------------------------- /app/views/authorities/author_marc.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | = link_to "Patron View", url_for(action: 'author'), class: 'lightboxLink' 4 | 5 | - @page_title = "#{@document ? document_show_html_title.listify.join('') : ''} - #{application_name}".html_safe 6 | 7 | 8 | .row 9 | 10 | -# #marc_download_links.col-sm-6 11 | -# %strong= "Download as:" 12 | -# %span= link_to "MARCXML", catalog_path(@document.id, :format => "marcxml") 13 | -# %span= link_to "MARC21", catalog_path(@document.id, :format => "marc") 14 | -# #patron_view_link.col-sm-6 15 | -# %strong.btn.btn-default= link_to "Return to Patron View", fix_catalog_links(catalog_path(@document.id)) 16 | 17 | 18 | 19 | = render '/marc_view', document: @document 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/views/authorities/index.haml: -------------------------------------------------------------------------------- 1 | 2 | .row 3 | .col-sm-1 4 | .col-sm-8 5 | %form 6 | %input{type: "text", name: 'q', size: '50'} 7 | .col-sm-1 8 | 9 | %hr 10 | 11 | -------------------------------------------------------------------------------- /app/views/authorities/show.haml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/views/authorities/show.haml -------------------------------------------------------------------------------- /app/views/browse/_browse_focus_bookmark.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# This small partial is used to put a visual indicator in front of the 3 | -# bib from which a shelf-browse began. 4 | 5 | / browse/_browse_focus_bookmark.html.haml 6 | 7 | %span.browse_focus.glyphicon.glyphicon-bookmark{data: {toggle: 'tooltip', placement: 'top'}, title: "#{t('blacklight.browse.focus')}"} 8 | 9 | 10 | 11 | -# This AJAX-loaded tooltip needs to be enabled, after it's drawn to the page 12 | :javascript 13 | $('[data-toggle="tooltip"]').tooltip() 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/views/browse/_call_number_toggle.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - return unless document['item_display'] 3 | 4 | -# When there are multiple call-numbers, 5 | -# create a toggle widget to change the currently active shelfkey/bib 6 | -# - updating the invisible div 7 | -# - updating the mini-browse content panel 8 | 9 | -# - if document['item_display'].size > 1 10 | %div{class: "#{'hidden' if document['item_display'].size < 2}"} 11 | 12 | This item has multiple call-numbers. Start browsing at: 13 | 14 | .btn-group.btn-group-xs{data: {toggle: 'buttons'}} 15 | 16 | - document['item_display'].each do |item_display| 17 | 18 | %label.btn.btn-default.call_number_toggle{data: {bib: "#{document.id}", call_number: "#{get_call_number(item_display)}", shelfkey: "#{get_shelfkey(item_display)}"} } 19 | %input{type: 'radio', name: 'options', autocomplete: 'off'} 20 | = get_call_number(item_display) 21 | 22 | -------------------------------------------------------------------------------- /app/views/browse/_per_page_widget.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# CATALOG-BASED-DATASOURCES 3 | 4 | %li.dropdown#display-dropdown 5 | 6 | %a.dropdown-toggle{:href=>"#", :data=>{:toggle => "dropdown"}} 7 | Display 8 | %span.hidden-sm 9 | Options 10 | %b.caret 11 | 12 | %ul.dropdown-menu 13 | -# VERY confusing to reset your Catalog default pagination 14 | -# from within a Browse context. Await user requests. 15 | -# -blacklight_config.per_page.each do |per_page| 16 | -# %li= catalog_per_page_link(per_page) 17 | 18 | -if viewstyles = DATASOURCES_CONFIG['datasources'][active_source]['viewstyles'] 19 | -# %li.nav-divider 20 | -viewstyles.each do |viewstyle, label| 21 | %li= viewstyle_link(viewstyle, label) 22 | -------------------------------------------------------------------------------- /app/views/browse/shelfkey_full.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# what is this for? 3 | -# - item_count = @browse_item_list.size 4 | -# = render 'browse_toolbar', first_shelfkey: first_shelfkey, last_shelfkey: last_shelfkey 5 | 6 | = render 'browse_toolbar_full' 7 | 8 | #documents{:data => {'ga-action' => 'Browse Results Click'} } 9 | = render_document_list(@browse_item_list, action: "browse", shelfkey: @shelfkey) 10 | 11 | %br 12 | %br 13 | %br 14 | 15 | = render 'browse_toolbar_full' 16 | 17 | -------------------------------------------------------------------------------- /app/views/browse/shelfkey_mini.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# The full @browse_item_list is available for use here.... 3 | - first_shelfkey = @browse_item_list.first[:current_shelfkey] 4 | - last_shelfkey = @browse_item_list.last[:current_shelfkey] 5 | 6 | = render 'browse_toolbar_mini' 7 | 8 | #documents{:data => {'ga-action' => 'Browse Results Click', 'first-shelfkey' => first_shelfkey, 'last-shelfkey' => last_shelfkey} } 9 | = render_document_list(@browse_item_list, action: "browse", shelfkey: @shelfkey, mini: true) 10 | 11 | %br 12 | %br 13 | 14 | = render 'browse_toolbar_mini' 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/views/catalog/_atom_summary.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# NEXT-485 - RSS feeds from CLIO Beta don't display item content 3 | -# 4 | -# Here is the proposed content: 5 | -# 6 | -# Title & subtitle: 7 | -# Author: 8 | -# Publication year: 9 | -# Location(s) 10 | -# Call number: 11 | -# Online link: 12 | 13 | 14 | %dl 15 | = add_row('Title', document.fetch('title_display', nil), :style => :text) 16 | = add_row(' Author', document.fetch('author_display', nil), :style => :text) 17 | = add_row(' Published', document.fetch('full_publisher_display', nil), :style => :text) 18 | - unless (locations = document["location_call_number_id_display"].listify.reject { |l| l.match(/^Online/) }).empty? 19 | = add_row(' Location', format_brief_location_results(locations, document), :style => :text, :join => ' / ') 20 | = add_row(' Online', format_online_results(online_link_hash(document)), :style => :text) 21 | 22 | -------------------------------------------------------------------------------- /app/views/catalog/_constraint_dropdown.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/views/catalog/_constraints_delete.html.haml: -------------------------------------------------------------------------------- 1 | #appliedParams 2 | You searched for: 3 | 4 | = render_constraints(localized_params) 5 | 6 | -------------------------------------------------------------------------------- /app/views/catalog/_donor_info.html.haml: -------------------------------------------------------------------------------- 1 | /catalog/_donor_info.html.haml 2 | 3 | - if copy['donor_info_icon'].present? 4 | - message = copy['donor_info_icon'].first['message'] 5 | - message = message.gsub(/ -- /, '
').html_safe if message.present? 6 | - href = copy['donor_info_icon'][0]['url'] 7 | 8 | - if href.present? 9 | .donor_info_button 10 | %a.btn.donor_info_icon{href: "#{href}"} 11 | GIFT 12 | .donor_info_message 13 | %p 14 | =link_to(message, href) 15 | - else 16 | .donor_info_button 17 | %button.donor_info_icon{:disabled => true} 18 | GIFT 19 | .donor_info_message 20 | %p 21 | =message 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/views/catalog/_download_menu.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# _download_menu.html.haml 3 | 4 | %li.dropdown#display-dropdown 5 | 6 | %a.dropdown-toggle{:href=>"#", :data=>{:toggle => "dropdown"}} 7 | Download 8 | %b.caret 9 | 10 | %ul.dropdown-menu 11 | %li=link_to "XLSX Download", xlsx_form_link() 12 | %li=link_to "MARC XML Download", download_link('marcxml'), target: '_blank' 13 | %li 14 | %hr 15 | %p.small.text-center 16 | Downloading search results
is restricted to library staff. 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/views/catalog/_facet_layout.html.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -# 4 | -# ############# BLACKLIGHT 5 ############# 5 | -# 6 | 7 | -# Do we need to override? 8 | .panel.panel-default.facet_limit{class: "blacklight-#{facet_field.field.parameterize} #{'facet_limit-active' if cul_facet_field_in_params?(facet_field.key)}"} 9 | .collapse-toggle.panel-heading{class: "#{'collapsed' if should_collapse_facet?(facet_field)}", data: {toggle: "collapse", target: "#facet-#{facet_field.label.parameterize}", 'facet-tag' => build_facet_tag(facet_field)}} 10 | %h5.panel-title 11 | = link_to facet_field_label(facet_field.field), "#", :"data-no-turbolink" => true 12 | .panel-collapse.facet-content{id: "facet-#{facet_field.label.parameterize}", class: "#{should_collapse_facet?(facet_field) ? 'collapse' : 'in'}"} 13 | .panel-body 14 | = yield 15 | 16 | -------------------------------------------------------------------------------- /app/views/catalog/_google_books_check.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - bibkeys_to_check = documents.listify.collect { |d| extract_standard_bibkeys(d) }.compact.flatten.uniq 3 | - quoted_bibkeys = bibkeys_to_check.map { |bibkey| "'" + bibkey + "'" } 4 | 5 | 6 | - content_for :jstemplates do 7 | :javascript 8 | 9 | var _GBSBookInfo = {}; 10 | 11 | books_url = "https://books.google.com/books"; 12 | 13 | function google_books_response_handler (data) { 14 | _GBSBookInfo = data; 15 | } 16 | 17 | quoted_bibkeys = [#{raw(quoted_bibkeys.join(','))}]; 18 | 19 | api_url= books_url + "?jscmd=viewapi&bibkeys=#{h(bibkeys_to_check.join(","))}" + "&callback=google_books_response_handler"; 20 | 21 | document.write(unescape("%3Cscript src=" + api_url + " type='text/javascript'%3E%3C/script%3E")); 22 | 23 | $(document).ready ( function () { 24 | 25 | update_google_holdings(quoted_bibkeys, _GBSBookInfo); 26 | 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /app/views/catalog/_holdings_check.html.haml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/views/catalog/_holdings_check.html.haml -------------------------------------------------------------------------------- /app/views/catalog/_per_page_widget.haml: -------------------------------------------------------------------------------- 1 | 2 | -# CATALOG-BASED-DATASOURCES 3 | 4 | %li.dropdown#display-dropdown 5 | 6 | %a.dropdown-toggle{:href=>"#", :data=>{:toggle => "dropdown"}} 7 | Display Options 8 | %b.caret 9 | 10 | %ul.dropdown-menu 11 | -blacklight_config.per_page.each do |per_page| 12 | %li= catalog_per_page_link(per_page) 13 | 14 | 15 | - datasource_config = DATASOURCES_CONFIG['datasources'][active_source] || {} 16 | -if viewstyles = datasource_config['viewstyles'] 17 | %li.nav-divider 18 | -viewstyles.each do |viewstyle, label| 19 | %li= viewstyle_link(viewstyle, label) 20 | 21 | -# -# Authenticated CUL Staff can download search results as XLS 22 | -# -if current_user && current_user.culstaff? && current_user.has_role?('site', 'pilot') 23 | -# %li.nav-divider 24 | -# -# %li=link_to "XLS Download", xls_form_link(), {id: "xlsLink", name: "xls", class: "XlightboxLink"} 25 | -# %li=link_to "XLSX Download", xlsx_form_link() 26 | 27 | -------------------------------------------------------------------------------- /app/views/catalog/_results_pagination.html.haml: -------------------------------------------------------------------------------- 1 | -# advice from: https://groups.google.com/forum/#!topic/hydra-tech/4PeyyiZ8VNY 2 | -# - if paginate_params(@response).num_pages > 1 3 | - if @response.total_pages > 1 4 | -# .pagination= paginate_rsolr_response @response, :outer_window => 2, :theme => 'blacklight' 5 | .pagination= paginate @response, :outer_window => 2, :theme => 'blacklight' 6 | -------------------------------------------------------------------------------- /app/views/catalog/_sort_widget.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /app/views/catalog/email.html.erb: -------------------------------------------------------------------------------- 1 | 5 | 6 | <%= render :partial => 'email_form' %> 7 | -------------------------------------------------------------------------------- /app/views/catalog/facet.html.haml: -------------------------------------------------------------------------------- 1 | -# Override Blacklight view 2 | -# 1) Add fix_catalog_links, to rewrite controller URLS 3 | -# 2) Nothing else right now. 4 | 5 | .modal-header 6 | %button.ajax-modal-close.close{type: 'button', data: {dismiss: 'modal'}} 7 | x 8 | %h3.modal-title 9 | = facet_field_label(@facet.field) 10 | 11 | - if @display_facet.items.count > 20 12 | .facet_pagination.top 13 | = fix_catalog_links(render partial: 'facet_pagination') 14 | 15 | .modal-body 16 | .facet_extended_list 17 | = fix_catalog_links(render_facet_limit(@display_facet, layout: false)) 18 | 19 | .modal-footer 20 | .facet-pagination.bottom 21 | = fix_catalog_links(render partial: 'facet_pagination') 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/views/catalog/index.csv.haml: -------------------------------------------------------------------------------- 1 | -# 2 | -# # - raise 3 | -# 4 | -# What's available? 5 | -# 6 | -# >> @response.documents.first.keys 7 | -# => ["id", "author_facet", "title_display", "subject_topic_facet", "subject_era_facet", "subject_geo_facet", "pub_place_display", "pub_name_display", "pub_year_display", "language_facet", "format", "source_display", "isbn_display", "oclc_display", "full_publisher_display", "location_call_number_id_display", "location_facet", "shelfkey", "reverse_shelfkey", "item_display", "score"] 8 | -# 9 | -# We could use document.to_semantic_values, 10 | -# but we might also want to fully customize the CSV output. 11 | -# 12 | -# 13 | = CSV.generate_line(SolrDocument.csv_headers, row_sep: nil) 14 | -# 15 | - @response.documents.each do |document| 16 | -# each document might become multiple rows (per holding, per item) 17 | - rows = document.to_csv 18 | - rows.each do |row| 19 | = row.to_csv(row_sep: nil).html_safe 20 | -------------------------------------------------------------------------------- /app/views/catalog/index.rss.builder: -------------------------------------------------------------------------------- 1 | xml.instruct! :xml, :version=>"1.0" 2 | xml.rss(:version=>"2.0") { 3 | 4 | xml.channel { 5 | 6 | xml.title(t('blacklight.search.title', :application_name => application_name)) 7 | xml.link(catalog_index_url(params.to_unsafe_h)) 8 | xml.description(t('blacklight.search.title', :application_name => application_name)) 9 | xml.language('en-us') 10 | @document_list.each do |doc| 11 | xml.item do 12 | xml.title( doc.to_semantic_values[:title][0] || doc.id ) 13 | xml.link(polymorphic_url(doc)) 14 | xml.author( doc.to_semantic_values[:author][0] ) if doc.to_semantic_values[:author][0] 15 | end 16 | end 17 | 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /app/views/catalog/librarian_view.html.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | - title = @document.has_key?('title_display') ? @document['title_display'].first : '' 4 | - @page_title = "#{title} - #{application_name}".html_safe 5 | 6 | 7 | = render "_formats/clio/catalog_show_toolbar", :document => @document 8 | 9 | = render("/link_to_prod", id: @document.id, view: 'xml') if @document.backstage? 10 | 11 | .row 12 | 13 | #marc_download_links.col-sm-6 14 | %strong= "Download as:" 15 | %span= link_to "MARCXML", solr_document_path(@document.id, :format => "marcxml") 16 | %span= link_to "MARC21", solr_document_path(@document.id, :format => "marc") 17 | #patron_view_link.col-sm-6 18 | %strong.btn.btn-default= link_to "Return to Patron View", fix_catalog_links(solr_document_path(@document.id)) 19 | 20 | 21 | 22 | = render '/marc_view', document: @document, barcode2cgd: @barcode2cgd 23 | 24 | %br 25 | %br 26 | %br 27 | 28 | = render '/authority_variants', document: @document 29 | 30 | -------------------------------------------------------------------------------- /app/views/catalog/show.html.haml: -------------------------------------------------------------------------------- 1 | -# catalog/show.html 2 | -# Single-Item view for documents from catalog-based datasources 3 | 4 | -# - raise 5 | 6 | - @page_title = "#{@document ? document_show_html_title.listify.join('') : ''} - #{application_name}".html_safe 7 | 8 | - content_for(:head) { render_link_rel_alternates } 9 | 10 | = render :partial => "/datasource_warning", :locals => {:warning => warning} 11 | 12 | -# - @add_row_options = {:spans => [3,9]} 13 | = render :partial => "/_display/catalog/show", :locals => {:document => @document} 14 | 15 | -------------------------------------------------------------------------------- /app/views/item_alerts/_show_table_row.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %tr{:class => alert_status(item_alert), :'data-id' => item_alert.id} 3 | %td= ItemAlert::ALERT_TYPES[item_alert.alert_type.to_s] 4 | %td= item_alert.author.to_s.gsub("@columbia.edu","") 5 | %td= render_alert_duration(item_alert) 6 | %td= item_alert.message 7 | %td.action_column 8 | %btn.btn-small.btn.edit-item{:"data-modify" => edit_item_alert_path(item_alert)} 9 | %span.glyphicon.glyphicon-edit 10 | Edit 11 | %btn.btn-small.btn.delete-item{:"data-delete" => item_alert_path(item_alert)} 12 | %span.glyphicon.glyphicon-trash 13 | Delete 14 | -------------------------------------------------------------------------------- /app/views/item_alerts/edit.html.haml: -------------------------------------------------------------------------------- 1 | = render 'form', :item_alert => @item_alert, :remote => true 2 | -------------------------------------------------------------------------------- /app/views/item_alerts/index.html.haml: -------------------------------------------------------------------------------- 1 | %h1 Listing item_alerts 2 | 3 | %table 4 | %tr 5 | %th Source 6 | %th Item key 7 | %th Alert type 8 | %th Author 9 | %th Start date 10 | %th End date 11 | %th Message 12 | %th 13 | %th 14 | %th 15 | 16 | - @item_alerts.each do |item_alert| 17 | %tr 18 | %td= item_alert.source 19 | %td= item_alert.item_key 20 | %td= item_alert.alert_type 21 | %td= item_alert.author_id 22 | %td= item_alert.start_date 23 | %td= item_alert.end_date 24 | %td= item_alert.message 25 | %td= link_to 'Show', item_alert 26 | %td= link_to 'Edit', edit_item_alert_path(item_alert) 27 | %td= link_to 'Destroy', item_alert, method: :delete, data: { confirm: 'Are you sure?' } 28 | 29 | %br 30 | 31 | = link_to 'New Item alert', new_item_alert_path 32 | -------------------------------------------------------------------------------- /app/views/item_alerts/new.html.haml: -------------------------------------------------------------------------------- 1 | %h1 New item_alert 2 | 3 | = render 'form', :locals => {:item_alert => @item_alert } 4 | 5 | = link_to 'Back', item_alerts_path 6 | -------------------------------------------------------------------------------- /app/views/item_alerts/show.html.haml: -------------------------------------------------------------------------------- 1 | %p#notice= notice 2 | 3 | %p 4 | %b Source: 5 | = @item_alert.source 6 | %p 7 | %b Item key: 8 | = @item_alert.item_key 9 | %p 10 | %b Alert type: 11 | = @item_alert.alert_type 12 | %p 13 | %b Author: 14 | = @item_alert.author_id 15 | %p 16 | %b Start date: 17 | = @item_alert.start_date 18 | %p 19 | %b End date: 20 | = @item_alert.end_date 21 | %p 22 | %b Message: 23 | = @item_alert.message 24 | 25 | = link_to 'Edit', edit_item_alert_path(@item_alert) 26 | \| 27 | = link_to 'Back', item_alerts_path 28 | -------------------------------------------------------------------------------- /app/views/item_alerts/show_table_row.html.haml: -------------------------------------------------------------------------------- 1 | = render "show_table_row", :item_alert => @item_alert 2 | -------------------------------------------------------------------------------- /app/views/landing_pages/_academic_commons.html.haml: -------------------------------------------------------------------------------- 1 | = display_search_boxes('academic_commons') 2 | 3 | .row 4 | .landing_main.col-sm-8 5 | .title Academic Commons 6 | 7 | = render partial: '/datasource_warning', locals: {warning: warning} 8 | 9 | %p Search over 23,000 documents in Columbia University's digital repository, where faculty, students, and staff of Columbia and its affiliate institutions can deposit the results of their scholarly work and research. 10 | %ul 11 | %li Visit Academic Commons: #{link_to 'Academic Commons Home', 'http://academiccommons.columbia.edu'} 12 | 13 | .landing_side.col-sm-4 14 | .well.sidebar-nav 15 | .nav 16 | %ul.nav.nav-list 17 | %li.nav-header Related Links 18 | %li= link_to "Academic Commons Home", "https://academiccommons.columbia.edu" 19 | %li= link_to "Self Deposit Page", "https://academiccommons.columbia.edu/deposit" 20 | %li= link_to "Frequently Asked Questions", "https://academiccommons.columbia.edu/faq" 21 | -------------------------------------------------------------------------------- /app/views/landing_pages/_dlc.html.haml: -------------------------------------------------------------------------------- 1 | = display_search_boxes('dlc') 2 | 3 | .row 4 | .landing_main.col-sm-8 5 | .title Digital Library Collection Viewer 6 | 7 | = render partial: '/datasource_warning', locals: {warning: warning} 8 | 9 | %p DLC - the gateway to a limited set of miscellaneous content 10 | 11 | .landing_side.col-sm-4 12 | .well.sidebar-nav 13 | .nav 14 | %ul.nav.nav-list 15 | %li.nav-header DLC 16 | %li=link_to "DLC homepage", "https://dlc.library.columbia.edu/", :target => "_blank" 17 | %li.nav-divider 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/views/landing_pages/_new_arrivals.html.haml: -------------------------------------------------------------------------------- 1 | = display_search_boxes('new_arrivals') 2 | 3 | .row 4 | .landing_main.col-sm-8 5 | .title New Arrivals 6 | 7 | = render partial: '/datasource_warning', locals: {warning: warning} 8 | 9 | %p Searches the catalog for titles ordered or received in the past six months. Refine your search by library location, format, language, date of publication, date of acquisition, subjects, or call number. Press "search" without entering any search terms to browse the full database. 10 | 11 | .landing_side.col-sm-4 12 | .well.sidebar-nav 13 | .nav 14 | %ul.nav.nav-list 15 | %li.nav-header Guide 16 | %li=link_to "Search Tips", "https://blogs.cul.columbia.edu/clio/guides/new-arrivals-guide/", :target => "_blank" 17 | %li.nav-divider 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/views/layouts/_best_bets.html.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | // best_bets.html.haml - empty div, to be filled with Best Bets results 4 | 5 | #best_bets{ data: { url: APP_CONFIG['best_bets_url'], datasource: active_source } } 6 | 7 | -# The Best Bets modal is to support Firefox keyboard redirection 8 | #best-bets-modal.modal.fade 9 | -------------------------------------------------------------------------------- /app/views/layouts/_messages.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# Map Rails Flash types to Bootstrap 3 style colors 3 | - flash_map = {success: 'success', notice: 'info', alert: 'warning', error: 'danger'}.with_indifferent_access 4 | 5 | #main-flashes 6 | .flash_messages 7 | - flash.each do |type, message| 8 | - next if type.to_s == 'timedout' 9 | - display_class = flash_map[type] || type 10 | .alert{ class: "alert-#{display_class}"} 11 | = message 12 | %a.close{:"data-dismiss" => "alert", :href => "#"} x 13 | 14 | -------------------------------------------------------------------------------- /app/views/layouts/blank.html.haml: -------------------------------------------------------------------------------- 1 | !!! 2 | %html.blank_layout{:xmlns=>"http://www.w3.org/1999/xhtml"} 3 | 4 | %head 5 | %meta{"http-equiv"=>"Content-Type","content"=>"text/html; charset=utf-8"} 6 | %title=(@page_title || application_name) 7 | %link{:href=>url_for(:controller=>'catalog',:action => 'opensearch', :format => 'xml', :only_path => false), :title=>application_name, :type=>"application/opensearchdescription+xml", :rel=>"search"} 8 | 9 | = stylesheet_link_tag "application" 10 | = javascript_include_tag "application" 11 | 12 | = yield(:jstemplates) 13 | 14 | %body.blank_layout 15 | = yield 16 | -------------------------------------------------------------------------------- /app/views/layouts/js_return.html.haml: -------------------------------------------------------------------------------- 1 | = yield 2 | -------------------------------------------------------------------------------- /app/views/layouts/mailer.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <%= yield %> 8 | 9 | -------------------------------------------------------------------------------- /app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <%= yield %> 2 | -------------------------------------------------------------------------------- /app/views/logs/index.csv.erb: -------------------------------------------------------------------------------- 1 | <% headers = @logdata_keys + @request_keys %> 2 | <%= CSV.generate_line(headers, row_sep: nil) %> 3 | <% @rows.each do |row| %> 4 | <% fields = [] %> 5 | <% @logdata_keys.each do |key| %> 6 | <%fields << get_logdata_field(row['logdata'], key) %> 7 | <% end %> 8 | <% @request_keys.each do |key| %> 9 | <% fields << row[key] %> 10 | <% end %> 11 | <%= fields.to_csv(row_sep: nil).html_safe %> 12 | <% end %> -------------------------------------------------------------------------------- /app/views/logs/set_list.html.erb: -------------------------------------------------------------------------------- 1 |

The following logs are available.

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | <% @set_counts.each do |set, count| %> 14 | 15 | 20 | 23 | 24 | <% end %> 25 | 26 | 27 |
total log entries
16 |

17 | <%= link_to set, logs_path(set: set) %> 18 |

19 |
21 | <%= count%> 22 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /app/views/preferences/_datasource_sidebar_form.haml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/views/preferences/_datasource_sidebar_form.haml -------------------------------------------------------------------------------- /app/views/preferences/_form.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# We never reference the preference object - so we 3 | -# do not really need this: 4 | = form_for(@preference) do |f| 5 | 6 | - if @preference.errors.any? 7 | .id#error_explanation 8 | %h5 9 | = pluralize(@preference.errors.count, "error") 10 | prohibited this preference from being saved: 11 | %ul 12 | - @preference.errors.full_messages.each do |message| 13 | %li= message 14 | 15 | 16 | %h4 Quicksearch Bentos 17 | = render 'quicksearch_bentos_form' 18 | 19 | %h4 Summon Facets 20 | = render 'summon_facet_form' 21 | 22 | %h4 Datasource Sidebar 23 | = render 'datasource_sidebar_form', f: f 24 | 25 | 26 | 27 | .actions 28 | = f.submit 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/views/preferences/_summon_facet_form.haml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -# - all = Spectrum::SearchEngines::Summon::AVAILABLE_SUMMON_FACETS 5 | -# - system = Spectrum::SearchEngines::Summon.get_system_summon_facets 6 | -# - user = get_user_summon_facets || system 7 | 8 | %table.table 9 | %tr 10 | %th name 11 | %th system default 12 | %th user pref 13 | -@all_summon_facets.each do |facet| 14 | %tr.facet 15 | %td=facet 16 | %td 17 | = @system_summon_facets[facet] || '-' 18 | %td 19 | - user_value = @user_summon_facets[facet] || 0 20 | = text_field_tag("summon_facets[#{facet}]", user_value, size: 2) 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/views/preferences/edit.html.haml: -------------------------------------------------------------------------------- 1 | %h3 Update Preferences 2 | 3 | = render 'form' 4 | 5 | %br 6 | 7 | = link_to 'Cancel', preferences_path, class: "btn btn-default" 8 | -------------------------------------------------------------------------------- /app/views/preferences/index.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %p{id: 'notice'}= notice 3 | 4 | 5 | 6 | %h3 CLIO Preference settings for #{current_user.uid} 7 | 8 | 9 | 10 | - if @preference.nil? 11 | No personal preferences set. 12 | Using system defaults 13 | %br 14 | = link_to 'Set Preferences', new_preference_path 15 | 16 | - else 17 |
18 |   = @preference.settings
19 |   
20 | 21 | = link_to 'Update Preferences', edit_preference_path(@preference) 22 | 23 | -------------------------------------------------------------------------------- /app/views/preferences/new.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %h3 Set Preferences for #{current_user.uid} 3 | 4 | = render 'form' 5 | 6 | %br 7 | 8 | = link_to 'Cancel', preferences_path, class: "btn btn-default" 9 | -------------------------------------------------------------------------------- /app/views/record_mailer/sms_record.text.erb: -------------------------------------------------------------------------------- 1 | <% @documents.each do |document| %> 2 | <%= t('blacklight.sms.text.url', :url => polymorphic_url(document, @url_gen_params) ) %> 3 | <%= document.to_sms_text %> 4 | <%= document.call_numbers %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/saved_list_items/_form.html.haml: -------------------------------------------------------------------------------- 1 | = form_for @list_item do |f| 2 | - if @list_item.errors.any? 3 | #error_explanation 4 | %h2= "#{pluralize(@list_item.errors.count, "danger")} prohibited this list_item from being saved:" 5 | %ul 6 | - @list_item.errors.full_messages.each do |msg| 7 | %li= msg 8 | 9 | .field 10 | = f.label :list_id 11 | = f.number_field :list_id 12 | .field 13 | = f.label :item_key 14 | = f.text_field :item_key 15 | .field 16 | = f.label :sort_order 17 | = f.number_field :sort_order 18 | .actions 19 | = f.submit 'Save' 20 | -------------------------------------------------------------------------------- /app/views/saved_list_items/edit.html.haml: -------------------------------------------------------------------------------- 1 | %h1 Editing list_item 2 | 3 | = render 'form' 4 | 5 | = link_to 'Show', @list_item 6 | \| 7 | = link_to 'Back', list_items_path 8 | -------------------------------------------------------------------------------- /app/views/saved_list_items/index.html.haml: -------------------------------------------------------------------------------- 1 | %h1 Listing list_items 2 | 3 | %table 4 | %tr 5 | %th List 6 | %th Item key 7 | %th Sort order 8 | %th 9 | %th 10 | %th 11 | 12 | - @list_items.each do |list_item| 13 | %tr 14 | %td= list_item.list_id 15 | %td= list_item.item_key 16 | %td= list_item.sort_order 17 | %td= link_to 'Show', list_item 18 | %td= link_to 'Edit', edit_list_item_path(list_item) 19 | %td= link_to 'Destroy', list_item, :method => :delete, :data => { :confirm => 'Are you sure?' } 20 | 21 | %br 22 | 23 | = link_to 'New List item', new_list_item_path 24 | -------------------------------------------------------------------------------- /app/views/saved_list_items/new.html.haml: -------------------------------------------------------------------------------- 1 | %h1 New list_item 2 | 3 | = render 'form' 4 | 5 | = link_to 'Back', list_items_path 6 | -------------------------------------------------------------------------------- /app/views/saved_lists/_item_select_checkbox.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - is_selected = Array(session[:selected_items]).include?(item_id) 3 | 4 | %form.item_select_form 5 | -# The input has an "ID" only to be used as a "for" for the label, 6 | -# so that the label (the counter) works as an alternative click target. 7 | %label{ for: "item_select_#{item_id}", class: 'no-bottom-space' } 8 | %input.item_select_checkbox.hidden-print{ type: "checkbox", id: "item_select_#{item_id}", data: {identifier: item_id}, checked: is_selected } 9 | -# NEXT-930 - Number results in Index page 10 | - if local_assigns[:counter] 11 | %small.text-muted= "#{counter ||= ''}." 12 | 13 | -------------------------------------------------------------------------------- /app/views/saved_lists/_menu_list.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - link_text = "#{menu_list.display_name.abbreviate(20)} (#{menu_list.size})" 3 | 4 | .row.saved_list_list.no-gutter 5 | .col-sm-7 6 | - if menu_list == current_list 7 | %b= link_text 8 | - else 9 | %b= link_to link_text, menu_list.url 10 | .col-sm-3 11 | #{get_permissions_label(menu_list.permissions)} 12 | .col-sm-2.text-right 13 | -# NEXT-1232 - RSS for saved lists 14 | - if menu_list.permissions == 'public' 15 | = link_to image_tag('rss-feed-icon-14x14.png', size: "13x13"), menu_list.url + '.atom', :class => "rss-feed" 16 | 17 | -------------------------------------------------------------------------------- /app/views/saved_lists/_savedlist_control_panel.html.haml: -------------------------------------------------------------------------------- 1 | -# If authenticated, show a menu of all the current user's lists 2 | - if current_user 3 | 4 | %h4 Saved Lists for: 5 | %p.lead #{current_user.name} (#{current_user.uid}) 6 | 7 | -# %br 8 | .container 9 | = render partial: 'menu_list', collection: @all_current_user_lists, locals: { current_list: @list } 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/views/saved_lists/edit.html.haml: -------------------------------------------------------------------------------- 1 | %h1 Editing list 2 | 3 | = render 'form' 4 | 5 | = link_to 'Cancel Edit', @list.url 6 | 7 | \| 8 | 9 | - if @list.is_default? 10 | Default list - cannot delete 11 | - else 12 | = link_to 'Destroy this list', @list, :method => :delete, :data => { :confirm => 'Are you sure you want to permanently delete this entire list?' } 13 | -------------------------------------------------------------------------------- /app/views/saved_lists/email.html.erb: -------------------------------------------------------------------------------- 1 | 5 | <%= render :partial => 'catalog/email_form' %> 6 | -------------------------------------------------------------------------------- /app/views/saved_lists/new.html.haml: -------------------------------------------------------------------------------- 1 | %h1 New list 2 | 3 | = render 'form' 4 | 5 | = link_to 'Back', lists_path 6 | -------------------------------------------------------------------------------- /app/views/spectrum/_lweb.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <% cs_id = APP_CONFIG['google']['custom_search_id'] || '' %> 3 | 4 | <% if params['q'] and not params['q'].match(/^\d+$/) %> 5 | 6 |
7 | <% end %> 8 | 9 |
10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /app/views/spectrum/ac/_constraints.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# AC API - CONSTRAINTS DISPLAY 3 | 4 | .well.well-constraints 5 | %span.constraints-label You searched for: 6 | 7 | - result.constraints_with_links.each do |text, link| 8 | 9 | %div.constraint-box 10 | %span.filterValue 11 | =text 12 | =link_to content_tag(:span, '', :class => 'glyphicon glyphicon-remove'), link 13 | -------------------------------------------------------------------------------- /app/views/spectrum/ac/_result_docs.html.haml: -------------------------------------------------------------------------------- 1 | -# - @add_row_options = row_opts.symbolize_keys! if row_opts.kind_of?(Hash) 2 | 3 | - truncated_documents = render_opts['count'] ? result.documents[0,render_opts['count']] : result.documents 4 | - truncated_documents.each_with_index do |doc, doc_index| 5 | - counter = (result.page_size * (result.current_page - 1)) + (doc_index + 1) 6 | = render_document_view(doc, render_opts.merge(counter: counter )) 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/views/spectrum/aggregate/_result_docs.html.haml: -------------------------------------------------------------------------------- 1 | 2 | / spectrum/aggregate/_result_docs.html.haml 3 | 4 | - if result.successful? 5 | -# - @add_row_options = row_opts.symbolize_keys! if row_opts.kind_of?(Hash) 6 | 7 | - truncated_documents = render_opts['count'] ? result.documents[0,render_opts['count']] : result.documents 8 | - if truncated_documents.empty? 9 | .result_empty 10 | %h5 No results found. 11 | -# Nope, moved to _result_header.html.haml 12 | -# %h5= datasource_explore_link(source) 13 | - else 14 | - truncated_documents.each_with_index do |doc, doc_index| 15 | = render_document_view(doc, render_opts.merge(counter: doc_index )) 16 | 17 | 18 | - else 19 | .result_error 20 | %h5 There was an error searching this datasource. (#{result.errors}) 21 | 22 | -------------------------------------------------------------------------------- /app/views/spectrum/aggregate/_result_footer.html.haml: -------------------------------------------------------------------------------- 1 | 2 | / spectrum/aggregate/_result_footer.html.haml 3 | 4 | .result_footer 5 | %p.text-right 6 | = link_to "View and filter all #{number_with_delimiter(result.total_items)} results \u00bb".html_safe, result.search_path, class: 'btn btn-default', style: 'padding:3px' 7 | -------------------------------------------------------------------------------- /app/views/spectrum/aggregate/_result_header.html.haml: -------------------------------------------------------------------------------- 1 | 2 | / spectrum/aggregate/_result_header.html.haml 3 | 4 | .results_header{:data => {'source' => source}} 5 | %span{id: 'hits', data: {'source' => base_source(source), 'total' => "#{number_with_delimiter(result.total_items)}"}} 6 | .category_title 7 | #{title} 8 | - if defined?(description) 9 | %a.source-info.btn.btn-link{:href => '#', :rel => 'popover', :'data-placement' => 'bottom', :'data-content' => description} 10 | = image_tag('information_icon.png', :size => "20x20") 11 | .result_count 12 | - if result && result.total_items.to_i > 0 13 | - label = title.eql?("Libraries Website") ? 'View' : 'View and filter' 14 | = link_to "#{label} all results".html_safe, result.search_path 15 | - else 16 | %a{href: datasource_landing_page_path(active_source)} 17 | Explore #{title} 18 | -------------------------------------------------------------------------------- /app/views/spectrum/aggregate/_result_header_async.html.haml: -------------------------------------------------------------------------------- 1 | 2 | / spectrum/aggregate/_result_header_async.html.haml 3 | 4 | .results_header{:data => {'source' => source}} 5 | 6 | .category_title 7 | #{title} 8 | - if defined?(description) 9 | %a.source-info.btn.btn-link{:href => '#', :rel => 'popover', :'data-placement' => 'bottom', :'data-content' => description} 10 | = image_tag('information_icon.png', :size => "20x20") 11 | .result_count 12 | - right_result_header_content ||= '' 13 | = right_result_header_content.html_safe -------------------------------------------------------------------------------- /app/views/spectrum/aggregate/_result_set.html.haml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/views/spectrum/aggregate/_result_set.html.haml -------------------------------------------------------------------------------- /app/views/spectrum/hits.html.haml: -------------------------------------------------------------------------------- 1 | = number_with_delimiter(@hits || 0) -------------------------------------------------------------------------------- /app/views/spectrum/lweb/_constraints.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# GOOGLE CUSTOM SEARCH - CONSTRAINTS DISPLAY 3 | 4 | .well.well-constraints 5 | %span.constraints-label You searched for: 6 | 7 | - result.constraints_with_links.each do |text, link| 8 | 9 | %div.constraint-box 10 | %span.filterValue 11 | =text 12 | =link_to content_tag(:span, '', :class => 'glyphicon glyphicon-remove'), link 13 | -------------------------------------------------------------------------------- /app/views/spectrum/lweb/_result_docs.html.haml: -------------------------------------------------------------------------------- 1 | -# - @add_row_options = row_opts.symbolize_keys! if row_opts.kind_of?(Hash) 2 | 3 | - truncated_documents = render_opts['count'] ? result.documents[0,render_opts['count']] : result.documents 4 | - truncated_documents.each_with_index do |doc, doc_index| 5 | - counter = (result.page_size * (result.current_page - 1)) + (doc_index + 1) 6 | = render_document_view(doc, render_opts.merge(counter: counter )) 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/views/spectrum/search.html.haml: -------------------------------------------------------------------------------- 1 | 2 | - if @results.nil? || @results.empty? 3 | - cache("datasource_landing_page_#{active_source}_#{params_digest}") do 4 | = datasource_landing_page(active_source) 5 | 6 | - else 7 | = render :partial => "/spectrum/#{@search_layout['style']}" 8 | -------------------------------------------------------------------------------- /app/views/spectrum/search.marc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/app/views/spectrum/search.marc -------------------------------------------------------------------------------- /app/views/spectrum/summon/_constraints.html.haml: -------------------------------------------------------------------------------- 1 | 2 | -# SUMMON - CONSTRAINTS DISPLAY 3 | 4 | .well.well-constraints 5 | %span.constraints-label You searched for: 6 | 7 | - result.constraints_with_links.each do |text, link| 8 | 9 | %div.constraint-box 10 | %span.filterValue 11 | =text 12 | =link_to content_tag(:span, '', :class => 'glyphicon glyphicon-remove'), link 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/views/spectrum/summon/_result_docs.html.haml: -------------------------------------------------------------------------------- 1 | -# - @add_row_options = row_opts.symbolize_keys! if row_opts.kind_of?(Hash) 2 | 3 | - truncated_documents = render_opts['count'] ? result.documents[0,render_opts['count']] : result.documents 4 | - truncated_documents.each_with_index do |doc, doc_index| 5 | - counter = (result.page_size * (result.current_page - 1)) + (doc_index + 1) 6 | = render_document_view(doc, render_opts.merge(counter: counter )) 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/views/top_nav/_ask_a_librarian.html.haml: -------------------------------------------------------------------------------- 1 | %li.dropdown.menu.top_nav_ask_a_librarian 2 | %a{href: 'https://resolver.library.columbia.edu/lweb0031', target: '_blank'} 3 | Ask a Librarian   4 | %span.glyphicon.glyphicon-new-window.icon-white 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/views/top_nav/_help_menu.html.haml: -------------------------------------------------------------------------------- 1 | 2 | %li.dropdown.menu 3 | 4 | %a.dropdown-toggle.menu{data: {toggle: "dropdown"}, href: "#"} 5 | Feedback / Help 6 | %b.caret 7 | %ul.dropdown-menu.menu-dropdown 8 | %li 9 | %a{:href => "https://resolver.library.columbia.edu/lweb0031", :target => "_blank"} Ask a Librarian 10 | %li 11 | %a{href: 'https://blogs.cul.columbia.edu/clio/guides/'} CLIO Help 12 | %li 13 | %a{href: 'https://library.columbia.edu/content/libraryweb/help/faq.html'} FAQ 14 | %li 15 | %a{href: 'https://resolver.library.columbia.edu/lweb0006'} Report E-Resource Problems 16 | %li 17 | %a{href: 'https://resolver.library.columbia.edu/lweb0004'} Recommend a title for purchase 18 | %li 19 | %a{href: '#', class: 'feedback-popup', data: {mobile: "#{browser.device.mobile?}" }} Suggestions & Feedback 20 | -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../config/application', __dir__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /bin/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a way to update your development environment automatically. 15 | # Add necessary update steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | puts "\n== Updating database ==" 22 | system! 'bin/rails db:migrate' 23 | 24 | puts "\n== Removing old logs and tempfiles ==" 25 | system! 'bin/rails log:clear tmp:clear' 26 | 27 | puts "\n== Restarting application server ==" 28 | system! 'bin/rails restart' 29 | end 30 | -------------------------------------------------------------------------------- /bin/yarn: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | VENDOR_PATH = File.expand_path('..', __dir__) 3 | Dir.chdir(VENDOR_PATH) do 4 | begin 5 | exec "yarnpkg #{ARGV.join(' ')}" 6 | rescue Errno::ENOENT 7 | $stderr.puts 'Yarn executable was not detected in the system.' 8 | $stderr.puts 'Download Yarn at https://yarnpkg.com/en/docs/install' 9 | exit 1 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Clio::Application 5 | -------------------------------------------------------------------------------- /config/blacklight.yml.EXAMPLE: -------------------------------------------------------------------------------- 1 | # This is an EXAMPLE blacklight.yml file. 2 | # Copy this file to blacklight.yml and edit the values as needed. 3 | 4 | 5 | # Configure the URL of the Solr search engine to be used for searching 6 | # most CLIO datasources (Catalog, E-Journals, Databases, Archives, etc.) 7 | 8 | # Columbia Library provides a "Library Labs" installation of our Solr search 9 | # engine with a copy of our CLIO data to facilitate experimentation and reuse. 10 | # Contact the libraries information technology office for access. 11 | 12 | # The development URL will be used for all catalog searches during development. 13 | development: 14 | url: http://librarylabs.cul.columbia.edu:1234/solr-4.0/clio 15 | 16 | # The test URL will be used for running automated testing. 17 | # This can be set to the same Solr search engine as development. 18 | test: 19 | url: http://librarylabs.cul.columbia.edu:1234/solr-4.0/clio 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /config/blacklight.yml.travis: -------------------------------------------------------------------------------- 1 | test: 2 | adapter: solr 3 | url: <%= ENV['SOLR_URL'] %> 4 | -------------------------------------------------------------------------------- /config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | 5 | # require 'rubygems' 6 | # 7 | # # Set up gems listed in the Gemfile. 8 | # ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 9 | # 10 | # require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 11 | # 12 | # 13 | # # http://stackoverflow.com/questions/28668436 14 | # # Because, without this we can't use the /etc/hosts trick 15 | # # to connect to 127.0.0.1 as "cliobeta.columbia.edu" 16 | # require 'rails/commands/server' 17 | # 18 | # module Rails 19 | # class Server 20 | # alias :default_options_alias :default_options 21 | # def default_options 22 | # default_options_alias.merge!(Host: '0.0.0.0') 23 | # end 24 | # end 25 | # end 26 | -------------------------------------------------------------------------------- /config/cable.yml: -------------------------------------------------------------------------------- 1 | development: 2 | adapter: async 3 | 4 | test: 5 | adapter: async 6 | 7 | production: 8 | adapter: redis 9 | url: redis://localhost:6379/1 10 | channel_prefix: clio_production 11 | -------------------------------------------------------------------------------- /config/cas.yml.EXAMPLE: -------------------------------------------------------------------------------- 1 | # 2 | # SAML configuration for authentication via cul_omniauth. 3 | # 4 | 5 | cas: &CAS 6 | host: cas.columbia.edu 7 | # host: casdev.cc.columbia.edu 8 | login_url: /cas/login 9 | logout_url: /cas/logout 10 | service_validate_url: /cas/serviceValidate 11 | disable_ssl_verification: true 12 | provider: cas 13 | saml: &SAML 14 | <<: *CAS 15 | provider: saml 16 | service_validate_url: /cas/samlValidate 17 | 18 | development: *SAML 19 | test: *SAML 20 | 21 | # clio_dev: *SAML 22 | # clio_test: *SAML 23 | # clio_prod: *SAML 24 | # 25 | # clio_batch_dev: *SAML 26 | # clio_batch_test: *SAML 27 | # clio_batch_prod: *SAML 28 | 29 | -------------------------------------------------------------------------------- /config/database.yml.EXAMPLE: -------------------------------------------------------------------------------- 1 | # This is an EXAMPLE database.yml file. 2 | # Copy this file to database.yml and edit the values as needed. 3 | 4 | # The development and test databases are used by CLIO for managing 5 | # user citations, sessions, and history. 6 | # Use local SQLite databases. They will need to be created using 7 | # standard Rails rake tasks. 8 | 9 | development: 10 | adapter: sqlite3 11 | database: db/development.sqlite3 12 | pool: 5 13 | timeout: 5000 14 | 15 | 16 | # WARNING: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | adapter: sqlite3 21 | database: db/test.sqlite3 22 | pool: 5 23 | timeout: 5000 24 | 25 | 26 | -------------------------------------------------------------------------------- /config/database.yml.travis: -------------------------------------------------------------------------------- 1 | # test: 2 | # adapter: sqlite3 3 | # database: ":memory:" 4 | # timeout: 500 5 | 6 | test: 7 | adapter: sqlite3 8 | database: db/test.sqlite3 9 | timeout: 500 10 | -------------------------------------------------------------------------------- /config/deploy/clio_app_prod.rb: -------------------------------------------------------------------------------- 1 | 2 | set :bundle_without, %w(development test clio_dev clio_test clio_prod).join(' ') 3 | 4 | set :bundle_env_variables, 'http_proxy' => 'http://lito-squid-prod1.cul.columbia.edu:3131', 5 | 'https_proxy' => 'https://lito-squid-prod1.cul.columbia.edu:3131' 6 | 7 | server 'clio-service-prod1.cul.columbia.edu', user: 'clioserv', roles: %w(app db web) 8 | 9 | # set :deploy_to, '/var/www/my_app_name' 10 | # set :deploy_to, '/opt/passenger/clio_prod' 11 | set :deploy_to, '/opt/app/clio_prod' 12 | 13 | # https://github.com/capistrano/rvm 14 | # set :rvm_type, :user # Defaults to: :auto 15 | # set :rvm_ruby_version, '2.0.0-p247' # Defaults to: 'default' 16 | # set :rvm_custom_path, '~/.myveryownrvm' # only needed if not detected 17 | set :rvm_ruby_version, 'clio_prod' 18 | -------------------------------------------------------------------------------- /config/deploy/clio_batch_dev.rb: -------------------------------------------------------------------------------- 1 | 2 | set :bundle_without, %w(development test clio_dev clio_test clio_prod).join(' ') 3 | 4 | # set :bundle_env_variables, 'http_proxy' => 'http://squid.cul.columbia.edu:3131', 5 | # 'https_proxy' => 'https://squid.cul.columbia.edu:3131' 6 | 7 | set :bundle_env_variables, 'http_proxy' => 'http://squid.cul.columbia.edu:3131' 8 | 9 | server 'clio-service-prod2.cul.columbia.edu', user: 'clioserv', roles: %w(app db web) 10 | 11 | # set :deploy_to, '/var/www/my_app_name' 12 | # set :deploy_to, '/opt/passenger/clio_prod' 13 | set :deploy_to, '/opt/clio/batch_dev' 14 | 15 | # https://github.com/capistrano/rvm 16 | # set :rvm_type, :user # Defaults to: :auto 17 | # set :rvm_ruby_version, '2.0.0-p247' # Defaults to: 'default' 18 | # set :rvm_custom_path, '~/.myveryownrvm' # only needed if not detected 19 | set :rvm_ruby_version, 'clio_dev' 20 | -------------------------------------------------------------------------------- /config/deploy/clio_batch_prod.rb: -------------------------------------------------------------------------------- 1 | 2 | set :bundle_without, %w(development test clio_dev clio_test clio_prod).join(' ') 3 | 4 | # set :bundle_env_variables, 'http_proxy' => 'http://lito-squid-prod1.cul.columbia.edu:3131', 5 | # 'https_proxy' => 'https://lito-squid-prod1.cul.columbia.edu:3131' 6 | 7 | set :bundle_env_variables, 'http_proxy' => 'http://squid.cul.columbia.edu:3131' 8 | 9 | server 'clio-service-prod2.cul.columbia.edu', user: 'clioserv', roles: %w(app db web) 10 | 11 | # set :deploy_to, '/var/www/my_app_name' 12 | # set :deploy_to, '/opt/passenger/clio_prod' 13 | set :deploy_to, '/opt/clio/batch_prod' 14 | 15 | # https://github.com/capistrano/rvm 16 | # set :rvm_type, :user # Defaults to: :auto 17 | # set :rvm_ruby_version, '2.0.0-p247' # Defaults to: 'default' 18 | # set :rvm_custom_path, '~/.myveryownrvm' # only needed if not detected 19 | set :rvm_ruby_version, 'clio_test' 20 | -------------------------------------------------------------------------------- /config/deploy/clio_batch_test.rb: -------------------------------------------------------------------------------- 1 | 2 | set :bundle_without, %w(development test clio_dev clio_test clio_prod).join(' ') 3 | 4 | # set :bundle_env_variables, 'http_proxy' => 'http://lito-squid-prod2.cul.columbia.edu:3131', 5 | # 'https_proxy' => 'https://lito-squid-prod2.cul.columbia.edu:3131' 6 | 7 | set :bundle_env_variables, 'http_proxy' => 'http://squid.cul.columbia.edu:3131' 8 | 9 | server 'clio-service-prod2.cul.columbia.edu', user: 'clioserv', roles: %w(app db web) 10 | 11 | # set :deploy_to, '/var/www/my_app_name' 12 | # set :deploy_to, '/opt/passenger/clio_prod' 13 | set :deploy_to, '/opt/clio/batch_test' 14 | 15 | # https://github.com/capistrano/rvm 16 | # set :rvm_type, :user # Defaults to: :auto 17 | # set :rvm_ruby_version, '2.0.0-p247' # Defaults to: 'default' 18 | # set :rvm_custom_path, '~/.myveryownrvm' # only needed if not detected 19 | set :rvm_ruby_version, 'clio_test' 20 | -------------------------------------------------------------------------------- /config/donor_info.yml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 'seymourdurst': 4 | txt: 'Seymour B. Durst Old York Library Collection, Avery Architectural & Fine Arts Library, Columbia University.' 5 | url: 'https://dlc.library.columbia.edu/durst' 6 | 7 | 'paullevitz': 8 | txt: '' 9 | url: '' 10 | 11 | -------------------------------------------------------------------------------- /config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require_relative 'application' 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | 7 | # # Load the rails application 8 | # require File.expand_path('../application', __FILE__) 9 | # 10 | # # Initialize the rails application 11 | # Clio::Application.initialize! 12 | -------------------------------------------------------------------------------- /config/environments/spectrum_prod_master.rb: -------------------------------------------------------------------------------- 1 | # minimal configuration settings necessary 2 | # for cron jobs against master solr index 3 | Clio::Application.configure do 4 | # Silence the noisy deprecations, 5 | # we don't need them in our cron email output 6 | ActiveSupport::Deprecation.silenced = true 7 | end 8 | -------------------------------------------------------------------------------- /config/initializers/application_controller_renderer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # ActiveSupport::Reloader.to_prepare do 4 | # ApplicationController.renderer.defaults.merge!( 5 | # http_host: 'example.org', 6 | # https: false 7 | # ) 8 | # end 9 | -------------------------------------------------------------------------------- /config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path. 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | # Add Yarn node_modules folder to the asset load path. 9 | Rails.application.config.assets.paths << Rails.root.join('node_modules') 10 | 11 | # Precompile additional assets. 12 | # application.js, application.css, and all non-JS/CSS in the app/assets 13 | # folder are already added. 14 | # Rails.application.config.assets.precompile += %w( admin.js admin.css ) 15 | -------------------------------------------------------------------------------- /config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Specify a serializer for the signed and encrypted cookie jars. 4 | # Valid options are :json, :marshal, and :hybrid. 5 | Rails.application.config.action_dispatch.cookies_serializer = :marshal 6 | -------------------------------------------------------------------------------- /config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /config/initializers/footnotes.rb: -------------------------------------------------------------------------------- 1 | 2 | # No footnotes for now 3 | 4 | # if defined?(Footnotes) && Rails.env.development? 5 | # Footnotes.run! # first of all 6 | # 7 | # end 8 | -------------------------------------------------------------------------------- /config/initializers/google_analytics.rb: -------------------------------------------------------------------------------- 1 | module GoogleAnalytics 2 | mattr_accessor :web_property_id 3 | end 4 | 5 | # Change to your Google Web id 6 | GoogleAnalytics.web_property_id = case Rails.env.to_s 7 | 8 | # PROD 9 | when 'clio_prod' 10 | 'UA-28923110-1' 11 | 12 | # TEST 13 | when 'clio_test' 14 | 'UA-28923110-3' 15 | 16 | # DEV 17 | when 'clio_dev' 18 | 'UA-28923110-4' 19 | 20 | when 'development' 21 | 'UA-28923110-5' 22 | 23 | end 24 | -------------------------------------------------------------------------------- /config/initializers/google_api_client.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'google/apis/core/base_service' 3 | 4 | google_config = APP_CONFIG['google'] || {} 5 | 6 | Google::Apis.logger = Logger.new(STDERR) 7 | Google::Apis.logger.level = google_config['log_level'] || Logger::INFO 8 | 9 | Google::Apis::RequestOptions.default.retries = google_config['api_retries'] || 2 10 | 11 | 12 | -------------------------------------------------------------------------------- /config/initializers/has_options.rb: -------------------------------------------------------------------------------- 1 | # HasOptions 2 | require 'has_options' 3 | ActiveRecord::Base.send :include, HasOptionsHash::HasOptions 4 | -------------------------------------------------------------------------------- /config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /config/initializers/load_local_subjects.rb: -------------------------------------------------------------------------------- 1 | 2 | # NEXT-1601 - mapping table from LOC subject heading to preferred local NNC subject heading 3 | LOCAL_SUBJECTS = {} 4 | 5 | # The app_config.yml toggle value controls whether the local-subjects database table 6 | # is loaded into into a mapping table to be used in display and bib indexing. 7 | # The Authorities Load will populate the mapping table regardless. 8 | if APP_CONFIG['enable_local_subjects'] 9 | if ActiveRecord::Base.connection.table_exists?('local_subjects') 10 | LocalSubject.find_each do |local_subject| 11 | LOCAL_SUBJECTS[ local_subject.loc_subject ] = local_subject.nnc_subject 12 | end 13 | end 14 | end 15 | 16 | 17 | -------------------------------------------------------------------------------- /config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | 6 | Mime::Type.register "application/xls", :xls 7 | -------------------------------------------------------------------------------- /config/initializers/new_framework_defaults_5_1.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains migration options to ease your Rails 5.1 upgrade. 4 | # 5 | # Once upgraded flip defaults one by one to migrate to the new default. 6 | # 7 | # Read the Guide for Upgrading Ruby on Rails for more info on each option. 8 | 9 | # Make `form_with` generate non-remote forms. 10 | Rails.application.config.action_view.form_with_generates_remote_forms = false 11 | 12 | # Unknown asset fallback will return the path passed in when the given 13 | # asset is not present in the asset pipeline. 14 | # Rails.application.config.assets.unknown_asset_fallback = false 15 | -------------------------------------------------------------------------------- /config/initializers/recaptcha.rb: -------------------------------------------------------------------------------- 1 | 2 | Recaptcha.configure do |config| 3 | config.site_key = APP_CONFIG['recaptcha_site_key'] || 'invalid' 4 | config.secret_key = APP_CONFIG['recaptcha_secret_key'] || 'invalid' 5 | # Uncomment the following line if you are using a proxy server: 6 | # config.proxy = 'http://myproxy.com.au:8080' 7 | end 8 | -------------------------------------------------------------------------------- /config/initializers/secret_token.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | # Make sure the secret is at least 30 characters and all random, 6 | # no regular words or you'll be exposed to dictionary attacks. 7 | Clio::Application.config.secret_key_base = '30efc4e7909c4d8cb8998f0f242c4f91077bf906dcdcd56fee3daee7cefc6fcb51763c31cd74383e62ddb6a98a1f47206992ca9b8697710f2c896dc60f34ed22' 8 | -------------------------------------------------------------------------------- /config/initializers/uptime.rb: -------------------------------------------------------------------------------- 1 | # http://stackoverflow.com/questions/18465962 2 | # Is there a way to get the elapsed time that 3 | # a Rails server has been running for? 4 | 5 | BOOTED_AT = Time.now 6 | 7 | LAST_DEPLOYED = File.atime(Dir.pwd).to_s(:long) 8 | 9 | -------------------------------------------------------------------------------- /config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # The following keys must be escaped otherwise they will not be retrieved by 20 | # the default I18n backend: 21 | # 22 | # true, false, on, off, yes, no 23 | # 24 | # Instead, surround them with single quotes. 25 | # 26 | # en: 27 | # 'true': 'foo' 28 | # 29 | # To learn more, please read the Rails Internationalization guide 30 | # available at http://guides.rubyonrails.org/i18n.html. 31 | 32 | en: 33 | hello: "Hello world" 34 | -------------------------------------------------------------------------------- /config/order_status_codes.yml: -------------------------------------------------------------------------------- 1 | '0': 2 | short_message: 'In the Pre-Order Process' 3 | long_message: 'In the Pre-Order Process. Try Borrow Direct or ILL.' 4 | services: 5 | - borrow_direct 6 | - ill 7 | '1': 8 | short_message: 'Received %DATE' 9 | long_message: 'Received %DATE. Place an In Process item request.' 10 | services: 11 | - in_process 12 | '4': 13 | short_message: 'Not yet received; claimed %DATE' 14 | long_message: 'Not yet received; claimed %DATE. Try Borrow Direct or ILL.' 15 | services: 16 | - on_order 17 | - borrow_direct 18 | - ill 19 | '8': 20 | short_message: 'Copy On Order %DATE' 21 | long_message: 'Copy On Order %DATE. Try Borrow Direct or ILL.' 22 | services: 23 | - on_order 24 | - borrow_direct 25 | - ill 26 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/contractions_ca.txt: -------------------------------------------------------------------------------- 1 | # Set of Catalan contractions for ElisionFilter 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | d 4 | l 5 | m 6 | n 7 | s 8 | t 9 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/contractions_fr.txt: -------------------------------------------------------------------------------- 1 | # Set of French contractions for ElisionFilter 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | l 4 | m 5 | t 6 | qu 7 | n 8 | s 9 | j 10 | d 11 | c 12 | jusqu 13 | quoiqu 14 | lorsqu 15 | puisqu 16 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/contractions_ga.txt: -------------------------------------------------------------------------------- 1 | # Set of Irish contractions for ElisionFilter 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | d 4 | m 5 | b 6 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/contractions_it.txt: -------------------------------------------------------------------------------- 1 | # Set of Italian contractions for ElisionFilter 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | c 4 | l 5 | all 6 | dall 7 | dell 8 | nell 9 | sull 10 | coll 11 | pell 12 | gl 13 | agl 14 | dagl 15 | degl 16 | negl 17 | sugl 18 | un 19 | m 20 | t 21 | s 22 | v 23 | d 24 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/hyphenations_ga.txt: -------------------------------------------------------------------------------- 1 | # Set of Irish hyphenations for StopFilter 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | h 4 | n 5 | t 6 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/stemdict_nl.txt: -------------------------------------------------------------------------------- 1 | # Set of overrides for the dutch stemmer 2 | # TODO: load this as a resource from the analyzer and sync it in build.xml 3 | fiets fiets 4 | bromfiets bromfiets 5 | ei eier 6 | kind kinder 7 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/stopwords_el.txt: -------------------------------------------------------------------------------- 1 | # Lucene Greek Stopwords list 2 | # Note: by default this file is used after GreekLowerCaseFilter, 3 | # so when modifying this file use 'σ' instead of 'ς' 4 | ο 5 | η 6 | το 7 | οι 8 | τα 9 | του 10 | τησ 11 | των 12 | τον 13 | την 14 | και 15 | κι 16 | κ 17 | ειμαι 18 | εισαι 19 | ειναι 20 | ειμαστε 21 | ειστε 22 | στο 23 | στον 24 | στη 25 | στην 26 | μα 27 | αλλα 28 | απο 29 | για 30 | προσ 31 | με 32 | σε 33 | ωσ 34 | παρα 35 | αντι 36 | κατα 37 | μετα 38 | θα 39 | να 40 | δε 41 | δεν 42 | μη 43 | μην 44 | επι 45 | ενω 46 | εαν 47 | αν 48 | τοτε 49 | που 50 | πωσ 51 | ποιοσ 52 | ποια 53 | ποιο 54 | ποιοι 55 | ποιεσ 56 | ποιων 57 | ποιουσ 58 | αυτοσ 59 | αυτη 60 | αυτο 61 | αυτοι 62 | αυτων 63 | αυτουσ 64 | αυτεσ 65 | αυτα 66 | εκεινοσ 67 | εκεινη 68 | εκεινο 69 | εκεινοι 70 | εκεινεσ 71 | εκεινα 72 | εκεινων 73 | εκεινουσ 74 | οπωσ 75 | ομωσ 76 | ισωσ 77 | οσο 78 | οτι 79 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/lang/stopwords_hy.txt: -------------------------------------------------------------------------------- 1 | # example set of Armenian stopwords. 2 | այդ 3 | այլ 4 | այն 5 | այս 6 | դու 7 | դուք 8 | եմ 9 | են 10 | ենք 11 | ես 12 | եք 13 | է 14 | էի 15 | էին 16 | էինք 17 | էիր 18 | էիք 19 | էր 20 | ըստ 21 | թ 22 | ի 23 | ին 24 | իսկ 25 | իր 26 | կամ 27 | համար 28 | հետ 29 | հետո 30 | մենք 31 | մեջ 32 | մի 33 | ն 34 | նա 35 | նաև 36 | նրա 37 | նրանք 38 | որ 39 | որը 40 | որոնք 41 | որպես 42 | ու 43 | ում 44 | պիտի 45 | վրա 46 | և 47 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/mapping-apostropheish.txt: -------------------------------------------------------------------------------- 1 | # 2 | # We found that either input documents or queries would 3 | # sometimes contain apostrophe-like characters instead of 4 | # actual apostrophes (single-quotes). 5 | # 6 | # Solr has some default tokenizing related to apostrophes, 7 | # which doesn't happen for non-apostrophes. 8 | # 9 | # Since we want all these chars to be treated equivalently, 10 | # we'll simply map them to the same value. 11 | # 12 | # See details in NEXT-824 - Apostrophe character 13 | # 14 | 15 | # Unicode Character 'MODIFIER LETTER PRIME' (U+02B9) 16 | "\u02B9" => "'" 17 | 18 | # Unicode Character 'MODIFIER LETTER TURNED COMMA' (U+02BB) 19 | "\u02BB" => "'" 20 | 21 | # Unicode Character 'MODIFIER LETTER APOSTROPHE' (U+02BC) 22 | "\u02BC" => "'" 23 | 24 | # Unicode Character 'MODIFIER LETTER RIGHT HALF RING' (U+02BE) 25 | "\u02BE" => "'" 26 | 27 | # Unicode Character 'MODIFIER LETTER LEFT HALF RING' (U+02BF) 28 | "\u02BF" => "'" 29 | 30 | 31 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/params.json: -------------------------------------------------------------------------------- 1 | {"params":{ 2 | "query":{ 3 | "defType":"edismax", 4 | "q.alt":"*:*", 5 | "rows":"10", 6 | "fl":"*,score", 7 | "":{"v":0} 8 | }, 9 | "facets":{ 10 | "facet":"on", 11 | "facet.mincount": "1", 12 | "":{"v":0} 13 | }, 14 | "velocity":{ 15 | "wt": "velocity", 16 | "v.template":"browse", 17 | "v.layout": "layout", 18 | "":{"v":0} 19 | } 20 | }} -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/protwords.txt: -------------------------------------------------------------------------------- 1 | # The ASF licenses this file to You under the Apache License, Version 2.0 2 | # (the "License"); you may not use this file except in compliance with 3 | # the License. You may obtain a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, 9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | # See the License for the specific language governing permissions and 11 | # limitations under the License. 12 | 13 | #----------------------------------------------------------------------- 14 | # Use a protected word file to protect against the stemmer reducing two 15 | # unrelated words to the same base word. 16 | 17 | # Some non-words that normally won't be encountered, 18 | # just to test that they won't be stemmed. 19 | dontstems 20 | zwhacky 21 | 22 | -------------------------------------------------------------------------------- /config/solr/configsets/clio/conf/stopwords.txt: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | -------------------------------------------------------------------------------- /config/spring.rb: -------------------------------------------------------------------------------- 1 | %w( 2 | .ruby-version 3 | .rbenv-vars 4 | tmp/restart.txt 5 | tmp/caching-dev.txt 6 | ).each { |path| Spring.watch(path) } 7 | -------------------------------------------------------------------------------- /db/migrate/20090611201815_create_options.rb: -------------------------------------------------------------------------------- 1 | class CreateOptions < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :options, force: true do |t| 4 | t.integer :entity_id 5 | t.string :entity_type, limit: 30 6 | t.string :association_type, limit: 30 7 | t.string :name, null: false 8 | t.text :value 9 | t.timestamps null: true 10 | end 11 | 12 | add_index :options, [:entity_type, :entity_id, :association_type, :name], name: 'entity_association_name' 13 | end 14 | 15 | def self.down 16 | drop_table :options 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /db/migrate/20101130172511_create_locations.rb: -------------------------------------------------------------------------------- 1 | class CreateLocations < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :locations do |t| 4 | t.string :name 5 | t.text :found_in 6 | t.integer :library_id 7 | t.string :category, limit: 10 8 | t.timestamps null: true 9 | end 10 | 11 | add_index :locations, :name 12 | add_index :locations, :library_id 13 | end 14 | 15 | def self.down 16 | drop_table :locations 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /db/migrate/20101213160031_create_libraries.rb: -------------------------------------------------------------------------------- 1 | class CreateLibraries < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :libraries do |t| 4 | t.string :hours_db_code, length: 30, null: false 5 | t.string :name 6 | t.text :comment 7 | t.text :url 8 | 9 | t.timestamps null: true 10 | end 11 | 12 | add_index :libraries, :hours_db_code 13 | end 14 | 15 | def self.down 16 | drop_table :libraries 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /db/migrate/20101213191638_create_library_hours.rb: -------------------------------------------------------------------------------- 1 | class CreateLibraryHours < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :library_hours do |t| 4 | t.integer :library_id, null: false 5 | t.date :date, null: false 6 | t.datetime :opens 7 | t.datetime :closes 8 | t.text :note 9 | 10 | t.timestamps null: true 11 | end 12 | 13 | add_index :library_hours, [:library_id, :date] 14 | end 15 | 16 | def self.down 17 | drop_table :library_hours 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /db/migrate/20110512152511_create_searches.rb: -------------------------------------------------------------------------------- 1 | class CreateSearches < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :searches do |t| 4 | t.text :query_params 5 | t.integer :user_id 6 | 7 | t.timestamps null: true 8 | end 9 | add_index :searches, :user_id 10 | end 11 | 12 | def self.down 13 | drop_table :searches 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /db/migrate/20110512152512_create_bookmarks.rb: -------------------------------------------------------------------------------- 1 | class CreateBookmarks < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :bookmarks do |t| 4 | t.integer :user_id, null: false 5 | t.text :url 6 | t.string :document_id 7 | t.string :title 8 | t.text :notes 9 | t.timestamps null: true 10 | end 11 | end 12 | 13 | def self.down 14 | drop_table :bookmarks 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20110512152513_remove_editable_fields_from_bookmarks.rb: -------------------------------------------------------------------------------- 1 | class RemoveEditableFieldsFromBookmarks < ActiveRecord::Migration[5.1] 2 | def self.up 3 | remove_column :bookmarks, :notes 4 | remove_column :bookmarks, :url 5 | end 6 | 7 | def self.down 8 | add_column :bookmarks, :notes, :text 9 | add_column :bookmarks, :url, :string 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20110512152514_add_user_types_to_bookmarks_searches.rb: -------------------------------------------------------------------------------- 1 | class AddUserTypesToBookmarksSearches < ActiveRecord::Migration[5.1] 2 | def self.up 3 | add_column :searches, :user_type, :string 4 | add_column :bookmarks, :user_type, :string 5 | end 6 | 7 | def self.down 8 | remove_column :searches, :user_type, :string 9 | remove_column :bookmarks, :user_type, :string 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20120131170432_add_sessions_table.rb: -------------------------------------------------------------------------------- 1 | class AddSessionsTable < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :sessions do |t| 4 | t.string :session_id, null: false 5 | t.text :data 6 | t.timestamps null: true 7 | end 8 | 9 | add_index :sessions, :session_id 10 | add_index :sessions, :updated_at 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20120713135411_create_users.rb: -------------------------------------------------------------------------------- 1 | class CreateUsers < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :users do |t| 4 | t.string :first_name, limit: 40 5 | t.string :last_name, limit: 40 6 | t.string :login, limit: 10 7 | t.timestamps null: true 8 | end 9 | 10 | add_index :users, :login 11 | end 12 | 13 | def self.down 14 | drop_table :users 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20120718165239_add_password_salt.rb: -------------------------------------------------------------------------------- 1 | class AddPasswordSalt < ActiveRecord::Migration[5.1] 2 | def change 3 | add_column :users, :password_salt, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20121113211955_create_item_alerts.rb: -------------------------------------------------------------------------------- 1 | class CreateItemAlerts < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :item_alerts do |t| 4 | t.string :source, null: false, limit: 20 5 | t.string :item_key, null: false, limit: 32 6 | t.string :alert_type, null: false 7 | t.integer :author_id 8 | t.datetime :start_date 9 | t.datetime :end_date 10 | t.text :message 11 | 12 | t.timestamps null: true 13 | end 14 | 15 | add_index :item_alerts, [:source, :item_key] 16 | add_index :item_alerts, [:start_date, :end_date] 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /db/migrate/20130614173623_create_saved_lists.rb: -------------------------------------------------------------------------------- 1 | class CreateSavedLists < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :saved_lists do |t| 4 | t.string :owner, null: false, limit: 20 5 | t.string :name, null: false, limit: 200 6 | t.string :slug, null: false, limit: 200 7 | t.string :description, default: '' 8 | t.string :sort_by 9 | t.string :permissions, default: 'private' 10 | 11 | t.timestamps null: true 12 | end 13 | 14 | add_index :saved_lists, [:owner, :slug], unique: true, name: 'savedlist_url' 15 | add_index :saved_lists, [:owner, :name], unique: true, name: 'savedlist_name' 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /db/migrate/20130614173638_create_saved_list_items.rb: -------------------------------------------------------------------------------- 1 | class CreateSavedListItems < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :saved_list_items do |t| 4 | t.integer :saved_list_id 5 | t.string :item_source 6 | t.text :item_key 7 | t.integer :sort_order 8 | 9 | t.timestamps null: true 10 | end 11 | 12 | # add_index :saved_list_items, [:saved_list_id, :item_key], unique: true 13 | 14 | add_index :saved_list_items, [:saved_list_id, :item_key], unique: true, length: { item_key: 200 } 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20130702170157_create_versions.rb: -------------------------------------------------------------------------------- 1 | class CreateVersions < ActiveRecord::Migration[5.1] 2 | def self.up 3 | create_table :versions do |t| 4 | t.string :item_type, null: false 5 | t.integer :item_id, null: false 6 | t.string :event, null: false 7 | t.string :whodunnit 8 | t.text :object 9 | t.datetime :created_at 10 | end 11 | add_index :versions, [:item_type, :item_id] 12 | end 13 | 14 | def self.down 15 | remove_index :versions, [:item_type, :item_id] 16 | drop_table :versions 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /db/migrate/20150218220036_add_location_code_to_locations.rb: -------------------------------------------------------------------------------- 1 | class AddLocationCodeToLocations < ActiveRecord::Migration[5.1] 2 | def change 3 | add_column :locations, :location_code, :text 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20150304151755_change_length_of_category_to_12.rb: -------------------------------------------------------------------------------- 1 | class ChangeLengthOfCategoryTo12 < ActiveRecord::Migration[5.1] 2 | def up 3 | change_column :locations, :category, :string, limit: 12 4 | end 5 | 6 | def down 7 | change_column :locations, :category, :string, limit: 10 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20150604161023_add_polymorphic_type_to_bookmarks.blacklight.rb: -------------------------------------------------------------------------------- 1 | # This migration comes from blacklight (originally 20140320000000) 2 | # -*- encoding : utf-8 -*- 3 | class AddPolymorphicTypeToBookmarks < ActiveRecord::Migration[5.1] 4 | def change 5 | add_column(:bookmarks, :document_type, :string) 6 | 7 | add_index :bookmarks, :user_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20160930143849_create_preferences.rb: -------------------------------------------------------------------------------- 1 | class CreatePreferences < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :preferences do |t| 4 | t.string :login, null: false 5 | t.text :settings, null: false 6 | 7 | t.timestamps null: false 8 | end 9 | 10 | add_index :preferences, :login, unique: true 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20180101010101_library_code.rb: -------------------------------------------------------------------------------- 1 | class LibraryCode < ActiveRecord::Migration[5.1] 2 | def change 3 | add_column(:locations, :library_code, :string) 4 | 5 | add_index :locations, :library_code 6 | 7 | add_column(:library_hours, :library_code, :string) 8 | 9 | add_index :library_hours, :library_code 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20180401010101_best_bets.rb: -------------------------------------------------------------------------------- 1 | class BestBets < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :best_bets do |t| 4 | t.string :title, null: false 5 | t.string :url, null: false 6 | t.string :description, null: false 7 | 8 | t.text :keywords, null: true 9 | 10 | t.timestamps null: false 11 | end 12 | 13 | add_index :best_bets, :title, unique: true 14 | 15 | if ActiveRecord::Base.connection.adapter_name =~ /mysql/i 16 | add_index :best_bets, [:title, :url, :description, :keywords], name: 'fulltext', type: :fulltext 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /db/migrate/20181001010101_logs.rb: -------------------------------------------------------------------------------- 1 | class Logs < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :logs do |t| 4 | # request data 5 | t.text :user_agent, null: true 6 | t.text :referrer, null: true 7 | t.string :remote_ip, null: true 8 | 9 | # log data 10 | t.string :set, null: false 11 | t.text :logdata, null: true 12 | 13 | t.timestamps null: false 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20181101010101_affils.rb: -------------------------------------------------------------------------------- 1 | # Changes to enable omniauth-cas-saml based affils 2 | class Affils < ActiveRecord::Migration[5.1] 3 | 4 | 5 | # def change 6 | # 7 | # rename_column :users, :login, :uid 8 | # 9 | # add_column :users, :provider, :string, null: false, default: 'saml' 10 | # 11 | # add_column :users, :affils, :text 12 | # 13 | # end 14 | 15 | def self.up 16 | add_column :users, :provider, :string, null: false, default: 'saml' 17 | add_column :users, :affils, :text 18 | add_column :users, :uid, :string 19 | 20 | User.update_all("uid=login") 21 | 22 | add_index :users, :uid 23 | end 24 | 25 | def self.down 26 | remove_column :users, :provider, :string 27 | remove_column :users, :affils, :text 28 | remove_column :users, :uid, :string 29 | end 30 | 31 | end 32 | 33 | -------------------------------------------------------------------------------- /db/migrate/20190601010101_add_tags_to_best_bets.rb: -------------------------------------------------------------------------------- 1 | class AddTagsToBestBets < ActiveRecord::Migration[5.1] 2 | 3 | def up 4 | add_column :best_bets, :tags, :text 5 | # When migration runs, all records are CLIO Best Bets 6 | BestBet.update_all(tags: 'BestBets') 7 | end 8 | 9 | def down 10 | remove_column :best_bets, :tags 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20210101010101_create_local_subjects.rb: -------------------------------------------------------------------------------- 1 | class CreateLocalSubjects < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :local_subjects do |t| 4 | # Id of Voyager Authority record. 5 | # String instead of Int, because I don't trust source data 6 | t.string :authority_id, null: false 7 | t.string :authority_field, null: true 8 | t.string :authority_subfield, null: true 9 | 10 | t.string :loc_subject, null: false 11 | t.string :nnc_subject, null: false 12 | 13 | 14 | t.timestamps null: false 15 | end 16 | 17 | add_index :local_subjects, :loc_subject, unique: true 18 | 19 | end 20 | end -------------------------------------------------------------------------------- /db/migrate/20210201010101_create_simplye.rb: -------------------------------------------------------------------------------- 1 | class CreateSimplye < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :simplye_links do |t| 4 | # Id of Voyager Authority record. 5 | # String instead of Int, because I don't trust source data 6 | t.string :bib_id, null: false 7 | t.string :simplye_url, null: true 8 | 9 | t.timestamps null: false 10 | end 11 | 12 | add_index :simplye_links, :bib_id, unique: true 13 | 14 | end 15 | end -------------------------------------------------------------------------------- /doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | Use this README file to introduce your application and point to useful places in the API for learning more. 2 | Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries. 3 | -------------------------------------------------------------------------------- /lib/response_timer.rb: -------------------------------------------------------------------------------- 1 | 2 | # http://asciicasts.com/episodes/151-rack-middleware 3 | 4 | class ResponseTimer 5 | def initialize(app, message = 'Response Time') 6 | @app = app 7 | @message = message 8 | end 9 | 10 | def call(env) 11 | @start = Time.now 12 | @status, @headers, @response = @app.call(env) 13 | @stop = Time.now 14 | @elapsed = (@stop - @start) * 1000 15 | [@status, @headers, self] 16 | end 17 | 18 | def each(&block) 19 | if @headers && @headers['Content-Type'] && @headers['Content-Type'].include?('text/html') 20 | yield("\n") 21 | end 22 | 23 | @response.each(&block) 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /lib/tasks/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/lib/tasks/.gitkeep -------------------------------------------------------------------------------- /lib/tasks/hathi.rake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/lib/tasks/hathi.rake -------------------------------------------------------------------------------- /lib/tasks/load_locations.rake: -------------------------------------------------------------------------------- 1 | namespace :locations do 2 | desc('Starting rake task to load locations from config/locations_fixture.yml') 3 | 4 | task load: :environment do 5 | locations = Location.clear_and_load_fixtures! 6 | Rails.logger.info(locations.count.to_s + ' locations loaded.') 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/tasks/sessions.rake: -------------------------------------------------------------------------------- 1 | 2 | # Rails sessions table cleanup, remove recent (but not all) records 3 | # (for when session_store is set to :active_record_store) 4 | # http://www.softr.li/blog/2012/07/05/setup-automatic-clearing-of-your-rails-sessions 5 | 6 | namespace :sessions do 7 | desc 'Clear expired sessions (more than N days old)' 8 | task :cleanup, [:days_old] => :environment do |_t, args| 9 | # args.with_defaults(days_old: 7) 10 | days_old = (args[:days_old] || 7).to_i 11 | raise 'input arg :days_old must be > 0' if days_old < 1 12 | sql = "DELETE FROM sessions WHERE (updated_at < '#{Date.today - days_old.to_i.days}')" 13 | ActiveRecord::Base.connection.execute(sql) 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/translation_maps/database_discipline_map.properties: -------------------------------------------------------------------------------- 1 | 1219 = Arts, Architecture & Applied Arts 2 | 1044 = Business & Economics 3 | 1006 = Engineering & Applied Sciences 4 | 1299 = General 5 | 1028 = Health Sciences 6 | 1183 = History & Archaeology 7 | 1055 = Journalism & Communications 8 | 1186 = Languages & Literatures 9 | 1056 = Law, Politics & Government 10 | 1231 = Music, Dance, Drama & Film 11 | 1001 = Philosophy & Religion 12 | 1535 = Sciences 13 | 1089 = Social Sciences 14 | -------------------------------------------------------------------------------- /lib/translation_maps/database_resource_type_map.properties: -------------------------------------------------------------------------------- 1 | ar = Archival Catalogs 2 | bc = E-Book Collections 3 | bi = Biographies 4 | ct = Library Catalogs 5 | di = Dictionaries 6 | dr = Directories 7 | ds = Dissertations 8 | en = Encyclopedias 9 | ft = Full-text Resources 10 | hb = Handbooks 11 | hi = Historical 12 | ia = Indexing & Abstracting Services 13 | im = Image Collections 14 | ja = Articles (Journals) 15 | ma = Map & Atlas Collections 16 | mi = Videos & Webcasts 17 | mu = Music Scores 18 | np = Newspaper Collections 19 | nu = Statistical Resources 20 | nw = Articles (Newspapers) 21 | sg = Subject Guides 22 | sr = Sound Collections 23 | tc = Text Collections 24 | wb = Websites 25 | -------------------------------------------------------------------------------- /public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 17 | 18 | 19 | 20 | 21 |
22 |

The page you were looking for doesn't exist.

23 |

You may have mistyped the address or the page may have moved.

24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The change you wanted was rejected (422) 5 | 17 | 18 | 19 | 20 | 21 |
22 |

The change you wanted was rejected.

23 |

Maybe you tried to change something you didn't have access to.

24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /public/apple-touch-icon-114x114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-114x114-precomposed.png -------------------------------------------------------------------------------- /public/apple-touch-icon-120x120-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-120x120-precomposed.png -------------------------------------------------------------------------------- /public/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /public/apple-touch-icon-144x144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-144x144-precomposed.png -------------------------------------------------------------------------------- /public/apple-touch-icon-72x72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-72x72-precomposed.png -------------------------------------------------------------------------------- /public/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/colors.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/colors.css -------------------------------------------------------------------------------- /public/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World

4 | 5 | 6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/favicon.ico -------------------------------------------------------------------------------- /public/googleb46478bf96590e15.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googleb46478bf96590e15.html -------------------------------------------------------------------------------- /public/img/cul-mob-topbanner_crown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/img/cul-mob-topbanner_crown.png -------------------------------------------------------------------------------- /public/r.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /public/static-icons/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/available.png -------------------------------------------------------------------------------- /public/static-icons/crown-bts-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/crown-bts-24x24.png -------------------------------------------------------------------------------- /public/static-icons/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/default.png -------------------------------------------------------------------------------- /public/static-icons/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/doc.png -------------------------------------------------------------------------------- /public/static-icons/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/mp3.png -------------------------------------------------------------------------------- /public/static-icons/mp4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/mp4.png -------------------------------------------------------------------------------- /public/static-icons/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/none.png -------------------------------------------------------------------------------- /public/static-icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/pdf.png -------------------------------------------------------------------------------- /public/static-icons/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/ppt.png -------------------------------------------------------------------------------- /public/static-icons/some_available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/some_available.png -------------------------------------------------------------------------------- /public/static-icons/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/unavailable.png -------------------------------------------------------------------------------- /public/static-icons/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/xls.png -------------------------------------------------------------------------------- /public/static-icons/xlsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/static-icons/xlsx.png -------------------------------------------------------------------------------- /public/stylesheets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/.gitkeep -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/border.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/controls.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderBottomCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderBottomCenter.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderBottomLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderBottomLeft.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderBottomRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderBottomRight.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderMiddleLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderMiddleLeft.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderMiddleRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderMiddleRight.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderTopCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderTopCenter.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderTopLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderTopLeft.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/internet_explorer/borderTopRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/internet_explorer/borderTopRight.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/loading.gif -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/loading_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/loading_background.png -------------------------------------------------------------------------------- /public/stylesheets/colorbox/images/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cul/clio-spectrum/a6d858b729b2f901fd1a4a35cae93f1f02488706/public/stylesheets/colorbox/images/overlay.png -------------------------------------------------------------------------------- /spec/controllers/catalog_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe CatalogController do 4 | describe "GET 'endnote.endnote'" do 5 | it 'should work for single ids' do 6 | # {"id"=>["323033", "5417238"], "controller"=>"catalog", "action"=>"endnote", "format"=>"endnote", "adv"=>{}} 7 | get 'endnote', format: 'endnote', params: { id: '100' } 8 | expect(response).to be_successful 9 | end 10 | 11 | it 'should work for multiple ids' do 12 | # {"id"=>["323033", "5417238"], "controller"=>"catalog", "action"=>"endnote", "format"=>"endnote", "adv"=>{}} 13 | get 'endnote', format: 'endnote', params: { id: %w(123 1234) } 14 | expect(response).to be_successful 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/factories/item_alert.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :item_alert do 3 | item_key { '123' } 4 | alert_type { 'alert' } 5 | message { 'twas brillig' } 6 | author_id { 1 } 7 | source { 'catalog' } 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/factories/library_web_apis.rb: -------------------------------------------------------------------------------- 1 | # Read about factories at http://github.com/thoughtbot/factory_girl 2 | 3 | FactoryBot.define do 4 | factory :api do 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /spec/factories/library_web_documents.rb: -------------------------------------------------------------------------------- 1 | # Read about factories at http://github.com/thoughtbot/factory_girl 2 | 3 | FactoryBot.define do 4 | factory :document do 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /spec/factories/user.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :user do 3 | uid { 'example' } 4 | email { |u| "#{u.uid}@example.com" } 5 | password { 'secret' } 6 | # password_confirmation { |u| u.password } 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/features/academic_commons/ac_dissertations_spec.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'spec_helper' 3 | 4 | describe 'Academic Commons Dissertations search' do 5 | 6 | it 'should return fewer results than AC search' do 7 | 8 | visit ac_index_path(q: 'test') 9 | ac_search_total_results = 10 | ac_total_items = all('.current_item_info').first['data-total-items'].to_i 11 | 12 | visit ac_index_path(q: 'test', datasource: 'ac_dissertations') 13 | ac_dissertations_total_items = all('.current_item_info').first['data-total-items'].to_i 14 | 15 | # print "ac_total_items=#{ac_total_items}" 16 | # print "ac_dissertations_total_items=#{ac_dissertations_total_items}" 17 | 18 | expect(ac_dissertations_total_items).to be < ac_total_items 19 | 20 | end 21 | 22 | end 23 | 24 | 25 | -------------------------------------------------------------------------------- /spec/features/invalid_urls_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Invalid byte sequences should be caught' do 4 | it 'in CGI params' do 5 | # Send bytes that are NOT valid in UTF-8... 6 | visit '/catalog?q=foo%E2%EF%BF%BD%A6' 7 | 8 | # We SHOULD have added middleware to deal with this, 9 | # which should land us on a valid search-results page. 10 | expect(page).to have_text('You searched for') 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /spec/features/menus_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Top nav menus' do 4 | # NEXT-986 - Redirect CLIO Help menu link 5 | it 'should link CLIO Help to blog guides page' do 6 | visit root_path 7 | within('#topnavbar') do 8 | within('.dropdown.menu', text: 'Help') do 9 | click_link 'Feedback / Help' 10 | expect(find('.dropdown-menu')).to have_link('CLIO Help', href: 'https://blogs.cul.columbia.edu/clio/guides/') 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /spec/features/search_boxes_cross_fill_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'The home page' do 4 | # This behavior was eliminated when we switched to static 5 | # links between datasources. "q" values are caried between 6 | # data-sources, but not text that's been entered in the gui 7 | # and not-yet used to search. 8 | 9 | # it "will keep the text in a box across different sources on the landing pages" => true do 10 | # end 11 | 12 | it 'will switch the visible search box when a datasource is clicked upon' do 13 | visit catalog_index_path 14 | 15 | expect(find('#catalog_q')).to be_visible 16 | expect(page).to have_no_selector('#articles_q') 17 | 18 | within('li.datasource_link[source=articles]') do 19 | click_link('Articles') 20 | end 21 | 22 | expect(page).to have_no_selector('#catalog_q') 23 | expect(find('#articles_q')).to be_visible 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /spec/features/voyager_api/README.txt: -------------------------------------------------------------------------------- 1 | 2 | The voyager_api project has a number of unit tests verifying 3 | the return of correct messages for a variety of holdings statuses. 4 | 5 | The specs in this directory of the clio_spectrum project are based 6 | on the voyager_api tests, by verifying that front-end queries 7 | for given bibs pass-thru appropriate messages all the way to 8 | the web front-end of the app. 9 | 10 | The specs here are only a very partial coverage of the voyager_api tests. 11 | Most of the voyager_api tests use mock records. Specs here are only 12 | written when there is a real Voyager record to test against. 13 | 14 | Specs here and are updated manually, and will not necessarily be in 15 | sync with voyager_api. 16 | 17 | ALL tests herein are fragile - they may break if the item cataloging 18 | or holdings status are modified. 19 | 20 | -------------------------------------------------------------------------------- /spec/features/voyager_api/test_collection_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'collection tests' do 4 | it 'test adjust services' do 5 | # Butler suppress doc delivery 6 | visit solr_document_path('9702637') 7 | within ('div#clio_holdings') do 8 | expect(page).to_not have_text('Scan & Deliver') 9 | end 10 | 11 | # suppress bd and ill, copy available 12 | visit solr_document_path('9420109') 13 | within ('div#clio_holdings') do 14 | expect(page).to_not have_text('Borrow Direct') 15 | expect(page).to_not have_text('ILL') 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/fixtures/README.txt: -------------------------------------------------------------------------------- 1 | 2 | # Creating this empty fixtures directory, on the advice of: 3 | # 4 | # http://degenportnoy.blogspot.com/2010/01/victory-factorygirl-and-database.html 5 | # -------------------------------------------------------------------------------- /spec/helpers/helper_exceptions_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe DatasourcesHelper do 4 | it 'should throw be silent on unknown datasource' do 5 | expect do 6 | datasource_landing_page_path('NoSuchDatasource', 'MySearchQuery') 7 | end.not_to raise_error 8 | end 9 | end 10 | 11 | describe DisplayHelper do 12 | it 'should throw exception when no partial to render' do 13 | expect do 14 | render_first_available_partial(%w(no_such_partial another_one), {}) 15 | end.to raise_error(RuntimeError) 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/models/search_engines/google_appliance/basic_tests_spec.rb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require 'spec_helper' 3 | 4 | describe 'Spectrum::SearchEngines::GoogleCustomSearch' do 5 | describe 'Libraries Website search for "books"' do 6 | before(:each) do 7 | @search_engine = Spectrum::SearchEngines::GoogleCustomSearch.new('q' => 'books') 8 | end 9 | 10 | it 'should get many items, successfully' do 11 | expect(@search_engine.total_items.to_i).to be > 500 12 | expect(@search_engine.successful?).to be true 13 | end 14 | 15 | it 'should have "next" but no "prev"' do 16 | expect(@search_engine.previous_page?).to be false 17 | expect(@search_engine.next_page?).to be true 18 | end 19 | end 20 | 21 | describe 'Libraries Website error handling' do 22 | it 'should raise an error if not query specified' do 23 | expect do 24 | Spectrum::SearchEngines::GoogleCustomSearch.new 25 | end.to raise_error(RuntimeError) 26 | end 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /spec/models/test_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'basic' do 4 | it 'passes basic math' do 5 | assert_equal 2 + 2, 4 6 | expect(2 + 2).to eq 4 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/relevancy/misc_spec.rb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | 3 | require 'spec_helper' 4 | 5 | # NEXT-971 - Some WorldCat links to CLIO broken / OCLC-defined 079a not being indexed 6 | describe 'WorldCat link support', :skip_travis do 7 | it "q of 'ocn213772249' should find Tsukuba Daigaku Tetsugaku Shisōgakukei ronshū" do 8 | resp = solr_resp_ids_titles_from_query 'ocn213772249' 9 | expect(resp.size).to be == 1 10 | 11 | # there aren't Rails 4 compatible ways to get at what I need 12 | # without this very specific digging into the internal structure. 13 | first = resp['response']['docs'].first 14 | 15 | # This fails: 16 | # 17 | # setup UTF-8 Decomposed form string constants for our various targets 18 | # (copy & paste gives us the pre-composed, but raw Solr results are decomposed) 19 | decomposed = 'Tsukuba Daigaku Tetsugaku Shisōgakukei ronshū'.mb_chars.normalize(:d) 20 | expect(first['title_display'].first).to match /^#{decomposed}$/ 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /spec/relevancy/sorting_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Solr sort order', :skip_travis do 4 | # NEXT-962 - Would it be possible for CLIO catalog A-Z to sort by word 5 | it "should alpha-sort 'asia' before 'asian'" do 6 | # resp = solr_resp_ids_from_query('asia* 965hrportal') 7 | resp = solr_resp_doc_ids_only('q' => 'asia* 965hrportal', 'sort' => 'title_sort asc') 8 | 9 | # The bib for "Asia Pacific Forum" should be before 10 | # any of the "Asian ..." records 11 | rank14577634 = rank(resp, 14577634) 12 | expect(rank(resp, 7886427)).to be > rank14577634 13 | expect(rank(resp, 6488401)).to be > rank14577634 14 | expect(rank(resp, 7038747)).to be > rank14577634 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /spec/relevancy/test_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Testing rsolr-rspec support', :skip_travis do 4 | it "q of 'Buddhism' should get many, many results" do 5 | resp = solr_resp_doc_ids_only('q' => 'Buddhism') 6 | 7 | expect(resp.size).to be > 20000 8 | expect(resp.size).to be < 50000 9 | end 10 | 11 | # utility, for spitting out the bib keys that match a given query 12 | # it "BIB LIST", focus: true do 13 | # resp = solr_resp_doc_ids_only('q' => 'composers forum', 'search_field' => 'title', rows: 100) 14 | # puts resp.inspect 15 | # end 16 | end 17 | -------------------------------------------------------------------------------- /spec/support/feature_helpers.rb: -------------------------------------------------------------------------------- 1 | # 2 | # # http://www.clevertakes.com/blog/2013/01/30/how-do-i-add-devise-login-method-to-my-rspec-feature-test/ 3 | # include Warden::Test::Helpers 4 | # 5 | # module FeatureHelpers 6 | # 7 | # def login(user) 8 | # login_as user, scope: :user 9 | # user 10 | # end 11 | # 12 | # end 13 | # 14 | # RSpec.configure do |config| 15 | # config.include FeatureHelpers, type: :feature 16 | # end 17 | -------------------------------------------------------------------------------- /spec/support/mailer_macros.rb: -------------------------------------------------------------------------------- 1 | module MailerMacros 2 | def last_email 3 | ActionMailer::Base.deliveries.last 4 | end 5 | 6 | def reset_email 7 | ActionMailer::Base.deliveries = [] 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/support/matchers.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'rspec/expectations' 3 | 4 | RSpec::Matchers.define :contain_in_fields do |target, *field_list| 5 | match do |doc| 6 | targets = Array.wrap(target).map { |t| Regexp.new(t.gsub(/ +/, '.*')) } 7 | field_list.any? { |field_name| targets.any? { |t| t.match(doc.fetch(field_name, nil).first) } } 8 | end 9 | 10 | failure_message do |doc| 11 | doc_data = field_list.map do |field_name| 12 | "#{field_name}=#{doc.fetch(field_name, nil).first}" 13 | end.join(', ') 14 | "expected that #{target} would be contained in doc fields (#{doc_data})" 15 | end 16 | end 17 | --------------------------------------------------------------------------------