CINXE.COM

<!DOCTYPE html> <html id="ng-app" ng-strict-di lang="en" ng-controller="ApplicationCtrl"> <head> <!-- Google Tag Manager --> <!-- End Google Tag Manager --> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <!-- Tags for Google-bot against indexing, following links on page, using a cache page and showing the snippet--> <meta name="robots" content="noindex, nofollow, noarchive, nosnippet"> <title ng-bind="windowTitle">Summon 2.0</title> <!-- Standard favicon --> <link rel="shortcut icon" type="image/icon" href="//assets-cdn.summon.serialssolutions.com/538f24eca61f866b890023a1"> <!-- Apple device icons --> <link rel="apple-touch-icon" sizes="32x32" href="//assets-cdn.summon.serialssolutions.com/5b2a38ad8465f217b600003f"> <link rel="apple-touch-icon" sizes="57x57" href="//assets-cdn.summon.serialssolutions.com/5b61d1594cc0506e4b0001e7"> <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"> <!-- Chrome for Android icon --> <link rel="icon" type="image/png" href="/android-chrome-196x196.png" sizes="196x196"> <!-- For Android home screens --> <link rel="manifest" href="/manifest.json"> <link ng-href="{{rssLink()}}" ng-if="view == 'search' && enableRssLink() && viewState.currentView != 'detailsPage'" rel="alternate" type="application/rss+xml" title="RSS" /> <link rel="stylesheet" href="//static-cdn.summon.serialssolutions.com/assets/application-58a7c24b77f6d4433ccacd736b70e5e2.css"> <link rel="stylesheet" href="//static-cdn.summon.serialssolutions.com/assets/uxf-icons-16f99c5493f80bd66a9149a38f0f98c5.css"> <link rel="stylesheet" href="//static-cdn.summon.serialssolutions.com/assets/postload-styles-c45b15f11fffebf12f42485ec6eef24f.css"> <style type="text/css"> :root { --primary-link-color: #2659ab; --primary-link-visited-color: #004792; --primary-link-hover-color: #004792; --secondary-link-color: #333333; --secondary-link-visited-color: #333333; --secondary-link-hover-color: #333333; --header-icon-color: #017fba; --header-background-color: #FFFFFF ; --auth-banner-link-color: #fafbfb; --auth-banner-background-color: #017fba; --pagination-background-color: #017fba; --quick-look-button-color: #325676; --quick-look-button-text-color: #FFF; --quick-look-button-hover-color: #182a39; --header-link-color: #2659ab; --header-link-visited-color: #172e5a; --publi-date-btn-selected-and-custom-date-svg-color: #00478e; --primary-btn-on-white-background-color: #325676; --primary-btn-text-on-white-background-color: #fff; --primary-link-color: #2659ab; } .customPrimaryLink,.customPrimaryLinkContainer a, .customPrimaryLinkContainer button:not(.request){ color:#2659ab!important } .customPrimaryLink:visited,.customPrimaryLinkContainer a:visited,.customPrimaryLinkContainer button:visited:not(.request){ color:#004792!important } .customPrimaryLink:hover,.customPrimaryLink:active,.customPrimaryLinkContainer a:hover,.customPrimaryLinkContainer a:active,.customPrimaryLinkContainer button:hover:not(.request),.customPrimaryLinkContainer button:active:not(.request){ color:#004792!important } .customPrimaryLink svg{ fill:#2659ab!important } .customPrimaryLink:visited svg{ fill:#004792!important } .customPrimaryLink:active svg,.customPrimaryLink:hover svg{ fill:#004792!important } .browzine a{ color:#2659ab!important } .request { background-color: #2659ab !important; } .request:hover, .request:active{ background-color: #004792 !important; } .customSecondaryLink{ color:#333333!important } .customSecondaryLink:visited{ color:#333333!important } .customSecondaryLink:hover,.customSecondaryLink:active{ color:#333333!important } .record-actions .actionBtn{ color:#2659ab!important } .record-actions .actionBtn svg{ fill:#2659ab!important } .customColorsToggleButton a{ color:#2659ab!important } .customColorsToggleButton a:visited{ color:#004792!important } .customColorsToggleButton a:hover,.customColorsToggleButton a:active{ color:#004792!important } .customColorsToggleButton::after{ border-top-color:#2659ab!important } .customColorsToggleButton.active::after{ border-bottom-color:#2659ab!important } .recommenderLink a{ color:#2659ab!important } .recommenderLink:after{ border-left-color:#2659ab!important } .recommenderLink.active a{ color:white!important } .recommenderLink.active:after{ border-left-color:white!important } .permalinkContainer .permalinkColor{ color:#333333!important } .permalinkContainer .permalinkColor:hover,.permalinkContainer .permalinkColor:active{ color:#333333!important } .clearRefinementsContainer{ background-color:#182e42!important; } .summonCheckboxContainer .checkmark,.summonCheckboxContainer input:focus:not(:disabled)~.checkmark,.summonCheckboxContainer input:hover:not(:disabled)~.checkmark{ border:solid 1px #2859ab!important } .summonCheckboxContainer input:checked:not(:disabled)~.checkmark{ background-color:#2859ab!important } .Filter:focus:not(.disabledFacet),.Filter:focus-within:not(.disabledFacet),.Filter:hover:not(.disabledFacet){ background-color:#e7ecf6!important } .badges .bg-applied{ background-color:#2859ab!important } .badges .bg-negated{ background-color:#c22e0e!important } .clearRefinementsContainer .clearRefinementsContainerHeader .summonBtn{ background-color:#017fba!important } .customAuthBanner{ background-color:#017fba!important } .customAuthBanner a,.customAuthBanner .btn-link{ color:#fafbfb!important } .customAuthBanner a:visited,.customAuthBanner .btn-link:visited{ color:#fafbfb!important } .customAuthBanner a:hover,.customAuthBanner a:active,.customAuthBanner .btn-link:hover,.customAuthBanner .btn-link:active{ color:#fafbfb!important } .clearRefinementsContainer .clearRefinementsContainerHeader{ color:#FFF!important } .clearRefinementsContainer .clearRefinementsContainerHeader .summonBtn span{ color:#fff!important } .clearRefinementsContainer .clearRefinementsContainerHeader .summonBtn { background-color:#325676!important } .summon-modal-header .clear-all-btn { background-color:#325676!important; color:#fff!important } .modal-footer .submit-btn { background-color:#325676!important; color:#fff!important } .backToTopBtn{ background-color:#017fba!important; } .customHeaderButtonBackground{ background-color:#017fba!important; } .customHeader{ background:#FFFFFF !important } .addBorderIfNoContrast { border:0px none transparent!important; } .advancedSearchBtns .btn-link,.siteLink,.siteLinks .customColorsSiteLink,.siteLinks div>a,.siteLinks div .btn,.siteLinks button{ color:#2659ab!important } .siteLinks div>a.help:after{ background:#2659ab!important; color:#ffffff!important } .siteLinks button b{ border-top:4px solid #2659ab } .siteLinks div>a:visited{ color:#172e5a!important } .siteLinks div>a.help:visited:after{ background:#172e5a!important; color:#ffffff!important } .advancedSearchBtns .btn-link:hover,.siteLink:hover,.siteLinks .customColorsSiteLink:hover,.siteLinks .customColorsSiteLink:active,.siteLinks div>a:hover,.siteLinks div>a:active,.siteLinks div .btn:hover,.siteLinks button:hover{ color:#004792!important } .siteLinks div>a.help:hover:after,.siteLinks div>a.help:active:after{ background:#004792!important; color:#ffffff!important } .siteLinks button:hover b{ border-top:4px solid #004792 } .date-preset-link{ border-color:#bbd6ff!important } .date-preset-link.date-selected,.date-preset-link.date-selected:hover{ background-color:#00478e!important } .custom-date-selector i,.custom-date-selector svg{ color:#00478e!important } .custom-date-selector.open{ background-color:#e7ecf6!important; border-bottom-color:#00478e!important } .custom-date-selector.open:hover{ border-color:#e7ecf6 #e7ecf6 #00478e #e7ecf6!important } .publication-date-selector .custom-date-selector:hover,.publication-date-selector .date-preset-link:hover{ background-color:#e7ecf6!important; border-color:#00478e!important } body .refinePane{ background:#FFF !important; } .uxf-icon.navHamburger,.uxf-icon.navChatIcon, .uxf-icon.navSave,.uxf-icon.navLibraryCard, .uxf-icon.navLanguageSwitcher, .languageMenuButton .languageText, .logged-in { color:#017fba!important } svg.navSave { fill: #017fba !important; } .headerButton:hover { border-bottom-color: #017fba !important; } .search .siteHeader .btn-link, .search .siteHeader .toggleSavedSearches{ color:#017fba!important; } .search .siteHeader .btn-link:after{ border-top-color:#017fba!important; } .search .siteHeader .btn-link.active:after{ border-bottom-color:#FFFFFF!important; } .search .header-buttons .summonBtn { color:#017fba; border-color: #017fba; } .summon-modal-header, .floatingPanelHeader, .floatingPanelHeader .btn-link, .floatingPanelHeader .btn-link:focus { background-color:#182e42!important; color: #FFF!important; } </style> <script src="//static-cdn.summon.serialssolutions.com/assets/runtime.9ad6748cdd3001b8303a.js?1730373782"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/jquery.68c452398cb9265635ed.js?1730373782"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/angular.71425f451ae4745d8834.js?1730373782"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/angularPlugins.e8b2168adcc9c60ef03b.js?1730373782"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/plugins.83b7175cd1479dce7fe0.js?1730373782"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/application.d99cdbc0f5ba1fcc9cde.js?1730373782"></script> <script src="/custom_data" ></script> <script src="//static-cdn.summon.serialssolutions.com/assets/templates-264ae74d88ece0fdbbe18a0bca16feae.js"></script> <script src='/localization/en-US' charset="UTF-8"></script> <script src="//static-cdn.summon.serialssolutions.com/assets/postLoadPlugins.5be16b58e3fc6a819f24.js?1730373782"></script> <script async defer src="https://apis.google.com/js/client.js" ></script> <script async defer src="https://www.recaptcha.net/recaptcha/api.js?render=explicit" ></script> <script src='//d1bxh8uas1mnw7.cloudfront.net/assets/embed.js' defer> </script> <script async > var __refererURL = ""; (function runLoader(self){ var regex = /.*(?=\/assets\/.*)/, appBooted = false, widgetBoxJS = '//static-cdn.summon.serialssolutions.com/assets/boxWidget.ec06af385e4246fcfb5b.js?1730373782', widgetSearchJS = '//static-cdn.summon.serialssolutions.com/assets/searchWidget.7d234a6da811300dfda3.js?1730373782' widgetCarouselJS = '//static-cdn.summon.serialssolutions.com/assets/carouselWidget.1d16f8f1749978110fa4.js?1730373782' widgetCarouselComponentJS = '//static-cdn.summon.serialssolutions.com/assets/carouselDiscoveryWidget.ad7436f8f17f0b073069.js?1730373782' ; function appBootstrap(){ var head = angular.element('head'); if(!appBooted){ angular.bootstrap(document, ['summonApp']); appBooted = true; } } function loadScripts(){ const bootstrapAppWhenDocReady = function () { angular.element(document).ready(appBootstrap); } customJSTag = document.createElement('script'); customJSTag.setAttribute('src', 'https://dl.dropboxusercontent.com/s/tqf5ghhyo60gu6d/ucdublin_summon.js' ) // custom js may include angularjs directives so wait to bootstrap app until custom js has been loaded customJSTag.onload = bootstrapAppWhenDocReady; // if custom js fails we will bootstrap the app anyway customJSTag.onerror = bootstrapAppWhenDocReady; document.getElementsByTagName('head')[0].appendChild(customJSTag); } function loadCssFromFalback() { var applicationCss = ['//static-cdn.summon.serialssolutions.com/assets/application-58a7c24b77f6d4433ccacd736b70e5e2.css', '//static-cdn.summon.serialssolutions.com/assets/uxf-icons-16f99c5493f80bd66a9149a38f0f98c5.css', '//static-cdn.summon.serialssolutions.com/assets/postload-styles-c45b15f11fffebf12f42485ec6eef24f.css'] ; // adds tags for all dependent css files applicationCss.forEach(function(cssPath) { var stylesheetTag = document.createElement('link'); stylesheetTag.setAttribute('rel', 'stylesheet'); stylesheetTag.setAttribute('href', cssPath.replace(regex, '')); document.getElementsByTagName('head')[0].appendChild(stylesheetTag); }); } function loadJSFromFallback() { var applicationJs = [ '//static-cdn.summon.serialssolutions.com/assets/runtime.9ad6748cdd3001b8303a.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/angular.71425f451ae4745d8834.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/jquery.68c452398cb9265635ed.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/angularPlugins.e8b2168adcc9c60ef03b.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/plugins.83b7175cd1479dce7fe0.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/postLoadPlugins.5be16b58e3fc6a819f24.js?1730373782', '//static-cdn.summon.serialssolutions.com/assets/templates-264ae74d88ece0fdbbe18a0bca16feae.js', '//static-cdn.summon.serialssolutions.com/assets/application.d99cdbc0f5ba1fcc9cde.js?1730373782' ]; // adds tags for all dependent js files applicationJs.forEach(function(jsPath) { var jsTag = document.createElement('script'); jsTag.setAttribute('src', jsPath.replace(regex, '')); document.getElementsByTagName('head')[0].appendChild(jsTag); }); } self.searchWidgetScriptSrc = widgetSearchJS; self.boxWidgetScriptSrc = widgetBoxJS self.carouselWidgetScriptSrc = widgetCarouselJS self.carouselWidgetComponentScriptSrc = widgetCarouselComponentJS // fall back to Summon servers on CDN failure if (!window.$) { jqueryScript = '//static-cdn.summon.serialssolutions.com/assets/jquery.68c452398cb9265635ed.js?1730373782' console.error("The following javascript dependency failed to load: " + jqueryScript); console.log("- probably because the CDN is not loading. Check this domain: " + jqueryScript.replace(/(.*)\/(assets.*)/, '$1')); console.log("- retrying by loading things locally") loadCssFromFalback(); loadJSFromFallback(); setTimeout(loadScripts, 3000); // wait 3 seconds } else { loadScripts(); } })(this); </script> </head> <body dir="{{ ::textDirection }}" idle-timer layout key-events class="vpnBannerAdjust"> <div ng-cloak class="splash"> <img src="/images/spinner.gif" alt="{{ ::i18n.translations.APP_IS_LOADING }}" /> </div> <div ng-cloak role="alert" aria-live="assertive" class="offscreen" aria-label="{{i18n.translate(i18n.translations.LOADING_PAGE_NUMBER, {number:appState.params.pn})}}"> <span ng-if="loadingNewSearchIndicator || loadingSearchIndicator || feed.loading" ng-bind="::i18n.translations.LOADING_RESULTS"> </span> <span ng-if="!loadingNewSearchIndicator && !loadingSearchIndicator && !feed.loading" ng-bind="::i18n.translations.DONE_LOADING_RESULTS"> </span> <span ng-if="loadingFacetIndicator" ng-bind="::i18n.translations.LOADING_MORE_FACETS"></span> <span ng-if="!loadingFacetIndicator" ng-bind="::i18n.translations.DONE_LOADING_MORE_FACETS"></span> </div> <aside role="navigation" id="skipnav" class="skipnav offscreen" ng-cloak tabindex="-1" focus-me="!layout.virgin"> <ul class="list-unstyled" aria-label="{{ ::i18n.translations.ACCESSIBLE_MENU }}"> <li class="offscreen" ng-if="view =='search'"> <a role="button" go-to="#results" tabindex="0" ng-bind="::i18n.translations.SKIP_TO_CONTENT"> </a> </li> </ul> </aside> <main ng-cloak id="content" class="screen-media-wrapper"> <h1 class="offscreen" ng-bind="windowTitle">Summon 2.0</h1> <div home-view ng-show="view == 'home'"></div> <div search-view ng-show="view == 'search'"></div> <div embedded-widgets-view ng-if="view == 'widgets'"></div> <div course-reserves ng-if="courseReservesHasRendered" ng-show="view == 'course_reserves'"></div> <div library-card ng-if="libraryCardHasRendered" ng-show="view == 'library_card'"></div> <div class="footer"> <div chat-widget ng-if="chat.enabled"></div> </div> <div back-to-top ng-show="view == 'search' && showBackToTop" ng-click="scrollToTop()"></div> </main> <div class="print-media-wrapper" style="display:none"></div> <toast></toast> <div ng-view></div> <div click-track-link-form></div> <div ng-if="isPreviewEnv && showPreviewBanner" class="preview-env"></div> </body> </html>