diff --git a/primo-explore/custom/src/css/README_epfl.md b/primo-explore/custom/src/css/README_epfl.md new file mode 100644 index 0000000..46851b7 --- /dev/null +++ b/primo-explore/custom/src/css/README_epfl.md @@ -0,0 +1,21 @@ +# Uilisation des CSS +Tous les fichiers CSS sont concaténés s'ils se trouvent dans ce dossier. + +Le fichier `custom1.css` est le résultat compilé. + +Certains fichiers sont fournis par SLSP et d'autres sont locaux. + +## Fichiers SLSP +Le fichier `custom_slsp.css` est en réalité le fichier custom.css du paquet SLSP. + +Ce fichier est composé de deux parties. La première `Central Package CSS` est copié sans changement dans le fichier `custom_slsp.css`. + +La seconde partie du fichier SLSP `Local Package CSS` est copiée dans un autre fichier local: `custom_slsp_epfl_part.css`. Ce fichier contient les paramètres standards paramétrés aux couleurs EPFL. + +## Fichiers EPFL +Les fichiers sont organisés par modules ou groupe de modules en principe. Il y a une exception pour `epfl_colors.css` qui comprend des modifications plus générales. + +## Mise à jour en cas de mise à jour du paquet SLSP +1. Pull le paquet SLSP +2. Copier le fichier SLSP `custom.css` dans `custom_slsp.css` jusqu'à la balise de fin de la balise `End of the Central Package CSS`. +3. Confronter la fin du `custom.css` et `custom_slsp_epfl_part.css` et faire les adaptations requises, notamment au niveau des sélecteurs. diff --git a/primo-explore/custom/src/css/custom1.css b/primo-explore/custom/src/css/custom1.css index 596af40..d504753 100644 --- a/primo-explore/custom/src/css/custom1.css +++ b/primo-explore/custom/src/css/custom1.css @@ -1,1634 +1,1619 @@ /* Affichage des collections */ /* Supprime le chevauchement du titre */ prm-collection-gallery-header .collection-header-inner.has-transparent-topbar{ margin-top: 0px !important; } /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /**************************** Central Package CSS *****************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /*************** Navigation ******************/ /*Font Navigation and buttons*/ #mainMenu > div > a, button#signInBtn, button#more-links-button, prm-topbar > div > prm-user-area-expandable > md-menu > button > span { font-size: small !important; font-weight: 500 !important; color: #111 !important; } /*hover effect Navigation and buttons*/ #mainMenu > div > a:hover, button#signInBtn:hover, prm-topbar > div > prm-user-area-expandable > md-menu > button:hover, button#more-links-button:hover, prm-search-bookmark-filter > a:hover, a#favorites-button:hover, a#search-button:hover, .md-button.button-as-link:hover:not([disabled]), .md-button.button-link:hover:not([disabled]), .md-button.button-link:focus:not([disabled]), prm-user-area-expandable .button-with-menu-arrow:hover .menu-arrow:hover:not([disabled]), button.item-expand-button.md-button.md-primoExplore-theme.md-ink-ripple:hover:not([disabled]), button.item-expand-button.md-button.md-primoExplore-theme.md-ink-ripple:focus:not([disabled]), .md-button.md-lang-button:hover { background-color: #ddd !important; color: #111 !important; } /*remove capitalized text*/ .md-button { text-transform: none; } /*Menu button*/ button.button-with-menu-arrow.md-button.md-primoExplore-theme.md-ink-ripple:hover, button#signInBtn, .md-button.button-link, .md-button.button-as-link.link-alt-color, prm-icon md-icon, .section-title prm-icon, prm-icon.rotate-180, svg#chevron-up, span.user-name, span.menu-arrow, .md-button.button-as-link, #sidebar-trigger > prm-icon > md-icon { color: #111 !important; } /*hide hover effect on Library Logo*/ #banner > a.md-button.md-primoExplore-theme.md-ink-ripple:hover { background: none; } /*background buttons*/ prm-search-bookmark-filter .md-button { background-color: #fff !important; } /*hiding Refworks from the pulldown menu*/ .my-refworks-ctm, .my-refworks-separator-ctm { display: none; } /*switch to advanced search button*/ button.switch-to-advanced.zero-margin.button-with-icon.md-button.md-primoExplore-theme.md-ink-ripple { border-style: solid; border-width: 1px; border-radius: 5px; } .md-button.md-primary:hover:not([disabled]), .md-button.md-primary:focus:not([disabled]), prm-favorites-labels .md-chips .md-chip.toggleable-chip:not(.chip-toggled-on) .md-chip-content:hover:not([disabled]), prm-favorites-labels .md-chips .md-chip:not(.chip-toggled-on) .md-chip-content:hover:not([disabled]), .bar prm-authentication .md-button:hover:not([disabled]), button.dismiss-alert-button:hover { color: #fff; background-color: #111; } /*switch to simple search button*/ button.switch-to-simple.zero-margin.button-with-icon.md-button.md-primoExplore-theme.md-ink-ripple { border-color: #f1f1f1 !important; border-radius: 5px; border-width: 1px; border: solid; } /*the main color border on mobile view*/ @media (max-width: 599px) { prm-topbar .top-nav-bar { border-bottom-style: solid; border-bottom-width: 8px; } } .md-button.button-as-link { line-height: 36px; padding: 0 6px; } .md-autocomplete-suggestions li { white-space: nowrap; } /*Header menu*/ @media (max-width: 960px) { prm-user-area-expandable button.user-button.user-menu-button.button-with-menu-arrow.md-button.md-primoExplore-theme.md-ink-ripple, prm-user-area-expandable-after { display: none !important; } button#signInBtn { display: block; } } primo-explore.logged-out prm-user-area-expandable md-menu { display: none; } /*Header menu: switch language*/ bcu-lang-switch-component { padding-right: 16px; } bcu-lang-switch-component .md-button.md-lang-button { height: 29px; min-height: 29px; margin: 15px 1px !important; min-width: 29px; width: 29px; line-height: 23px; text-transform: uppercase; border: 1px solid transparent; border-radius: 3px; } bcu-lang-switch-component .md-button.md-lang-button.active { border-color: rgba(19, 18, 18, 0.85); } bcu-lang-switch-component a { color: rgba(255, 255, 255, 0.85); display: inline-block; padding-bottom: 2px; } bcu-lang-switch-component a:hover { color: rgba(255, 255, 255, 0.85); } /*************** Main Content ******************/ /*backgound of the Textboxes Homepage*/ prm-search > div > md-content, md-card.default-card._md.md-primoExplore-theme { background-color: #fff !important; border-radius: 3px; } /*first header of the Textboxes*/ .cardbox h1 { font-size: 48px; line-height: 56px; } /*second header of the Textboxes*/ .cardbox h2 { font-size: 32px; line-height: 36px; } /*third header of the Textboxes (if needed)*/ .cardbox h3 { font-size: 26px; line-height: 30px; } /*removes the upper and lower space in a list */ .cardbox ul, .cardbox ol { margin-top: 0px !important; margin-bottom: 0px !important; } /*links in the textboxes*/ md-card-content a, prm-service-details a { color: #222222 !important; } md-card-content a, prm-service-details a, div.courier-info > span a { text-decoration: underline !important; } md-card-content a:hover, prm-service-details a:hover { color: #111; background-color: rgba(47, 47, 47, 0.1) !important; } /*Responsive Video Frame*/ .resp-container { position: relative; overflow: hidden; padding-top: 56.25%; } .resp-iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; } /********Links frame *** ATTENTION: ONLY FOR CP*********/ md-card.cardbox.default-card.quicklinksbox md-card-content { padding: 0px; } md-card.cardbox.default-card.quicklinksbox div.md-button { padding: 0 0 0 16px; } md-card.cardbox.default-card.quicklinksbox md-list-item._md-button-wrap._md { border-top: #c5c5c5 1px solid ; } md-card.cardbox.default-card.quicklinksbox._md.md-primoExplore-theme > md-card-content > md-list > md-list-item:last-child { border-bottom: #c5c5c5 1px solid ; } .md-button._md-focused:not([disabled]), .md-button.md-focused:not([disabled]), .md-button:focus:not([disabled]) { color: unset !important; background-color: unset !important; } /*footer layout*/ md-card.prm-primary-bg.psfooter { margin: 16px 0 0 0; padding: 0 8%; } /*footer layout*/ md-card.prm-primary-bg.psfooter-legal { margin: 1px 0 0 0; padding: 0 8%; } /*Responsive footer layout*/ @media (min-width: 960px) { md-card-content.prm-primary-bg.layout-align-gt-sm-end-stretch.flex-gt-sm-70 { text-align: end; } } /*footer links*/ md-icon.ps_icon, a.ps_link { margin-right: 5%; text-decoration: underline; } /*md-icon.ps_icon:hover, a.ps_link:hover, a.ps_link.legal:hover, span.legal a:hover { background-color: rgba(61,110,148,.1) !important; }*/ /*footer text*/ md-card-content.prm-primary-bg { font-weight: 300; } /*links in the legal part of the footer*/ a.ps_link.legal, span.legal { font-size: 14px; font-weight: 300; } /************************************************************************************************ span.legal { color: #14413c; } */ span.legal > a { /*color: #14413c;*/ font-weight: 600; } /*main container width for footer positioning*/ prm-static.md-padding.flex { min-width: 100%; padding: 0; } /*mainly white background*/ .prm-primary-bg.prm-hue1, prm-atoz-search-bar.prm-hue1, prm-browse-search-bar.prm-hue1, prm-collection-gallery-header .prm-hue1.collection-header-inner, prm-newspapers-search-bar.prm-hue1, prm-search-bar.prm-hue1, prm-spinner.prm-hue1.overlay-cover.light-on-dark:after, prm-tags-search-bar.prm-hue1, prm-topbar .top-nav-bar, prm-tree-nav prm-spinner .prm-hue1.diamond { background-color: #fff !important; } /*font color on white background*/ .hoverable-over-dark, .md-button.button-over-dark, prm-main-menu[menu-type=full] .md-button.md-focused, prm-main-menu[menu-type=full] .md-button .md-input-container-dummy > .md-select-dummy:focus, prm-main-menu[menu-type=full] .md-button:focus, prm-main-menu[menu-type=full] .md-button:hover, prm-main-menu[menu-type=full] .md-button md-select:focus, prm-main-menu[menu-type=full] .overlay-menu-item.md-focused, prm-main-menu[menu-type=full] .overlay-menu-item .md-input-container-dummy > .md-select-dummy:focus, prm-main-menu[menu-type=full] .overlay-menu-item:focus, prm-main-menu[menu-type=full] .overlay-menu-item:hover, prm-main-menu[menu-type=full] .overlay-menu-item md-select:focus, prm-main-menu[menu-type=full] md-button:focus, prm-main-menu[menu-type=full] md-button:hover, prm-topbar .md-button, prm-user-area .md-button.user-menu-button, prm-user-area md-fab-toolbar ._md-fab-action-item .md-button, prm-user-area md-fab-toolbar ._md-fab-action-item md-input-container, prm-user-area md-fab-toolbar .md-fab-action-item .md-button, prm-user-area md-fab-toolbar .md-fab-action-item md-input-container { color: #222 !important; } /*************** Brief results ******************/ /*color of the Alertbar*/ .bar.alert-bar, .classic-input .search-scope, .prm-alert-bg { /*background-color: #8dd8d8 !important;*/ border: none !important; } /*backgound search results boxes*/ .list-item-wrapper { background-color: #f9f9f9; } /*Title color*/ prm-brief-result .item-title span { color: #333; } prm-brief-result .item-title span:hover { color: #111; background-color: rgba(47, 47, 47, 0.1) !important; } /*remove hover effect from title links*/ .md-button.arrow-link-button .button-content:focus, .md-button.arrow-link-button .button-content:hover, .md-button.arrow-link-button .hover.button-content, .md-button.arrow-link-button:focus .button-content, .md-button.arrow-link-button:hover .button-content, .recommendations-title.hover > span > span, .recommendations-title:hover > span > span, a.hover, a:focus, a:hover, prm-chapters-and-reviews md-card > .md-button:focus .item-title span, prm-chapters-and-reviews md-card > .md-button:hover .item-title span, prm-citation-trails-item.active-item md-card > .md-button:focus .item-title span, prm-citation-trails-item.active-item md-card > .md-button:hover .item-title span, prm-tags-list .md-chips .md-chip .md-chip-content:hover strong, prm-tags-list .md-chips md-chip .md-chip-content:hover strong, prm-tags-list md-chips .md-chip .md-chip-content:hover strong, prm-tags-list md-chips md-chip .md-chip-content:hover strong { box-shadow: none !important; } /*background color of bookmarked items*/ .list-item-wrapper .item-bookmarked, .list-item-wrapper .item-bookmarked:hover, .prm-highlight, .prm-highlight.prm-hue1, prm-breadcrumbs .md-chip.persistent-facet, prm-breadcrumbs .prm-hue1.md-chip.persistent-facet { background-color: #ddd !important; } /*hover effect on all Links*/ .md-button.arrow-link-button .button-content:focus, .md-button.arrow-link-button .button-content:hover, .md-button.arrow-link-button .hover.button-content, .md-button.arrow-link-button:focus .button-content, .md-button.arrow-link-button:hover .button-content, .prm-links-background.prm-hue-1, .recommendations-title.hover > span > span, .recommendations-title:hover > span > span, a.hover, a:focus, a:hover, prm-chapters-and-reviews md-card > .md-button:focus .item-title span, prm-chapters-and-reviews md-card > .md-button:hover .item-title span, prm-citation-trails-item.active-item md-card > .md-button:focus .item-title span, prm-citation-trails-item.active-item md-card > .md-button:hover .item-title span, prm-tags-list .md-chips .md-chip .md-chip-content:hover strong, prm-tags-list .md-chips md-chip .md-chip-content:hover strong, prm-tags-list md-chips .md-chip .md-chip-content:hover strong, prm-tags-list md-chips md-chip .md-chip-content:hover strong { color: #222 !important; } div.custom-links-container.layout-wrap.layout-align-sm-start-start.layout-align-center-start.layout-row > div > a:hover { background-color: #6b6b6b !important; } /*Facet titles*/ span.section-title-header:hover { color: #8a8a8a !important; } /*Facet "show more" button*/ .sidebar-section .md-button.button-as-link.link-alt-color:hover { background-color: rgba(17, 17, 17, 0.17) !important; } /*page select buttons*/ a.md-mini.md-button.md-primoExplore-theme.md-ink-ripple:hover { color: white !important; } /*underlined search results*/ /*.text-highlight, mark { box-shadow: inset 0 -0.15em 0 0 #8dd8d8; }*/ /*versions link and other*/ .getit, .md-button.arrow-link-button prm-search-result-frbr-line .button-content > prm-icon:first-child, .prm-notice, .status-maybe, .worldcat, [class*=_more], [class*=_unknown], [class*=check_], [class*=does_not_exist], [class*=may_], [class*=NFT], prm-search-result-frbr-line .md-button.arrow-link-button .button-content > prm-icon:first-child, prm-search-result-frbr-line a > prm-icon:first-child, prm-service-links a { color: #222 !important; } /*icon color and text color in request forms*/ .prm-primary-color, .request-form md-input-container label, .request-form md-input-container label:not(.md-no-float):not(._md-container-ignore), .request-form md-input-container md-select .md-select-value.md-select-placeholder, .request-form md-input-container .md-input-container-dummy > .md-select-dummy .md-select-value.md-select-placeholder, .request-form md-input-container md-select ._md-select-value._md-select-placeholder, .request-form md-input-container .md-input-container-dummy > .md-select-dummy ._md-select-value._md-select-placeholder, .result-item-actions .md-icon-button, .result-item-actions .more-options-button, prm-add-query-to-saved-searches .custom-button, prm-pre-filters md-input-container.is-active, .md-autocomplete-suggestions .suggestion-scope, md-tab-content .tab-content-header md-input-container md-select-value .md-text { color: #222 !important; } /*space between item details in Fullview*/ #item-details > div > div { margin-bottom: .8em !important; } /*Items expand*/ @media (max-width: 960px) { prm-location-items .md-list-item-text.layout-wrap.layout-row.flex { flex-direction: column; } prm-location-items h3, prm-location-items h4 { margin:10px 0 !important; } prm-location-items > md-list > md-list-item > div > div.md-list-item-text > div.weak-text > div > div > p { margin: 4px 18px !important; display: list-item; } prm-location-items > md-list > md-list-item > div > div > div.layout-wrap { flex-direction: row !important; justify-content: flex-start !important; max-width: 100% !important; } prm-location-items > md-list > md-list-item > div > div > div > div > prm-service-button > button { box-shadow: inset 0 -0.15em 0 0 #8dd8d8; } } /* Hide "search inside" for print journals */ .search-within-p-only { display:none } /*fullview background of the left part*/ .md-dialog-container.fixed-container { background-color: #444 !important; } /*background color of the signin window and the fullscreen navigation*/ md-backdrop._md-dialog-backdrop.md-opaque.md-primoExplore-theme { background-color: #1f1f1f !important; } /*text color of the signin window and the fullscreen navigation*/ prm-main-menu[menu-type=full] .md-button .md-headline, prm-main-menu[menu-type=full] .overlay-menu-item .md-headline, .light-on-dark-dialog .md-button.button-as-link, .light-on-dark-dialog .md-button.button-confirm, md-dialog.light-on-dark-dialog md-list md-list-item.list-login .md-button, md-dialog.light-on-dark-dialog a:hover { color: #fff !important; } /*hiding the Library Logo in the login window*/ .login-header { display: none !important; } /*login-box make arrows clickable*/ prm-login button.md-no-style.md-button.md-primoExplore-theme.md-ink-ripple { z-index: 100; } prm-login .md-list-item-inner prm-login-item a.md-primoExplore-theme { z-index: 1000; } prm-login .md-button.md-no-style:hover { color:black; } prm-stand-alone-login button.md-no-style.md-button.md-primoExplore-theme.md-ink-ripple { z-index: unset; } .login-card md-list-item.login-brighter-dialog prm-login-item { width:100%; } /*alertbar for the courier info*/ .courier-info { margin: 0px 8px; } .courier-info.bar.alert-bar { height: unset; margin: 6px 8px; padding: .5em .5em 0.25em; text-align: center; } /*Library info icon*/ slsp-i-button-component > div > span > a > img { vertical-align: middle; max-width: 30px; margin: 4px 12px; } /*Library card Personal details display*/ #personalDetails > md-card-content > div { flex-flow: column; } #personalDetails .md-input-has-value.layout-column { min-width: 400px; } prm-personal-info-after { display: flex; } slsp-edit-personal-details-component#SLSPeditPersonalDetails { background-color: #f0f0f0; padding-top: 30px; } /*Library card: IZ selector for mobiles*/ @media (max-width: 599px) { div.md-select-menu-container.md-primoExplore-theme.md-active.md-clickable, prm-account prm-linked-user-selector { font-size: 16px !important; } } /*Library card: Show not renewable messages in list of loans*/ prm-loan .md-list-item-text.md-list-item-with-checkbox.layout-wrap.layout-row.flex { order: 1; /*flex-flow: column;*/ max-width: 75%; } prm-loan-after { order: 2; align-self: baseline; flex: 15%; } prm-loan-after span.md-subhead { font-size: small; line-height: 18px; color: #d84f26; padding: 22px 0; } prm-loan > div.align-self-stretch.flex-xs-50 { order: 4; } prm-loan > div.md-list-item-text.md-list-item-with-checkbox.layout-wrap.layout-row.flex > div:nth-child(3) { min-width: 100%; } prm-loan > div.md-list-item-text.md-list-item-with-checkbox.layout-wrap.layout-row.flex > div:nth-child(4) { min-width: 50%; margin: 10px 0; } prm-loan > div.md-list-item-text.md-list-item-with-checkbox.layout-wrap.layout-row.flex > div:nth-child(5) { min-width: 43%; justify-content: flex-end; align-items: baseline; } #accountoverview > md-tabs > md-tabs-content-wrapper > md-tab-content:nth-child(2) > div > div { flex-direction: column; } prm-loan .not-renewable { padding: 6px 0px 6px 6px; display: block; border: 1px #d23333 solid; max-width: min-content; } /*Library card: hide not renewable messages in list of loans for mobiles*/ @media (max-width: 599px) { slsp-renew-item-text-component { display: none; } } /******************************************************************************/ /************************************ Full display ****************************/ /******************************************************************************/ /*Back buttons*/ md-tabs.tabs-as-app .back-button, prm-location-holdings .md-button.button-as-link, prm-location-items .button-link { box-shadow: none; color: #111111 !important; background: rgba(17, 17, 17, 0.20) !important; line-height: 24px; border: 1px solid rgba(0, 0, 0, 0.59); } md-tabs.tabs-as-app:hover .back-button:hover, prm-location-holdings .md-button.button-as-link:hover:not([disabled]), prm-location-items .button-link:hover:not([disabled]) { color: #111111 !important; background-color: rgba(17, 17, 17, 0.10) !important; } /*Buttons margin*/ prm-request-services, prm-opac, prm-location-holdings .md-button.button-as-link { margin-top: 5px; } /* Locations filter by default; hide filter button */ prm-locations button[ng-if='$ctrl.displayFiltersButton && !$ctrl.locationsPrefilterActive']{ display: none !important; } prm-location-items button[ng-if='($ctrl.isFilter || $ctrl.isFiltered) && $ctrl.isAnyFilterFilled()']{ display: none !important; } /* Location filter "Clear" button */ prm-locations-filter .md-button.button-as-link:hover:not([disabled]) { background-color: rgba(17, 17, 17, 0.10) !important; } /*filter bar*/ prm-locations-filter md-select { margin-top:1px; } prm-location-items prm-service-button .md-button.button-as-link { padding:0 6px !important; box-shadow:none; line-height:28px; } .full-view-container { overflow-y: hidden; margin-bottom: 50px; } html#primoExploreRoot { overflow-y: auto !important; } /*FullView - Left Navigation */ prm-full-view .services-index-under{ min-width: 7em; } prm-full-view .services-index-under .md-button{ width: 100%; /* border: 1px solid #c3c3c3; */ margin: 1px 0!important; text-overflow: clip; padding-right: 0; white-space: normal; line-height: 20px; padding: 7px 5px; } prm-full-view .services-index-under .md-button span{ text-transform: none; } /*Full view Resource sharing */ #getit_link1_0 > div > prm-full-view-service-container > div.section-body > div { display: flex; flex-direction: column; } prm-opac { order: 1; } prm-alma-other-members { order: 2; display: grid; } alma-htgi-svc { order: 3; } primo-explore.logged-out alma-htgi-svc, primo-explore.alert alma-htgi-svc { order: 0 !important; } .medium-uppercase-bold { text-transform: none; font-size: 1em; } /*Full display Resource sharing expand section*/ prm-alma-other-units button.layout-fill, prm-alma-other-members button.layout-fill { height: auto; min-height: auto; } /* Full display sections order */ #full-view-container > *:first-child { display: flex; flex-direction: column; } #brief { order: 0 !important; margin-bottom: -40px; } #citationTrails { order: 1 !important; margin-bottom: -30px; } #searchWithinJournal { order: 2 !important; margin-bottom: -30px; } #getit_link1_0 { order: 3 !important; margin-bottom: -30px; } #getit_link1_1 { order: 4 !important; margin-bottom: -30px; } #action_list { order: 5 !important; margin-bottom: -30px; } #details { order: 6 !important; margin-bottom: -30px; } #links { order: 7 !important; margin-bottom: -30px; } #moreFromTheSameCourse { order: 8 !important; margin-bottom: -30px; } #moreFromTheSameCollection { order: 9 !important; margin-bottom: -30px; } #virtualBrowse { order: 10 !important; margin-bottom: -30px; } /* Change of links in left navigation bar ENG */ [aria-label="Top"] { order: 0 !important; } [aria-label="Citations"] { order: 1 !important; } [aria-label="Search inside"] { order: 2 !important; } [aria-label="View Online"] { order: 3 !important; } [aria-label="Loan and request options"] { order: 4 !important; } [aria-label="Send to"] { order: 5 !important; } [aria-label="Details"] { order: 6 !important; } [aria-label="Links"] { order: 7 !important; } [aria-label="Course"] { order: 8 !important; } [aria-label="Collection"] { order: 9 !important; } [aria-label="Virtual Browse"] { order: 10 !important; } /* Change of links in left navigation bar GER */ [aria-label="Top"] { order: 0 !important; } [aria-label="Zitationen"] { order: 1 !important; } [aria-label="Suche innerhalb"] { order: 2 !important; } [aria-label="Online ansehen"] { order: 3 !important; } [aria-label="Ausleih- und Bestelloptionen"] { order: 4 !important; } [aria-label="Senden an"] { order: 5 !important; } [aria-label="Details"] { order: 6 !important; } [aria-label="Links"] { order: 7 !important; } [aria-label="Seminar"] { order: 8 !important; } [aria-label="Sammlung"] { order: 9 !important; } [aria-label="Virtuelles Regal"] { order: 10 !important; } /* Change of links in left navigation bar FRE */ [aria-label="Haut"] { order: 0 !important; } [aria-label="Citations"] { order: 1 !important; } [aria-label="Rechercher dans"] { order: 2 !important; } [aria-label="Consulter en ligne"] { order: 3 !important; } [aria-label="Options de prêt et de demande"] { order: 4 !important; } [aria-label="Envoyer vers"] { order: 5 !important; } [aria-label="Détails"] { order: 6 !important; } [aria-label="Liens"] { order: 7 !important; } [aria-label="Séminaire"] { order: 8 !important; } [aria-label="Collection"] { order: 9 !important; } [aria-label="Etagère virtuelle"] { order: 10 !important; } /* Change of links in left navigation bar ITA */ [aria-label="Top"] { order: 0 !important; } [aria-label="Citazioni"] { order: 1 !important; } [aria-label="Cerca in"] { order: 2 !important; } [aria-label="Visualizza online"] { order: 3 !important; } [aria-label="Opzioni di prestito e richiesta"] { order: 4 !important; } [aria-label="Invia a"] { order: 5 !important; } [aria-label="Dettagli"] { order: 6 !important; } [aria-label="Link"] { order: 7 !important; } [aria-label="Corso"] { order: 8 !important; } [aria-label="Collezione"] { order: 9 !important; } [aria-label="Scorri virtualmente"] { order: 10 !important; } /******************************************************************************/ /************************************ Help Page *******************************/ /******************************************************************************/ #help img { max-width: 100%; height: auto; } img.icon_up1 { width: 16px; float: right; margin: 13px 2px; } img.icon_up2 { width: 10px; float: right; margin: 4px; } a > h3:hover { background-color: #eee !important; } /******************************************************************************/ /************************************ Collections *****************************/ /******************************************************************************/ /*Collections navigation bar*/ prm-collection-navigation-breadcrumbs-item .md-button.button-as-link.link-alt-color { box-shadow: none; color: #ffffff !important; background: #1111117a !important; line-height: 24px; } prm-collection-navigation-breadcrumbs-item .md-button.button-as-link.link-alt-color:hover { color:#ffffff !important; background-color: #11111152 !important; } /******************************************************************************/ /****************** SLSP "special" external resources ***************************/ /******************************************************************************/ .slsp-archives md-list-item{ cursor: pointer; } .slsp-archives .md-list-item-inner span { padding-left: 2em; } .slsp-archives md-list md-list-item .md-button{ color: #3d6e94; font-size: 16px; } .slsp-archives md-list md-list-item .md-button:hover:not([disabled]), .slsp-archives md-list md-list-item .md-button:focus:not([disabled]) { background-color: transparent; color: #3d6e94; text-decoration: underline; } .slsp-archives-additional-hint{ justify-content: center; display: flex; padding: 1em; background-color: #f7eda3; border-color: #ede49e; margin-bottom: 1em; padding-left: 2em; box-shadow: 0 1px 0 0 rgb(0 0 0 / 3%), 0 5px 5px -3px rgb(0 0 0 / 7%); } /* mfa, tma */ .slsp-archives-hide alma-htgi-svc > * { display: none; } .slsp-archives-hide alma-htgi-svc-after { display: block; } /* hsa */ .slsp-archives-hide prm-alma-viewit > * { display: none; } .slsp-archives-hide prm-alma-viewit-after { display: block; } /* availability-line HSA, if no online resource */ prm-search-result-availability-line.slsp-hsa-no-online prm-icon{ display:none; } prm-search-result-availability-line.slsp-hsa-no-online .availability-status { color: gray; } /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** End of the Central Package CSS ************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** Start of the Local Package CSS ************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** Primary colour ****************************************/ /******************************************************************************/ /*****************This two entries are the background of the primary color*******************/ -.prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-search-bar, prm-newspapers-search-bar, -prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon, -md-tabs md-ink-bar, md-radio-button.md-checked .md-on, button.switch-to-simple, .md-button.button-confirm, +.prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-search-bar, prm-newspapers-search-bar, prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon, md-tabs md-ink-bar, md-radio-button.md-checked .md-on, button.switch-to-simple, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-location-items md-list prm-service-button .md-button.button-as-link { background-color: #ff0000 !important; } @media (max-width: 599px) { prm-topbar .top-nav-bar { border-color: #ff0000 !important; } } - - -/*.search-actions button{ - background-color: #fff !important; - color: #222; -} */ - - /*****************This entry is the mouse over background of the links and buttons*******************/ -md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-icon.ps_icon:hover, a.ps_link:hover, a.ps_link.legal:hover, span.legal a:hover, button.switch-to-advanced:hover, -button.switch-to-simple:hover, .md-button.button-confirm:hover, .md-button.button-as-link:hover:not([disabled]) { +md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-icon.ps_icon:hover, a.ps_link:hover, a.ps_link.legal:hover, span.legal a:hover, button.switch-to-advanced:hover, button.switch-to-simple:hover, .md-button.button-confirm:hover, .md-button.button-as-link:hover:not([disabled]) { background-color: #ae0010 !important; } - /*****************This two entries are the font color of the primary color*******************/ .prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-newspapers-search-bar, -prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon:after, -.md-button.switch-to-advanced, button.switch-to-simple, span.legal, span.legal > a, a.ps_link.legal, .ps_icon, md-card.prm-primary-bg.psfooter > md-card-content a, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-request-services .md-button.button-as-link:hover:not([disabled]), -prm-service-button .md-button.button-as-link:hover:not([disabled]), prm-location-items md-list prm-service-button .md-button.button-as-link { +prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon:after, .md-button.switch-to-advanced, button.switch-to-simple, span.legal, span.legal > a, a.ps_link.legal, .ps_icon, md-card.prm-primary-bg.psfooter > md-card-content a, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-request-services .md-button.button-as-link:hover:not([disabled]), prm-service-button .md-button.button-as-link:hover:not([disabled]), prm-location-items md-list prm-service-button .md-button.button-as-link { color: #fff !important; } - button.switch-to-advanced.zero-margin.button-with-icon.md-button.md-primoExplore-theme.md-ink-ripple { border-color: #c1c1c1 !important; } /*****************selection color of the primary color*****************/ .prm-primary-bg ::selection { background: #ff0000; } /******************************************************************************/ /********************** Secondary colour **************************************/ /******************************************************************************/ /*****************This two entries are the background of the secondary color*******************/ .bar.alert-bar, .classic-input .search-scope, .prm-alert-bg { background-color: #ffcccc !important; } .text-highlight, mark, prm-location-items > md-list > md-list-item > div > div > div > div > prm-service-button > button { box-shadow: inset 0 -0.15em 0 0 #ff0000; } /*****************This entry is the mouse over background of the links and buttons (secondary-color)*******************/ /*.bar prm-authentication .md-button:hover:not([disabled]),*/ div.alert-bar .md-button:hover:not([disabled]), slsp-edit-personal-details-component a.bar.alert-bar:hover { background-color: #ffcccc !important; } /*****************This entry is the font color of the secondary color*******************/ .bar.alert-bar, .classic-input .search-scope, .prm-alert-bg, .bar prm-authentication .md-button, button.dismiss-alert-button, div.courier-info > span a { color: #111111 !important; } /*****************selection color of the secondary color**********************************/ .bar.alert-bar ::selection { background: #ff0000; } /*********************************/ /* CSS pour les bases de données */ /*********************************/ prm-databases-categorize h2, prm-databases-categorize prm-tree-nav{ width: 220px; max-width: 220px; } @media only screen and (max-width: 1100px){ prm-databases-categorize h2, prm-databases-categorize prm-tree-nav{ width: 180px !important; max-width: 180px !important; } } /*****************Selected text color*******************/ ::selection { background: #ffbe8f; /* WebKit/Blink Browsers */ } ::-moz-selection { background: #ffbe8f; /* Gecko Browsers */ } /*****************This entry remove default color from various texts*******************/ md-dialog.light-on-dark-dialog .md-list[class$="-line"] md-list-item .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog .md-list[class$="-line"] md-list-item .md-list-item-text h3, md-dialog.light-on-dark-dialog .md-list[class$="-line"] md-list-item > .md-no-style .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog .md-list[class$="-line"] md-list-item > .md-no-style .md-list-item-text h3, md-dialog.light-on-dark-dialog .md-list md-list-item .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog .md-list md-list-item .md-list-item-text h3, md-dialog.light-on-dark-dialog .md-list md-list-item > .md-no-style .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog .md-list md-list-item > .md-no-style .md-list-item-text h3, md-dialog.light-on-dark-dialog md-list md-list-item .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog md-list md-list-item .md-list-item-text h3, md-dialog.light-on-dark-dialog md-list md-list-item > .md-no-style .md-list-item-text .list-item-title, md-dialog.light-on-dark-dialog md-list md-list-item > .md-no-style .md-list-item-text h3, md-button.arrow-link-button md-dialog.light-on-dark-dialog .button-content, md-dialog.light-on-dark-dialog .md-button.arrow-link-button .button-content, md-dialog.light-on-dark-dialog a{ color: #ffcccc !important; } /*Bouton pour confirmer une demande*/ prm-request button.md-button.button-confirm, span[translate="fulldisplay.locations.showmore"], .courier-info .button-confirm { background-color: #080 !important; border-radius: 2px; border-style: none; } prm-request button.md-button.button-confirm:hover, span[translate="fulldisplay.locations.showmore"]:hover, .courier-info .button-confirm:hover { background-color: #050 !important; } span[translate="fulldisplay.locations.showmore"]{ line-height: 24px !important; padding: 5px 8px; margin: 4px 0 !important; color: white; border-radius: 2px; } /* Suppression du fond du bouton + d'exemplaires */ prm-location-items .md-button.button-link:hover:not([disabled]){ background-color: transparent !important; border-style: none !important; } button[ng-hide="!$ctrl.currLoc.isMore"] { background-color: transparent !important; border-style: none !important; } /* Fix SLSP pour la couleur du bouton secondaire */ .bar prm-authentication .md-button:hover:not([disabled]), button.dismiss-alert-button:hover{ background-color:#ffdddd !important; border: 1px solid #ae0010; } /* Fix SLSP pour le bouton ""élargir" */ button.item-expand-button.md-button.md-primoExplore-theme.md-ink-ripple{ background-color: #D3D3D3!important; } /*****************This entry remove default color from various forms*******************/ .md-input-color-underline, .new-result-item .list-item-count, .prm-secondary-bg.prm-hue1, md-input-container.empty-select-on-init:not(.md-input-focused) .md-input-container-dummy > .md-select-dummy md-select-value::after, md-input-container.empty-select-on-init:not(.md-input-focused) md-select md-select-value::after, md-input-container::after, md-progress-linear[md-mode="indeterminate"].header-progress-bar .prm-hue1.md-bar, md-radio-button.md-checked ._md-on, md-radio-button.md-checked .md-on, md-tabs md-ink-bar, prm-tags-list .md-chips ._md-chip-input-container::after, prm-tags-list .md-chips .md-chip-input-container::after, prm-tags-list md-chips ._md-chip-input-container::after, prm-tags-list md-chips .md-chip-input-container::after { background-color: #ff0000 !important; } /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** Start of the EPFL Package CSS ************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /* Suppression configuration master template */ /* prm-request-services .md-button.button-as-link{ background-color: unset !important; } */ /* hover for the service button */ /* .md-button.button-as-link:hover:not([disabled]){ background-color: unset !important; } */ /* Design of action buttons when active */ .md-button.md-primary:hover:not([disabled]), .md-button.md-primary:focus:not([disabled]), prm-favorites-labels .md-chips .md-chip.toggleable-chip:not(.chip-toggled-on) .md-chip-content:hover:not([disabled]), prm-favorites-labels .md-chips .md-chip:not(.chip-toggled-on) .md-chip-content:hover:not([disabled]), .bar prm-authentication .md-button:hover:not([disabled]), button.dismiss-alert-button:hover { color: #fff !important; background-color: #111 !important; } /* Button to return to localisations */ md-tabs.tabs-as-app .back-button { background-color: #777 !important; line-height: 24px !important; min-height: 24px !important; margin: 4px 0 !important; } /* Color white for the button back to locations */ md-tabs.tabs-as-app .back-button{ color: #fff !important; } md-tabs.tabs-as-app .back-button:hover:not([disabled]) { background-color: #555 !important; } /* Background of actions button when clicked */ #scrollActionList button[aria-selected="true"] { color: #fff; background-color: #3a3a3a; } /* Suppress blue border of input search box */ input#searchBar{ outline: none; } /* Color of the close menu button */ #mainMenuFullCloseButton:not(:hover){ color: white!important; } #mainMenuFullCloseButton:hover{ color: #222 !important; background: white !important; } md-card.psfooter, md-card.psfooter-legal, md-card.psfooter > md-card-content.prm-primary-bg, md-card.psfooter-legal > md-card-content.prm-primary-bg, md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-card.prm-primary-bg.psfooter-legal > md-card-content a:hover{ background-color: #d6d6d6 !important; } md-card.psfooter md-card-content, md-card.psfooter-legal md-card-content, md-card.prm-primary-bg.psfooter > md-card-content a, md-card.prm-primary-bg.psfooter-legal > md-card-content a, md-card.prm-primary-bg.psfooter-legal span.legal { color: #3a3a3a !important; } md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-card.prm-primary-bg.psfooter-legal > md-card-content a:hover { color: #ff0000 !important; } /* Navigation Links on fullview notices */ prm-full-view .services-index-under{ min-width: 7em; } prm-full-view .services-index-under .md-button{ background-color: white; width: 100%; border: 1px solid #c3c3c3; margin: 1px 0!important; text-overflow: clip; padding-right: 0; white-space: normal; line-height: 20px; padding: 5px; } prm-full-view .services-index-under .md-button span{ text-transform: none; } /* Couleur rouge pour les logos téléphone, mail, etc. */ .puce{ text-decoration: none !important; } .puce > span:first-child{ color: #ff0000; fill: #ff0000; } h1.md-headline{ font-size: 36px; line-height: 42px; } h2.md-headline{ font-size: 28px; line-height: 34px; } md-content.epfl-row { justify-content: center; } .epfl-row md-card-title{ flex: none; } .epfl-row md-card { height: 100%; } .epfl-social a{ text-decoration: none !important; } /* Augmente l'espace pour réduire la probabilité de clic sur le lien */ prm-login md-list md-list-item:first-child p[translate="parallel.login.description1"]{ margin-top:15px !important; } /* Réduit la taille du lien Alma */ prm-login md-list md-list-item:last-child { font-size: x-small !important; } /* Rendre les chevrons cliquables */ md-dialog>prm-login button.md-no-style.md-button.md-primoExplore-theme.md-ink-ripple{ z-index: 100; } /*********************************/ /* CSS pour le compte du lecteur */ /*********************************/ /* Liste des institutions sur le compte du lecteur */ /* Ajoute le rouge EPFL sur l'icône d'activité et sur l'institution sélectionnée*/ /* Egalement sur l'icône de l'alerte du tab du compte lecteur */ prm-account md-list-item.is-selected h3.institution-name, prm-account md-tab-item prm-icon[ng-if="$ctrl.messagesGeneralAlert"], prm-account md-list-item prm-icon { color: red !important; } /* Le fond gris englobe l'icône */ prm-account-overview .main-institution-list md-list-item:focus-within, prm-account-overview .main-institution-list md-list-item:hover { background-color: #3a3a3a !important; } .feedbacklink md-icon{ height: 20px; width: 20px; min-height: 20px; min-width: 20px; } prm-alma-viewit-after .bar{ height: auto; } /* Empêcher les retours à la ligne pour les cotes */ span[ng-if="$ctrl.location.callNumber"]{ white-space: nowrap } .btn-account { padding: 24px; } .btn-account md-card-content.bar{ margin: 0 0 12px 0!important; border: solid #ddd 1px !important; background-color: #fff !important; min-width: 100%; display: table; padding: 0 10px !important; margin: 0 0 12px 0 !important; } .btn-account a md-card-content.bar:hover{ background-color: #ddd !important; } .btn-account .md-subhead{ font-size: inherit; display: table-cell; vertical-align: middle; padding-left: 15px; box-sizing: border-box; } .btn-account .md-subhead{ min-height: 100%; } .btn-account prm-icon{ vertical-align: middle; margin-left: : 10px; width: 20px; height: 20px; display: table-cell; } /*****************This entry adapt the message fee*******************/ .feemsg { background-color: #ffcccc; border-radius: 3px; padding: 8px; } .feemsg>div { margin-left: 10px; } .bigfont { font-size: 20px; } /* Bouton de la recherche avancée */ .search-switch-buttons span{ font-variant: small-caps; font-size: 1.15em; } .search-switch-buttons button{ border: none !important; } /* Message d'alerte */ prm-search-bar>div { height: inherit !important; min-height: inherit !important; } prm-search-bar-after>div { background-color: #fff !important; margin-top: 20px; padding: 10px 15px; } prm-search-bar-after p { margin: 0 12px; } .info-symbol::before { content: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 34 34' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%234a90e2' width='34' height='34' rx='4'/%3E%3Cpath d='M17 25V15M17 13V9' stroke='%23FFF' stroke-width='4'/%3E%3C/g%3E%3C/svg%3E"); width: 24px; height: 24px; position: absolute; display: inline-block; top: 50%; left: .6rem; width: 1.6rem; height: 1.6rem; margin-top: -.8rem; } .info-symbol { position: relative; } .info-symbol div { margin-left: 50px; } prm-search-bar-after p { padding: .25em 0 .25em; margin: 0; } prm-search-bar-after a { color: black; text-decoration: underline; } /* Empêcher que le blanc de l'effet hover masque la notice */ prm-search-result-availability-line-after { z-index: 8; position: relative; } .pdf_btn prm-icon{ min-width: 22px; min-height: 22px; width: 20px; height: 20px; /*color: #ff2116;*/ } .pdf_btn { margin-top: 15px; } .pdf_btn a{ padding: 5px; border: 2px rgb(40, 167, 69) solid; background-color: rgba(40, 167, 69, .2); border-radius: 4px; color: rgb(58, 58, 58); } .pdf_btn:hover a{ background-color: rgba(40, 167, 69, .4); border-radius: 4px; color: black; } /* Lien vers les séries */ .link_gray{ color: gray !important; } /* Icône du lien direct vers les ebooks */ prm-search-result-availability-line-after prm-icon{color: rgba(58,58,58,.4) !important;} prm-search-result-availability-line-after md-icon{ height: 15px; width: 15px; min-height: 15px; min-width: 15px; margin-right: .35em; } /* Couleur de texte disponible liste recherche */ -prm-search-result-availability-line .availability-status.available_in_library { - color:rgb(15, 125, 0); +prm-search-result-availability-line .availability-status.available_in_library, prm-search-result-availability-line .availability-status.not_restricted { + color:rgb(15, 125, 0)!important; } /* Mise en évidence des boutons pour les demandes de service */ /* span[translate="AlmaRequest"] { text-decoration: underline #0B0 3px; padding: 2px 6px; } span[translate="AlmaRequest"]:hover{ background-color: #050 !important; text-decoration: none; color: white; border-radius: 2px; } */ /* span[translate="nui.request.request"]{ display: none; } */ /* Soulignement des boutons proposant un service */ prm-service-button button, .greenbutton { padding-left: 0px !important; padding-right: 0px !important; } prm-service-button button > span, .greenbutton>span { background-color: #080 !important; color: white !important; padding: 2px 6px; border-radius: 2px; } prm-service-button button > span:hover, .greenbutton>span:hover { background-color: #050 !important; } prm-location-items > md-list > md-list-item > div > div > div > div > prm-service-button > button { box-shadow: unset !important; } /* Alignement de l'intitulé "Demandes" */ prm-request-services h3.section-title{ top: 0px; } /* Alignement central des boutons de demande */ prm-request-services .labeled-block { align-items: center; } /* Suppression du sous-titre demande span[translate="nui.request.request"]{ display: none; }*/ /* Suppression du bouton PEB span[translate="AlmaResourceSharing"]{ display: none; } .links-block .separated-block-item::after{ content: none !important; } */ /* Crée la place pour le titre et le sous-titre */ prm-topbar { height: 150px !important; } prm-main-menu[menu-type="menu"], .top-nav-bar, prm-search-bookmark-filter { max-height: 60px !important; height: 60px !important; min-height: auto !important; } /* Mise en forme du titre et sous-titre */ .main-title{ padding: .85em; background-color: white; } .main-title h1{ font-size: 2em !important; margin-bottom: 0; } .main-title h1 > a{ color: black; } prm-main-menu[menu-type="menu"] #mainMenu>div, prm-main-menu[menu-type="menu"] #mainMenu>button { border-bottom: solid #ddd 1px; } .main-title h2{ font-size: 1.2em !important; font-weight: bold; } /* Adapte le sous-titre lorsque l'écran est relativement petit */ @media only screen and (max-width: 660px){ .main-title h2{ font-size: 1.1em !important; } } /* Menu sur les petits écrans */ prm-main-menu[menu-type="full"] .md-button .md-headline{ color: #ff9999 !important; } prm-main-menu .md-subhead{ display: none; } .__sm prm-main-menu[menu-type="full"] .settings-container + md-divider{ margin-top: 6em !important; } /* Menu sur grand écran */ prm-main-menu[menu-type="menu"] .button-over-dark, prm-topbar .md-button:not(.disable-hover){ color: #222 !important; } /* Petit triangle du menu */ prm-user-area-expandable .button-with-menu-arrow:hover .menu-arrow:hover:not([disabled]){ background-color: inherit; } prm-databases-categorize button.is-selected{ color: red !important; } prm-databases-categorize button:hover{ background-color: #aaa !important; color: inherit !important; } prm-databases-categorize button.is-selected:hover{ color: red !important; } prm-tree-nav md-list md-list-item::after{ opacity: 1 !important; } prm-tree-nav md-list md-list-item::after{ opacity: .3 !important; } prm-databases-categorize h2, prm-databases-categorize prm-tree-nav{ width: 220px; max-width: 220px; } @media only screen and (max-width: 1100px){ prm-databases-categorize h2, prm-databases-categorize prm-tree-nav{ width: 180px !important; max-width: 180px !important; } } diff --git a/primo-explore/custom/src/css/custom_slsp_epfl_part.css b/primo-explore/custom/src/css/custom_slsp_epfl_part.css index f25140b..a244ca9 100644 --- a/primo-explore/custom/src/css/custom_slsp_epfl_part.css +++ b/primo-explore/custom/src/css/custom_slsp_epfl_part.css @@ -1,91 +1,76 @@ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** Start of the Local Package CSS ************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /******************************************************************************/ /********************** Primary colour ****************************************/ /******************************************************************************/ /*****************This two entries are the background of the primary color*******************/ -.prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-search-bar, prm-newspapers-search-bar, -prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon, -md-tabs md-ink-bar, md-radio-button.md-checked .md-on, button.switch-to-simple, .md-button.button-confirm, +.prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-search-bar, prm-newspapers-search-bar, prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon, md-tabs md-ink-bar, md-radio-button.md-checked .md-on, button.switch-to-simple, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-location-items md-list prm-service-button .md-button.button-as-link { background-color: #ff0000 !important; } @media (max-width: 599px) { prm-topbar .top-nav-bar { border-color: #ff0000 !important; } } - - -/*.search-actions button{ - background-color: #fff !important; - color: #222; -} */ - - /*****************This entry is the mouse over background of the links and buttons*******************/ -md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-icon.ps_icon:hover, a.ps_link:hover, a.ps_link.legal:hover, span.legal a:hover, button.switch-to-advanced:hover, -button.switch-to-simple:hover, .md-button.button-confirm:hover, .md-button.button-as-link:hover:not([disabled]) { +md-card.prm-primary-bg.psfooter > md-card-content a:hover, md-icon.ps_icon:hover, a.ps_link:hover, a.ps_link.legal:hover, span.legal a:hover, button.switch-to-advanced:hover, button.switch-to-simple:hover, .md-button.button-confirm:hover, .md-button.button-as-link:hover:not([disabled]) { background-color: #ae0010 !important; } - /*****************This two entries are the font color of the primary color*******************/ .prm-primary-bg, prm-atoz-search-bar, prm-browse-search-bar, prm-collection-gallery-header .collection-header-inner, prm-newspapers-search-bar, -prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon:after, -.md-button.switch-to-advanced, button.switch-to-simple, span.legal, span.legal > a, a.ps_link.legal, .ps_icon, md-card.prm-primary-bg.psfooter > md-card-content a, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-request-services .md-button.button-as-link:hover:not([disabled]), -prm-service-button .md-button.button-as-link:hover:not([disabled]), prm-location-items md-list prm-service-button .md-button.button-as-link { +prm-spinner.overlay-cover.light-on-dark:after, prm-tags-search-bar, prm-tree-nav prm-spinner .diamond, .prm-primary-bg, md-checkbox.md-checked .md-icon:after, .md-button.switch-to-advanced, button.switch-to-simple, span.legal, span.legal > a, a.ps_link.legal, .ps_icon, md-card.prm-primary-bg.psfooter > md-card-content a, .md-button.button-confirm, prm-request-services .md-button.button-as-link, prm-request-services .md-button.button-as-link:hover:not([disabled]), prm-service-button .md-button.button-as-link:hover:not([disabled]), prm-location-items md-list prm-service-button .md-button.button-as-link { color: #fff !important; } - button.switch-to-advanced.zero-margin.button-with-icon.md-button.md-primoExplore-theme.md-ink-ripple { border-color: #c1c1c1 !important; } /*****************selection color of the primary color*****************/ .prm-primary-bg ::selection { background: #ff0000; } /******************************************************************************/ /********************** Secondary colour **************************************/ /******************************************************************************/ /*****************This two entries are the background of the secondary color*******************/ .bar.alert-bar, .classic-input .search-scope, .prm-alert-bg { background-color: #ffcccc !important; } .text-highlight, mark, prm-location-items > md-list > md-list-item > div > div > div > div > prm-service-button > button { box-shadow: inset 0 -0.15em 0 0 #ff0000; } /*****************This entry is the mouse over background of the links and buttons (secondary-color)*******************/ /*.bar prm-authentication .md-button:hover:not([disabled]),*/ div.alert-bar .md-button:hover:not([disabled]), slsp-edit-personal-details-component a.bar.alert-bar:hover { background-color: #ffcccc !important; } /*****************This entry is the font color of the secondary color*******************/ .bar.alert-bar, .classic-input .search-scope, .prm-alert-bg, .bar prm-authentication .md-button, button.dismiss-alert-button, div.courier-info > span a { color: #111111 !important; } /*****************selection color of the secondary color**********************************/ .bar.alert-bar ::selection { background: #ff0000; } diff --git a/primo-explore/custom/src/js/custom.js b/primo-explore/custom/src/js/custom.js index d31592e..2a0f9d0 100644 --- a/primo-explore/custom/src/js/custom.js +++ b/primo-explore/custom/src/js/custom.js @@ -1,2 +1,2 @@ -!function n(i,l,o){function s(t,e){if(!l[t]){if(!i[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(a)return a(t,!0);throw(r=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",r}r=l[t]={exports:{}},i[t][0].call(r.exports,function(e){return s(i[t][1][e]||e)},r,r.exports,n,i,l,o)}return l[t].exports}for(var a="function"==typeof require&&require,e=0;e\n \n \n '}},{}],2:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./collection_link.controller.js"),template:'
\r\n {{ \'seriesLink\' | customTranslate }} {{$ctrl.collection_title}}
\r\n
\r\n'}},{"./collection_link.controller.js":3}],3:[function(e,t,r){"use strict";t.exports=["$filter","$http",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var a=this;a.get_collection_url=function(){if(a.hasOwnProperty("collection_url"))return a.collection_url;try{var e=a.parentCtrl.result.pnx.display.series;if(!Array.isArray(e))throw new Error("Notice without series")}catch(e){return null}var t=!0,r=!1,n=void 0;try{for(var i,l=e[Symbol.iterator]();!(t=(i=l.next()).done);t=!0){var o,s=i.value.match(/\$\$Q(.*)\$\$Z(99\d{16})/);if(s)return o=a.parentCtrl.$stateParams.lang?"&lang="+a.parentCtrl.$stateParams.lang:"",a.collection_title=s[1],a.collection_url=window.location.origin+"/discovery/fulldisplay?vid="+a.parentCtrl.$stateParams.vid+"&tab="+a.parentCtrl.$stateParams.tab+"&docid=alma"+s[2]+"&context="+a.parentCtrl.$stateParams.context+o,a.collection_url}}catch(e){r=!0,n=e}finally{try{!t&&l.return&&l.return()}finally{if(r)throw n}}}}]},{}],4:[function(e,t,r){"use strict";var n=angular.module("briefviewModule",["angularLoad"]);n.component("prmSearchResultAvailabilityLineAfter",e("./availabilityline.component.js")),n.component("prmPdfArticleLink",e("./pdf_article_link.component.js")),n.component("prmPublisherLink",e("./publisher_link.component.js")),n.component("prmCollectionLink",e("./collection_link.component.js"))},{"./availabilityline.component.js":1,"./collection_link.component.js":2,"./pdf_article_link.component.js":5,"./publisher_link.component.js":7}],5:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./pdf_article_link.controller.js"),template:'
\r\n {{ \'pdfAccess\' | customTranslate }}\r\n
\r\n'}},{"./pdf_article_link.controller.js":6}],6:[function(e,t,r){"use strict";t.exports=["$filter","$http","slspIllSigninOrderLoggedOutService",function(e,t,r){this.parentCtrl=this.afterCtrl.parentCtrl;var s=this;function a(e){e=e.match(/10\.\d{4,9}\/[-._;()/:A-Z0-9]+/i);if(e)return e[0]}s.is_epfl_IP=r.isEpflIP(),s.get_doi=function(){if(s.parentCtrl.hasOwnProperty("result")&&s.parentCtrl.result.hasOwnProperty("pnx")){var e=s.parentCtrl.result.pnx;if("addata"in e&&"doi"in e.addata&&a(e.addata.doi[0])&&e.control.hasOwnProperty("recordtype")&&"article"===e.control.recordtype[0])return a(e.addata.doi[0]);if("display"in e&&"identifier"in e.display){var t=!0,r=!1,n=void 0;try{for(var i,l=e.display.identifier[Symbol.iterator]();!(t=(i=l.next()).done);t=!0){var o=i.value;if(a(o))return a(o)}}catch(e){r=!0,n=e}finally{try{!t&&l.return&&l.return()}finally{if(r)throw n}}}}},s.check_doi=function(){return s.hasOwnProperty("doi")||s.parentCtrl.hasOwnProperty("result")&&s.parentCtrl.result.hasOwnProperty("pnx")&&(s.get_doi()?(s.doi=s.get_doi(),s.set_url_pdf()):s.doi=null),!!s.hasOwnProperty("pdf_link")},s.set_url_pdf=function(){var e="https://public-api.thirdiron.com/public/v1/libraries/183/articles/doi/"+s.doi+"?access_token=adc54dee-c6a6-4b99-a917-2ed400f1f2d3";t({method:"GET",url:e}).then(function(e){if(200===e.status){try{var t=e.data.data.fullTextFile}catch(e){t=""}0\r\n
\r\n\r\n'}},{"./publisher_link.controller.js":8}],8:[function(e,t,r){"use strict";var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.exports=["$filter","$http","slspIllSigninOrderLoggedOutService","$element",function(e,r,t,n){this.parentCtrl=this.afterCtrl.parentCtrl;var i=this;i.is_epfl_IP=t.isEpflIP(),i.is_pc=function(){return"PC"===i.parentCtrl.result.context},i.is_ebook=function(){return i.parentCtrl.result.pnx.control.hasOwnProperty("recordtype")?-1!==i.parentCtrl.result.pnx.control.recordtype[0].indexOf("book"):!!i.parentCtrl.result.pnx.display.hasOwnProperty("type")&&-1!==i.parentCtrl.result.pnx.display.type[0].toLowerCase().indexOf("book")},i.is_article=function(){return!!i.parentCtrl.result.pnx.control.hasOwnProperty("recordtype")&&-1!==i.parentCtrl.result.pnx.control.recordtype[0].indexOf("article")},i.is_data_available=function(){return i.parentCtrl.result&&i.parentCtrl.result.pnx&&i.parentCtrl.result.delivery},i.is_fulltext=function(){var e=i.parentCtrl.result.delivery.availability;return-1!==e.indexOf("fulltext")||-1!==e.indexOf("not_restricted")},i.suppress_original_link=function(){n[0].parentElement.parentElement.children[0].remove()},i.is_publisher_url=function(){var e,t;return!i.checked&&i.is_data_available()&&i.is_epfl_IP&&(i.is_ebook()||i.is_article())&&(!i.parentCtrl.isFullView&&i.is_fulltext()&&i.is_pc()?(i.checked=!0,e=window.location.origin+"/primaws/rest/pub/pcDelivery/"+i.parentCtrl.result.pnx.control.recordid[0]+"?vid="+i.parentCtrl.$stateParams.vid,r.post(e,{doc:i.parentCtrl.result}).then(function(e){i.publisher_url=e.data.delivery.electronicServices[0].serviceUrl,i.suppress_original_link()})):i.parentCtrl.isFullView||!i.is_fulltext()||i.is_pc()?i.parentCtrl.isFullView&&i.parentCtrl.result.delivery.GetIt1&&"object"===l(i.parentCtrl.result.delivery.GetIt1)?(i.checked=!0,-1!==(t=i.parentCtrl.result.delivery.availability.indexOf("not_restricted"))&&(i.publisher_url=i.parentCtrl.result.delivery.GetIt1[0].links[t].link,i.suppress_original_link())):i.is_fulltext()||(i.checked=!0):(i.checked=!0,t=window.location.origin+"/primaws/rest/pub/edelivery/"+i.parentCtrl.result.pnx.control.recordid[0]+"?vid="+i.parentCtrl.$stateParams.vid,r.post(t,{doc:i.parentCtrl.result}).then(function(e){i.publisher_url=e.data.electronicServices[0].serviceUrl,i.suppress_original_link()}))),i.hasOwnProperty("publisher_url")}}]},{}],9:[function(e,t,r){"use strict";angular.module("customTranslateFilter",[]).filter("customTranslate",["$translate",function(r){return function(e){var t={costWarningScan:{fr:'Service payant: les collaborateurs et les étudiants de l’EPFL peuvent bénéficier de ce service gratuitement, en utilisant le formulaire:',en:'Fee-based service: EPFL employees and students can benefit from this service free of charge by using the form:',de:'Kostenpflichtiger Service: Mitarbeitern und Studenten der EPFL steht dieser Dienst über das Fernleihe-Formular gratis zur Verfügung.',it:'Servizio a pagamento: I dipendenti e gli studenti dell\'EPFL possono usufruire gratuitamente di questo servizio utilizzando il modulo:'},costWarningScanEPFL:{fr:"Service gratuit pour les collaborateurs et les étudiants EPFL.",en:"Free of charge for EPFL staff and students.",de:"Service für Mitarbeiter und Studenten der EPFL kostenlos",it:"Servizio gratuito per i dipendenti e gli studenti dell’EPFL."},costWarningNetworkLoan:{fr:"Service gratuit en cas de retrait à la Bibliothèque de l’EPFL.",en:"Free of charge if withdrawal at the EPFL Library.",de:"Service bei Abholung in der EPFL-Bibliothek kostenlos.",it:"Servizio gratuito in caso di ritiro alla Biblioteca dell’EPFL"},costWarningPEB:{fr:"Service gratuit pour les collaborateurs et les étudiants de l’EPFL. Avant de passer une commande d’un document physique via le prêt entre bibliothèques, merci de vous assurer que ce document n'est pas disponible dans d’autres bibliothèques du réseau SLSP dans swisscovery.",en:"Free of charge for EPFL staff and students. Before placing an order for a physical document via the interlibrary loan, please make sure that this document is not available in other SLSP network libraries on swisscovery.",de:"Kostenloser Service für Mitarbeiter und Studenten der EPFL. Bevor Sie ein Medium über die Fernleihe bestellen, vergewissern Sie sich bitte zunächst in swisscovery, dass es nicht in einer anderen Bibliothek des SLSP-Netzwerks verfügbar ist.",it:"Servizio gratuito per i dipendenti e gli studenti dell’EPFL. Prima di ordinare un documento cartaceo tramite il prestito interbibliotecario, assicuratevi che questo documento non sia disponibile in altre biblioteche della rete SLSP in swisscovery."},mainTitle:{fr:"Catalogue BEAST",en:"BEAST discovery tool",de:"BEAST Wissensportal",it:"Catalogo BEAST"},subTitle:{fr:"Le point d'accès à toutes les ressources de la Bibliothèque de l'EPFL",en:"The access portal to all the resources of the EPFL Library",de:"Der Zugangspunkt zu allen Ressourcen der EPFL Bibliothek",it:"Il punto d’accesso a tutte le risorse della Biblioteca dell’EPFL"},switchEduID:{fr:"Modifier vos informations personnelles sur",en:"Change your personal data on",de:"Ändern Sie Ihre persönlichen Daten auf",it:"Modifica i tuoi dati personali sul"},illButton:{fr:"Prêt entre bibliothèques (PEB)",en:"Inter Library Loan (ILL)",de:"Fernleihe",it:"Prestito interbibliotecario"},feedbackLink:{fr:"Signaler un problème d'accès",en:"Report an access problem",de:"Zugriffsproblem melden",it:"Segnalare un problema di accesso"},vpnMSG:{fr:'Les ressources électroniques sont accessibles depuis tous les postes de l’EPFL, et à distance via le VPN EPFL.',en:'Electronic resources are accessible from all EPFL workstations, and remotely via the EPFL VPN.',de:'Elektronische Informationsressourcen sind an allen EPFL-Arbeitsplätzen und per EPFL VPN abrufbar.',it:'Le risorse elettroniche sono accessibili da tutte le postazioni di lavoro dell\'EPFL e a distanza tramite VPN EPFL.'},feedbackLinkMSG:{fr:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",en:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",de:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",it:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored."},pdfAccess:{fr:"Accès direct au pdf",en:"Direct access to the pdf",de:"Direct access to the pdf",it:"Direct access to the pdf"},seriesLink:{fr:"Collection :",en:"Serie:",de:"Serie:",it:"Serie:"}};return["en","fr","it","de"].includes(r.use())?t[e][r.use()]:t[e].fr}}])},{}],10:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},template:'
\n
'}},{}],11:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./epfl_almaviewit.controller.js"),template:'\r\n\r\n\r\n'}},{"./epfl_almaviewit.controller.js":12}],12:[function(e,t,r){"use strict";t.exports=["$filter","slspIllSigninOrderLoggedOutService",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var r,n,i,l,o,s,a,c=this;c.get_txt=function(){return e("customTranslate")("vpnMSG")},c.feedbackLink="",c.is_epfl_IP=!1,c.no_report_link=!1,c.parentCtrl.item.pnx.addata.openaccess&&"true"===c.parentCtrl.item.pnx.addata.openaccess[0]&&(c.no_report_link=!0),c.parentCtrl.item.pnx.addata.oa&&"free_for_read"===c.parentCtrl.item.pnx.addata.oa[0]&&(c.no_report_link=!0),c.no_report_link||(c.is_epfl_IP=t.isEpflIP(),c.user_ip=t.get_ip(),r=c.parentCtrl.item.pnx.control.recordid[0],n="",c.parentCtrl.item.pnx.display.title&&0ISBN")||-1ISSN")?s=c.parentCtrl.item.pnx.display.identifier.join(", ").replace(/<\/b>/g,"").replace(//g,""):-1\n

Le réseau NEBIS a pris fin le 7 décembre 2020 pour être remplacé par un nouveau réseau plus vaste : swisscovery

\n ',en:'
\n

The NEBIS network ended on December 7, 2020. It has been replaced by swisscovery: a new and wider network.

\n
'},begin:"2020-01-04T00:00:00Z",end:"2023-03-31T12:00:00Z"}},{}],15:[function(e,t,r){"use strict";var n=angular.module("homepageModule",["angularLoad"]);n.component("prmSearchBarAfter",e("./searchbar.component.js")),n.component("prmMainMenuAfter",e("./mainmenu.component.js")),n.component("prmTopbarAfter",e("./topbar.component.js"))},{"./mainmenu.component.js":16,"./searchbar.component.js":17,"./topbar.component.js":18}],16:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},controllerAs:"ctrl",controller:[function(){var t=this;this.$doCheck=function(){if("complete"===document.readyState&&!t.modified){try{var e=document.querySelector("[translate='mainmenu.label.db']").parentElement}catch(e){t.modified=!1}e&&(e.removeAttribute("target"),e.setAttribute("aria-label","Databases"),t.modified=!0)}}}]}},{}],17:[function(n,e,t){"use strict";e.exports={bindings:{parentCtrl:"<"},template:'
',controllerAs:"ctrl",controller:["$translate",function(t){var e,r=this;r.alert=n("./alert_message.js"),!(r.active=!1)===r.alert.active&&(e=Date.now(),new Date(r.alert.begin)\n

{{ 'mainTitle' | customTranslate }}

\n

{{ 'subTitle' | customTranslate }}

\n "}},{}],19:[function(e,t,r){"use strict";e("./filters/custom_translate.filter.js"),e("./slsp/slsp-courier-info"),e("./slsp/slsp-http-intercept-requests"),e("./slsp/slsp-ill-signin-order-alert"),e("./slsp/slsp-edit-personal-details"),e("./slsp/prm-locations-after"),e("./slsp/prm-location-items-after"),e("./slsp/slsp-archives-htgi"),e("./slsp/slsp-archives-viewit"),e("./slsp/prm-user-area-expandable-after"),e("./briefview"),e("./homepage"),e("./fullView");angular.module("viewCustom",["angularLoad","customTranslateFilter","slspHttpInterceptRequests","epflCourierInfo","slspUserAreaExpandableAfterModule","slspIllSigninOrderAlert","epflEditPersonalDetails","ethLocationsAfterModule","ethLocationItemsAfterModule","slspArchivesHtgi","slspArchivesViewit","briefviewModule","homepageModule","fullviewModule"])},{"./briefview":4,"./filters/custom_translate.filter.js":9,"./fullView":13,"./homepage":15,"./slsp/prm-location-items-after":20,"./slsp/prm-locations-after":25,"./slsp/prm-user-area-expandable-after":33,"./slsp/slsp-archives-htgi":34,"./slsp/slsp-archives-viewit":36,"./slsp/slsp-courier-info":38,"./slsp/slsp-edit-personal-details":40,"./slsp/slsp-http-intercept-requests":42,"./slsp/slsp-ill-signin-order-alert":44}],20:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationItemsAfterModule=void 0;var n=e("./eth-location-items-filter/eth-location-items-filter.module"),e=e("./slsp-i-button/epfl-i-button.module"),r=r.ethLocationItemsAfterModule=angular.module("ethLocationItemsAfterModule",[]).component("prmLocationItemsAfter",{bindings:{parentCtrl:"<"},template:''});r.requires.push(n.ethLocationItemsFilterModule.name),r.requires.push(e.epflIButtonModule.name)},{"./eth-location-items-filter/eth-location-items-filter.module":22,"./slsp-i-button/epfl-i-button.module":24}],21:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r\r\n \r\n {{ $ctrl.getLibrary() }}\r\n \r\n\r\n'})},{"./epfl-i-button.controller":23}],25:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationsAfterModule=void 0;e=e("./eth-locations-filter/eth-locations-filter.module");(r.ethLocationsAfterModule=angular.module("ethLocationsAfterModule",[]).component("prmLocationsAfter",{bindings:{parentCtrl:"<"},template:''})).requires.push(e.ethLocationsFilterModule.name)},{"./eth-locations-filter/eth-locations-filter.module":27}],26:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r{{lang}}'})},{"./bcu-lang-switch.controller":28}],30:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r'});r.requires.push(n.bcuLangSwitchModule.name),r.requires.push(e.slspIllSigninOrderLoggedOutModule.name)},{"./bcu-lang-switch/bcu-lang-switch.module":29,"./slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module":31}],34:[function(e,t,r){"use strict";e("./js/slsp-archives-htgi.module.js"),t.exports="slspArchivesHtgi"},{"./js/slsp-archives-htgi.module.js":35}],35:[function(e,t,r){"use strict";angular.module("slspArchivesHtgi",[]).controller("ArchivesHtgiController",[function(){this.$onInit=function(){try{if(!this.parentCtrl.item.pnx.display.source||0===this.parentCtrl.item.pnx.display.source.length)return;var e,t;this.source=this.parentCtrl.item.pnx.display.source[0],"ETH_MaxFrischArchiv"!==this.source&&"ETH_ThomasMannArchiv"!==this.source||(document.getElementById("full-view-container").classList.add("slsp-archives-hide"),t=(e=this.parentCtrl.item.pnx.control.originalsourceid[0]).substring(e.lastIndexOf(":")+1),"ETH_ThomasMannArchiv"===this.source?this.url="http://www.online.tma.ethz.ch/home/#/content/"+t:"ETH_MaxFrischArchiv"===this.source&&(this.url="http://maxfrischarchiv-online.ethz.ch/home/#/content/"+t))}catch(e){console.error("***SLSP*** an error occured: ArchivesHtgiController\n\n"),console.error(e.message)}}}]).component("almaHtgiSvcAfter",{bindings:{parentCtrl:"<"},controller:"ArchivesHtgiController",template:'\n
\n \n \n {{(\'customized.archives.\' + $ctrl.source + \'.linktext\' | translate)}}\n {{$ctrl.label}}\n
\n \n
\n
\n
\n
\n
\n No request possible. The digitized item can be consulted in the Thomas Mann Archives reading room upon advance registration (\n \n Contact\n \n \n ).\n
\n
\n
\n
\n Informationen zu Bestellung und Benutzung siehe\n \n Bedienungshinweise\n \n \n .\n
\n
\n
\n '})},{}],36:[function(e,t,r){"use strict";e("./js/slsp-archives-viewit.module.js"),t.exports="slspArchivesViewit"},{"./js/slsp-archives-viewit.module.js":37}],37:[function(e,t,r){"use strict";angular.module("slspArchivesViewit",[]).component("prmEthSearchResultAvailabilityLineAfter",{bindings:{afterCtrl:"<"},controller:"ArchivesAvailabilityLineController"}).component("prmEthAlmaViewitAfter",{bindings:{afterCtrl:"<"},controller:"ArchivesViewitController",template:'\n
\n \n \n {{(\'customized.archives.\' + $ctrl.source + \'.linktext\' | translate)}}\n {{$ctrl.label}}\n
\n \n
\n
\n
\n
\n
\n Informationen zu Bestellung und Benutzung siehe\n \n Bedienungshinweise\n \n \n .\n
\n
\n
\n '}).controller("ArchivesViewitController",["$translate",function(r){this.parentCtrl=this.afterCtrl.parentCtrl,this.$onInit=function(){try{if(!this.parentCtrl.item.pnx.display.source||0===this.parentCtrl.item.pnx.display.source.length)return;if(this.source=this.parentCtrl.item.pnx.display.source[0],"ETH_Hochschularchiv"===this.source){if(this.parentCtrl.item.delivery.GetIt1&&0

'+l.getFeeAlert()+"

","costWarningScan"==l.typeFeeAlert()&&(e=i("customTranslate")("illButton"),t+='

'+e+"

"),t+='

'+l.parentCtrl.$translate.instant("customize.fullview.feesLinkText")+"

",t=angular.element(t)[0],r.children.length==n?r.insertBefore(t,r.children[n-1]):r.children[r.children.length-2].replaceWith(t))},Object.defineProperty(l.parentCtrl,"form",{configurable:!0,get:function(){var e=this.getFilteredForm(["label","multiLabel"],!1);if(!l.hasOwnProperty("pickupLocationsListOrdered"))for(var t=0;t":n.grpLabelB()?e+=''+n.parentCtrl.$translate.instant("customized.slsp.details")+"":n.getPatronGrp&&(e+='\n \n \n \n \n \n \n '+n.parentCtrl.$translate.instant("customized.personal.details")+'\n \n \n \n \n \n \n \n \n \n '+n.parentCtrl.$translate.instant("customized.libcard.number")+"\n \n "),e+="";var t=angular.element(e)[0],e=r[0].parentElement.children[1].children[0];e.insertBefore(t,e.children[1])},n.persInfoNotAv=function(){n.test+=1,n.test<10&&setTimeout(function(){return n.testPersonalInfo().then(n.persInfoAv,n.persInfoNotAv)},500)},0===n.test&&n.testPersonalInfo().then(n.persInfoAv,n.persInfoNotAv)}]).component("prmPersonalInfoAfter",{bindings:{parentCtrl:"<"},controller:"EditPersonalDetailsController"})},{}],42:[function(e,t,r){"use strict";e("./js/slsp-http-intercept-requests.module.js"),t.exports="slspHttpInterceptRequests"},{"./js/slsp-http-intercept-requests.module.js":43}],43:[function(e,t,r){"use strict";angular.module("slspHttpInterceptRequests",["ng"]).config(["$httpProvider",function(e){e.interceptors.push(["$q",function(t){return{request:function(e){return e},requestError:function(e){return t.reject(e)},responseError:function(e){return t.reject(e)},response:function(e){try{if(/primaws\/rest\/priv\/myaccount\/requests/.test(e.config.url)){var t=angular.element(document.querySelector("primo-explore")).injector().get("$rootScope").$$childHead.$ctrl.userSessionManagerService.getUserLanguage()||window.appConfig["primo-view"]["attributes-map"].interfaceLanguage,r={en:["in transit","in process","on hold shelf"],de:["transfer","in bearbeitung","bereitgestellt"],fr:["en cours de transfert","en cours","sur le rayon des réservations"],it:["in transito","in processo","scaffale prenotazioni"]};if(!Object.keys(r).includes(t))throw"No mapping found for "+t;var n=RegExp(r[t].map(function(e){return e.toLowerCase()}).join("|"));200==e.status&&"ok"==e.data.status&&e.data.data.holds.hold.map(function(e){n.test(e.holdstatus.toLowerCase())&&(e.cancel="N")})}}catch(e){console.log(e)}return e}}}])}])},{}],44:[function(e,t,r){"use strict";e("./js/slsp-ill-signin-order-alert.module.js"),t.exports="slspIllSigninOrderAlert"},{"./js/slsp-ill-signin-order-alert.module.js":45}],45:[function(e,t,r){"use strict";angular.module("slspIllSigninOrderAlert",[]).controller("AlertMsgController",["$scope",function(e){var r=this;r.getAlert=function(){var e=r.parentCtrl.almaHowToGetitService.reqAlert._htmlMsg,t=angular.element(document.querySelector("primo-explore"));return 0{{$ctrl.getAlert()}}'})},{}]},{},[19]); +!function n(i,l,o){function s(t,e){if(!l[t]){if(!i[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(a)return a(t,!0);throw(r=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",r}r=l[t]={exports:{}},i[t][0].call(r.exports,function(e){return s(i[t][1][e]||e)},r,r.exports,n,i,l,o)}return l[t].exports}for(var a="function"==typeof require&&require,e=0;e\n \n \n '}},{}],2:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./collection_link.controller.js"),template:'\r\n'}},{"./collection_link.controller.js":3}],3:[function(e,t,r){"use strict";t.exports=["$filter","$http",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var a=this;a.get_collection_url=function(){if(a.hasOwnProperty("collection_url"))return a.collection_url;try{var e=a.parentCtrl.result.pnx.display.series;if(!Array.isArray(e))throw new Error("Notice without series")}catch(e){return null}var t=!0,r=!1,n=void 0;try{for(var i,l=e[Symbol.iterator]();!(t=(i=l.next()).done);t=!0){var o,s=i.value.match(/\$\$Q(.*)\$\$Z(99\d{16})/);if(s)return o=a.parentCtrl.$stateParams.lang?"&lang="+a.parentCtrl.$stateParams.lang:"",a.collection_title=s[1],a.collection_url=window.location.origin+"/discovery/fulldisplay?vid="+a.parentCtrl.$stateParams.vid+"&tab="+a.parentCtrl.$stateParams.tab+"&docid=alma"+s[2]+"&context="+a.parentCtrl.$stateParams.context+o,a.collection_url}}catch(e){r=!0,n=e}finally{try{!t&&l.return&&l.return()}finally{if(r)throw n}}}}]},{}],4:[function(e,t,r){"use strict";var n=angular.module("briefviewModule",["angularLoad"]);n.component("prmSearchResultAvailabilityLineAfter",e("./availabilityline.component.js")),n.component("prmPdfArticleLink",e("./pdf_article_link.component.js")),n.component("prmPublisherLink",e("./publisher_link.component.js")),n.component("prmCollectionLink",e("./collection_link.component.js"))},{"./availabilityline.component.js":1,"./collection_link.component.js":2,"./pdf_article_link.component.js":5,"./publisher_link.component.js":7}],5:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./pdf_article_link.controller.js"),template:'\r\n'}},{"./pdf_article_link.controller.js":6}],6:[function(e,t,r){"use strict";t.exports=["$filter","$http","slspIllSigninOrderLoggedOutService",function(e,t,r){this.parentCtrl=this.afterCtrl.parentCtrl;var s=this;function a(e){e=e.match(/10\.\d{4,9}\/[-._;()/:A-Z0-9]+/i);if(e)return e[0]}s.is_epfl_IP=r.isEpflIP(),s.get_doi=function(){if(s.parentCtrl.hasOwnProperty("result")&&s.parentCtrl.result.hasOwnProperty("pnx")){var e=s.parentCtrl.result.pnx;if("addata"in e&&"doi"in e.addata&&a(e.addata.doi[0])&&e.control.hasOwnProperty("recordtype")&&"article"===e.control.recordtype[0])return a(e.addata.doi[0]);if("display"in e&&"identifier"in e.display){var t=!0,r=!1,n=void 0;try{for(var i,l=e.display.identifier[Symbol.iterator]();!(t=(i=l.next()).done);t=!0){var o=i.value;if(a(o))return a(o)}}catch(e){r=!0,n=e}finally{try{!t&&l.return&&l.return()}finally{if(r)throw n}}}}},s.check_doi=function(){return s.hasOwnProperty("doi")||s.parentCtrl.hasOwnProperty("result")&&s.parentCtrl.result.hasOwnProperty("pnx")&&(s.get_doi()?(s.doi=s.get_doi(),s.set_url_pdf()):s.doi=null),!!s.hasOwnProperty("pdf_link")},s.set_url_pdf=function(){var e="https://public-api.thirdiron.com/public/v1/libraries/183/articles/doi/"+s.doi+"?access_token=adc54dee-c6a6-4b99-a917-2ed400f1f2d3";t({method:"GET",url:e}).then(function(e){if(200===e.status){try{var t=e.data.data.fullTextFile}catch(e){t=""}0\r\n
\r\n\r\n'}},{"./publisher_link.controller.js":8}],8:[function(e,t,r){"use strict";var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.exports=["$filter","$http","slspIllSigninOrderLoggedOutService","$element",function(e,r,t,n){this.parentCtrl=this.afterCtrl.parentCtrl;var i=this;i.is_epfl_IP=t.isEpflIP(),i.is_pc=function(){return"PC"===i.parentCtrl.result.context},i.is_ebook=function(){return i.parentCtrl.result.pnx.control.hasOwnProperty("recordtype")?-1!==i.parentCtrl.result.pnx.control.recordtype[0].indexOf("book"):!!i.parentCtrl.result.pnx.display.hasOwnProperty("type")&&-1!==i.parentCtrl.result.pnx.display.type[0].toLowerCase().indexOf("book")},i.is_article=function(){return!!i.parentCtrl.result.pnx.control.hasOwnProperty("recordtype")&&-1!==i.parentCtrl.result.pnx.control.recordtype[0].indexOf("article")},i.is_data_available=function(){return i.parentCtrl.result&&i.parentCtrl.result.pnx&&i.parentCtrl.result.delivery},i.is_fulltext=function(){var e=i.parentCtrl.result.delivery.availability;return-1!==e.indexOf("fulltext")||-1!==e.indexOf("not_restricted")},i.suppress_original_link=function(){n[0].parentElement.parentElement.children[0].remove()},i.is_publisher_url=function(){var e,t;return!i.checked&&i.is_data_available()&&i.is_epfl_IP&&(i.is_ebook()||i.is_article())&&(!i.parentCtrl.isFullView&&i.is_fulltext()&&i.is_pc()?(i.checked=!0,e=window.location.origin+"/primaws/rest/pub/pcDelivery/"+i.parentCtrl.result.pnx.control.recordid[0]+"?vid="+i.parentCtrl.$stateParams.vid,r.post(e,{doc:i.parentCtrl.result}).then(function(e){i.publisher_url=e.data.delivery.electronicServices[0].serviceUrl,i.suppress_original_link()})):i.parentCtrl.isFullView||!i.is_fulltext()||i.is_pc()?i.parentCtrl.isFullView&&i.parentCtrl.result.delivery.GetIt1&&"object"===l(i.parentCtrl.result.delivery.GetIt1)?(i.checked=!0,-1!==(t=i.parentCtrl.result.delivery.availability.indexOf("not_restricted"))&&(i.publisher_url=i.parentCtrl.result.delivery.GetIt1[0].links[t].link,i.suppress_original_link())):i.is_fulltext()||(i.checked=!0):(i.checked=!0,t=window.location.origin+"/primaws/rest/pub/edelivery/"+i.parentCtrl.result.pnx.control.recordid[0]+"?vid="+i.parentCtrl.$stateParams.vid,r.post(t,{doc:i.parentCtrl.result}).then(function(e){i.publisher_url=e.data.electronicServices[0].serviceUrl,i.suppress_original_link()}))),i.hasOwnProperty("publisher_url")}}]},{}],9:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.checkUserModule=void 0;e=e("./check_user.service");r.checkUserModule=angular.module("checkUserModule",[]).factory("checkUserService",e.checkUserService)},{"./check_user.service":10}],10:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.checkUserService=["jwtHelper",function(t){function r(){try{if(!sessionStorage)return console.error("***EPFL*** no session storage"),null;var e=sessionStorage.getItem("primoExploreJwt");return e?t.decodeToken(e):null}catch(e){console.error("**EPFL*** an error occured: checkUserService.getDecodedToken:"),console.error(e.message)}}return{isGuest:function(){try{var e=r();return e?!("GUEST"!==e.userGroup?e.userName:""):null}catch(e){console.error("***EPFL*** une erreur est arrivée: checkUserService.isGuest:"),console.error(e.message)}},getDecodedToken:r,isEpflIP:function(){var e=sessionStorage.getItem("primoExploreJwt");if(e){e=t.decodeToken(e).userIp;if(e){e=e.match(/128\.17([89])\.(\d{1,3})\./);if(e&&("8"==e[1]||128<=parseInt(e[2])))return!0}return!1}}}}]},{}],11:[function(e,t,r){"use strict";e("./check_user.module"),t.exports="checkUserModule"},{"./check_user.module":9}],12:[function(e,t,r){"use strict";angular.module("customTranslateFilter",[]).filter("customTranslate",["$translate",function(r){return function(e){var t={costWarningScan:{fr:'Service payant: les collaborateurs et les étudiants de l’EPFL peuvent bénéficier de ce service gratuitement, en utilisant le formulaire:',en:'Fee-based service: EPFL employees and students can benefit from this service free of charge by using the form:',de:'Kostenpflichtiger Service: Mitarbeitern und Studenten der EPFL steht dieser Dienst über das Fernleihe-Formular gratis zur Verfügung.',it:'Servizio a pagamento: I dipendenti e gli studenti dell\'EPFL possono usufruire gratuitamente di questo servizio utilizzando il modulo:'},costWarningScanEPFL:{fr:"Service gratuit pour les collaborateurs et les étudiants EPFL.",en:"Free of charge for EPFL staff and students.",de:"Service für Mitarbeiter und Studenten der EPFL kostenlos",it:"Servizio gratuito per i dipendenti e gli studenti dell’EPFL."},costWarningNetworkLoan:{fr:"Service gratuit en cas de retrait à la Bibliothèque de l’EPFL.",en:"Free of charge if withdrawal at the EPFL Library.",de:"Service bei Abholung in der EPFL-Bibliothek kostenlos.",it:"Servizio gratuito in caso di ritiro alla Biblioteca dell’EPFL"},costWarningPEB:{fr:"Service gratuit pour les collaborateurs et les étudiants de l’EPFL. Avant de passer une commande d’un document physique via le prêt entre bibliothèques, merci de vous assurer que ce document n'est pas disponible dans d’autres bibliothèques du réseau SLSP dans swisscovery.",en:"Free of charge for EPFL staff and students. Before placing an order for a physical document via the interlibrary loan, please make sure that this document is not available in other SLSP network libraries on swisscovery.",de:"Kostenloser Service für Mitarbeiter und Studenten der EPFL. Bevor Sie ein Medium über die Fernleihe bestellen, vergewissern Sie sich bitte zunächst in swisscovery, dass es nicht in einer anderen Bibliothek des SLSP-Netzwerks verfügbar ist.",it:"Servizio gratuito per i dipendenti e gli studenti dell’EPFL. Prima di ordinare un documento cartaceo tramite il prestito interbibliotecario, assicuratevi che questo documento non sia disponibile in altre biblioteche della rete SLSP in swisscovery."},mainTitle:{fr:"Catalogue BEAST",en:"BEAST discovery tool",de:"BEAST Wissensportal",it:"Catalogo BEAST"},subTitle:{fr:"Le point d'accès à toutes les ressources de la Bibliothèque de l'EPFL",en:"The access portal to all the resources of the EPFL Library",de:"Der Zugangspunkt zu allen Ressourcen der EPFL Bibliothek",it:"Il punto d’accesso a tutte le risorse della Biblioteca dell’EPFL"},switchEduID:{fr:"Modifier vos informations personnelles sur",en:"Change your personal data on",de:"Ändern Sie Ihre persönlichen Daten auf",it:"Modifica i tuoi dati personali sul"},illButton:{fr:"Prêt entre bibliothèques (PEB)",en:"Inter Library Loan (ILL)",de:"Fernleihe",it:"Prestito interbibliotecario"},feedbackLink:{fr:"Signaler un problème d'accès",en:"Report an access problem",de:"Zugriffsproblem melden",it:"Segnalare un problema di accesso"},vpnMSG:{fr:'Les ressources électroniques sont accessibles depuis tous les postes de l’EPFL, et à distance via le VPN EPFL.',en:'Electronic resources are accessible from all EPFL workstations, and remotely via the EPFL VPN.',de:'Elektronische Informationsressourcen sind an allen EPFL-Arbeitsplätzen und per EPFL VPN abrufbar.',it:'Le risorse elettroniche sono accessibili da tutte le postazioni di lavoro dell\'EPFL e a distanza tramite VPN EPFL.'},feedbackLinkMSG:{fr:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",en:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",de:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.",it:"I have a problem accessing the electronic resource below. Please let me know when the access will be restored."},pdfAccess:{fr:"Accès direct au pdf",en:"Direct access to the pdf",de:"Direct access to the pdf",it:"Direct access to the pdf"},seriesLink:{fr:"Collection :",en:"Serie:",de:"Serie:",it:"Serie:"}};return["en","fr","it","de"].includes(r.use())?t[e][r.use()]:t[e].fr}}])},{}],13:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},template:'
\n
'}},{}],14:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./epfl_almaviewit.controller.js"),template:'\r\n\r\n\r\n'}},{"./epfl_almaviewit.controller.js":15}],15:[function(e,t,r){"use strict";t.exports=["$filter","slspIllSigninOrderLoggedOutService",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var r,n,i,l,o,s,a,c=this;c.get_txt=function(){return e("customTranslate")("vpnMSG")},c.feedbackLink="",c.is_epfl_IP=!1,c.no_report_link=!1,c.parentCtrl.item.pnx.addata.openaccess&&"true"===c.parentCtrl.item.pnx.addata.openaccess[0]&&(c.no_report_link=!0),c.parentCtrl.item.pnx.addata.oa&&"free_for_read"===c.parentCtrl.item.pnx.addata.oa[0]&&(c.no_report_link=!0),c.no_report_link||(c.is_epfl_IP=t.isEpflIP(),c.user_ip=t.get_ip(),r=c.parentCtrl.item.pnx.control.recordid[0],n="",c.parentCtrl.item.pnx.display.title&&0ISBN")||-1ISSN")?s=c.parentCtrl.item.pnx.display.identifier.join(", ").replace(/<\/b>/g,"").replace(//g,""):-1\n

Le réseau NEBIS a pris fin le 7 décembre 2020 pour être remplacé par un nouveau réseau plus vaste : swisscovery

\n ',en:'
\n

The NEBIS network ended on December 7, 2020. It has been replaced by swisscovery: a new and wider network.

\n
'},begin:"2020-01-04T00:00:00Z",end:"2023-03-31T12:00:00Z"}},{}],18:[function(e,t,r){"use strict";var n=angular.module("homepageModule",["angularLoad"]);n.component("prmSearchBarAfter",e("./searchbar.component.js")),n.component("prmMainMenuAfter",e("./mainmenu.component.js")),n.component("prmTopbarAfter",e("./topbar.component.js"))},{"./mainmenu.component.js":19,"./searchbar.component.js":20,"./topbar.component.js":21}],19:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},controllerAs:"ctrl",controller:[function(){var t=this;this.$doCheck=function(){if("complete"===document.readyState&&!t.modified){try{var e=document.querySelector("[translate='mainmenu.label.db']").parentElement}catch(e){t.modified=!1}e&&(e.removeAttribute("target"),e.setAttribute("aria-label","Databases"),t.modified=!0)}}}]}},{}],20:[function(n,e,t){"use strict";e.exports={bindings:{parentCtrl:"<"},template:'
',controllerAs:"ctrl",controller:["$translate",function(t){var e,r=this;r.alert=n("./alert_message.js"),!(r.active=!1)===r.alert.active&&(e=Date.now(),new Date(r.alert.begin)\n

{{ 'mainTitle' | customTranslate }}

\n

{{ 'subTitle' | customTranslate }}

\n "}},{}],22:[function(e,t,r){"use strict";e("./filters/custom_translate.filter.js"),e("./slsp/slsp-courier-info"),e("./slsp/slsp-http-intercept-requests"),e("./slsp/slsp-ill-signin-order-alert"),e("./slsp/slsp-edit-personal-details"),e("./slsp/prm-locations-after"),e("./slsp/prm-location-items-after"),e("./slsp/slsp-archives-htgi"),e("./slsp/slsp-archives-viewit"),e("./slsp/prm-user-area-expandable-after"),e("./briefview"),e("./homepage"),e("./fullView"),e("./factory");angular.module("viewCustom",["angularLoad","customTranslateFilter","slspHttpInterceptRequests","epflCourierInfo","slspUserAreaExpandableAfterModule","slspIllSigninOrderAlert","epflEditPersonalDetails","ethLocationsAfterModule","ethLocationItemsAfterModule","slspArchivesHtgi","slspArchivesViewit","briefviewModule","homepageModule","fullviewModule","checkUserModule"])},{"./briefview":4,"./factory":11,"./filters/custom_translate.filter.js":12,"./fullView":16,"./homepage":18,"./slsp/prm-location-items-after":23,"./slsp/prm-locations-after":28,"./slsp/prm-user-area-expandable-after":36,"./slsp/slsp-archives-htgi":37,"./slsp/slsp-archives-viewit":39,"./slsp/slsp-courier-info":41,"./slsp/slsp-edit-personal-details":43,"./slsp/slsp-http-intercept-requests":45,"./slsp/slsp-ill-signin-order-alert":47}],23:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationItemsAfterModule=void 0;var n=e("./eth-location-items-filter/eth-location-items-filter.module"),e=e("./slsp-i-button/epfl-i-button.module"),r=r.ethLocationItemsAfterModule=angular.module("ethLocationItemsAfterModule",[]).component("prmLocationItemsAfter",{bindings:{parentCtrl:"<"},template:''});r.requires.push(n.ethLocationItemsFilterModule.name),r.requires.push(e.epflIButtonModule.name)},{"./eth-location-items-filter/eth-location-items-filter.module":25,"./slsp-i-button/epfl-i-button.module":27}],24:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r\r\n \r\n {{ $ctrl.getLibrary() }}\r\n \r\n\r\n'})},{"./epfl-i-button.controller":26}],28:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationsAfterModule=void 0;e=e("./eth-locations-filter/eth-locations-filter.module");(r.ethLocationsAfterModule=angular.module("ethLocationsAfterModule",[]).component("prmLocationsAfter",{bindings:{parentCtrl:"<"},template:''})).requires.push(e.ethLocationsFilterModule.name)},{"./eth-locations-filter/eth-locations-filter.module":30}],29:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r{{lang}}'})},{"./bcu-lang-switch.controller":31}],33:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(e,t,r){return t&&i(e.prototype,t),r&&i(e,r),e};function i(e,t){for(var r=0;r'});r.requires.push(n.bcuLangSwitchModule.name),r.requires.push(e.slspIllSigninOrderLoggedOutModule.name)},{"./bcu-lang-switch/bcu-lang-switch.module":32,"./slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module":34}],37:[function(e,t,r){"use strict";e("./js/slsp-archives-htgi.module.js"),t.exports="slspArchivesHtgi"},{"./js/slsp-archives-htgi.module.js":38}],38:[function(e,t,r){"use strict";angular.module("slspArchivesHtgi",[]).controller("ArchivesHtgiController",[function(){this.$onInit=function(){try{if(!this.parentCtrl.item.pnx.display.source||0===this.parentCtrl.item.pnx.display.source.length)return;var e,t;this.source=this.parentCtrl.item.pnx.display.source[0],"ETH_MaxFrischArchiv"!==this.source&&"ETH_ThomasMannArchiv"!==this.source||(document.getElementById("full-view-container").classList.add("slsp-archives-hide"),t=(e=this.parentCtrl.item.pnx.control.originalsourceid[0]).substring(e.lastIndexOf(":")+1),"ETH_ThomasMannArchiv"===this.source?this.url="http://www.online.tma.ethz.ch/home/#/content/"+t:"ETH_MaxFrischArchiv"===this.source&&(this.url="http://maxfrischarchiv-online.ethz.ch/home/#/content/"+t))}catch(e){console.error("***SLSP*** an error occured: ArchivesHtgiController\n\n"),console.error(e.message)}}}]).component("almaHtgiSvcAfter",{bindings:{parentCtrl:"<"},controller:"ArchivesHtgiController",template:'\n
\n \n \n {{(\'customized.archives.\' + $ctrl.source + \'.linktext\' | translate)}}\n {{$ctrl.label}}\n
\n \n
\n
\n
\n
\n
\n No request possible. The digitized item can be consulted in the Thomas Mann Archives reading room upon advance registration (\n \n Contact\n \n \n ).\n
\n
\n
\n
\n Informationen zu Bestellung und Benutzung siehe\n \n Bedienungshinweise\n \n \n .\n
\n
\n
\n '})},{}],39:[function(e,t,r){"use strict";e("./js/slsp-archives-viewit.module.js"),t.exports="slspArchivesViewit"},{"./js/slsp-archives-viewit.module.js":40}],40:[function(e,t,r){"use strict";angular.module("slspArchivesViewit",[]).component("prmEthSearchResultAvailabilityLineAfter",{bindings:{afterCtrl:"<"},controller:"ArchivesAvailabilityLineController"}).component("prmEthAlmaViewitAfter",{bindings:{afterCtrl:"<"},controller:"ArchivesViewitController",template:'\n
\n \n \n {{(\'customized.archives.\' + $ctrl.source + \'.linktext\' | translate)}}\n {{$ctrl.label}}\n
\n \n
\n
\n
\n
\n
\n Informationen zu Bestellung und Benutzung siehe\n \n Bedienungshinweise\n \n \n .\n
\n
\n
\n '}).controller("ArchivesViewitController",["$translate",function(r){this.parentCtrl=this.afterCtrl.parentCtrl,this.$onInit=function(){try{if(!this.parentCtrl.item.pnx.display.source||0===this.parentCtrl.item.pnx.display.source.length)return;if(this.source=this.parentCtrl.item.pnx.display.source[0],"ETH_Hochschularchiv"===this.source){if(this.parentCtrl.item.delivery.GetIt1&&0

'+l.getFeeAlert()+"

","costWarningScan"==l.typeFeeAlert()&&(e=i("customTranslate")("illButton"),t+='

'+e+"

"),t+='

'+l.parentCtrl.$translate.instant("customize.fullview.feesLinkText")+"

",t=angular.element(t)[0],r.children.length==n?r.insertBefore(t,r.children[n-1]):r.children[r.children.length-2].replaceWith(t))},Object.defineProperty(l.parentCtrl,"form",{configurable:!0,get:function(){var e=this.getFilteredForm(["label","multiLabel"],!1);if(!l.hasOwnProperty("pickupLocationsListOrdered"))for(var t=0;t":n.grpLabelB()?e+=''+n.parentCtrl.$translate.instant("customized.slsp.details")+"":n.getPatronGrp&&(e+='\n \n \n \n \n \n \n '+n.parentCtrl.$translate.instant("customized.personal.details")+'\n \n \n \n \n \n \n \n \n \n '+n.parentCtrl.$translate.instant("customized.libcard.number")+"\n \n "),e+="";var t=angular.element(e)[0],e=r[0].parentElement.children[1].children[0];e.insertBefore(t,e.children[1])},n.persInfoNotAv=function(){n.test+=1,n.test<10&&setTimeout(function(){return n.testPersonalInfo().then(n.persInfoAv,n.persInfoNotAv)},500)},0===n.test&&n.testPersonalInfo().then(n.persInfoAv,n.persInfoNotAv)}]).component("prmPersonalInfoAfter",{bindings:{parentCtrl:"<"},controller:"EditPersonalDetailsController"})},{}],45:[function(e,t,r){"use strict";e("./js/slsp-http-intercept-requests.module.js"),t.exports="slspHttpInterceptRequests"},{"./js/slsp-http-intercept-requests.module.js":46}],46:[function(e,t,r){"use strict";angular.module("slspHttpInterceptRequests",["ng"]).config(["$httpProvider",function(e){e.interceptors.push(["$q",function(t){return{request:function(e){return e},requestError:function(e){return t.reject(e)},responseError:function(e){return t.reject(e)},response:function(e){try{if(/primaws\/rest\/priv\/myaccount\/requests/.test(e.config.url)){var t=angular.element(document.querySelector("primo-explore")).injector().get("$rootScope").$$childHead.$ctrl.userSessionManagerService.getUserLanguage()||window.appConfig["primo-view"]["attributes-map"].interfaceLanguage,r={en:["in transit","in process","on hold shelf"],de:["transfer","in bearbeitung","bereitgestellt"],fr:["en cours de transfert","en cours","sur le rayon des réservations"],it:["in transito","in processo","scaffale prenotazioni"]};if(!Object.keys(r).includes(t))throw"No mapping found for "+t;var n=RegExp(r[t].map(function(e){return e.toLowerCase()}).join("|"));200==e.status&&"ok"==e.data.status&&e.data.data.holds.hold.map(function(e){n.test(e.holdstatus.toLowerCase())&&(e.cancel="N")})}}catch(e){console.log(e)}return e}}}])}])},{}],47:[function(e,t,r){"use strict";e("./js/slsp-ill-signin-order-alert.module.js"),t.exports="slspIllSigninOrderAlert"},{"./js/slsp-ill-signin-order-alert.module.js":48}],48:[function(e,t,r){"use strict";angular.module("slspIllSigninOrderAlert",[]).controller("AlertMsgController",["$scope",function(e){var r=this;r.getAlert=function(){var e=r.parentCtrl.almaHowToGetitService.reqAlert._htmlMsg,t=angular.element(document.querySelector("primo-explore"));return 0{{$ctrl.getAlert()}}'})},{}]},{},[22]); //# sourceMappingURL=custom.js.map diff --git a/primo-explore/custom/src/js/custom.js.map b/primo-explore/custom/src/js/custom.js.map index e843f41..720e8e5 100644 --- a/primo-explore/custom/src/js/custom.js.map +++ b/primo-explore/custom/src/js/custom.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","primo-explore/custom/src/js/briefview/availabilityline.component.js","primo-explore/custom/src/js/briefview/collection_link.component.js","primo-explore/custom/src/js/briefview/collection_link.controller.js","primo-explore/custom/src/js/briefview/index.js","primo-explore/custom/src/js/briefview/pdf_article_link.component.js","primo-explore/custom/src/js/briefview/pdf_article_link.controller.js","primo-explore/custom/src/js/briefview/publisher_link.component.js","primo-explore/custom/src/js/briefview/publisher_link.controller.js","primo-explore/custom/src/js/filters/custom_translate.filter.js","primo-explore/custom/src/js/fullView/almaviewit.component.js","primo-explore/custom/src/js/fullView/epfl_almaviewit.component.js","primo-explore/custom/src/js/fullView/epfl_almaviewit.controller.js","primo-explore/custom/src/js/fullView/index.js","primo-explore/custom/src/js/homepage/alert_message.js","primo-explore/custom/src/js/homepage/index.js","primo-explore/custom/src/js/homepage/mainmenu.component.js","primo-explore/custom/src/js/homepage/searchbar.component.js","primo-explore/custom/src/js/homepage/topbar.component.js","primo-explore/custom/src/js/main.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-after.module.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-filter/eth-location-items-filter.controller.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-filter/eth-location-items-filter.module.js","primo-explore/custom/src/js/slsp/prm-location-items-after/slsp-i-button/epfl-i-button.controller.js","primo-explore/custom/src/js/slsp/prm-location-items-after/slsp-i-button/epfl-i-button.module.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-after.module.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-filter/eth-locations-filter.controller.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-filter/eth-locations-filter.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/bcu-lang-switch/bcu-lang-switch.controller.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/bcu-lang-switch/bcu-lang-switch.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.controller.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.service.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-user-area-expandable-after.module.js","primo-explore/custom/src/js/slsp/slsp-archives-htgi/index.js","primo-explore/custom/src/js/slsp/slsp-archives-htgi/js/slsp-archives-htgi.module.js","primo-explore/custom/src/js/slsp/slsp-archives-viewit/index.js","primo-explore/custom/src/js/slsp/slsp-archives-viewit/js/slsp-archives-viewit.module.js","primo-explore/custom/src/js/slsp/slsp-courier-info/index.js","primo-explore/custom/src/js/slsp/slsp-courier-info/js/epfl-courier-info.module.js","primo-explore/custom/src/js/slsp/slsp-edit-personal-details/index.js","primo-explore/custom/src/js/slsp/slsp-edit-personal-details/js/epfl-edit-personal-details.module.js","primo-explore/custom/src/js/slsp/slsp-http-intercept-requests/index.js","primo-explore/custom/src/js/slsp/slsp-http-intercept-requests/js/slsp-http-intercept-requests.module.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-alert/index.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-alert/js/slsp-ill-signin-order-alert.module.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","bindings","parentCtrl","template","afterCtrl","controller","$filter","$http","this","vm","get_collection_url","hasOwnProperty","collection_url","series","result","pnx","display","Array","isArray","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_iterator","Symbol","iterator","next","done","lang","m","value","match","$stateParams","collection_title","window","location","origin","vid","tab","context","err","return","briefview_module","angular","component","slspIllSigninOrderLoggedOutService","parse_doi","txt","is_epfl_IP","isEpflIP","get_doi","addata","doi","control","recordtype","identifier","check_doi","set_url_pdf","url","method","then","response","status","pdf_link","data","fullTextFile","$element","is_pc","is_ebook","indexOf","type","toLowerCase","is_article","is_data_available","delivery","is_fulltext","availability","suppress_original_link","parentElement","children","remove","is_publisher_url","_url","checked","isFullView","recordid","post","doc","publisher_url","electronicServices","serviceUrl","GetIt1","_typeof","rank","links","link","filter","$translate","trad","costWarningScan","fr","en","de","it","costWarningScanEPFL","costWarningNetworkLoan","costWarningPEB","mainTitle","subTitle","switchEduID","illButton","feedbackLink","vpnMSG","feedbackLinkMSG","pdfAccess","seriesLink","includes","use","mmsId","title","creationdate","creator","subject","get_txt","no_report_link","item","openaccess","oa","user_ip","get_ip","join","ident","replace","substring","userAgent","navigator","body","encodeURIComponent","fullview_module","active","begin","end","homepage_module","controllerAs","$doCheck","document","readyState","modified","elem","querySelector","removeAttribute","setAttribute","d_now","alert","Date","now","showTabsAndScopes","$location","absUrl","split","configurationUtil","_ethLocationItemsFilter","_epflIButton","ethLocationItemsAfterModule","requires","push","ethLocationItemsFilterModule","name","epflIButtonModule","ethLocationItemsFilterController","$timeout","$scope","_classCallCheck","_this","$watch","newValue","oldValue","scope","$ctrl","isLocationsFilterVisible","currentItemsArray","console","error","message","$inject","epflIButtonController","getLibrary","currLoc","librarycodeTranslation","biblinkText","biblinkBase","getLibraryUrl","loc","libraryCode","view","_ethLocationsFilter","ethLocationsAfterModule","ethLocationsFilterModule","ethLocationsFilterController","bcuLangSwitchController","$window","$parent","parent","languages","changeLanguage","changeLangService","addLangParamToUrl","i18nService","setLanguage","$state","go","current","reload","_bcuLangSwitch","bcuLangSwitchModule","slspIllSigninOrderLoggedOutController","usrNme","isGuest","element","removeClass","addClass","_slspIllSigninOrderLoggedOut","_slspIllSigninOrderLoggedOut2","slspIllSigninOrderLoggedOutModule","factory","jwtHelper","getDecodedToken","sessionStorage","jwt","getItem","decodeToken","decodedToken","userGroup","userName","userIP","userIp","found","parseInt","slspUserAreaExpandableAfterModule","$onInit","source","sourceid","guid","getElementById","classList","add","originalsourceid","lastIndexOf","l","isLinktoOnline","translation","fullView","text","availabilityLine","changeButton","changeButtonText","button","html","$compile","$rootScope","form","htmlcompiled","formLength","typeFeeAlert","currentTypeFeeAlert","htmlwarning","getFeeAlert","get_peb_button","instant","insertBefore","replaceWith","Object","defineProperty","configurable","get","getFilteredForm","key","options","sort","b","onTopInstitutions","isEPFL","requestService","_service","linkBase","requestHeader","allElements","getElementsByTagName","getAttribute","parentNode","className","click_peb","click","href","sms","$root","$$childHead","userSessionManagerService","getInterfaceLanguage","detailsBaseEdu","detailsBaseReg","exclude","grpA","grpB","getPatronGrp","personalInfoService","personalInfo","patron","patronstatus","registration","institution","patronstatuscode","grpLabelA","labelA","grpLabelB","labelB","test","testPersonalInfo","Promise","persInfoAv","persInfoNotAv","place_to_insert","setTimeout","config","$httpProvider","interceptors","$q","request","_request","requestError","reject","responseError","_response","interfaceLanguage","injector","getUserLanguage","appConfig","list_of_hold_states","keys","list_of_hold_states_regexp","RegExp","map","holds","hold","holdstatus","cancel","log","getAlert","ga","almaHowToGetitService","reqAlert","_htmlMsg","myEl2"],"mappings":"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","file":"custom.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\r\n \r\n \r\n `//availabilitylineHtml,\r\n}\r\n","\"use strict\";\r\n\r\nimport {collectionLinkHtml} from './collection_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./collection_link.controller.js'),\r\n template: collectionLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', function($filter, $http) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Obtenir l'url d'une série.\r\n vm.get_collection_url = function(){\r\n if (vm.hasOwnProperty('collection_url')){\r\n return vm.collection_url;\r\n }\r\n try {\r\n var series = vm.parentCtrl.result.pnx.display.series;\r\n if (!Array.isArray(series)) {throw new Error('Notice without series');}\r\n } catch (e) {\r\n return null;\r\n }\r\n for (const serie of series){\r\n\r\n var m = serie.match(/\\$\\$Q(.*)\\$\\$Z(99\\d{16})/);\r\n\r\n if (m){\r\n\r\n if (!vm.parentCtrl.$stateParams.lang) {\r\n var lang = '';\r\n } else {\r\n var lang = `&lang=${vm.parentCtrl.$stateParams.lang}`;\r\n }\r\n vm.collection_title = m[1];\r\n vm.collection_url = `${ window.location.origin }/discovery/fulldisplay?vid=${ vm.parentCtrl.$stateParams.vid }&tab=${ vm.parentCtrl.$stateParams.tab }&docid=alma${ m[2] }&context=${ vm.parentCtrl.$stateParams.context }${ lang }`;\r\n return vm.collection_url;\r\n }\r\n\r\n }\r\n }\r\n\r\n // console.log(vm);\r\n}]\r\n","/* Importe en tant que compasant l'ensemble des éléments personnalisés EPFL.\r\nCela comporte l'affichage des collections, les liens directs vers le pdf,\r\net le lien direct vers le site de l'éditeur.\r\n*/\r\nvar briefview_module = angular.module('briefviewModule', ['angularLoad']);\r\nbriefview_module.component('prmSearchResultAvailabilityLineAfter', require('./availabilityline.component.js'));\r\nbriefview_module.component('prmPdfArticleLink', require('./pdf_article_link.component.js'));\r\nbriefview_module.component('prmPublisherLink', require('./publisher_link.component.js'));\r\nbriefview_module.component('prmCollectionLink', require('./collection_link.component.js'));\r\n","\"use strict\";\r\n\r\nimport {pdfArticleLinkHtml} from './pdf_article_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require('./pdf_article_link.controller.js'),\r\n template: pdfArticleLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'slspIllSigninOrderLoggedOutService', function($filter, $http, slspIllSigninOrderLoggedOutService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Extrait le DOI brut depuis une chaîne de caractères\r\n function parse_doi(txt){\r\n var re = /10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+/i;\r\n var m = txt.match(re);\r\n if (m){\r\n return m[0]\r\n }\r\n }\r\n\r\n /* Teste si l'utilisateur est sur le range EPFL afin de décider s'il faut\r\n faut ou non afficher le lien direct */\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n\r\n vm.get_doi = function(){\r\n if (vm.parentCtrl.hasOwnProperty('result') && vm.parentCtrl.result.hasOwnProperty('pnx')){\r\n var pnx = vm.parentCtrl.result.pnx;\r\n\r\n // Recherche dans la section addata\r\n if ('addata' in pnx && 'doi' in pnx.addata && parse_doi(pnx.addata.doi[0]) && pnx.control.hasOwnProperty('recordtype') && pnx.control.recordtype[0]==='article') {\r\n return parse_doi(pnx.addata.doi[0])\r\n }\r\n\r\n // Recherche dans la section display\r\n if ('display' in pnx && 'identifier' in pnx.display) {\r\n for (const identifier of pnx.display.identifier){\r\n if (parse_doi(identifier)){\r\n return parse_doi(identifier)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n vm.check_doi = function(){\r\n if (!vm.hasOwnProperty('doi')){\r\n if (vm.parentCtrl.hasOwnProperty('result') && vm.parentCtrl.result.hasOwnProperty('pnx')){\r\n if (vm.get_doi()){\r\n vm.doi = vm.get_doi();\r\n vm.set_url_pdf()\r\n\r\n } else {\r\n vm.doi = null;\r\n }\r\n }\r\n }\r\n if (vm.hasOwnProperty('pdf_link')) {\r\n return true\r\n }\r\n return false\r\n }\r\n vm.set_url_pdf = function(){\r\n var url = `https://public-api.thirdiron.com/public/v1/libraries/183/articles/doi/${vm.doi}?access_token=adc54dee-c6a6-4b99-a917-2ed400f1f2d3`;\r\n $http({\r\n method: 'GET',\r\n url: url\r\n }).then(function successCallback(response) {\r\n // console.log(response);\r\n if (response.status === 200) {\r\n try{\r\n var pdf_link = response.data.data.fullTextFile;\r\n } catch(e){\r\n var pdf_link = '';\r\n }\r\n if (pdf_link.length > 0) {\r\n vm.pdf_link = pdf_link;\r\n }\r\n }\r\n // console.log(vm.pdf_link);\r\n }, function errorCallback(response) {\r\n vm.doi = null;\r\n });\r\n\r\n }\r\n\r\n // console.log(vm);\r\n}]\r\n","\"use strict\";\r\n\r\nimport {publisherLinkHtml} from './publisher_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./publisher_link.controller.js'),\r\n template: publisherLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'slspIllSigninOrderLoggedOutService', '$element', function($filter, $http, slspIllSigninOrderLoggedOutService, $element) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Utilise le service du module \\js\\slsp\\slsp-ill-signin-order-logged-out\\js\\epfl-ill-signin-order-logged-out.module.js\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n\r\n // Vérifie si une ressource vient de CDI. L'attribut reste PC comme dans Primo Central l'ancien système.\r\n vm.is_pc = function(){\r\n return vm.parentCtrl.result.context === 'PC';\r\n }\r\n\r\n // Vérifie si le record est de type livre. Le lien direct vers l'éditeur est pertinent dans ce cas.\r\n vm.is_ebook = function(){\r\n if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){\r\n return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('book')!==-1;\r\n } else if (vm.parentCtrl.result.pnx.display.hasOwnProperty('type')){\r\n return vm.parentCtrl.result.pnx.display.type[0].toLowerCase().indexOf('book')!==-1;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Vérifie si la ressource est un article. Le lien direct vers l'éditeur est pertinent pour les articles.\r\n vm.is_article = function(){\r\n if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){\r\n return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('article')!==-1;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n // Vérifie si le PNX est chargé\r\n vm.is_data_available = function(){\r\n return vm.parentCtrl.result && vm.parentCtrl.result.pnx && vm.parentCtrl.result.delivery;\r\n }\r\n\r\n // Vérifie si un accès fulltext est disponible\r\n vm.is_fulltext = function(){\r\n let availability = vm.parentCtrl.result.delivery.availability\r\n return availability.indexOf('fulltext')!==-1 || availability.indexOf('not_restricted')!==-1;\r\n }\r\n\r\n // Supprime le lien original\r\n vm.suppress_original_link = function(){\r\n $element[0].parentElement.parentElement.children[0].remove();\r\n }\r\n\r\n /* Définit l'url de l'éditeur si celle-ci est disponible à la place de\r\n l'affichage de la notice détaillée.\r\n La fonction retourne true si l'url est modifiée */\r\n vm.is_publisher_url = function(){\r\n /* L'url n'est modifié que pour les ebooks et les articles. De plus,\r\n il faut être dans le range IP de l'EPFL */\r\n if (!vm.checked && vm.is_data_available() && vm.is_epfl_IP && (vm.is_ebook() || vm.is_article())) {\r\n\r\n // L'adresse du service est différente selon que la ressource est dans cdi ou non (vm.is_pc())\r\n if (!vm.parentCtrl.isFullView && vm.is_fulltext() && vm.is_pc()){\r\n vm.checked = true;\r\n /* Les données ne contiennent pas des informations détaillées avec le lien direct.\r\n Il faut donc utiliser un service pour obtenir ces données. */\r\n let url = `${ window.location.origin }/primaws/rest/pub/pcDelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`;\r\n $http.post(url, {doc:vm.parentCtrl.result}).then((e) => {\r\n vm.publisher_url = e.data.delivery.electronicServices[0].serviceUrl;\r\n vm.suppress_original_link();\r\n });\r\n } else if (!vm.parentCtrl.isFullView && vm.is_fulltext() && !vm.is_pc()){\r\n vm.checked = true;\r\n let url = `${ window.location.origin }/primaws/rest/pub/edelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`;\r\n $http.post(url, {doc:vm.parentCtrl.result}).then((e) => {\r\n vm.publisher_url = e.data.electronicServices[0].serviceUrl;\r\n vm.suppress_original_link();\r\n })\r\n /* Dans la vue détaillée, l'url est accessible sans avoir à interroger le service */\r\n } else if (vm.parentCtrl.isFullView && vm.parentCtrl.result.delivery.GetIt1 && typeof(vm.parentCtrl.result.delivery.GetIt1)==='object') {\r\n vm.checked = true;\r\n let rank = vm.parentCtrl.result.delivery.availability.indexOf('not_restricted')\r\n if (rank !== -1) {\r\n vm.publisher_url = vm.parentCtrl.result.delivery.GetIt1[0].links[rank].link;\r\n vm.suppress_original_link();\r\n }\r\n } else if (!vm.is_fulltext()){\r\n vm.checked = true;\r\n }\r\n }\r\n return vm.hasOwnProperty('publisher_url');\r\n }\r\n // console.log('Publisher_link:');\r\n // console.log(vm);\r\n // console.log('---------------');\r\n}]\r\n","\"use strict\";\r\n\r\n/***********************/\r\n/* FILTRE : traduction */\r\n/***********************/\r\n\r\n/*\r\n OBJECTIF: traduire des éléments, tant des urls que du texte.\r\n UTILISATION:\r\n - Dans le template:\r\n 1. comme un filtre: {{ clé | customTranslate }}\r\n - Dans un controlleur:\r\n Même si les filtres sont d'abord prévus pour être utilisés dans le\r\n template, on peut les appeler dans les controlleurs.\r\n 1. Ajouter le service dans l'en-tête du controlleur\r\n 2. Appeler le service avec la fonction $filter\r\n EXEMPLE:\r\n controller:function($http, $filter){...\r\n var traduction = $filter('customTranslate')('cleTrad');\r\n ...}\r\n CONFIGURATION:\r\n L'ajout de traduction se fait à travers des objets. La clé indique le\r\n terme à utiliser dans le template ou le controlleur pour ensuite\r\n renvoyer la traduction. Les noms associés n'appaaraissent donc pas tels\r\n quels. La structure de chaque élément traduit disponible est comme suit:\r\n clé1:{\r\n fr: traductionFrançaise\r\n en: traductionAnglaise\r\n },\r\n clé2:{\r\n fr: traductionFrançaise\r\n en: traductionAnglaise\r\n }\r\n*/\r\nangular\r\n .module('customTranslateFilter', [])\r\n .filter('customTranslate', ['$translate', function($translate){\r\n return function(txt){\r\n var trad = {\r\n\r\n costWarningScan:{\r\n fr: \"Service payant: les collaborateurs et les étudiants de l’EPFL peuvent bénéficier de ce service gratuitement, en utilisant le formulaire:\",\r\n en: \"Fee-based service: EPFL employees and students can benefit from this service free of charge by using the form:\",\r\n de: \"Kostenpflichtiger Service: Mitarbeitern und Studenten der EPFL steht dieser Dienst über das Fernleihe-Formular gratis zur Verfügung.\",\r\n it: \"Servizio a pagamento: I dipendenti e gli studenti dell'EPFL possono usufruire gratuitamente di questo servizio utilizzando il modulo:\"\r\n },\r\n costWarningScanEPFL:{\r\n fr: \"Service gratuit pour les collaborateurs et les étudiants EPFL.\",\r\n en: \"Free of charge for EPFL staff and students.\",\r\n de: \"Service für Mitarbeiter und Studenten der EPFL kostenlos\",\r\n it: \"Servizio gratuito per i dipendenti e gli studenti dell’EPFL.\"\r\n },\r\n costWarningNetworkLoan:{\r\n fr: \"Service gratuit en cas de retrait à la Bibliothèque de l’EPFL.\",\r\n en: \"Free of charge if withdrawal at the EPFL Library.\",\r\n de: \"Service bei Abholung in der EPFL-Bibliothek kostenlos.\",\r\n it: \"Servizio gratuito in caso di ritiro alla Biblioteca dell’EPFL\"\r\n },\r\n costWarningPEB:{\r\n fr: \"Service gratuit pour les collaborateurs et les étudiants de l’EPFL. Avant de passer une commande d’un document physique via le prêt entre bibliothèques, merci de vous assurer que ce document n'est pas disponible dans d’autres bibliothèques du réseau SLSP dans swisscovery.\",\r\n en: \"Free of charge for EPFL staff and students. Before placing an order for a physical document via the interlibrary loan, please make sure that this document is not available in other SLSP network libraries on swisscovery.\",\r\n de: \"Kostenloser Service für Mitarbeiter und Studenten der EPFL. Bevor Sie ein Medium über die Fernleihe bestellen, vergewissern Sie sich bitte zunächst in swisscovery, dass es nicht in einer anderen Bibliothek des SLSP-Netzwerks verfügbar ist.\",\r\n it: \"Servizio gratuito per i dipendenti e gli studenti dell’EPFL. Prima di ordinare un documento cartaceo tramite il prestito interbibliotecario, assicuratevi che questo documento non sia disponibile in altre biblioteche della rete SLSP in swisscovery.\"\r\n },\r\n mainTitle:{\r\n fr: \"Catalogue BEAST\",\r\n en: \"BEAST discovery tool\",\r\n de: \"BEAST Wissensportal\",\r\n it: \"Catalogo BEAST\"\r\n },\r\n subTitle:{\r\n fr: \"Le point d\\'accès à toutes les ressources de la Bibliothèque de l\\'EPFL\",\r\n en: \"The access portal to all the resources of the EPFL Library\",\r\n de: \"Der Zugangspunkt zu allen Ressourcen der EPFL Bibliothek\",\r\n it: \"Il punto d’accesso a tutte le risorse della Biblioteca dell’EPFL\"\r\n },\r\n switchEduID:{\r\n fr: \"Modifier vos informations personnelles sur\",\r\n en: \"Change your personal data on\",\r\n de: \"Ändern Sie Ihre persönlichen Daten auf\",\r\n it: \"Modifica i tuoi dati personali sul\"\r\n },\r\n illButton:{\r\n fr: \"Prêt entre bibliothèques (PEB)\",\r\n en: \"Inter Library Loan (ILL)\",\r\n de: \"Fernleihe\",\r\n it: \"Prestito interbibliotecario\"\r\n },\r\n feedbackLink:{\r\n fr: \"Signaler un problème d'accès\",\r\n en: \"Report an access problem\",\r\n de: \"Zugriffsproblem melden\",\r\n it: \"Segnalare un problema di accesso\"\r\n },\r\n vpnMSG:{\r\n fr: \"Les ressources électroniques sont accessibles depuis tous les postes de l’EPFL, et à distance via le VPN EPFL.\",\r\n en: \"Electronic resources are accessible from all EPFL workstations, and remotely via the EPFL VPN.\",\r\n de: \"Elektronische Informationsressourcen sind an allen EPFL-Arbeitsplätzen und per EPFL VPN abrufbar.\",\r\n it: \"Le risorse elettroniche sono accessibili da tutte le postazioni di lavoro dell'EPFL e a distanza tramite VPN EPFL.\"\r\n },\r\n // vpnLink:{\r\n // fr: \"https://www.epfl.ch/campus/services/ressources-informatiques/network-services-reseau/acces-intranet-a-distance/clients-vpn-disponibles/\",\r\n // en: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\",\r\n // de: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\",\r\n // it: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\"\r\n // },\r\n feedbackLinkMSG:{\r\n fr: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n en: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n de: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n it: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\"\r\n },\r\n pdfAccess:{\r\n fr: \"Accès direct au pdf\",\r\n en: \"Direct access to the pdf\",\r\n de: \"Direct access to the pdf\",\r\n it: \"Direct access to the pdf\"\r\n },\r\n seriesLink:{\r\n fr: \"Collection :\",\r\n en: \"Serie:\",\r\n de: \"Serie:\",\r\n it: \"Serie:\"\r\n }\r\n };\r\n if (['en', 'fr', 'it', 'de'].includes($translate.use())) {\r\n return trad[txt][$translate.use()]\r\n } else {\r\n return trad[txt].fr\r\n }\r\n };\r\n }]);\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n\r\n Englobe un module d'archive de l'ETH et un module de l'EPFL.\r\n ETH: primo-explore\\custom\\src\\js\\slsp\\slsp-archives-viewit\\js\\slsp-archives-viewit.module.js\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n template: `
\r\n
`}\r\n","\"use strict\";\r\n\r\nimport {epfl_almaviewit_html} from './epfl_almaviewit.html'\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require('./epfl_almaviewit.controller.js'),\r\n template: epfl_almaviewit_html}\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n*/\r\n\r\nmodule.exports = ['$filter', 'slspIllSigninOrderLoggedOutService', function($filter, slspIllSigninOrderLoggedOutService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this;\r\n\r\n vm.get_txt = function() {\r\n return $filter('customTranslate')('vpnMSG');\r\n }\r\n\r\n vm.feedbackLink = '';\r\n vm.is_epfl_IP = false;\r\n vm.no_report_link = false;\r\n\r\n // Ne pas afficher le lien s'il s'agit d'open access\r\n if (vm.parentCtrl.item.pnx.addata.openaccess && vm.parentCtrl.item.pnx.addata.openaccess[0] === 'true') {\r\n vm.no_report_link = true;\r\n }\r\n // Ne pas afficher le lien s'il s'agit d'open access (notices CDI)\r\n if (vm.parentCtrl.item.pnx.addata.oa && vm.parentCtrl.item.pnx.addata.oa[0] === 'free_for_read') {\r\n vm.no_report_link = true;\r\n }\r\n\r\n if (!vm.no_report_link){\r\n\r\n /* Obtient l'adresse ip depuis un service se trouvant dans le\r\n module \\js\\slsp\\slsp-ill-signin-order-logged-out\\js\\epfl-ill-signin-order-logged-out.module.js */\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n vm.user_ip = slspIllSigninOrderLoggedOutService.get_ip();\r\n\r\n // Récupération des métadonnées de la ressource\r\n var mmsId = vm.parentCtrl.item.pnx.control.recordid[0];\r\n var title = '';\r\n if (vm.parentCtrl.item.pnx.display.title && vm.parentCtrl.item.pnx.display.title.length > 0) {\r\n title = vm.parentCtrl.item.pnx.display.title[0];\r\n }\r\n var creationdate = '';\r\n if (vm.parentCtrl.item.pnx.display.creationdate && vm.parentCtrl.item.pnx.display.creationdate.length > 0) {\r\n creationdate = vm.parentCtrl.item.pnx.display.creationdate[0];\r\n }\r\n var creator = '';\r\n if (vm.parentCtrl.item.pnx.display.creator && vm.parentCtrl.item.pnx.display.creator.length > 0) {\r\n creator = vm.parentCtrl.item.pnx.display.creator.join(', ');\r\n }\r\n var type = '';\r\n if (vm.parentCtrl.item.pnx.display.type && vm.parentCtrl.item.pnx.display.type.length > 0) {\r\n type = vm.parentCtrl.item.pnx.display.type[0];\r\n }\r\n var identifier = '';\r\n if (vm.parentCtrl.item.pnx.display.identifier && vm.parentCtrl.item.pnx.display.identifier.length > 0) {\r\n var ident = vm.parentCtrl.item.pnx.display.identifier[0];\r\n if (ident.indexOf('ISBN') > -1) {\r\n identifier = vm.parentCtrl.item.pnx.display.identifier.join(', ').replace(/<\\/b>/g, '').replace(//g, '');\r\n } else if (ident.indexOf('ISSN') > -1) {\r\n identifier = vm.parentCtrl.item.pnx.display.identifier.join(', ').replace(/<\\/b>/g, '').replace(//g, '');\r\n } else if (ident.indexOf('ISBN') > -1) {\r\n identifier = 'ISBN: ' + ident.substring(ident.indexOf('$$V') + 3);\r\n } else if (ident.indexOf('ISSN') > -1) {\r\n identifier = 'ISSN: ' + ident.substring(ident.indexOf('$$V') + 3);\r\n }\r\n }\r\n var userAgent = navigator.userAgent;\r\n\r\n // Création de l'objet du message\r\n var subject = 'Access problem ' + mmsId + ' - \"' + title + '\"';\r\n\r\n // Création du corps du message\r\n var body = $filter('customTranslate')('feedbackLinkMSG') + '\\n\\n' + '****\\nTitle: ' + title + '\\nAuthor: ' + creator + '\\nYear: ' + creationdate + '\\nType: ' + type + '\\nDocId: ' + mmsId + '\\nIdentifier: ' + identifier + '\\nUser_agent: ' + userAgent + '\\nUserIP: ' + vm.user_ip + '\\nRange EPFL: ' + vm.is_epfl_IP + '\\n****';\r\n\r\n vm.feedbackLink = 'mailto:eresources@epfl.ch' + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body) + '&Content-Type=text/html';\r\n }\r\n\r\n }]\r\n","\r\nvar fullview_module = angular.module('fullviewModule', ['angularLoad']);\r\nfullview_module.component('prmAlmaViewitAfter', require('./almaviewit.component.js'));\r\nfullview_module.component('prmEpflAlmaViewitAfter', require('./epfl_almaviewit.component.js'));\r\n","module.exports = {active: false,\r\n txt:\r\n {fr: `
\r\n

Le réseau NEBIS a pris fin le 7 décembre 2020 pour être remplacé par un nouveau réseau plus vaste : swisscovery

\r\n
`,\r\n en: `
\r\n

The NEBIS network ended on December 7, 2020. It has been replaced by swisscovery: a new and wider network.

\r\n
`},\r\n begin:\"2020-01-04T00:00:00Z\",\r\n end:\"2023-03-31T12:00:00Z\"}\r\n","var homepage_module = angular.module('homepageModule', ['angularLoad']);\r\nhomepage_module.component('prmSearchBarAfter', require('./searchbar.component.js'));\r\nhomepage_module.component('prmMainMenuAfter', require('./mainmenu.component.js'));\r\nhomepage_module.component('prmTopbarAfter', require('./topbar.component.js'));\r\n","/*\r\n DESCRIPTION:\r\n Corriger le lien du menu principal vers les bases de données.\r\n Empêche l'ouverture d'un nouvel onglet.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: [function() {\r\n var vm = this;\r\n\r\n // Effectue cette vérification lors chaque digest.\r\n this.$doCheck = function() {\r\n // Vérifie si la page est chargée\r\n if (document.readyState === 'complete' && !vm.modified){\r\n\r\n // Essaie de trouver le menu des bases de données\r\n try{var elem = document.querySelector(\"[translate='mainmenu.label.db']\").parentElement;}\r\n catch(e){\r\n vm.modified = false;\r\n }\r\n if (elem){\r\n // Empêche l'ouverture d'un nouvel onglet en supprimant l'attribut \"target\"\r\n elem.removeAttribute('target');\r\n elem.setAttribute('aria-label', 'Databases');\r\n vm.modified = true;\r\n }\r\n }\r\n };\r\n }]\r\n};\r\n","/*\r\n OBJECTIFS:\r\n - Toujours afficher l'onglet pour modifier le scope\r\n - Afficher une alerte si les dates correspondent\r\n UTILISATION:\r\n Pour paramétrer l'alerte, il faut modifier le fichier alert_message.js (dans ce dossier)\r\n\r\n REMARQUES:\r\n
\r\n => \"ng-bind-html\" permet d'avoir du texte formatté dans la balise.\r\n*/\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n template: '
',\r\n controllerAs: 'ctrl',\r\n controller: ['$translate', function($translate){\r\n\r\n var vm = this;\r\n\r\n /********************/\r\n /* MESSAGE D'ALERTE */\r\n /********************/\r\n\r\n // récupère le fichier json avec les paramètres de l'alerte\r\n vm.alert = require('./alert_message.js');\r\n\r\n // par défaut, l'alerte n'est pas considérée comme active\r\n vm.active = false;\r\n\r\n // Vérifie dans le fichier json si une alerte est prévue\r\n if (vm.alert.active === true){\r\n\r\n // Teste si les dates correspondent pour l'affichage de l'alerte\r\n var d_now = Date.now();\r\n if ((new Date(vm.alert.begin) < d_now) && (d_now < new Date(vm.alert.end))) {\r\n // déclenche l'affichage de l'alerte\r\n vm.active = true;\r\n }\r\n }\r\n\r\n // getteur qui retourne le texte en fonction de la langue\r\n vm.get_txt = function(){\r\n var lang = ['en', 'fr'].includes($translate.use()) ? $translate.use():'en';\r\n return vm.active ? vm.alert.txt[lang] : \"\";\r\n }\r\n\r\n /*******************/\r\n /* SCOPE PERMANENT */\r\n /*******************/\r\n\r\n // Rendre permanent l'affichage des onglets permettant de sélectionnet le scope\r\n vm.parentCtrl.showTabsAndScopes = true;\r\n // console.log('-----------------');\r\n // console.log($translate.use());\r\n // console.log(vm);\r\n // console.log('-----------------');\r\n }\r\n ]};\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: afficher l'entête de la page.\r\n DESCRIPTION: contient le titre BEAST et le teaser. Si on clique sur le\r\n titre, cela renvoie à la page d'accueil de BEAST.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', function($location, $translate) {\r\n var vm = this;\r\n\r\n // Construction de l'URL vers la page d'accueil. Il faut indiquer la vue et la langue.\r\n vm.url = $location.absUrl().split('?')[0] + '?vid=' + vm.parentCtrl.configurationUtil.vid + '&lang=' + $translate.use();\r\n\r\n // console.log(vm.url);\r\n }],\r\n template: `
\r\n

{{ 'mainTitle' | customTranslate }}

\r\n

{{ 'subTitle' | customTranslate }}

\r\n
`\r\n};\r\n","/************************/\r\n/* List of used modules */\r\n/************************/\r\n\r\n/*\r\nLes paquets suivants ne sont pas en usage pour le moment:\r\n- trustHtmal qui permet de mettre des balises dans les champs de données.\r\n- databases: pour l'instant il n'y a pas de personnalisation\r\n*/\r\n\r\nimport './filters/custom_translate.filter.js';\r\n// import './filters/trust_html.filter.js';\r\nimport './slsp/slsp-courier-info';\r\n// import './slsp/slsp-ill-signin-order-logged-out';\r\nimport './slsp/slsp-http-intercept-requests'\r\nimport './slsp/slsp-ill-signin-order-alert';\r\nimport './slsp/slsp-edit-personal-details';\r\nimport './slsp/prm-locations-after';\r\nimport './slsp/prm-location-items-after';\r\nimport './slsp/slsp-archives-htgi';\r\nimport './slsp/slsp-archives-viewit';\r\nimport './slsp/prm-user-area-expandable-after';\r\nimport './briefview';\r\nimport './homepage';\r\nimport './fullView'\r\n// import './databases';\r\nvar app = angular.module('viewCustom', ['angularLoad',\r\n 'customTranslateFilter',\r\n 'slspHttpInterceptRequests',\r\n // 'trustHtmlFilter',\r\n 'epflCourierInfo',\r\n // 'epflIllSigninOrderLoggedOut',\r\n 'slspUserAreaExpandableAfterModule',\r\n 'slspIllSigninOrderAlert',\r\n 'epflEditPersonalDetails',\r\n 'ethLocationsAfterModule',\r\n 'ethLocationItemsAfterModule',\r\n 'slspArchivesHtgi',\r\n 'slspArchivesViewit',\r\n 'briefviewModule',\r\n 'homepageModule',\r\n 'fullviewModule',\r\n // 'databasesModule'\r\n ]);\r\n","import {ethLocationItemsFilterModule} from './eth-location-items-filter/eth-location-items-filter.module';\r\nimport {epflIButtonModule} from './slsp-i-button/epfl-i-button.module';\r\n\r\nexport const ethLocationItemsAfterModule = angular\r\n .module('ethLocationItemsAfterModule', [])\r\n .component('prmLocationItemsAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``\r\n });\r\n\r\nethLocationItemsAfterModule.requires.push(ethLocationItemsFilterModule.name);\r\nethLocationItemsAfterModule.requires.push(epflIButtonModule.name);\r\n","export class ethLocationItemsFilterController {\r\n\r\n constructor($timeout, $scope) {\r\n this.$timeout = $timeout;\r\n this.$scope = $scope;\r\n }\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.$watch('this.$ctrl.parentCtrl.loc.location.librarycodeTranslation', (newValue, oldValue, scope) => {\r\n \r\n if(!scope.$ctrl.parentCtrl.isLocationsFilterVisible && newValue && newValue != ''){\r\n \r\n this.$scope.$watch('this.$ctrl.parentCtrl.loc.items', (currentItemsArray) => {\r\n\r\n if (angular.isArray(currentItemsArray) && currentItemsArray.length > 1){\r\n \r\n this.$timeout(() => {\r\n scope.$ctrl.parentCtrl.isLocationsFilterVisible = true;\r\n }, 0);\r\n \r\n } \r\n \r\n })\r\n }\r\n\r\n }, true);\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ethLocationItemsFilterController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nethLocationItemsFilterController.$inject = ['$timeout', '$scope'];\r\n\r\n","/**\r\n* @ngdoc module\r\n* @name ethLocationsFilterModule\r\n*\r\n* @description\r\n*\r\n* Customization for the locations filter:
\r\n* - the locations filter is visible by default\r\n*\r\n* If there is 1 location: prmLocationItemsAfter\r\n*\r\n* If there are multiple locations: prmLocationAfter;\r\n* after all locations: prmLocationsAfter;\r\n* after choosing a location: prmLocationItemsAfter\r\n*\r\n*\r\n* AngularJS Dependencies
\r\n*\r\n*\r\n* CSS/Image Dependencies
\r\n* CSS eth-locations-filter.css\r\n*\r\n*\r\n*/\r\nimport {ethLocationItemsFilterController} from './eth-location-items-filter.controller';\r\n\r\nexport const ethLocationItemsFilterModule = angular\r\n .module('ethLocationItemsFilterModule', [])\r\n .controller('ethLocationItemsFilterController', ethLocationItemsFilterController)\r\n .component('ethLocationItemsFilterComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'ethLocationItemsFilterController'\r\n })\r\n","\r\n\r\n//--------\"i\" button ---------------------------------------\r\n\r\n\r\n export class epflIButtonController {\r\n\r\n constructor() {}\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n // console.log(this);\r\n this.getLibrary = getLibrary;\r\n this.biblinkText = \"Library\";\r\n this.biblinkBase = \"https:\\/\\/slsp.ch\\/libraries\";\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n this.getLibraryUrl = getLibraryUrl;\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n\r\n function getLibrary() {\r\n return this.parentCtrl.currLoc ? this.parentCtrl.currLoc.location.librarycodeTranslation : '';\r\n\r\n }\r\n\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n function getLibraryUrl() {\r\n if (this.parentCtrl.loc && this.parentCtrl.loc.location.libraryCode==='E02') {\r\n return \"https://go.epfl.ch/library\";\r\n } else {\r\n return this.biblinkBase;\r\n }\r\n }\r\n // View is useful to get the url img\r\n this.view = this.parentCtrl.configurationUtil.vid.replace(':', '-');\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIButtonController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }\r\n\r\n epflIButtonController.$inject = [];\r\n","\r\n\r\n//--------\"i\" button ---------------------------------------\r\n\r\n// angular\r\n// .module('slspIButton', [])\r\n\r\n// .controller('LibInfoController', [function () {\r\n// var vm = this;\r\n// vm.getLibrary = getLibrary;\r\n// vm.biblinkText = \"Library\";\r\n// vm.biblinkBase = \"https:\\/\\/slsp.ch\\/libraries\";\r\n\r\n// function getLibrary() {\r\n// return vm.parentCtrl.currLoc.location.librarycodeTranslation;\r\n// }\r\n\r\n// }])\r\n\r\n// .component('prmLocationItemsAfter', {\r\n// bindings: { parentCtrl: '<' },\r\n// controller: 'LibInfoController',\r\n// template: ''\r\n// });\r\n\r\n\r\n\r\n import {epflIButtonController} from './epfl-i-button.controller';\r\n import {epflIButtonHtml} from './epfl-i-button.html';\r\n\r\n export const epflIButtonModule = angular\r\n .module('epflIButtonModule', [])\r\n .controller('epflIButtonController', epflIButtonController)\r\n .component('epflIButtonComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'epflIButtonController',\r\n template: epflIButtonHtml\r\n })\r\n","import {ethLocationsFilterModule} from './eth-locations-filter/eth-locations-filter.module';\r\n\r\nexport const ethLocationsAfterModule = angular\r\n .module('ethLocationsAfterModule', [])\r\n .component('prmLocationsAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``\r\n });\r\n\r\nethLocationsAfterModule.requires.push(ethLocationsFilterModule.name);\r\n","export class ethLocationsFilterController {\r\n\r\n constructor($timeout, $scope) {\r\n this.$timeout = $timeout;\r\n this.$scope = $scope;\r\n }\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.$watch('this.$ctrl.parentCtrl.locations[0].location.librarycodeTranslation', (newValue, oldValue, scope) => {\r\n if(!scope.$ctrl.parentCtrl.isLocationsFilterVisible && newValue && newValue != ''){\r\n this.$timeout(() => {\r\n scope.$ctrl.parentCtrl.isLocationsFilterVisible = true;\r\n }, 0);\r\n }\r\n }, true);\r\n }\r\n catch(e){\r\n console.error(\"***ETH*** an error occured: ethLocationsFilterController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nethLocationsFilterController.$inject = ['$timeout', '$scope'];\r\n","/**\r\n* @ngdoc module\r\n* @name ethLocationsFilterModule\r\n*\r\n* @description\r\n*\r\n* Customization for the locations filter:
\r\n* - the locations filter is visible by default\r\n*\r\n* If there is 1 location: prmLocationItemsAfter\r\n*\r\n* If there are multiple locations: prmLocationAfter;\r\n* after all locations: prmLocationsAfter;\r\n* after choosing a location: prmLocationItemsAfter\r\n*\r\n*\r\n* AngularJS Dependencies
\r\n*\r\n*\r\n* CSS/Image Dependencies
\r\n* CSS eth-locations-filter.css\r\n*\r\n*\r\n*/\r\nimport {ethLocationsFilterController} from './eth-locations-filter.controller';\r\n\r\nexport const ethLocationsFilterModule = angular\r\n .module('ethLocationsFilterModule', [])\r\n .controller('ethLocationsFilterController', ethLocationsFilterController)\r\n .component('ethLocationsFilterComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'ethLocationsFilterController'\r\n })\r\n","// Un seul changement EPFL sur les langues.\r\n\r\nexport class bcuLangSwitchController {\r\n\r\n constructor($element, $window) {\r\n this.$parent = $element.parent().parent()[0];\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$window = $window;\r\n }\r\n\r\n $onInit() {\r\n try {\r\n\r\n this.languages = [\"fr\", \"en\"];\r\n if (!this.languages.includes(this.parentCtrl.lang)) {\r\n this.changeLanguage(\"en\");\r\n }\r\n\r\n }\r\n catch (e) {\r\n console.error(\"***BCUFR*** bcuLangSwitchControler $onInit\");\r\n console.error(e.message);\r\n }\r\n };\r\n\r\n changeLanguage(lang) {\r\n\r\n this.parentCtrl.changeLangService.addLangParamToUrl(lang);\r\n let t = this.parentCtrl;\r\n this.parentCtrl.i18nService.setLanguage(lang).then(function(){\r\n t.$timeout(function(){return t.$state.go(t.$state.current,{lang:lang},{reload:!0})})\r\n });\r\n };\r\n\r\n}\r\nbcuLangSwitchController.$inject = ['$element'];\r\n","/**\r\n* @ngdoc module\r\n* @name bcuLangSwitchModule\r\n*\r\n* @description\r\n* - Add LangSwitch to user area\r\n* @example\r\n* each view\r\n*\r\n*/\r\nimport {bcuLangSwitchController} from './bcu-lang-switch.controller';\r\n\r\nexport const bcuLangSwitchModule = angular\r\n .module('bcuLangSwitchModule', [])\r\n .controller('bcuLangSwitchController', bcuLangSwitchController)\r\n .component('bcuLangSwitchComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'bcuLangSwitchController',\r\n// template: ''\r\n template: ''\r\n })\r\n","\r\nexport class slspIllSigninOrderLoggedOutController {\r\n\r\n constructor(slspIllSigninOrderLoggedOutService, $scope) {\r\n this.slspIllSigninOrderLoggedOutService = slspIllSigninOrderLoggedOutService;\r\n this.$scope = $scope;\r\n }\r\n\r\n $doCheck() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.usrNme = this.slspIllSigninOrderLoggedOutService.isGuest();\r\n\r\n if (this.$scope.usrNme == true) {\r\n let myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.addClass('logged-out')\r\n }\r\n \r\n else {\r\n let myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.removeClass('logged-out');\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIllSigninOrderLoggedOutController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nslspIllSigninOrderLoggedOutController.$inject = ['slspIllSigninOrderLoggedOutService', '$scope'];\r\n \r\n\r\n","\r\n\r\n //--------ILL Signin Order - if logged out ---------------------------------------\r\n\r\n\r\n import {slspIllSigninOrderLoggedOutController} from './slsp-ill-signin-order-logged-out.controller';\r\n import {slspIllSigninOrderLoggedOutService} from './slsp-ill-signin-order-logged-out.service';\r\n\r\n export const slspIllSigninOrderLoggedOutModule = angular\r\n .module('slspIllSigninOrderLoggedOutModule', [])\r\n .factory('slspIllSigninOrderLoggedOutService', slspIllSigninOrderLoggedOutService)\r\n .controller('slspIllSigninOrderLoggedOutController', slspIllSigninOrderLoggedOutController)\r\n .component('slspIllSigninOrderLoggedOutComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'slspIllSigninOrderLoggedOutController',\r\n\r\n })\r\n","// Modification EPFL\r\n\r\n export const slspIllSigninOrderLoggedOutService = ['jwtHelper', function( jwtHelper ){\r\n\r\n function getDecodedToken(){\r\n try{\r\n if (!sessionStorage){\r\n console.error(\"***SLSP*** no session storage\")\r\n return null;\r\n }\r\n let jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt){\r\n return null;\r\n }\r\n return jwtHelper.decodeToken(jwt);\r\n }\r\n catch(e){\r\n console.error(\"**SLSP*** an error occured: slspIllSigninOrderLoggedOutService.getDecodedToken:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n function isGuest(){\r\n try{\r\n let decodedToken = getDecodedToken();\r\n if (!decodedToken) {\r\n return null;\r\n }\r\n let userName= decodedToken.userGroup !== 'GUEST'? decodedToken.userName : '';\r\n if (userName){\r\n return false;\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIllSigninOrderLoggedOutService.isGuest:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n /* ---------------------------------- */\r\n /* - Ajout pour vérifier si IP EPFL - */\r\n function isEpflIP() {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return;\r\n }\r\n const userIP = jwtHelper.decodeToken(jwt).userIp;\r\n if (userIP) {\r\n const regex = /128\\.17([89])\\.(\\d{1,3})\\./;\r\n const found = userIP.match(regex);\r\n if (found && (found[1] == '8' || parseInt(found[2])>=128)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /* --------- Fin de l'ajout --------- */\r\n /* ---------------------------------- */\r\n\r\n return {\r\n isGuest: isGuest,\r\n getDecodedToken: getDecodedToken,\r\n isEpflIP: isEpflIP\r\n };\r\n }]\r\n","import {bcuLangSwitchModule} from './bcu-lang-switch/bcu-lang-switch.module';\r\nimport {slspIllSigninOrderLoggedOutModule} from './slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module';\r\n\r\nexport const slspUserAreaExpandableAfterModule = angular\r\n .module('slspUserAreaExpandableAfterModule', [])\r\n .component('prmUserAreaExpandableAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``,\r\n });\r\n\r\nslspUserAreaExpandableAfterModule.requires.push(bcuLangSwitchModule.name);\r\nslspUserAreaExpandableAfterModule.requires.push(slspIllSigninOrderLoggedOutModule.name);","require('./js/slsp-archives-htgi.module.js')\r\nmodule.exports = 'slspArchivesHtgi'\r\n","angular\r\n .module('slspArchivesHtgi', [])\r\n\r\n // \"how to get it\" section for resources of archives MFA, TMA (CMI STAR)\r\n\r\n .controller('ArchivesHtgiController', [function () {\r\n\r\n this.$onInit = function () {\r\n try{\r\n if(!this.parentCtrl.item.pnx.display.source || this.parentCtrl.item.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.item.pnx.display.source[0];\r\n // CMI STAR sources\r\n if(this.source === 'ETH_MaxFrischArchiv' || this.source === 'ETH_ThomasMannArchiv'){\r\n // hide content of htgi section\r\n let section = document.getElementById('full-view-container');\r\n section.classList.add('slsp-archives-hide');\r\n\r\n // get guid of CMIStar\r\n let sourceid = this.parentCtrl.item.pnx.control.originalsourceid[0];\r\n let guid = sourceid.substring(sourceid.lastIndexOf(':') + 1);\r\n\r\n // different sources: concat url\r\n if(this.source === 'ETH_ThomasMannArchiv'){\r\n this.url = 'http://www.online.tma.ethz.ch/home/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Detailed information in Thomas Mann-Archiv Online (metadata only)';\r\n }\r\n else if (this.source === 'ETH_MaxFrischArchiv') {\r\n this.url = 'http://maxfrischarchiv-online.ethz.ch/home/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Request via Max Frisch-Archiv Online';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesHtgiController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n\r\n .component('almaHtgiSvcAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'ArchivesHtgiController',\r\n template: `\r\n
\r\n \r\n \r\n {{('customized.archives.' + $ctrl.source + '.linktext' | translate)}}\r\n {{$ctrl.label}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No request possible. The digitized item can be consulted in the Thomas Mann Archives reading room upon advance registration (\r\n \r\n Contact\r\n \r\n \r\n ).\r\n
\r\n
\r\n
\r\n
\r\n Informationen zu Bestellung und Benutzung siehe\r\n \r\n Bedienungshinweise\r\n \r\n \r\n .\r\n
\r\n
\r\n
\r\n `\r\n });\r\n","require('./js/slsp-archives-viewit.module.js')\r\nmodule.exports = 'slspArchivesViewit'\r\n","angular\r\n.module('slspArchivesViewit', [])\r\n\r\n // .component('prmSearchResultAvailabilityLineAfter', { VERSION ETH\r\n //bindings: { parentCtrl: '<' },\r\n .component('prmEthSearchResultAvailabilityLineAfter', { // VERSION EPFL\r\n bindings: { afterCtrl: '<' },\r\n controller: 'ArchivesAvailabilityLineController'\r\n })\r\n\r\n .component('prmEthAlmaViewitAfter', {\r\n bindings: { afterCtrl: '<' },\r\n controller: 'ArchivesViewitController',\r\n template: `\r\n
\r\n \r\n \r\n {{('customized.archives.' + $ctrl.source + '.linktext' | translate)}}\r\n {{$ctrl.label}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Informationen zu Bestellung und Benutzung siehe\r\n \r\n Bedienungshinweise\r\n \r\n \r\n .\r\n
\r\n
\r\n
\r\n `\r\n })\r\n\r\n // viewit section for archives when there are only partial digitized items, e.g. \"ETH Hochschularchiv\" (CMI STAR)\r\n .controller('ArchivesViewitController', ['$translate', function ($translate) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$onInit = function () {\r\n try{\r\n if(!this.parentCtrl.item.pnx.display.source || this.parentCtrl.item.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.item.pnx.display.source[0];\r\n // CMI STAR sources\r\n if(this.source === 'ETH_Hochschularchiv'){\r\n if(this.parentCtrl.item.delivery.GetIt1 && this.parentCtrl.item.delivery.GetIt1.length > 0 && this.parentCtrl.item.delivery.GetIt1[0].links && this.parentCtrl.item.delivery.GetIt1[0].links.length > 0){\r\n\r\n // there is an online resource: return and do nothing\r\n let aOnlineLink = this.parentCtrl.item.delivery.GetIt1[0].links.filter( l => {\r\n if(l.isLinktoOnline && l.link !== ''){\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (aOnlineLink.length > 0) {\r\n return;\r\n }\r\n\r\n // there is no online resource\r\n // change section heading\r\n $translate('nui.getit.service_howtogetit').then((translation) => {\r\n let fullView = document.getElementById('fullView');\r\n angular.element(fullView.querySelector(\"h4[translate='nui.getit.service_viewit']\")).text(translation);\r\n angular.element(fullView.querySelector(\"#services-index span[translate='nui.getit.service_viewit']\")).text(translation);\r\n });\r\n\r\n }\r\n // hide content of viewit section\r\n let section = document.getElementById('full-view-container');\r\n section.classList.add('slsp-archives-hide');\r\n\r\n // get guid of CMIStar\r\n let sourceid = this.parentCtrl.item.pnx.control.originalsourceid[0];\r\n let guid = sourceid.substring(sourceid.lastIndexOf(':') + 1);\r\n\r\n // different sources: concat url\r\n if(this.source === 'ETH_Hochschularchiv'){\r\n this.url = 'http://archivdatenbank-online.ethz.ch/hsa/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Bestellen über Hochschularchiv Online';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesViewitController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n\r\n // change availability line, if there is no digitization\r\n .controller('ArchivesAvailabilityLineController', ['$translate', function ($translate) {\r\n this.$onInit = function () {\r\n try{\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n /********************/\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n /********************/\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n this.changeButton = false;\r\n if(!this.parentCtrl.result.pnx.display.source || this.parentCtrl.result.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.result.pnx.display.source[0];\r\n if(!this.source === 'ETH_Hochschularchiv')return;\r\n if(!this.parentCtrl.result.delivery.GetIt1 || this.parentCtrl.result.delivery.GetIt1.length == 0 || !this.parentCtrl.result.delivery.GetIt1[0].links || this.parentCtrl.result.delivery.GetIt1[0].links.length == 0)return;\r\n\r\n let aOnlineLink = this.parentCtrl.result.delivery.GetIt1[0].links.filter( l => {\r\n if(l.isLinktoOnline && l.link !== ''){\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (aOnlineLink.length === 0) {\r\n // there is no online resource\r\n $translate('delivery.code.no_inventory').then((translation) => {\r\n this.changeButton = true;\r\n this.changeButtonText = translation;\r\n });\r\n let availabilityLine = this.parentCtrl.$element[0];\r\n if(availabilityLine) {\r\n availabilityLine.classList.add('slsp-hsa-no-online');\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesAvailabilityLineController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n this.$doCheck = function () {\r\n try{\r\n if (this.changeButton){\r\n let availabilityLine = this.parentCtrl.$element[0];\r\n let button = availabilityLine.querySelector('.availability-status');\r\n if(angular.element(button) && angular.element(button).length > 0){\r\n angular.element(button).html(this.changeButtonText);\r\n this.changeButton = false;\r\n this.changeButtonText = '';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***ETH*** an error occured: ArchivesAvailabilityLineController $doCheck\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n","require('./js/epfl-courier-info.module.js')\r\nmodule.exports = 'slspCourierInfo'\r\n","/* ---------------- */\r\n/* - VERSION EPFL - */\r\n/* ---------------- */\r\n\r\n/*\r\n\r\nAVERTISSEMENT: ce module est très différent de sa version originale d'SLSP.\r\n\r\nIl doit donc être considéré comme réécrit et les ajouts ne sont pas indiqués.\r\n\r\nCe module permet d'afficher les boutons renvoyant à SWITCH edu-ID.\r\n\r\nFONCTIONNALITES:\r\n- Mettre l'EPFL en tête des possibilités de retrait.\r\n- Afficher les messages personnalisés pour les frais.\r\n\r\n*/\r\n\r\n angular\r\n .module('epflCourierInfo', [])\r\n\r\n .controller('CourierInfoController', ['$filter', '$element', function ($filter, $element, $compile, $scope, $rootScope) {\r\n var vm = this;\r\n\r\n //shortcut for convenience\r\n vm.form = $element[0].parentElement;\r\n\r\n //function for inserting block\r\n vm.$doCheck = function() {\r\n let form = false;\r\n let formLength = 2;\r\n // console.log(vm.form);\r\n if (vm.form.children[0].children[1] !== undefined && (vm.form.children[0].children[1].children[0] !== undefined || vm.typeFeeAlert()=='costWarningPEB')) {\r\n form = vm.form.children[0].children[1].children[0];\r\n if (vm.typeFeeAlert()=='costWarningPEB'){\r\n formLength = 3;\r\n }\r\n }\r\n else if (vm.form.children[0].children[0] !== undefined && vm.form.children[0].children[0].children[0] !== undefined) {\r\n form = vm.form.children[0].children[0].children[0];\r\n formLength = 3;\r\n }\r\n // console.log(vm.typeFeeAlert());\r\n\r\n //create and insert info block if not present\r\n // if (form){\r\n // // console.log('---' + String(formLength) + ' - ' + String(form.children.length));}\r\n if (form && form.children.length == formLength && form.children.length > 1 || vm.hasOwnProperty('currentTypeFeeAlert') &&\r\n vm.currentTypeFeeAlert != vm.typeFeeAlert()) {\r\n // console.log('cccc---' + String(formLength) + ' - ' + String(form.children.length));\r\n vm.currentTypeFeeAlert = vm.typeFeeAlert();\r\n var htmlwarning = `

${vm.getFeeAlert()}

`;\r\n if (vm.typeFeeAlert()=='costWarningScan') {\r\n var txt = $filter('customTranslate')('illButton');\r\n if (vm.get_peb_button()){\r\n var fn = `javascript:(function() {\r\n for (var elem of document.getElementsByTagName('span')) {\r\n if (elem.getAttribute('translate') === 'AlmaResourceSharing' &&\r\n elem.parentNode.className.indexOf('greenbutton') === -1)\r\n {\r\n elem.click();\r\n break;\r\n }\r\n };})()`;}\r\n else {\r\n var fn = `javascript:(function() {window.location.href = window.location.origin + '/discovery/blankIll?vid=${vm.parentCtrl.vid}'})()`;\r\n }\r\n\r\n\r\n htmlwarning += `

${txt}

`;\r\n\r\n }\r\n htmlwarning += `

${vm.parentCtrl.$translate.instant('customize.fullview.feesLinkText')}

`;\r\n var htmlcompiled = angular.element(htmlwarning)[0];\r\n\r\n // console.log('---' + String(formLength) + ' - ' + String(form.children.length));\r\n if (form.children.length == formLength) {\r\n // console.log('---' + String(formLength) + ' - ' + String(form.children.length));\r\n form.insertBefore(htmlcompiled, form.children[formLength - 1]);\r\n } else {\r\n // console.log(String(formLength) + ' - ' + String(form.children.length));\r\n form.children[form.children.length - 2].replaceWith(htmlcompiled);\r\n }\r\n }\r\n }\r\n\r\n // Remonte l'EPFL dans la liste des bibliothèques\r\n Object.defineProperty(vm.parentCtrl, \"form\", {\r\n configurable: !0,\r\n get: function(){\r\n // Mettre l'EPFL en première position\r\n var form = this.getFilteredForm(['label', 'multiLabel'], false);\r\n if (!vm.hasOwnProperty('pickupLocationsListOrdered')){\r\n for (var i = 0; i < form.length; i++){\r\n if (form[i].key == 'pickupInstitution'){\r\n function compare( a, b ){\r\n var onTopInstitutions = ['41SLSP_EPF', '41SLSP_EPFL'];\r\n a = onTopInstitutions.indexOf(a.value);\r\n b = onTopInstitutions.indexOf(b.value);\r\n if (a == b) {return 0};\r\n return a < b ? 1 : -1;\r\n }\r\n form[i].options.sort(compare);\r\n vm['pickupLocationsListOrdered'] = true;\r\n }\r\n }\r\n }\r\n return form;\r\n }\r\n }\r\n );\r\n\r\n // Vérifie si l'EPFL est la provenance de l'exemplaire sélectionné\r\n vm.isEPFL = function() {\r\n return vm.parentCtrl.requestService && vm.parentCtrl.requestService._service['link-to-service'].indexOf('institution=41SLSP_EPF') > 0 ? true : false;\r\n }\r\n\r\n vm.linkBase = \"https:\\/\\/slsp.ch\\/fees\";\r\n\r\n // Personnalisation du message des frais\r\n vm.typeFeeAlert = function() {\r\n // console.log(vm.parentCtrl.requestHeader);\r\n if (['almaRequest.header', 'almaRequestOther.header', 'almaItemRequest.header'].includes(vm.parentCtrl.requestHeader)) {\r\n return 'costWarningNetworkLoan'; // $filter('customTranslate')(costWarningNetworkLoan');\r\n } else if (['almaDigitization.header',\r\n 'almaDigitizationOther.header',\r\n 'almaItemDigitization.header']\r\n .includes(vm.parentCtrl.requestHeader)) {\r\n return vm.isEPFL() ? 'costWarningScanEPFL' : 'costWarningScan';\r\n } else if (vm.parentCtrl.requestHeader === 'almaResourceSharing.header') {\r\n return 'costWarningPEB';\r\n } else {\r\n return 'costWarningGeneral';\r\n }\r\n }\r\n vm.getFeeAlert = function() {\r\n // console.log(vm.typeFeeAlert());\r\n return $filter('customTranslate')(vm.typeFeeAlert());\r\n }\r\n\r\n // Récupère le bouton PEB de la page afin de simuler un clic dessus\r\n vm.get_peb_button = function(){\r\n var allElements = document.getElementsByTagName('span');\r\n for (var i = 0, n = allElements.length; i < n; i++) {\r\n if (allElements[i].getAttribute('translate') === 'AlmaResourceSharing' &&\r\n allElements[i].parentNode.className.indexOf('greenbutton') === -1)\r\n {\r\n return allElements[i];\r\n }\r\n }\r\n\r\n }\r\n\r\n // Fonction simulant un clic sur le bouton PEB quand on clique sur les\r\n // frais.\r\n vm.click_peb = function(){\r\n var button = vm.get_peb_button();\r\n if (button) {\r\n button.click();\r\n } else {\r\n window.location.href = window.location.origin + '/discovery/blankIll?vid=' + vm.parentCtrl.vid;\r\n }\r\n }\r\n // console.log(vm);\r\n\r\n }])\r\n\r\n .component('prmRequestAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'CourierInfoController',\r\n });\r\n","require('./js/epfl-edit-personal-details.module.js')\r\nmodule.exports = 'epflEditPersonalDetails'\r\n","/* --------------------- */\r\n/* - Début ajouts EPFL - */\r\n/*\r\n\r\nCe module permet d'afficher les boutons renvoyant à SWITCH edu-ID.\r\n\r\n- \"this\" a été remplacé partout par une variable \"vm\". C'est indispensable\r\npour garder la bonne référence dans les promesses.\r\n- Les boutons sont ajoutés avant l'adresse ce qui ne peut pas passer par\r\nun template\r\n\r\n*/\r\n/* - Fin ajouts EPFL - */\r\n/* ------------------- */\r\n\r\n\r\nangular\r\n .module('epflEditPersonalDetails', [])\r\n\r\n\r\n\r\n //------------------------------ edit personal details ---------------------------\r\n\r\n .controller('EditPersonalDetailsController', ['$scope', '$element', '$translate' , function ($scope, $element, $translate) {\r\n var vm = this; // Ajout EPFL\r\n let lang = 'en';\r\n let sms = $scope.$root.$$childHead.$ctrl.userSessionManagerService;\r\n if (sms) {\r\n lang = sms.getInterfaceLanguage();\r\n }\r\n\r\n vm.detailsBaseEdu = \"https:\\/\\/eduid.ch\\/web\\/change-account-data\\/2\\/?lang=\" + lang;\r\n vm.detailsBaseReg = \"https:\\/\\/registration.slsp.ch\\/library-card\\/?lang=\" + lang;\r\n vm.exclude = ['STAFF', '11', '12', '13', '14', '15', '16', '91', '92'];\r\n vm.grpA = ['11', '91', '92']; // comptes locaux\r\n vm.grpB = ['12', '13', '14', '15', '16']; // comptes institutionnels\r\n\r\n\r\n vm.getPatronGrp = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let patron = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (!vm.exclude.includes(patron)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n vm.grpLabelA = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let labelA = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (vm.grpA.includes(labelA)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n vm.grpLabelB = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let labelB = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (vm.grpB.includes(labelB)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /* --------------------- */\r\n /* - Début ajouts EPFL - */\r\n\r\n vm.test = 0;\r\n vm.testPersonalInfo = function() {\r\n /* Constructeur de la promesse. Cette promess échoue quand\r\n les informations utilisateur ne sont pas ou pas encore\r\n disponible. */\r\n return new Promise((persInfoAv, persInfoNotAv) => {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n persInfoAv();\r\n } else {\r\n persInfoNotAv();\r\n }\r\n })\r\n }\r\n vm.persInfoAv = function() {\r\n /* Succès de la promesse: le groupe utilisateur a été trouvé et\r\n les boutons adéquats s'afichent. */\r\n let html = '
';\r\n if (vm.grpLabelA()) {\r\n html += `${vm.parentCtrl.$translate.instant('customized.libraries.details')}`;\r\n }\r\n else if (vm.grpLabelB()) {\r\n html += `${vm.parentCtrl.$translate.instant('customized.slsp.details')}`;\r\n }\r\n else if (vm.getPatronGrp) {\r\n html += `\r\n \r\n \r\n \r\n \r\n \r\n \r\n ${vm.parentCtrl.$translate.instant('customized.personal.details')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ${vm.parentCtrl.$translate.instant('customized.libcard.number')}\r\n \r\n `\r\n }\r\n\r\n html += '
';\r\n var htmlcompiled = angular.element(html)[0];\r\n var place_to_insert = $element[0].parentElement.children[1].children[0];\r\n place_to_insert.insertBefore(htmlcompiled, place_to_insert.children[1]);\r\n }\r\n vm.persInfoNotAv = function() {\r\n vm.test += 1;\r\n if (vm.test < 10) {\r\n /* En cas d'échec, on attend 0.5 second et on relance le test */\r\n setTimeout(() => vm.testPersonalInfo().then(vm.persInfoAv, vm.persInfoNotAv), 500);\r\n }\r\n }\r\n if (vm.test === 0) {\r\n /* Premier lancement du test pour voir si les infos utilisateur\r\n sont disponibles */\r\n vm.testPersonalInfo().then(vm.persInfoAv, vm.persInfoNotAv);\r\n }\r\n /* - Fin ajouts EPFL - */\r\n /* ------------------- */\r\n\r\n\r\n }])\r\n\r\n\r\n .component('prmPersonalInfoAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'EditPersonalDetailsController',\r\n /* Suppression EPFL */\r\n // template: '

'\r\n });\r\n","require('./js/slsp-http-intercept-requests.module.js')\r\nmodule.exports = 'slspHttpInterceptRequests'","angular.module('slspHttpInterceptRequests', ['ng'])\r\n .config(['$httpProvider', ($httpProvider) => {\r\n $httpProvider.interceptors.push(['$q', ($q) => {\r\n return {\r\n 'request': (request) => {\r\n return request\r\n },\r\n 'requestError': (request) => {\r\n return $q.reject(request)\r\n },\r\n 'responseError': (response) => {\r\n return $q.reject(response)\r\n },\r\n 'response': (response) => {\r\n try {\r\n if (/primaws\\/rest\\/priv\\/myaccount\\/requests/.test(response.config.url)) {\r\n let interfaceLanguage = angular.element(document.querySelector('primo-explore')).injector().get('$rootScope').$$childHead.$ctrl.userSessionManagerService.getUserLanguage() ||\r\n window.appConfig['primo-view']['attributes-map'].interfaceLanguage\r\n\r\n let list_of_hold_states = {\r\n 'en': [\"in transit\", \"in process\", \"on hold shelf\"],\r\n 'de': [\"transfer\", \"in bearbeitung\", \"bereitgestellt\"],\r\n 'fr': [\"en cours de transfert\", \"en cours\", \"sur le rayon des réservations\"],\r\n 'it': [\"in transito\", \"in processo\", \"scaffale prenotazioni\"]\r\n }\r\n\r\n if (Object.keys(list_of_hold_states).includes(interfaceLanguage)) {\r\n let list_of_hold_states_regexp = RegExp(list_of_hold_states[interfaceLanguage].map(m => m.toLowerCase()).join('|'))\r\n if (response.status == 200 && response.data.status == \"ok\") {\r\n\r\n //rewrite all cancellable holds.\r\n response.data.data.holds.hold.map((m) => {\r\n if (list_of_hold_states_regexp.test(m.holdstatus.toLowerCase())) {\r\n m.cancel = 'N'\r\n }\r\n })\r\n\r\n }\r\n } else {\r\n throw `No mapping found for ${interfaceLanguage}`\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n return response\r\n }\r\n }\r\n }])\r\n }])","require('./js/slsp-ill-signin-order-alert.module.js')\r\nmodule.exports = 'slspIllSigninOrderAlert'","//--------ILL Signin Order - if Alert Message ---------------------------------------\r\n\r\nangular\r\n .module('slspIllSigninOrderAlert', [])\r\n\r\n .controller('AlertMsgController', ['$scope', function ($scope) {\r\n var vm = this;\r\n vm.getAlert = getAlert\r\n\r\n function getAlert() {\r\n var ga = vm.parentCtrl.almaHowToGetitService.reqAlert._htmlMsg;\r\n var myEl2 = angular.element(document.querySelector('primo-explore'));\r\n\r\n if (ga.length > 0) {\r\n return myEl2.addClass('alert');\r\n\r\n }\r\n else {\r\n\r\n return myEl2.removeClass('alert');\r\n }\r\n }\r\n }])\r\n\r\n .component('almaHowovpAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'AlertMsgController',\r\n template: '
{{$ctrl.getAlert()}}
'\r\n });\r\n"]} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","primo-explore/custom/src/js/briefview/availabilityline.component.js","primo-explore/custom/src/js/briefview/collection_link.component.js","primo-explore/custom/src/js/briefview/collection_link.controller.js","primo-explore/custom/src/js/briefview/index.js","primo-explore/custom/src/js/briefview/pdf_article_link.component.js","primo-explore/custom/src/js/briefview/pdf_article_link.controller.js","primo-explore/custom/src/js/briefview/publisher_link.component.js","primo-explore/custom/src/js/briefview/publisher_link.controller.js","primo-explore/custom/src/js/factory/check_user.module.js","primo-explore/custom/src/js/factory/check_user.service.js","primo-explore/custom/src/js/factory/index.js","primo-explore/custom/src/js/filters/custom_translate.filter.js","primo-explore/custom/src/js/fullView/almaviewit.component.js","primo-explore/custom/src/js/fullView/epfl_almaviewit.component.js","primo-explore/custom/src/js/fullView/epfl_almaviewit.controller.js","primo-explore/custom/src/js/fullView/index.js","primo-explore/custom/src/js/homepage/alert_message.js","primo-explore/custom/src/js/homepage/index.js","primo-explore/custom/src/js/homepage/mainmenu.component.js","primo-explore/custom/src/js/homepage/searchbar.component.js","primo-explore/custom/src/js/homepage/topbar.component.js","primo-explore/custom/src/js/main.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-after.module.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-filter/eth-location-items-filter.controller.js","primo-explore/custom/src/js/slsp/prm-location-items-after/eth-location-items-filter/eth-location-items-filter.module.js","primo-explore/custom/src/js/slsp/prm-location-items-after/slsp-i-button/epfl-i-button.controller.js","primo-explore/custom/src/js/slsp/prm-location-items-after/slsp-i-button/epfl-i-button.module.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-after.module.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-filter/eth-locations-filter.controller.js","primo-explore/custom/src/js/slsp/prm-locations-after/eth-locations-filter/eth-locations-filter.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/bcu-lang-switch/bcu-lang-switch.controller.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/bcu-lang-switch/bcu-lang-switch.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.controller.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.service.js","primo-explore/custom/src/js/slsp/prm-user-area-expandable-after/slsp-user-area-expandable-after.module.js","primo-explore/custom/src/js/slsp/slsp-archives-htgi/index.js","primo-explore/custom/src/js/slsp/slsp-archives-htgi/js/slsp-archives-htgi.module.js","primo-explore/custom/src/js/slsp/slsp-archives-viewit/index.js","primo-explore/custom/src/js/slsp/slsp-archives-viewit/js/slsp-archives-viewit.module.js","primo-explore/custom/src/js/slsp/slsp-courier-info/index.js","primo-explore/custom/src/js/slsp/slsp-courier-info/js/epfl-courier-info.module.js","primo-explore/custom/src/js/slsp/slsp-edit-personal-details/index.js","primo-explore/custom/src/js/slsp/slsp-edit-personal-details/js/epfl-edit-personal-details.module.js","primo-explore/custom/src/js/slsp/slsp-http-intercept-requests/index.js","primo-explore/custom/src/js/slsp/slsp-http-intercept-requests/js/slsp-http-intercept-requests.module.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-alert/index.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-alert/js/slsp-ill-signin-order-alert.module.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","bindings","parentCtrl","template","afterCtrl","controller","$filter","$http","this","vm","get_collection_url","hasOwnProperty","collection_url","series","result","pnx","display","Array","isArray","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_iterator","Symbol","iterator","next","done","lang","m","value","match","$stateParams","collection_title","window","location","origin","vid","tab","context","err","return","briefview_module","angular","component","slspIllSigninOrderLoggedOutService","parse_doi","txt","is_epfl_IP","isEpflIP","get_doi","addata","doi","control","recordtype","identifier","check_doi","set_url_pdf","url","method","then","response","status","pdf_link","data","fullTextFile","$element","is_pc","is_ebook","indexOf","type","toLowerCase","is_article","is_data_available","delivery","is_fulltext","availability","suppress_original_link","parentElement","children","remove","is_publisher_url","_url","checked","isFullView","recordid","post","doc","publisher_url","electronicServices","serviceUrl","GetIt1","_typeof","rank","links","link","_check_user","checkUserModule","factory","checkUserService","jwtHelper","getDecodedToken","sessionStorage","console","error","jwt","getItem","decodeToken","message","isGuest","decodedToken","userGroup","userName","userIP","userIp","found","parseInt","filter","$translate","trad","costWarningScan","fr","en","de","it","costWarningScanEPFL","costWarningNetworkLoan","costWarningPEB","mainTitle","subTitle","switchEduID","illButton","feedbackLink","vpnMSG","feedbackLinkMSG","pdfAccess","seriesLink","includes","use","mmsId","title","creationdate","creator","subject","get_txt","no_report_link","item","openaccess","oa","user_ip","get_ip","join","ident","replace","substring","userAgent","navigator","body","encodeURIComponent","fullview_module","active","begin","end","homepage_module","controllerAs","$doCheck","document","readyState","modified","elem","querySelector","removeAttribute","setAttribute","d_now","alert","Date","now","showTabsAndScopes","$location","absUrl","split","configurationUtil","_ethLocationItemsFilter","_epflIButton","ethLocationItemsAfterModule","requires","push","ethLocationItemsFilterModule","name","epflIButtonModule","ethLocationItemsFilterController","$timeout","$scope","_classCallCheck","_this","$watch","newValue","oldValue","scope","$ctrl","isLocationsFilterVisible","currentItemsArray","$inject","epflIButtonController","getLibrary","currLoc","librarycodeTranslation","biblinkText","biblinkBase","getLibraryUrl","loc","libraryCode","view","_ethLocationsFilter","ethLocationsAfterModule","ethLocationsFilterModule","ethLocationsFilterController","bcuLangSwitchController","$window","$parent","parent","languages","changeLanguage","changeLangService","addLangParamToUrl","i18nService","setLanguage","$state","go","current","reload","_bcuLangSwitch","bcuLangSwitchModule","slspIllSigninOrderLoggedOutController","usrNme","element","removeClass","addClass","_slspIllSigninOrderLoggedOut","_slspIllSigninOrderLoggedOut2","slspIllSigninOrderLoggedOutModule","slspUserAreaExpandableAfterModule","$onInit","source","sourceid","guid","getElementById","classList","add","originalsourceid","lastIndexOf","l","isLinktoOnline","translation","fullView","text","availabilityLine","changeButton","changeButtonText","button","html","$compile","$rootScope","form","htmlcompiled","formLength","typeFeeAlert","currentTypeFeeAlert","htmlwarning","getFeeAlert","get_peb_button","instant","insertBefore","replaceWith","Object","defineProperty","configurable","get","getFilteredForm","key","options","sort","b","onTopInstitutions","isEPFL","requestService","_service","linkBase","requestHeader","allElements","getElementsByTagName","getAttribute","parentNode","className","click_peb","click","href","sms","$root","$$childHead","userSessionManagerService","getInterfaceLanguage","detailsBaseEdu","detailsBaseReg","exclude","grpA","grpB","getPatronGrp","personalInfoService","personalInfo","patron","patronstatus","registration","institution","patronstatuscode","grpLabelA","labelA","grpLabelB","labelB","test","testPersonalInfo","Promise","persInfoAv","persInfoNotAv","place_to_insert","setTimeout","config","$httpProvider","interceptors","$q","request","_request","requestError","reject","responseError","_response","interfaceLanguage","injector","getUserLanguage","appConfig","list_of_hold_states","keys","list_of_hold_states_regexp","RegExp","map","holds","hold","holdstatus","cancel","log","getAlert","ga","almaHowToGetitService","reqAlert","_htmlMsg","myEl2"],"mappings":"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","file":"custom.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\r\n \r\n \r\n `//availabilitylineHtml,\r\n}\r\n","\"use strict\";\r\n\r\nimport {collectionLinkHtml} from './collection_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./collection_link.controller.js'),\r\n template: collectionLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', function($filter, $http) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Obtenir l'url d'une série.\r\n vm.get_collection_url = function(){\r\n if (vm.hasOwnProperty('collection_url')){\r\n return vm.collection_url;\r\n }\r\n try {\r\n var series = vm.parentCtrl.result.pnx.display.series;\r\n if (!Array.isArray(series)) {throw new Error('Notice without series');}\r\n } catch (e) {\r\n return null;\r\n }\r\n for (const serie of series){\r\n\r\n var m = serie.match(/\\$\\$Q(.*)\\$\\$Z(99\\d{16})/);\r\n\r\n if (m){\r\n\r\n if (!vm.parentCtrl.$stateParams.lang) {\r\n var lang = '';\r\n } else {\r\n var lang = `&lang=${vm.parentCtrl.$stateParams.lang}`;\r\n }\r\n vm.collection_title = m[1];\r\n vm.collection_url = `${ window.location.origin }/discovery/fulldisplay?vid=${ vm.parentCtrl.$stateParams.vid }&tab=${ vm.parentCtrl.$stateParams.tab }&docid=alma${ m[2] }&context=${ vm.parentCtrl.$stateParams.context }${ lang }`;\r\n return vm.collection_url;\r\n }\r\n\r\n }\r\n }\r\n\r\n // console.log(vm);\r\n}]\r\n","/* Importe en tant que compasant l'ensemble des éléments personnalisés EPFL.\r\nCela comporte l'affichage des collections, les liens directs vers le pdf,\r\net le lien direct vers le site de l'éditeur.\r\n*/\r\nvar briefview_module = angular.module('briefviewModule', ['angularLoad']);\r\nbriefview_module.component('prmSearchResultAvailabilityLineAfter', require('./availabilityline.component.js'));\r\nbriefview_module.component('prmPdfArticleLink', require('./pdf_article_link.component.js'));\r\nbriefview_module.component('prmPublisherLink', require('./publisher_link.component.js'));\r\nbriefview_module.component('prmCollectionLink', require('./collection_link.component.js'));\r\n","\"use strict\";\r\n\r\nimport {pdfArticleLinkHtml} from './pdf_article_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require('./pdf_article_link.controller.js'),\r\n template: pdfArticleLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'slspIllSigninOrderLoggedOutService', function($filter, $http, slspIllSigninOrderLoggedOutService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Extrait le DOI brut depuis une chaîne de caractères\r\n function parse_doi(txt){\r\n var re = /10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+/i;\r\n var m = txt.match(re);\r\n if (m){\r\n return m[0]\r\n }\r\n }\r\n\r\n /* Teste si l'utilisateur est sur le range EPFL afin de décider s'il faut\r\n faut ou non afficher le lien direct */\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n\r\n vm.get_doi = function(){\r\n if (vm.parentCtrl.hasOwnProperty('result') && vm.parentCtrl.result.hasOwnProperty('pnx')){\r\n var pnx = vm.parentCtrl.result.pnx;\r\n\r\n // Recherche dans la section addata\r\n if ('addata' in pnx && 'doi' in pnx.addata && parse_doi(pnx.addata.doi[0]) && pnx.control.hasOwnProperty('recordtype') && pnx.control.recordtype[0]==='article') {\r\n return parse_doi(pnx.addata.doi[0])\r\n }\r\n\r\n // Recherche dans la section display\r\n if ('display' in pnx && 'identifier' in pnx.display) {\r\n for (const identifier of pnx.display.identifier){\r\n if (parse_doi(identifier)){\r\n return parse_doi(identifier)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n vm.check_doi = function(){\r\n if (!vm.hasOwnProperty('doi')){\r\n if (vm.parentCtrl.hasOwnProperty('result') && vm.parentCtrl.result.hasOwnProperty('pnx')){\r\n if (vm.get_doi()){\r\n vm.doi = vm.get_doi();\r\n vm.set_url_pdf()\r\n\r\n } else {\r\n vm.doi = null;\r\n }\r\n }\r\n }\r\n if (vm.hasOwnProperty('pdf_link')) {\r\n return true\r\n }\r\n return false\r\n }\r\n vm.set_url_pdf = function(){\r\n var url = `https://public-api.thirdiron.com/public/v1/libraries/183/articles/doi/${vm.doi}?access_token=adc54dee-c6a6-4b99-a917-2ed400f1f2d3`;\r\n $http({\r\n method: 'GET',\r\n url: url\r\n }).then(function successCallback(response) {\r\n // console.log(response);\r\n if (response.status === 200) {\r\n try{\r\n var pdf_link = response.data.data.fullTextFile;\r\n } catch(e){\r\n var pdf_link = '';\r\n }\r\n if (pdf_link.length > 0) {\r\n vm.pdf_link = pdf_link;\r\n }\r\n }\r\n // console.log(vm.pdf_link);\r\n }, function errorCallback(response) {\r\n vm.doi = null;\r\n });\r\n\r\n }\r\n\r\n // console.log(vm);\r\n}]\r\n","\"use strict\";\r\n\r\nimport {publisherLinkHtml} from './publisher_link.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./publisher_link.controller.js'),\r\n template: publisherLinkHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'slspIllSigninOrderLoggedOutService', '$element', function($filter, $http, slspIllSigninOrderLoggedOutService, $element) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\r\n // Utilise le service du module \\js\\slsp\\slsp-ill-signin-order-logged-out\\js\\epfl-ill-signin-order-logged-out.module.js\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n\r\n // Vérifie si une ressource vient de CDI. L'attribut reste PC comme dans Primo Central l'ancien système.\r\n vm.is_pc = function(){\r\n return vm.parentCtrl.result.context === 'PC';\r\n }\r\n\r\n // Vérifie si le record est de type livre. Le lien direct vers l'éditeur est pertinent dans ce cas.\r\n vm.is_ebook = function(){\r\n if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){\r\n return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('book')!==-1;\r\n } else if (vm.parentCtrl.result.pnx.display.hasOwnProperty('type')){\r\n return vm.parentCtrl.result.pnx.display.type[0].toLowerCase().indexOf('book')!==-1;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Vérifie si la ressource est un article. Le lien direct vers l'éditeur est pertinent pour les articles.\r\n vm.is_article = function(){\r\n if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){\r\n return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('article')!==-1;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n // Vérifie si le PNX est chargé\r\n vm.is_data_available = function(){\r\n return vm.parentCtrl.result && vm.parentCtrl.result.pnx && vm.parentCtrl.result.delivery;\r\n }\r\n\r\n // Vérifie si un accès fulltext est disponible\r\n vm.is_fulltext = function(){\r\n let availability = vm.parentCtrl.result.delivery.availability\r\n return availability.indexOf('fulltext')!==-1 || availability.indexOf('not_restricted')!==-1;\r\n }\r\n\r\n // Supprime le lien original\r\n vm.suppress_original_link = function(){\r\n $element[0].parentElement.parentElement.children[0].remove();\r\n }\r\n\r\n /* Définit l'url de l'éditeur si celle-ci est disponible à la place de\r\n l'affichage de la notice détaillée.\r\n La fonction retourne true si l'url est modifiée */\r\n vm.is_publisher_url = function(){\r\n /* L'url n'est modifié que pour les ebooks et les articles. De plus,\r\n il faut être dans le range IP de l'EPFL */\r\n if (!vm.checked && vm.is_data_available() && vm.is_epfl_IP && (vm.is_ebook() || vm.is_article())) {\r\n\r\n // L'adresse du service est différente selon que la ressource est dans cdi ou non (vm.is_pc())\r\n if (!vm.parentCtrl.isFullView && vm.is_fulltext() && vm.is_pc()){\r\n vm.checked = true;\r\n /* Les données ne contiennent pas des informations détaillées avec le lien direct.\r\n Il faut donc utiliser un service pour obtenir ces données. */\r\n let url = `${ window.location.origin }/primaws/rest/pub/pcDelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`;\r\n $http.post(url, {doc:vm.parentCtrl.result}).then((e) => {\r\n vm.publisher_url = e.data.delivery.electronicServices[0].serviceUrl;\r\n vm.suppress_original_link();\r\n });\r\n } else if (!vm.parentCtrl.isFullView && vm.is_fulltext() && !vm.is_pc()){\r\n vm.checked = true;\r\n let url = `${ window.location.origin }/primaws/rest/pub/edelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`;\r\n $http.post(url, {doc:vm.parentCtrl.result}).then((e) => {\r\n vm.publisher_url = e.data.electronicServices[0].serviceUrl;\r\n vm.suppress_original_link();\r\n })\r\n /* Dans la vue détaillée, l'url est accessible sans avoir à interroger le service */\r\n } else if (vm.parentCtrl.isFullView && vm.parentCtrl.result.delivery.GetIt1 && typeof(vm.parentCtrl.result.delivery.GetIt1)==='object') {\r\n vm.checked = true;\r\n let rank = vm.parentCtrl.result.delivery.availability.indexOf('not_restricted')\r\n if (rank !== -1) {\r\n vm.publisher_url = vm.parentCtrl.result.delivery.GetIt1[0].links[rank].link;\r\n vm.suppress_original_link();\r\n }\r\n } else if (!vm.is_fulltext()){\r\n vm.checked = true;\r\n }\r\n }\r\n return vm.hasOwnProperty('publisher_url');\r\n }\r\n // console.log('Publisher_link:');\r\n // console.log(vm);\r\n // console.log('---------------');\r\n}]\r\n","\r\n\r\n//-------- Module EPFL ---------------------------------------\r\n\r\n\r\n\r\nimport {checkUserService} from './check_user.service';\r\n\r\nexport const checkUserModule = angular\r\n .module('checkUserModule', [])\r\n .factory('checkUserService', checkUserService)\r\n","// EPFL : Fonctions de vérification des types utilisateurs\r\n\r\n export const checkUserService = ['jwtHelper', function( jwtHelper ){\r\n\r\n function getDecodedToken(){\r\n try{\r\n if (!sessionStorage){\r\n console.error(\"***EPFL*** no session storage\")\r\n return null;\r\n }\r\n let jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt){\r\n return null;\r\n }\r\n return jwtHelper.decodeToken(jwt);\r\n }\r\n catch(e){\r\n console.error(\"**EPFL*** an error occured: checkUserService.getDecodedToken:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n function isGuest(){\r\n try{\r\n let decodedToken = getDecodedToken();\r\n if (!decodedToken) {\r\n return null;\r\n }\r\n let userName= decodedToken.userGroup !== 'GUEST'? decodedToken.userName : '';\r\n if (userName){\r\n return false;\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***EPFL*** une erreur est arrivée: checkUserService.isGuest:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n /* ---------------------------------- */\r\n /* - Ajout pour vérifier si IP EPFL - */\r\n function isEpflIP() {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return;\r\n }\r\n const userIP = jwtHelper.decodeToken(jwt).userIp;\r\n if (userIP) {\r\n const regex = /128\\.17([89])\\.(\\d{1,3})\\./;\r\n const found = userIP.match(regex);\r\n if (found && (found[1] == '8' || parseInt(found[2])>=128)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /* --------- Fin de l'ajout --------- */\r\n /* ---------------------------------- */\r\n\r\n return {\r\n isGuest: isGuest,\r\n getDecodedToken: getDecodedToken,\r\n isEpflIP: isEpflIP\r\n };\r\n }]\r\n","require('./check_user.module')\r\nmodule.exports = 'checkUserModule'\r\n","\"use strict\";\r\n\r\n/***********************/\r\n/* FILTRE : traduction */\r\n/***********************/\r\n\r\n/*\r\n OBJECTIF: traduire des éléments, tant des urls que du texte.\r\n UTILISATION:\r\n - Dans le template:\r\n 1. comme un filtre: {{ clé | customTranslate }}\r\n - Dans un controlleur:\r\n Même si les filtres sont d'abord prévus pour être utilisés dans le\r\n template, on peut les appeler dans les controlleurs.\r\n 1. Ajouter le service dans l'en-tête du controlleur\r\n 2. Appeler le service avec la fonction $filter\r\n EXEMPLE:\r\n controller:function($http, $filter){...\r\n var traduction = $filter('customTranslate')('cleTrad');\r\n ...}\r\n CONFIGURATION:\r\n L'ajout de traduction se fait à travers des objets. La clé indique le\r\n terme à utiliser dans le template ou le controlleur pour ensuite\r\n renvoyer la traduction. Les noms associés n'appaaraissent donc pas tels\r\n quels. La structure de chaque élément traduit disponible est comme suit:\r\n clé1:{\r\n fr: traductionFrançaise\r\n en: traductionAnglaise\r\n },\r\n clé2:{\r\n fr: traductionFrançaise\r\n en: traductionAnglaise\r\n }\r\n*/\r\nangular\r\n .module('customTranslateFilter', [])\r\n .filter('customTranslate', ['$translate', function($translate){\r\n return function(txt){\r\n var trad = {\r\n\r\n costWarningScan:{\r\n fr: \"Service payant: les collaborateurs et les étudiants de l’EPFL peuvent bénéficier de ce service gratuitement, en utilisant le formulaire:\",\r\n en: \"Fee-based service: EPFL employees and students can benefit from this service free of charge by using the form:\",\r\n de: \"Kostenpflichtiger Service: Mitarbeitern und Studenten der EPFL steht dieser Dienst über das Fernleihe-Formular gratis zur Verfügung.\",\r\n it: \"Servizio a pagamento: I dipendenti e gli studenti dell'EPFL possono usufruire gratuitamente di questo servizio utilizzando il modulo:\"\r\n },\r\n costWarningScanEPFL:{\r\n fr: \"Service gratuit pour les collaborateurs et les étudiants EPFL.\",\r\n en: \"Free of charge for EPFL staff and students.\",\r\n de: \"Service für Mitarbeiter und Studenten der EPFL kostenlos\",\r\n it: \"Servizio gratuito per i dipendenti e gli studenti dell’EPFL.\"\r\n },\r\n costWarningNetworkLoan:{\r\n fr: \"Service gratuit en cas de retrait à la Bibliothèque de l’EPFL.\",\r\n en: \"Free of charge if withdrawal at the EPFL Library.\",\r\n de: \"Service bei Abholung in der EPFL-Bibliothek kostenlos.\",\r\n it: \"Servizio gratuito in caso di ritiro alla Biblioteca dell’EPFL\"\r\n },\r\n costWarningPEB:{\r\n fr: \"Service gratuit pour les collaborateurs et les étudiants de l’EPFL. Avant de passer une commande d’un document physique via le prêt entre bibliothèques, merci de vous assurer que ce document n'est pas disponible dans d’autres bibliothèques du réseau SLSP dans swisscovery.\",\r\n en: \"Free of charge for EPFL staff and students. Before placing an order for a physical document via the interlibrary loan, please make sure that this document is not available in other SLSP network libraries on swisscovery.\",\r\n de: \"Kostenloser Service für Mitarbeiter und Studenten der EPFL. Bevor Sie ein Medium über die Fernleihe bestellen, vergewissern Sie sich bitte zunächst in swisscovery, dass es nicht in einer anderen Bibliothek des SLSP-Netzwerks verfügbar ist.\",\r\n it: \"Servizio gratuito per i dipendenti e gli studenti dell’EPFL. Prima di ordinare un documento cartaceo tramite il prestito interbibliotecario, assicuratevi che questo documento non sia disponibile in altre biblioteche della rete SLSP in swisscovery.\"\r\n },\r\n mainTitle:{\r\n fr: \"Catalogue BEAST\",\r\n en: \"BEAST discovery tool\",\r\n de: \"BEAST Wissensportal\",\r\n it: \"Catalogo BEAST\"\r\n },\r\n subTitle:{\r\n fr: \"Le point d\\'accès à toutes les ressources de la Bibliothèque de l\\'EPFL\",\r\n en: \"The access portal to all the resources of the EPFL Library\",\r\n de: \"Der Zugangspunkt zu allen Ressourcen der EPFL Bibliothek\",\r\n it: \"Il punto d’accesso a tutte le risorse della Biblioteca dell’EPFL\"\r\n },\r\n switchEduID:{\r\n fr: \"Modifier vos informations personnelles sur\",\r\n en: \"Change your personal data on\",\r\n de: \"Ändern Sie Ihre persönlichen Daten auf\",\r\n it: \"Modifica i tuoi dati personali sul\"\r\n },\r\n illButton:{\r\n fr: \"Prêt entre bibliothèques (PEB)\",\r\n en: \"Inter Library Loan (ILL)\",\r\n de: \"Fernleihe\",\r\n it: \"Prestito interbibliotecario\"\r\n },\r\n feedbackLink:{\r\n fr: \"Signaler un problème d'accès\",\r\n en: \"Report an access problem\",\r\n de: \"Zugriffsproblem melden\",\r\n it: \"Segnalare un problema di accesso\"\r\n },\r\n vpnMSG:{\r\n fr: \"Les ressources électroniques sont accessibles depuis tous les postes de l’EPFL, et à distance via le VPN EPFL.\",\r\n en: \"Electronic resources are accessible from all EPFL workstations, and remotely via the EPFL VPN.\",\r\n de: \"Elektronische Informationsressourcen sind an allen EPFL-Arbeitsplätzen und per EPFL VPN abrufbar.\",\r\n it: \"Le risorse elettroniche sono accessibili da tutte le postazioni di lavoro dell'EPFL e a distanza tramite VPN EPFL.\"\r\n },\r\n // vpnLink:{\r\n // fr: \"https://www.epfl.ch/campus/services/ressources-informatiques/network-services-reseau/acces-intranet-a-distance/clients-vpn-disponibles/\",\r\n // en: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\",\r\n // de: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\",\r\n // it: \"https://www.epfl.ch/campus/services/en/it-services/network-services/remote-intranet-access/vpn-clients-available/\"\r\n // },\r\n feedbackLinkMSG:{\r\n fr: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n en: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n de: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\",\r\n it: \"I have a problem accessing the electronic resource below. Please let me know when the access will be restored.\"\r\n },\r\n pdfAccess:{\r\n fr: \"Accès direct au pdf\",\r\n en: \"Direct access to the pdf\",\r\n de: \"Direct access to the pdf\",\r\n it: \"Direct access to the pdf\"\r\n },\r\n seriesLink:{\r\n fr: \"Collection :\",\r\n en: \"Serie:\",\r\n de: \"Serie:\",\r\n it: \"Serie:\"\r\n }\r\n };\r\n if (['en', 'fr', 'it', 'de'].includes($translate.use())) {\r\n return trad[txt][$translate.use()]\r\n } else {\r\n return trad[txt].fr\r\n }\r\n };\r\n }]);\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n\r\n Englobe un module d'archive de l'ETH et un module de l'EPFL.\r\n ETH: primo-explore\\custom\\src\\js\\slsp\\slsp-archives-viewit\\js\\slsp-archives-viewit.module.js\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n template: `
\r\n
`}\r\n","\"use strict\";\r\n\r\nimport {epfl_almaviewit_html} from './epfl_almaviewit.html'\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require('./epfl_almaviewit.controller.js'),\r\n template: epfl_almaviewit_html}\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux\r\n ressources électroniques. Un message d'avertissement s'affiche quand la\r\n la personne n'est pas sur le réseau EPFL\r\n*/\r\n\r\nmodule.exports = ['$filter', 'slspIllSigninOrderLoggedOutService', function($filter, slspIllSigninOrderLoggedOutService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this;\r\n\r\n vm.get_txt = function() {\r\n return $filter('customTranslate')('vpnMSG');\r\n }\r\n\r\n vm.feedbackLink = '';\r\n vm.is_epfl_IP = false;\r\n vm.no_report_link = false;\r\n\r\n // Ne pas afficher le lien s'il s'agit d'open access\r\n if (vm.parentCtrl.item.pnx.addata.openaccess && vm.parentCtrl.item.pnx.addata.openaccess[0] === 'true') {\r\n vm.no_report_link = true;\r\n }\r\n // Ne pas afficher le lien s'il s'agit d'open access (notices CDI)\r\n if (vm.parentCtrl.item.pnx.addata.oa && vm.parentCtrl.item.pnx.addata.oa[0] === 'free_for_read') {\r\n vm.no_report_link = true;\r\n }\r\n\r\n if (!vm.no_report_link){\r\n\r\n /* Obtient l'adresse ip depuis un service se trouvant dans le\r\n module \\js\\slsp\\slsp-ill-signin-order-logged-out\\js\\epfl-ill-signin-order-logged-out.module.js */\r\n vm.is_epfl_IP = slspIllSigninOrderLoggedOutService.isEpflIP();\r\n vm.user_ip = slspIllSigninOrderLoggedOutService.get_ip();\r\n\r\n // Récupération des métadonnées de la ressource\r\n var mmsId = vm.parentCtrl.item.pnx.control.recordid[0];\r\n var title = '';\r\n if (vm.parentCtrl.item.pnx.display.title && vm.parentCtrl.item.pnx.display.title.length > 0) {\r\n title = vm.parentCtrl.item.pnx.display.title[0];\r\n }\r\n var creationdate = '';\r\n if (vm.parentCtrl.item.pnx.display.creationdate && vm.parentCtrl.item.pnx.display.creationdate.length > 0) {\r\n creationdate = vm.parentCtrl.item.pnx.display.creationdate[0];\r\n }\r\n var creator = '';\r\n if (vm.parentCtrl.item.pnx.display.creator && vm.parentCtrl.item.pnx.display.creator.length > 0) {\r\n creator = vm.parentCtrl.item.pnx.display.creator.join(', ');\r\n }\r\n var type = '';\r\n if (vm.parentCtrl.item.pnx.display.type && vm.parentCtrl.item.pnx.display.type.length > 0) {\r\n type = vm.parentCtrl.item.pnx.display.type[0];\r\n }\r\n var identifier = '';\r\n if (vm.parentCtrl.item.pnx.display.identifier && vm.parentCtrl.item.pnx.display.identifier.length > 0) {\r\n var ident = vm.parentCtrl.item.pnx.display.identifier[0];\r\n if (ident.indexOf('ISBN') > -1) {\r\n identifier = vm.parentCtrl.item.pnx.display.identifier.join(', ').replace(/<\\/b>/g, '').replace(//g, '');\r\n } else if (ident.indexOf('ISSN') > -1) {\r\n identifier = vm.parentCtrl.item.pnx.display.identifier.join(', ').replace(/<\\/b>/g, '').replace(//g, '');\r\n } else if (ident.indexOf('ISBN') > -1) {\r\n identifier = 'ISBN: ' + ident.substring(ident.indexOf('$$V') + 3);\r\n } else if (ident.indexOf('ISSN') > -1) {\r\n identifier = 'ISSN: ' + ident.substring(ident.indexOf('$$V') + 3);\r\n }\r\n }\r\n var userAgent = navigator.userAgent;\r\n\r\n // Création de l'objet du message\r\n var subject = 'Access problem ' + mmsId + ' - \"' + title + '\"';\r\n\r\n // Création du corps du message\r\n var body = $filter('customTranslate')('feedbackLinkMSG') + '\\n\\n' + '****\\nTitle: ' + title + '\\nAuthor: ' + creator + '\\nYear: ' + creationdate + '\\nType: ' + type + '\\nDocId: ' + mmsId + '\\nIdentifier: ' + identifier + '\\nUser_agent: ' + userAgent + '\\nUserIP: ' + vm.user_ip + '\\nRange EPFL: ' + vm.is_epfl_IP + '\\n****';\r\n\r\n vm.feedbackLink = 'mailto:eresources@epfl.ch' + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body) + '&Content-Type=text/html';\r\n }\r\n\r\n }]\r\n","\r\nvar fullview_module = angular.module('fullviewModule', ['angularLoad']);\r\nfullview_module.component('prmAlmaViewitAfter', require('./almaviewit.component.js'));\r\nfullview_module.component('prmEpflAlmaViewitAfter', require('./epfl_almaviewit.component.js'));\r\n","module.exports = {active: false,\r\n txt:\r\n {fr: `
\r\n

Le réseau NEBIS a pris fin le 7 décembre 2020 pour être remplacé par un nouveau réseau plus vaste : swisscovery

\r\n
`,\r\n en: `
\r\n

The NEBIS network ended on December 7, 2020. It has been replaced by swisscovery: a new and wider network.

\r\n
`},\r\n begin:\"2020-01-04T00:00:00Z\",\r\n end:\"2023-03-31T12:00:00Z\"}\r\n","var homepage_module = angular.module('homepageModule', ['angularLoad']);\r\nhomepage_module.component('prmSearchBarAfter', require('./searchbar.component.js'));\r\nhomepage_module.component('prmMainMenuAfter', require('./mainmenu.component.js'));\r\nhomepage_module.component('prmTopbarAfter', require('./topbar.component.js'));\r\n","/*\r\n DESCRIPTION:\r\n Corriger le lien du menu principal vers les bases de données.\r\n Empêche l'ouverture d'un nouvel onglet.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: [function() {\r\n var vm = this;\r\n\r\n // Effectue cette vérification lors chaque digest.\r\n this.$doCheck = function() {\r\n // Vérifie si la page est chargée\r\n if (document.readyState === 'complete' && !vm.modified){\r\n\r\n // Essaie de trouver le menu des bases de données\r\n try{var elem = document.querySelector(\"[translate='mainmenu.label.db']\").parentElement;}\r\n catch(e){\r\n vm.modified = false;\r\n }\r\n if (elem){\r\n // Empêche l'ouverture d'un nouvel onglet en supprimant l'attribut \"target\"\r\n elem.removeAttribute('target');\r\n elem.setAttribute('aria-label', 'Databases');\r\n vm.modified = true;\r\n }\r\n }\r\n };\r\n }]\r\n};\r\n","/*\r\n OBJECTIFS:\r\n - Toujours afficher l'onglet pour modifier le scope\r\n - Afficher une alerte si les dates correspondent\r\n UTILISATION:\r\n Pour paramétrer l'alerte, il faut modifier le fichier alert_message.js (dans ce dossier)\r\n\r\n REMARQUES:\r\n
\r\n => \"ng-bind-html\" permet d'avoir du texte formatté dans la balise.\r\n*/\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n template: '
',\r\n controllerAs: 'ctrl',\r\n controller: ['$translate', function($translate){\r\n\r\n var vm = this;\r\n\r\n /********************/\r\n /* MESSAGE D'ALERTE */\r\n /********************/\r\n\r\n // récupère le fichier json avec les paramètres de l'alerte\r\n vm.alert = require('./alert_message.js');\r\n\r\n // par défaut, l'alerte n'est pas considérée comme active\r\n vm.active = false;\r\n\r\n // Vérifie dans le fichier json si une alerte est prévue\r\n if (vm.alert.active === true){\r\n\r\n // Teste si les dates correspondent pour l'affichage de l'alerte\r\n var d_now = Date.now();\r\n if ((new Date(vm.alert.begin) < d_now) && (d_now < new Date(vm.alert.end))) {\r\n // déclenche l'affichage de l'alerte\r\n vm.active = true;\r\n }\r\n }\r\n\r\n // getteur qui retourne le texte en fonction de la langue\r\n vm.get_txt = function(){\r\n var lang = ['en', 'fr'].includes($translate.use()) ? $translate.use():'en';\r\n return vm.active ? vm.alert.txt[lang] : \"\";\r\n }\r\n\r\n /*******************/\r\n /* SCOPE PERMANENT */\r\n /*******************/\r\n\r\n // Rendre permanent l'affichage des onglets permettant de sélectionnet le scope\r\n vm.parentCtrl.showTabsAndScopes = true;\r\n // console.log('-----------------');\r\n // console.log($translate.use());\r\n // console.log(vm);\r\n // console.log('-----------------');\r\n }\r\n ]};\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: afficher l'entête de la page.\r\n DESCRIPTION: contient le titre BEAST et le teaser. Si on clique sur le\r\n titre, cela renvoie à la page d'accueil de BEAST.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', function($location, $translate) {\r\n var vm = this;\r\n\r\n // Construction de l'URL vers la page d'accueil. Il faut indiquer la vue et la langue.\r\n vm.url = $location.absUrl().split('?')[0] + '?vid=' + vm.parentCtrl.configurationUtil.vid + '&lang=' + $translate.use();\r\n\r\n // console.log(vm.url);\r\n }],\r\n template: `
\r\n

{{ 'mainTitle' | customTranslate }}

\r\n

{{ 'subTitle' | customTranslate }}

\r\n
`\r\n};\r\n","/************************/\r\n/* List of used modules */\r\n/************************/\r\n\r\n/*\r\nLes paquets suivants ne sont pas en usage pour le moment:\r\n- trustHtmal qui permet de mettre des balises dans les champs de données.\r\n- databases: pour l'instant il n'y a pas de personnalisation\r\n*/\r\n\r\nimport './filters/custom_translate.filter.js';\r\n// import './filters/trust_html.filter.js';\r\nimport './slsp/slsp-courier-info';\r\n// import './slsp/slsp-ill-signin-order-logged-out';\r\nimport './slsp/slsp-http-intercept-requests'\r\nimport './slsp/slsp-ill-signin-order-alert';\r\nimport './slsp/slsp-edit-personal-details';\r\nimport './slsp/prm-locations-after';\r\nimport './slsp/prm-location-items-after';\r\nimport './slsp/slsp-archives-htgi';\r\nimport './slsp/slsp-archives-viewit';\r\nimport './slsp/prm-user-area-expandable-after';\r\nimport './briefview';\r\nimport './homepage';\r\nimport './fullView';\r\nimport './factory';\r\n\r\n// import './databases';\r\nvar app = angular.module('viewCustom', ['angularLoad',\r\n 'customTranslateFilter',\r\n 'slspHttpInterceptRequests',\r\n // 'trustHtmlFilter',\r\n 'epflCourierInfo',\r\n // 'epflIllSigninOrderLoggedOut',\r\n 'slspUserAreaExpandableAfterModule',\r\n 'slspIllSigninOrderAlert',\r\n 'epflEditPersonalDetails',\r\n 'ethLocationsAfterModule',\r\n 'ethLocationItemsAfterModule',\r\n 'slspArchivesHtgi',\r\n 'slspArchivesViewit',\r\n 'briefviewModule',\r\n 'homepageModule',\r\n 'fullviewModule',\r\n 'checkUserModule',\r\n // 'databasesModule'\r\n ]);\r\n","import {ethLocationItemsFilterModule} from './eth-location-items-filter/eth-location-items-filter.module';\r\nimport {epflIButtonModule} from './slsp-i-button/epfl-i-button.module';\r\n\r\nexport const ethLocationItemsAfterModule = angular\r\n .module('ethLocationItemsAfterModule', [])\r\n .component('prmLocationItemsAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``\r\n });\r\n\r\nethLocationItemsAfterModule.requires.push(ethLocationItemsFilterModule.name);\r\nethLocationItemsAfterModule.requires.push(epflIButtonModule.name);\r\n","export class ethLocationItemsFilterController {\r\n\r\n constructor($timeout, $scope) {\r\n this.$timeout = $timeout;\r\n this.$scope = $scope;\r\n }\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.$watch('this.$ctrl.parentCtrl.loc.location.librarycodeTranslation', (newValue, oldValue, scope) => {\r\n \r\n if(!scope.$ctrl.parentCtrl.isLocationsFilterVisible && newValue && newValue != ''){\r\n \r\n this.$scope.$watch('this.$ctrl.parentCtrl.loc.items', (currentItemsArray) => {\r\n\r\n if (angular.isArray(currentItemsArray) && currentItemsArray.length > 1){\r\n \r\n this.$timeout(() => {\r\n scope.$ctrl.parentCtrl.isLocationsFilterVisible = true;\r\n }, 0);\r\n \r\n } \r\n \r\n })\r\n }\r\n\r\n }, true);\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ethLocationItemsFilterController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nethLocationItemsFilterController.$inject = ['$timeout', '$scope'];\r\n\r\n","/**\r\n* @ngdoc module\r\n* @name ethLocationsFilterModule\r\n*\r\n* @description\r\n*\r\n* Customization for the locations filter:
\r\n* - the locations filter is visible by default\r\n*\r\n* If there is 1 location: prmLocationItemsAfter\r\n*\r\n* If there are multiple locations: prmLocationAfter;\r\n* after all locations: prmLocationsAfter;\r\n* after choosing a location: prmLocationItemsAfter\r\n*\r\n*\r\n* AngularJS Dependencies
\r\n*\r\n*\r\n* CSS/Image Dependencies
\r\n* CSS eth-locations-filter.css\r\n*\r\n*\r\n*/\r\nimport {ethLocationItemsFilterController} from './eth-location-items-filter.controller';\r\n\r\nexport const ethLocationItemsFilterModule = angular\r\n .module('ethLocationItemsFilterModule', [])\r\n .controller('ethLocationItemsFilterController', ethLocationItemsFilterController)\r\n .component('ethLocationItemsFilterComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'ethLocationItemsFilterController'\r\n })\r\n","\r\n\r\n//--------\"i\" button ---------------------------------------\r\n\r\n\r\n export class epflIButtonController {\r\n\r\n constructor() {}\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n // console.log(this);\r\n this.getLibrary = getLibrary;\r\n this.biblinkText = \"Library\";\r\n this.biblinkBase = \"https:\\/\\/slsp.ch\\/libraries\";\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n this.getLibraryUrl = getLibraryUrl;\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n\r\n function getLibrary() {\r\n return this.parentCtrl.currLoc ? this.parentCtrl.currLoc.location.librarycodeTranslation : '';\r\n\r\n }\r\n\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n function getLibraryUrl() {\r\n if (this.parentCtrl.loc && this.parentCtrl.loc.location.libraryCode==='E02') {\r\n return \"https://go.epfl.ch/library\";\r\n } else {\r\n return this.biblinkBase;\r\n }\r\n }\r\n // View is useful to get the url img\r\n this.view = this.parentCtrl.configurationUtil.vid.replace(':', '-');\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIButtonController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }\r\n\r\n epflIButtonController.$inject = [];\r\n","\r\n\r\n//--------\"i\" button ---------------------------------------\r\n\r\n// angular\r\n// .module('slspIButton', [])\r\n\r\n// .controller('LibInfoController', [function () {\r\n// var vm = this;\r\n// vm.getLibrary = getLibrary;\r\n// vm.biblinkText = \"Library\";\r\n// vm.biblinkBase = \"https:\\/\\/slsp.ch\\/libraries\";\r\n\r\n// function getLibrary() {\r\n// return vm.parentCtrl.currLoc.location.librarycodeTranslation;\r\n// }\r\n\r\n// }])\r\n\r\n// .component('prmLocationItemsAfter', {\r\n// bindings: { parentCtrl: '<' },\r\n// controller: 'LibInfoController',\r\n// template: ''\r\n// });\r\n\r\n\r\n\r\n import {epflIButtonController} from './epfl-i-button.controller';\r\n import {epflIButtonHtml} from './epfl-i-button.html';\r\n\r\n export const epflIButtonModule = angular\r\n .module('epflIButtonModule', [])\r\n .controller('epflIButtonController', epflIButtonController)\r\n .component('epflIButtonComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'epflIButtonController',\r\n template: epflIButtonHtml\r\n })\r\n","import {ethLocationsFilterModule} from './eth-locations-filter/eth-locations-filter.module';\r\n\r\nexport const ethLocationsAfterModule = angular\r\n .module('ethLocationsAfterModule', [])\r\n .component('prmLocationsAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``\r\n });\r\n\r\nethLocationsAfterModule.requires.push(ethLocationsFilterModule.name);\r\n","export class ethLocationsFilterController {\r\n\r\n constructor($timeout, $scope) {\r\n this.$timeout = $timeout;\r\n this.$scope = $scope;\r\n }\r\n\r\n $onInit() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.$watch('this.$ctrl.parentCtrl.locations[0].location.librarycodeTranslation', (newValue, oldValue, scope) => {\r\n if(!scope.$ctrl.parentCtrl.isLocationsFilterVisible && newValue && newValue != ''){\r\n this.$timeout(() => {\r\n scope.$ctrl.parentCtrl.isLocationsFilterVisible = true;\r\n }, 0);\r\n }\r\n }, true);\r\n }\r\n catch(e){\r\n console.error(\"***ETH*** an error occured: ethLocationsFilterController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nethLocationsFilterController.$inject = ['$timeout', '$scope'];\r\n","/**\r\n* @ngdoc module\r\n* @name ethLocationsFilterModule\r\n*\r\n* @description\r\n*\r\n* Customization for the locations filter:
\r\n* - the locations filter is visible by default\r\n*\r\n* If there is 1 location: prmLocationItemsAfter\r\n*\r\n* If there are multiple locations: prmLocationAfter;\r\n* after all locations: prmLocationsAfter;\r\n* after choosing a location: prmLocationItemsAfter\r\n*\r\n*\r\n* AngularJS Dependencies
\r\n*\r\n*\r\n* CSS/Image Dependencies
\r\n* CSS eth-locations-filter.css\r\n*\r\n*\r\n*/\r\nimport {ethLocationsFilterController} from './eth-locations-filter.controller';\r\n\r\nexport const ethLocationsFilterModule = angular\r\n .module('ethLocationsFilterModule', [])\r\n .controller('ethLocationsFilterController', ethLocationsFilterController)\r\n .component('ethLocationsFilterComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'ethLocationsFilterController'\r\n })\r\n","// Un seul changement EPFL sur les langues.\r\n\r\nexport class bcuLangSwitchController {\r\n\r\n constructor($element, $window) {\r\n this.$parent = $element.parent().parent()[0];\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$window = $window;\r\n }\r\n\r\n $onInit() {\r\n try {\r\n\r\n this.languages = [\"fr\", \"en\"];\r\n if (!this.languages.includes(this.parentCtrl.lang)) {\r\n this.changeLanguage(\"en\");\r\n }\r\n\r\n }\r\n catch (e) {\r\n console.error(\"***BCUFR*** bcuLangSwitchControler $onInit\");\r\n console.error(e.message);\r\n }\r\n };\r\n\r\n changeLanguage(lang) {\r\n\r\n this.parentCtrl.changeLangService.addLangParamToUrl(lang);\r\n let t = this.parentCtrl;\r\n this.parentCtrl.i18nService.setLanguage(lang).then(function(){\r\n t.$timeout(function(){return t.$state.go(t.$state.current,{lang:lang},{reload:!0})})\r\n });\r\n };\r\n\r\n}\r\nbcuLangSwitchController.$inject = ['$element'];\r\n","/**\r\n* @ngdoc module\r\n* @name bcuLangSwitchModule\r\n*\r\n* @description\r\n* - Add LangSwitch to user area\r\n* @example\r\n* each view\r\n*\r\n*/\r\nimport {bcuLangSwitchController} from './bcu-lang-switch.controller';\r\n\r\nexport const bcuLangSwitchModule = angular\r\n .module('bcuLangSwitchModule', [])\r\n .controller('bcuLangSwitchController', bcuLangSwitchController)\r\n .component('bcuLangSwitchComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'bcuLangSwitchController',\r\n// template: ''\r\n template: ''\r\n })\r\n","\r\nexport class slspIllSigninOrderLoggedOutController {\r\n\r\n constructor(slspIllSigninOrderLoggedOutService, $scope) {\r\n this.slspIllSigninOrderLoggedOutService = slspIllSigninOrderLoggedOutService;\r\n this.$scope = $scope;\r\n }\r\n\r\n $doCheck() {\r\n try{\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$scope.usrNme = this.slspIllSigninOrderLoggedOutService.isGuest();\r\n\r\n if (this.$scope.usrNme == true) {\r\n let myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.addClass('logged-out')\r\n }\r\n \r\n else {\r\n let myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.removeClass('logged-out');\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIllSigninOrderLoggedOutController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n}\r\n\r\nslspIllSigninOrderLoggedOutController.$inject = ['slspIllSigninOrderLoggedOutService', '$scope'];\r\n \r\n\r\n","\r\n\r\n //--------ILL Signin Order - if logged out ---------------------------------------\r\n\r\n\r\n import {slspIllSigninOrderLoggedOutController} from './slsp-ill-signin-order-logged-out.controller';\r\n import {slspIllSigninOrderLoggedOutService} from './slsp-ill-signin-order-logged-out.service';\r\n\r\n export const slspIllSigninOrderLoggedOutModule = angular\r\n .module('slspIllSigninOrderLoggedOutModule', [])\r\n .factory('slspIllSigninOrderLoggedOutService', slspIllSigninOrderLoggedOutService)\r\n .controller('slspIllSigninOrderLoggedOutController', slspIllSigninOrderLoggedOutController)\r\n .component('slspIllSigninOrderLoggedOutComponent', {\r\n bindings: {afterCtrl: '<'},\r\n controller: 'slspIllSigninOrderLoggedOutController',\r\n\r\n })\r\n","// Modification EPFL\r\n\r\n export const slspIllSigninOrderLoggedOutService = ['jwtHelper', function( jwtHelper ){\r\n\r\n function getDecodedToken(){\r\n try{\r\n if (!sessionStorage){\r\n console.error(\"***SLSP*** no session storage\")\r\n return null;\r\n }\r\n let jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt){\r\n return null;\r\n }\r\n return jwtHelper.decodeToken(jwt);\r\n }\r\n catch(e){\r\n console.error(\"**SLSP*** an error occured: slspIllSigninOrderLoggedOutService.getDecodedToken:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n function isGuest(){\r\n try{\r\n let decodedToken = getDecodedToken();\r\n if (!decodedToken) {\r\n return null;\r\n }\r\n let userName= decodedToken.userGroup !== 'GUEST'? decodedToken.userName : '';\r\n if (userName){\r\n return false;\r\n }\r\n else{\r\n return true;\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: slspIllSigninOrderLoggedOutService.isGuest:\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n /* ---------------------------------- */\r\n /* - Ajout pour vérifier si IP EPFL - */\r\n function isEpflIP() {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return;\r\n }\r\n const userIP = jwtHelper.decodeToken(jwt).userIp;\r\n if (userIP) {\r\n const regex = /128\\.17([89])\\.(\\d{1,3})\\./;\r\n const found = userIP.match(regex);\r\n if (found && (found[1] == '8' || parseInt(found[2])>=128)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /* --------- Fin de l'ajout --------- */\r\n /* ---------------------------------- */\r\n\r\n return {\r\n isGuest: isGuest,\r\n getDecodedToken: getDecodedToken,\r\n isEpflIP: isEpflIP\r\n };\r\n }]\r\n","import {bcuLangSwitchModule} from './bcu-lang-switch/bcu-lang-switch.module';\r\nimport {slspIllSigninOrderLoggedOutModule} from './slsp-ill-signin-order-logged-out/slsp-ill-signin-order-logged-out.module';\r\n\r\nexport const slspUserAreaExpandableAfterModule = angular\r\n .module('slspUserAreaExpandableAfterModule', [])\r\n .component('prmUserAreaExpandableAfter', {\r\n bindings: {parentCtrl: '<'},\r\n template: ``,\r\n });\r\n\r\nslspUserAreaExpandableAfterModule.requires.push(bcuLangSwitchModule.name);\r\nslspUserAreaExpandableAfterModule.requires.push(slspIllSigninOrderLoggedOutModule.name);","require('./js/slsp-archives-htgi.module.js')\r\nmodule.exports = 'slspArchivesHtgi'\r\n","angular\r\n .module('slspArchivesHtgi', [])\r\n\r\n // \"how to get it\" section for resources of archives MFA, TMA (CMI STAR)\r\n\r\n .controller('ArchivesHtgiController', [function () {\r\n\r\n this.$onInit = function () {\r\n try{\r\n if(!this.parentCtrl.item.pnx.display.source || this.parentCtrl.item.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.item.pnx.display.source[0];\r\n // CMI STAR sources\r\n if(this.source === 'ETH_MaxFrischArchiv' || this.source === 'ETH_ThomasMannArchiv'){\r\n // hide content of htgi section\r\n let section = document.getElementById('full-view-container');\r\n section.classList.add('slsp-archives-hide');\r\n\r\n // get guid of CMIStar\r\n let sourceid = this.parentCtrl.item.pnx.control.originalsourceid[0];\r\n let guid = sourceid.substring(sourceid.lastIndexOf(':') + 1);\r\n\r\n // different sources: concat url\r\n if(this.source === 'ETH_ThomasMannArchiv'){\r\n this.url = 'http://www.online.tma.ethz.ch/home/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Detailed information in Thomas Mann-Archiv Online (metadata only)';\r\n }\r\n else if (this.source === 'ETH_MaxFrischArchiv') {\r\n this.url = 'http://maxfrischarchiv-online.ethz.ch/home/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Request via Max Frisch-Archiv Online';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesHtgiController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n\r\n .component('almaHtgiSvcAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'ArchivesHtgiController',\r\n template: `\r\n
\r\n \r\n \r\n {{('customized.archives.' + $ctrl.source + '.linktext' | translate)}}\r\n {{$ctrl.label}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n No request possible. The digitized item can be consulted in the Thomas Mann Archives reading room upon advance registration (\r\n \r\n Contact\r\n \r\n \r\n ).\r\n
\r\n
\r\n
\r\n
\r\n Informationen zu Bestellung und Benutzung siehe\r\n \r\n Bedienungshinweise\r\n \r\n \r\n .\r\n
\r\n
\r\n
\r\n `\r\n });\r\n","require('./js/slsp-archives-viewit.module.js')\r\nmodule.exports = 'slspArchivesViewit'\r\n","angular\r\n.module('slspArchivesViewit', [])\r\n\r\n // .component('prmSearchResultAvailabilityLineAfter', { VERSION ETH\r\n //bindings: { parentCtrl: '<' },\r\n .component('prmEthSearchResultAvailabilityLineAfter', { // VERSION EPFL\r\n bindings: { afterCtrl: '<' },\r\n controller: 'ArchivesAvailabilityLineController'\r\n })\r\n\r\n .component('prmEthAlmaViewitAfter', {\r\n bindings: { afterCtrl: '<' },\r\n controller: 'ArchivesViewitController',\r\n template: `\r\n
\r\n \r\n \r\n {{('customized.archives.' + $ctrl.source + '.linktext' | translate)}}\r\n {{$ctrl.label}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Informationen zu Bestellung und Benutzung siehe\r\n \r\n Bedienungshinweise\r\n \r\n \r\n .\r\n
\r\n
\r\n
\r\n `\r\n })\r\n\r\n // viewit section for archives when there are only partial digitized items, e.g. \"ETH Hochschularchiv\" (CMI STAR)\r\n .controller('ArchivesViewitController', ['$translate', function ($translate) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n this.$onInit = function () {\r\n try{\r\n if(!this.parentCtrl.item.pnx.display.source || this.parentCtrl.item.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.item.pnx.display.source[0];\r\n // CMI STAR sources\r\n if(this.source === 'ETH_Hochschularchiv'){\r\n if(this.parentCtrl.item.delivery.GetIt1 && this.parentCtrl.item.delivery.GetIt1.length > 0 && this.parentCtrl.item.delivery.GetIt1[0].links && this.parentCtrl.item.delivery.GetIt1[0].links.length > 0){\r\n\r\n // there is an online resource: return and do nothing\r\n let aOnlineLink = this.parentCtrl.item.delivery.GetIt1[0].links.filter( l => {\r\n if(l.isLinktoOnline && l.link !== ''){\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (aOnlineLink.length > 0) {\r\n return;\r\n }\r\n\r\n // there is no online resource\r\n // change section heading\r\n $translate('nui.getit.service_howtogetit').then((translation) => {\r\n let fullView = document.getElementById('fullView');\r\n angular.element(fullView.querySelector(\"h4[translate='nui.getit.service_viewit']\")).text(translation);\r\n angular.element(fullView.querySelector(\"#services-index span[translate='nui.getit.service_viewit']\")).text(translation);\r\n });\r\n\r\n }\r\n // hide content of viewit section\r\n let section = document.getElementById('full-view-container');\r\n section.classList.add('slsp-archives-hide');\r\n\r\n // get guid of CMIStar\r\n let sourceid = this.parentCtrl.item.pnx.control.originalsourceid[0];\r\n let guid = sourceid.substring(sourceid.lastIndexOf(':') + 1);\r\n\r\n // different sources: concat url\r\n if(this.source === 'ETH_Hochschularchiv'){\r\n this.url = 'http://archivdatenbank-online.ethz.ch/hsa/#/content/' + guid;\r\n // only for test\r\n //this.label = 'Bestellen über Hochschularchiv Online';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesViewitController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n\r\n // change availability line, if there is no digitization\r\n .controller('ArchivesAvailabilityLineController', ['$translate', function ($translate) {\r\n this.$onInit = function () {\r\n try{\r\n /********************/\r\n /* DEBUT AJOUT EPFL */\r\n /********************/\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n /********************/\r\n /* FIN AJOUT EPFL */\r\n /********************/\r\n this.changeButton = false;\r\n if(!this.parentCtrl.result.pnx.display.source || this.parentCtrl.result.pnx.display.source.length === 0){\r\n return;\r\n }\r\n this.source = this.parentCtrl.result.pnx.display.source[0];\r\n if(!this.source === 'ETH_Hochschularchiv')return;\r\n if(!this.parentCtrl.result.delivery.GetIt1 || this.parentCtrl.result.delivery.GetIt1.length == 0 || !this.parentCtrl.result.delivery.GetIt1[0].links || this.parentCtrl.result.delivery.GetIt1[0].links.length == 0)return;\r\n\r\n let aOnlineLink = this.parentCtrl.result.delivery.GetIt1[0].links.filter( l => {\r\n if(l.isLinktoOnline && l.link !== ''){\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (aOnlineLink.length === 0) {\r\n // there is no online resource\r\n $translate('delivery.code.no_inventory').then((translation) => {\r\n this.changeButton = true;\r\n this.changeButtonText = translation;\r\n });\r\n let availabilityLine = this.parentCtrl.$element[0];\r\n if(availabilityLine) {\r\n availabilityLine.classList.add('slsp-hsa-no-online');\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***SLSP*** an error occured: ArchivesAvailabilityLineController\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n\r\n this.$doCheck = function () {\r\n try{\r\n if (this.changeButton){\r\n let availabilityLine = this.parentCtrl.$element[0];\r\n let button = availabilityLine.querySelector('.availability-status');\r\n if(angular.element(button) && angular.element(button).length > 0){\r\n angular.element(button).html(this.changeButtonText);\r\n this.changeButton = false;\r\n this.changeButtonText = '';\r\n }\r\n }\r\n }\r\n catch(e){\r\n console.error(\"***ETH*** an error occured: ArchivesAvailabilityLineController $doCheck\\n\\n\");\r\n console.error(e.message);\r\n }\r\n }\r\n }])\r\n","require('./js/epfl-courier-info.module.js')\r\nmodule.exports = 'slspCourierInfo'\r\n","/* ---------------- */\r\n/* - VERSION EPFL - */\r\n/* ---------------- */\r\n\r\n/*\r\n\r\nAVERTISSEMENT: ce module est très différent de sa version originale d'SLSP.\r\n\r\nIl doit donc être considéré comme réécrit et les ajouts ne sont pas indiqués.\r\n\r\nCe module permet d'afficher les boutons renvoyant à SWITCH edu-ID.\r\n\r\nFONCTIONNALITES:\r\n- Mettre l'EPFL en tête des possibilités de retrait.\r\n- Afficher les messages personnalisés pour les frais.\r\n\r\n*/\r\n\r\n angular\r\n .module('epflCourierInfo', [])\r\n\r\n .controller('CourierInfoController', ['$filter', '$element', function ($filter, $element, $compile, $scope, $rootScope) {\r\n var vm = this;\r\n\r\n //shortcut for convenience\r\n vm.form = $element[0].parentElement;\r\n\r\n //function for inserting block\r\n vm.$doCheck = function() {\r\n let form = false;\r\n let formLength = 2;\r\n // console.log(vm.form);\r\n if (vm.form.children[0].children[1] !== undefined && (vm.form.children[0].children[1].children[0] !== undefined || vm.typeFeeAlert()=='costWarningPEB')) {\r\n form = vm.form.children[0].children[1].children[0];\r\n if (vm.typeFeeAlert()=='costWarningPEB'){\r\n formLength = 3;\r\n }\r\n }\r\n else if (vm.form.children[0].children[0] !== undefined && vm.form.children[0].children[0].children[0] !== undefined) {\r\n form = vm.form.children[0].children[0].children[0];\r\n formLength = 3;\r\n }\r\n // console.log(vm.typeFeeAlert());\r\n\r\n //create and insert info block if not present\r\n // if (form){\r\n // // console.log('---' + String(formLength) + ' - ' + String(form.children.length));}\r\n if (form && form.children.length == formLength && form.children.length > 1 || vm.hasOwnProperty('currentTypeFeeAlert') &&\r\n vm.currentTypeFeeAlert != vm.typeFeeAlert()) {\r\n // console.log('cccc---' + String(formLength) + ' - ' + String(form.children.length));\r\n vm.currentTypeFeeAlert = vm.typeFeeAlert();\r\n var htmlwarning = `

${vm.getFeeAlert()}

`;\r\n if (vm.typeFeeAlert()=='costWarningScan') {\r\n var txt = $filter('customTranslate')('illButton');\r\n if (vm.get_peb_button()){\r\n var fn = `javascript:(function() {\r\n for (var elem of document.getElementsByTagName('span')) {\r\n if (elem.getAttribute('translate') === 'AlmaResourceSharing' &&\r\n elem.parentNode.className.indexOf('greenbutton') === -1)\r\n {\r\n elem.click();\r\n break;\r\n }\r\n };})()`;}\r\n else {\r\n var fn = `javascript:(function() {window.location.href = window.location.origin + '/discovery/blankIll?vid=${vm.parentCtrl.vid}'})()`;\r\n }\r\n\r\n\r\n htmlwarning += `

${txt}

`;\r\n\r\n }\r\n htmlwarning += `

${vm.parentCtrl.$translate.instant('customize.fullview.feesLinkText')}

`;\r\n var htmlcompiled = angular.element(htmlwarning)[0];\r\n\r\n // console.log('---' + String(formLength) + ' - ' + String(form.children.length));\r\n if (form.children.length == formLength) {\r\n // console.log('---' + String(formLength) + ' - ' + String(form.children.length));\r\n form.insertBefore(htmlcompiled, form.children[formLength - 1]);\r\n } else {\r\n // console.log(String(formLength) + ' - ' + String(form.children.length));\r\n form.children[form.children.length - 2].replaceWith(htmlcompiled);\r\n }\r\n }\r\n }\r\n\r\n // Remonte l'EPFL dans la liste des bibliothèques\r\n Object.defineProperty(vm.parentCtrl, \"form\", {\r\n configurable: !0,\r\n get: function(){\r\n // Mettre l'EPFL en première position\r\n var form = this.getFilteredForm(['label', 'multiLabel'], false);\r\n if (!vm.hasOwnProperty('pickupLocationsListOrdered')){\r\n for (var i = 0; i < form.length; i++){\r\n if (form[i].key == 'pickupInstitution'){\r\n function compare( a, b ){\r\n var onTopInstitutions = ['41SLSP_EPF', '41SLSP_EPFL'];\r\n a = onTopInstitutions.indexOf(a.value);\r\n b = onTopInstitutions.indexOf(b.value);\r\n if (a == b) {return 0};\r\n return a < b ? 1 : -1;\r\n }\r\n form[i].options.sort(compare);\r\n vm['pickupLocationsListOrdered'] = true;\r\n }\r\n }\r\n }\r\n return form;\r\n }\r\n }\r\n );\r\n\r\n // Vérifie si l'EPFL est la provenance de l'exemplaire sélectionné\r\n vm.isEPFL = function() {\r\n return vm.parentCtrl.requestService && vm.parentCtrl.requestService._service['link-to-service'].indexOf('institution=41SLSP_EPF') > 0 ? true : false;\r\n }\r\n\r\n vm.linkBase = \"https:\\/\\/slsp.ch\\/fees\";\r\n\r\n // Personnalisation du message des frais\r\n vm.typeFeeAlert = function() {\r\n // console.log(vm.parentCtrl.requestHeader);\r\n if (['almaRequest.header', 'almaRequestOther.header', 'almaItemRequest.header'].includes(vm.parentCtrl.requestHeader)) {\r\n return 'costWarningNetworkLoan'; // $filter('customTranslate')(costWarningNetworkLoan');\r\n } else if (['almaDigitization.header',\r\n 'almaDigitizationOther.header',\r\n 'almaItemDigitization.header']\r\n .includes(vm.parentCtrl.requestHeader)) {\r\n return vm.isEPFL() ? 'costWarningScanEPFL' : 'costWarningScan';\r\n } else if (vm.parentCtrl.requestHeader === 'almaResourceSharing.header') {\r\n return 'costWarningPEB';\r\n } else {\r\n return 'costWarningGeneral';\r\n }\r\n }\r\n vm.getFeeAlert = function() {\r\n // console.log(vm.typeFeeAlert());\r\n return $filter('customTranslate')(vm.typeFeeAlert());\r\n }\r\n\r\n // Récupère le bouton PEB de la page afin de simuler un clic dessus\r\n vm.get_peb_button = function(){\r\n var allElements = document.getElementsByTagName('span');\r\n for (var i = 0, n = allElements.length; i < n; i++) {\r\n if (allElements[i].getAttribute('translate') === 'AlmaResourceSharing' &&\r\n allElements[i].parentNode.className.indexOf('greenbutton') === -1)\r\n {\r\n return allElements[i];\r\n }\r\n }\r\n\r\n }\r\n\r\n // Fonction simulant un clic sur le bouton PEB quand on clique sur les\r\n // frais.\r\n vm.click_peb = function(){\r\n var button = vm.get_peb_button();\r\n if (button) {\r\n button.click();\r\n } else {\r\n window.location.href = window.location.origin + '/discovery/blankIll?vid=' + vm.parentCtrl.vid;\r\n }\r\n }\r\n // console.log(vm);\r\n\r\n }])\r\n\r\n .component('prmRequestAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'CourierInfoController',\r\n });\r\n","require('./js/epfl-edit-personal-details.module.js')\r\nmodule.exports = 'epflEditPersonalDetails'\r\n","/* --------------------- */\r\n/* - Début ajouts EPFL - */\r\n/*\r\n\r\nCe module permet d'afficher les boutons renvoyant à SWITCH edu-ID.\r\n\r\n- \"this\" a été remplacé partout par une variable \"vm\". C'est indispensable\r\npour garder la bonne référence dans les promesses.\r\n- Les boutons sont ajoutés avant l'adresse ce qui ne peut pas passer par\r\nun template\r\n\r\n*/\r\n/* - Fin ajouts EPFL - */\r\n/* ------------------- */\r\n\r\n\r\nangular\r\n .module('epflEditPersonalDetails', [])\r\n\r\n\r\n\r\n //------------------------------ edit personal details ---------------------------\r\n\r\n .controller('EditPersonalDetailsController', ['$scope', '$element', '$translate' , function ($scope, $element, $translate) {\r\n var vm = this; // Ajout EPFL\r\n let lang = 'en';\r\n let sms = $scope.$root.$$childHead.$ctrl.userSessionManagerService;\r\n if (sms) {\r\n lang = sms.getInterfaceLanguage();\r\n }\r\n\r\n vm.detailsBaseEdu = \"https:\\/\\/eduid.ch\\/web\\/change-account-data\\/2\\/?lang=\" + lang;\r\n vm.detailsBaseReg = \"https:\\/\\/registration.slsp.ch\\/library-card\\/?lang=\" + lang;\r\n vm.exclude = ['STAFF', '11', '12', '13', '14', '15', '16', '91', '92'];\r\n vm.grpA = ['11', '91', '92']; // comptes locaux\r\n vm.grpB = ['12', '13', '14', '15', '16']; // comptes institutionnels\r\n\r\n\r\n vm.getPatronGrp = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let patron = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (!vm.exclude.includes(patron)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n vm.grpLabelA = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let labelA = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (vm.grpA.includes(labelA)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n vm.grpLabelB = function() {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n let labelB = vm.parentCtrl.personalInfoService.personalInfo.patronstatus[0].registration[0].institution[0].patronstatuscode;\r\n if (vm.grpB.includes(labelB)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /* --------------------- */\r\n /* - Début ajouts EPFL - */\r\n\r\n vm.test = 0;\r\n vm.testPersonalInfo = function() {\r\n /* Constructeur de la promesse. Cette promess échoue quand\r\n les informations utilisateur ne sont pas ou pas encore\r\n disponible. */\r\n return new Promise((persInfoAv, persInfoNotAv) => {\r\n if (vm.parentCtrl.personalInfoService.personalInfo !== undefined) {\r\n persInfoAv();\r\n } else {\r\n persInfoNotAv();\r\n }\r\n })\r\n }\r\n vm.persInfoAv = function() {\r\n /* Succès de la promesse: le groupe utilisateur a été trouvé et\r\n les boutons adéquats s'afichent. */\r\n let html = '
';\r\n if (vm.grpLabelA()) {\r\n html += `${vm.parentCtrl.$translate.instant('customized.libraries.details')}`;\r\n }\r\n else if (vm.grpLabelB()) {\r\n html += `${vm.parentCtrl.$translate.instant('customized.slsp.details')}`;\r\n }\r\n else if (vm.getPatronGrp) {\r\n html += `\r\n \r\n \r\n \r\n \r\n \r\n \r\n ${vm.parentCtrl.$translate.instant('customized.personal.details')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ${vm.parentCtrl.$translate.instant('customized.libcard.number')}\r\n \r\n `\r\n }\r\n\r\n html += '
';\r\n var htmlcompiled = angular.element(html)[0];\r\n var place_to_insert = $element[0].parentElement.children[1].children[0];\r\n place_to_insert.insertBefore(htmlcompiled, place_to_insert.children[1]);\r\n }\r\n vm.persInfoNotAv = function() {\r\n vm.test += 1;\r\n if (vm.test < 10) {\r\n /* En cas d'échec, on attend 0.5 second et on relance le test */\r\n setTimeout(() => vm.testPersonalInfo().then(vm.persInfoAv, vm.persInfoNotAv), 500);\r\n }\r\n }\r\n if (vm.test === 0) {\r\n /* Premier lancement du test pour voir si les infos utilisateur\r\n sont disponibles */\r\n vm.testPersonalInfo().then(vm.persInfoAv, vm.persInfoNotAv);\r\n }\r\n /* - Fin ajouts EPFL - */\r\n /* ------------------- */\r\n\r\n\r\n }])\r\n\r\n\r\n .component('prmPersonalInfoAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'EditPersonalDetailsController',\r\n /* Suppression EPFL */\r\n // template: '

'\r\n });\r\n","require('./js/slsp-http-intercept-requests.module.js')\r\nmodule.exports = 'slspHttpInterceptRequests'","angular.module('slspHttpInterceptRequests', ['ng'])\r\n .config(['$httpProvider', ($httpProvider) => {\r\n $httpProvider.interceptors.push(['$q', ($q) => {\r\n return {\r\n 'request': (request) => {\r\n return request\r\n },\r\n 'requestError': (request) => {\r\n return $q.reject(request)\r\n },\r\n 'responseError': (response) => {\r\n return $q.reject(response)\r\n },\r\n 'response': (response) => {\r\n try {\r\n if (/primaws\\/rest\\/priv\\/myaccount\\/requests/.test(response.config.url)) {\r\n let interfaceLanguage = angular.element(document.querySelector('primo-explore')).injector().get('$rootScope').$$childHead.$ctrl.userSessionManagerService.getUserLanguage() ||\r\n window.appConfig['primo-view']['attributes-map'].interfaceLanguage\r\n\r\n let list_of_hold_states = {\r\n 'en': [\"in transit\", \"in process\", \"on hold shelf\"],\r\n 'de': [\"transfer\", \"in bearbeitung\", \"bereitgestellt\"],\r\n 'fr': [\"en cours de transfert\", \"en cours\", \"sur le rayon des réservations\"],\r\n 'it': [\"in transito\", \"in processo\", \"scaffale prenotazioni\"]\r\n }\r\n\r\n if (Object.keys(list_of_hold_states).includes(interfaceLanguage)) {\r\n let list_of_hold_states_regexp = RegExp(list_of_hold_states[interfaceLanguage].map(m => m.toLowerCase()).join('|'))\r\n if (response.status == 200 && response.data.status == \"ok\") {\r\n\r\n //rewrite all cancellable holds.\r\n response.data.data.holds.hold.map((m) => {\r\n if (list_of_hold_states_regexp.test(m.holdstatus.toLowerCase())) {\r\n m.cancel = 'N'\r\n }\r\n })\r\n\r\n }\r\n } else {\r\n throw `No mapping found for ${interfaceLanguage}`\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n return response\r\n }\r\n }\r\n }])\r\n }])","require('./js/slsp-ill-signin-order-alert.module.js')\r\nmodule.exports = 'slspIllSigninOrderAlert'","//--------ILL Signin Order - if Alert Message ---------------------------------------\r\n\r\nangular\r\n .module('slspIllSigninOrderAlert', [])\r\n\r\n .controller('AlertMsgController', ['$scope', function ($scope) {\r\n var vm = this;\r\n vm.getAlert = getAlert\r\n\r\n function getAlert() {\r\n var ga = vm.parentCtrl.almaHowToGetitService.reqAlert._htmlMsg;\r\n var myEl2 = angular.element(document.querySelector('primo-explore'));\r\n\r\n if (ga.length > 0) {\r\n return myEl2.addClass('alert');\r\n\r\n }\r\n else {\r\n\r\n return myEl2.removeClass('alert');\r\n }\r\n }\r\n }])\r\n\r\n .component('almaHowovpAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'AlertMsgController',\r\n template: '
{{$ctrl.getAlert()}}
'\r\n });\r\n"]} \ No newline at end of file