diff --git a/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js b/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js index 474fb68..a5997d4 100644 --- a/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js +++ b/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js @@ -1,10 +1,12 @@ "use strict"; /* Ce module englobe à la fois un script de l'ETH pour les archives et les -scripts de l'EPFL */ +scripts de l'EPFL +ETH: primo-explore\custom\src\js\slsp\slsp-archives-viewit\js\slsp-archives-viewit.module.js + */ module.exports = { bindings: {parentCtrl: '<'}, - template: `
-
`//availabilitylineHtml, + template: ` + `//availabilitylineHtml, } diff --git a/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.html b/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.html index c8dfbde..ff07835 100644 --- a/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.html +++ b/primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.html @@ -1,5 +1,3 @@ -
-
- {{ 'pdfAccess' | customTranslate }} -
+
+ {{ 'pdfAccess' | customTranslate }}
diff --git a/primo-explore/custom/src/js/custom.js b/primo-explore/custom/src/js/custom.js index 875ff9a..f79da3c 100644 --- a/primo-explore/custom/src/js/custom.js +++ b/primo-explore/custom/src/js/custom.js @@ -1,2 +1,2 @@ -!function l(a,s,o){function c(t,e){if(!s[t]){if(!a[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return c(a[t][1][e]||e)},i,i.exports,l,a,s,o)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e\n
'}},{}],3:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./epfl_availabilityline.controller.js"),template:'
\r\n
\r\n {{ \'pdfAccess\' | customTranslate }}\r\n
\r\n
\r\n'}},{"./epfl_availabilityline.controller.js":4}],4:[function(e,t,r){"use strict";t.exports=["$filter","$http","userService",function(e,t,r){this.parentCtrl=this.afterCtrl.parentCtrl;var s=this;function o(e){var t=e.match(/10\.\d{4,9}\/[-._;()/:A-Z0-9]+/i);if(t)return t[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&&o(e.addata.doi[0])&&e.control.hasOwnProperty("recordtype")&&"article"===e.control.recordtype[0])return o(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 a=i.value;if(o(a))return o(a)}}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=""}0Service 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"}};return["en","fr","it","de"].includes(r.use())?t[e][r.use()]:t[e].fr}}])},{}],8:[function(e,t,r){"use strict";angular.module("trustHtmlFilter",[]).filter("trustHtml",["$sce",function(t){return function(e){return t.trustAsHtml(e)}}])},{}],9:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},template:'
\n
'}},{}],10:[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":11}],11:[function(e,t,r){"use strict";t.exports=["$filter","userService",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var r=this;if(r.get_txt=function(){return e("customTranslate")("vpnMSG")},r.feedbackLink="",r.is_epfl_IP=!1,r.no_report_link=!1,r.parentCtrl.item.pnx.addata.openaccess&&"true"===r.parentCtrl.item.pnx.addata.openaccess[0]&&(r.no_report_link=!0),r.parentCtrl.item.pnx.addata.oa&&"free_for_read"===r.parentCtrl.item.pnx.addata.oa[0]&&(r.no_report_link=!0),!r.no_report_link){r.is_epfl_IP=t.isEpflIP(),r.user_ip=t.get_ip();var n=r.parentCtrl.item.pnx.control.recordid[0],i="";r.parentCtrl.item.pnx.display.title&&0ISBN")||-1ISSN")?o=r.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
',de:'
\n

Das NEBIS-Netzwerk wurde am 07.12.2020 abgeschaltet und durch ein neues, grösseres Netzwerk ersetzt: swisscovery

\n
',it:'
\n

La rete NEBIS è stata sciolta il 7 dicembre 2020 per essere sostituita da una rete piú ampia di biblioteche: swisscovery

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

{{ 'mainTitle' | customTranslate }}

{{ 'subTitle' | customTranslate }}

"}},{}],18:[function(e,t,r){"use strict";e("./filters/custom_translate.filter.js"),e("./filters/trust_html.filter.js"),e("./slsp/slsp-courier-info"),e("./slsp/slsp-ill-signin-order-logged-out"),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("./briefview"),e("./homepage"),e("./fullView"),e("./databases");angular.module("viewCustom",["angularLoad","customTranslateFilter","trustHtmlFilter","epflCourierInfo","epflIllSigninOrderLoggedOut","slspIllSigninOrderAlert","epflEditPersonalDetails","ethLocationsAfterModule","ethLocationItemsAfterModule","slspArchivesHtgi","slspArchivesViewit","briefviewModule","homepageModule","fullviewModule","databasesModule"])},{"./briefview":1,"./databases":5,"./filters/custom_translate.filter.js":7,"./filters/trust_html.filter.js":8,"./fullView":12,"./homepage":14,"./slsp/prm-location-items-after":19,"./slsp/prm-locations-after":24,"./slsp/slsp-archives-htgi":27,"./slsp/slsp-archives-viewit":29,"./slsp/slsp-courier-info":31,"./slsp/slsp-edit-personal-details":33,"./slsp/slsp-ill-signin-order-alert":35,"./slsp/slsp-ill-signin-order-logged-out":37}],19:[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"),i=e("./slsp-i-button/epfl-i-button.module"),l=r.ethLocationItemsAfterModule=angular.module("ethLocationItemsAfterModule",[]).component("prmLocationItemsAfter",{bindings:{parentCtrl:"<"},template:''});l.requires.push(n.ethLocationItemsFilterModule.name),l.requires.push(i.epflIButtonModule.name)},{"./eth-location-items-filter/eth-location-items-filter.module":21,"./slsp-i-button/epfl-i-button.module":23}],20:[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":22}],24:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationsAfterModule=void 0;var n=e("./eth-locations-filter/eth-locations-filter.module");(r.ethLocationsAfterModule=angular.module("ethLocationsAfterModule",[]).component("prmLocationsAfter",{bindings:{parentCtrl:"<"},template:''})).requires.push(n.ethLocationsFilterModule.name)},{"./eth-locations-filter/eth-locations-filter.module":26}],25:[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\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 '})},{}],29:[function(e,t,r){"use strict";e("./js/slsp-archives-viewit.module.js"),t.exports="slspArchivesViewit"},{"./js/slsp-archives-viewit.module.js":30}],30:[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";if("costWarningScan"==s.typeFeeAlert()){var n=a("customTranslate")("illButton");if(s.get_peb_button())var i="javascript:(function() {\n for (var elem of document.getElementsByTagName('span')) {\n if (elem.getAttribute('translate') === 'AlmaResourceSharing' &&\n elem.parentNode.className.indexOf('greenbutton') === -1)\n {\n elem.click();\n break;\n }\n };})()";else i="javascript:(function() {window.location.href = window.location.origin + '/discovery/blankIll?vid="+s.parentCtrl.vid+"'})()";r+='

'+n+"

"}r+='

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

";var l=angular.element(r)[0];e.children.length==t?e.insertBefore(l,e.children[t-1]):e.children[e.children.length-2].replaceWith(l)}},Object.defineProperty(s.parentCtrl,"form",{configurable:!0,get:function(){var e=this.getFilteredForm(["label","multiLabel"],!1);if(!s.hasOwnProperty("pickupLocationsListOrdered"))for(var t=0;t":i.grpLabelB()?e+=''+i.parentCtrl.$translate.instant("customized.slsp.details")+"":i.getPatronGrp&&(e+='\n \n \n \n \n \n \n '+i.parentCtrl.$translate.instant("customized.personal.details")+'\n \n \n \n \n \n \n \n \n \n '+i.parentCtrl.$translate.instant("customized.libcard.number")+"\n \n "),e+="";var t=angular.element(e)[0],r=n[0].parentElement.children[1].children[0];r.insertBefore(t,r.children[1])},i.persInfoNotAv=function(){i.test+=1,i.test<10&&setTimeout(function(){return i.testPersonalInfo().then(i.persInfoAv,i.persInfoNotAv)},500)},0===i.test&&i.testPersonalInfo().then(i.persInfoAv,i.persInfoNotAv)}]).component("prmPersonalInfoAfter",{bindings:{parentCtrl:"<"},controller:"EditPersonalDetailsController"})},{}],35:[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":36}],36:[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()}}'})},{}],37:[function(e,t,r){"use strict";e("./js/epfl-ill-signin-order-logged-out.module.js"),t.exports="epflIllSigninOrderLoggedOut"},{"./js/epfl-ill-signin-order-logged-out.module.js":38}],38:[function(e,t,r){"use strict";angular.module("epflIllSigninOrderLoggedOut",[]).service("userService",["jwtHelper",function(n){this.get_ip=function(){var e=sessionStorage.getItem("primoExploreJwt");if(e)return n.decodeToken(e).userIp},this.isGuest=function(){var e=sessionStorage.getItem("primoExploreJwt");if(!e)return!0;var t=n.decodeToken(e);return!("GUEST"!==t.userGroup?t.userName:"")},this.isEpflIP=function(){var e=sessionStorage.getItem("primoExploreJwt");if(e){var t=n.decodeToken(e).userIp;if(t){var r=t.match(/128\.17([89])\.(\d{1,3})\./);if(r&&("8"==r[1]||128<=parseInt(r[2])))return!0}return!1}}}]).controller("IllBoxController",["$scope","userService",function(e,t){return e.usrNme=t.isGuest(),1!=e.usrNme?angular.element(document.querySelector("primo-explore")).removeClass("logged-out"):angular.element(document.querySelector("primo-explore")).addClass("logged-out")}]).component("prmUserAreaExpandableAfter",{bindings:{parentCtrl:"<"},controller:"IllBoxController",template:""})},{}]},{},[18]); +!function l(a,s,o){function c(t,e){if(!s[t]){if(!a[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return c(a[t][1][e]||e)},i,i.exports,l,a,s,o)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e\n '}},{}],3:[function(e,t,r){"use strict";t.exports={bindings:{afterCtrl:"<"},controller:e("./epfl_availabilityline.controller.js"),template:'\r\n'}},{"./epfl_availabilityline.controller.js":4}],4:[function(e,t,r){"use strict";t.exports=["$filter","$http","userService",function(e,t,r){this.parentCtrl=this.afterCtrl.parentCtrl;var s=this;function o(e){var t=e.match(/10\.\d{4,9}\/[-._;()/:A-Z0-9]+/i);if(t)return t[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&&o(e.addata.doi[0])&&e.control.hasOwnProperty("recordtype")&&"article"===e.control.recordtype[0])return o(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 a=i.value;if(o(a))return o(a)}}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=""}0Service 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"}};return["en","fr","it","de"].includes(r.use())?t[e][r.use()]:t[e].fr}}])},{}],8:[function(e,t,r){"use strict";angular.module("trustHtmlFilter",[]).filter("trustHtml",["$sce",function(t){return function(e){return t.trustAsHtml(e)}}])},{}],9:[function(e,t,r){"use strict";t.exports={bindings:{parentCtrl:"<"},template:'
\n
'}},{}],10:[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":11}],11:[function(e,t,r){"use strict";t.exports=["$filter","userService",function(e,t){this.parentCtrl=this.afterCtrl.parentCtrl;var r=this;if(r.get_txt=function(){return e("customTranslate")("vpnMSG")},r.feedbackLink="",r.is_epfl_IP=!1,r.no_report_link=!1,r.parentCtrl.item.pnx.addata.openaccess&&"true"===r.parentCtrl.item.pnx.addata.openaccess[0]&&(r.no_report_link=!0),r.parentCtrl.item.pnx.addata.oa&&"free_for_read"===r.parentCtrl.item.pnx.addata.oa[0]&&(r.no_report_link=!0),!r.no_report_link){r.is_epfl_IP=t.isEpflIP(),r.user_ip=t.get_ip();var n=r.parentCtrl.item.pnx.control.recordid[0],i="";r.parentCtrl.item.pnx.display.title&&0ISBN")||-1ISSN")?o=r.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
',de:'
\n

Das NEBIS-Netzwerk wurde am 07.12.2020 abgeschaltet und durch ein neues, grösseres Netzwerk ersetzt: swisscovery

\n
',it:'
\n

La rete NEBIS è stata sciolta il 7 dicembre 2020 per essere sostituita da una rete piú ampia di biblioteche: swisscovery

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

{{ 'mainTitle' | customTranslate }}

{{ 'subTitle' | customTranslate }}

"}},{}],18:[function(e,t,r){"use strict";e("./filters/custom_translate.filter.js"),e("./filters/trust_html.filter.js"),e("./slsp/slsp-courier-info"),e("./slsp/slsp-ill-signin-order-logged-out"),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("./briefview"),e("./homepage"),e("./fullView"),e("./databases");angular.module("viewCustom",["angularLoad","customTranslateFilter","trustHtmlFilter","epflCourierInfo","epflIllSigninOrderLoggedOut","slspIllSigninOrderAlert","epflEditPersonalDetails","ethLocationsAfterModule","ethLocationItemsAfterModule","slspArchivesHtgi","slspArchivesViewit","briefviewModule","homepageModule","fullviewModule","databasesModule"])},{"./briefview":1,"./databases":5,"./filters/custom_translate.filter.js":7,"./filters/trust_html.filter.js":8,"./fullView":12,"./homepage":14,"./slsp/prm-location-items-after":19,"./slsp/prm-locations-after":24,"./slsp/slsp-archives-htgi":27,"./slsp/slsp-archives-viewit":29,"./slsp/slsp-courier-info":31,"./slsp/slsp-edit-personal-details":33,"./slsp/slsp-ill-signin-order-alert":35,"./slsp/slsp-ill-signin-order-logged-out":37}],19:[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"),i=e("./slsp-i-button/epfl-i-button.module"),l=r.ethLocationItemsAfterModule=angular.module("ethLocationItemsAfterModule",[]).component("prmLocationItemsAfter",{bindings:{parentCtrl:"<"},template:''});l.requires.push(n.ethLocationItemsFilterModule.name),l.requires.push(i.epflIButtonModule.name)},{"./eth-location-items-filter/eth-location-items-filter.module":21,"./slsp-i-button/epfl-i-button.module":23}],20:[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":22}],24:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ethLocationsAfterModule=void 0;var n=e("./eth-locations-filter/eth-locations-filter.module");(r.ethLocationsAfterModule=angular.module("ethLocationsAfterModule",[]).component("prmLocationsAfter",{bindings:{parentCtrl:"<"},template:''})).requires.push(n.ethLocationsFilterModule.name)},{"./eth-locations-filter/eth-locations-filter.module":26}],25:[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\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 '})},{}],29:[function(e,t,r){"use strict";e("./js/slsp-archives-viewit.module.js"),t.exports="slspArchivesViewit"},{"./js/slsp-archives-viewit.module.js":30}],30:[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";if("costWarningScan"==s.typeFeeAlert()){var n=a("customTranslate")("illButton");if(s.get_peb_button())var i="javascript:(function() {\n for (var elem of document.getElementsByTagName('span')) {\n if (elem.getAttribute('translate') === 'AlmaResourceSharing' &&\n elem.parentNode.className.indexOf('greenbutton') === -1)\n {\n elem.click();\n break;\n }\n };})()";else i="javascript:(function() {window.location.href = window.location.origin + '/discovery/blankIll?vid="+s.parentCtrl.vid+"'})()";r+='

'+n+"

"}r+='

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

";var l=angular.element(r)[0];e.children.length==t?e.insertBefore(l,e.children[t-1]):e.children[e.children.length-2].replaceWith(l)}},Object.defineProperty(s.parentCtrl,"form",{configurable:!0,get:function(){var e=this.getFilteredForm(["label","multiLabel"],!1);if(!s.hasOwnProperty("pickupLocationsListOrdered"))for(var t=0;t":i.grpLabelB()?e+=''+i.parentCtrl.$translate.instant("customized.slsp.details")+"":i.getPatronGrp&&(e+='\n \n \n \n \n \n \n '+i.parentCtrl.$translate.instant("customized.personal.details")+'\n \n \n \n \n \n \n \n \n \n '+i.parentCtrl.$translate.instant("customized.libcard.number")+"\n \n "),e+="";var t=angular.element(e)[0],r=n[0].parentElement.children[1].children[0];r.insertBefore(t,r.children[1])},i.persInfoNotAv=function(){i.test+=1,i.test<10&&setTimeout(function(){return i.testPersonalInfo().then(i.persInfoAv,i.persInfoNotAv)},500)},0===i.test&&i.testPersonalInfo().then(i.persInfoAv,i.persInfoNotAv)}]).component("prmPersonalInfoAfter",{bindings:{parentCtrl:"<"},controller:"EditPersonalDetailsController"})},{}],35:[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":36}],36:[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()}}'})},{}],37:[function(e,t,r){"use strict";e("./js/epfl-ill-signin-order-logged-out.module.js"),t.exports="epflIllSigninOrderLoggedOut"},{"./js/epfl-ill-signin-order-logged-out.module.js":38}],38:[function(e,t,r){"use strict";angular.module("epflIllSigninOrderLoggedOut",[]).service("userService",["jwtHelper",function(n){this.get_ip=function(){var e=sessionStorage.getItem("primoExploreJwt");if(e)return n.decodeToken(e).userIp},this.isGuest=function(){var e=sessionStorage.getItem("primoExploreJwt");if(!e)return!0;var t=n.decodeToken(e);return!("GUEST"!==t.userGroup?t.userName:"")},this.isEpflIP=function(){var e=sessionStorage.getItem("primoExploreJwt");if(e){var t=n.decodeToken(e).userIp;if(t){var r=t.match(/128\.17([89])\.(\d{1,3})\./);if(r&&("8"==r[1]||128<=parseInt(r[2])))return!0}return!1}}}]).controller("IllBoxController",["$scope","userService",function(e,t){return e.usrNme=t.isGuest(),1!=e.usrNme?angular.element(document.querySelector("primo-explore")).removeClass("logged-out"):angular.element(document.querySelector("primo-explore")).addClass("logged-out")}]).component("prmUserAreaExpandableAfter",{bindings:{parentCtrl:"<"},controller:"IllBoxController",template:""})},{}]},{},[18]); //# 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 a776c02..5743862 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/index.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.component.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.controller.js","primo-explore/custom/src/js/databases/index.js","primo-explore/custom/src/js/databases/treenav.component.js","primo-explore/custom/src/js/filters/custom_translate.filter.js","primo-explore/custom/src/js/filters/trust_html.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.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/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-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","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-logged-out/index.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-logged-out/js/epfl-ill-signin-order-logged-out.module.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","briefview_module","angular","component","bindings","parentCtrl","template","afterCtrl","controller","$filter","$http","userService","this","vm","parse_doi","txt","m","match","is_epfl_IP","isEpflIP","get_doi","hasOwnProperty","result","pnx","addata","doi","control","recordtype","display","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_iterator","identifier","Symbol","iterator","next","done","value","err","return","check_doi","set_url_pdf","url","method","then","response","status","pdf_link","data","fullTextFile","controllerAs","filter","$translate","trad","costWarningScan","fr","en","de","it","costWarningScanEPFL","costWarningNetworkLoan","costWarningPEB","mainTitle","subTitle","switchEduID","illButton","feedbackLink","vpnMSG","feedbackLinkMSG","pdfAccess","includes","use","$sce","trustAsHtml","get_txt","no_report_link","item","openaccess","oa","user_ip","get_ip","mmsId","recordid","title","creationdate","creator","join","type","ident","indexOf","replace","substring","userAgent","navigator","subject","body","encodeURIComponent","fullview_module","active","begin","end","homepage_module","$location","$element","$doCheck","document","readyState","elem","querySelector","parentElement","modified","removeAttribute","setAttribute","alert","d_now","Date","now","lang","showTabsAndScopes","window","location","href","split","configurationUtil","vid","_ethLocationItemsFilter","_epflIButton","ethLocationItemsAfterModule","requires","push","ethLocationItemsFilterModule","name","epflIButtonModule","ethLocationItemsFilterController","$timeout","$scope","_classCallCheck","_this","$watch","newValue","oldValue","scope","$ctrl","isLocationsFilterVisible","currentItemsArray","isArray","console","error","message","$inject","epflIButtonController","getLibrary","currLoc","librarycodeTranslation","biblinkText","biblinkBase","getLibraryUrl","loc","libraryCode","view","_ethLocationsFilter","ethLocationsAfterModule","ethLocationsFilterModule","ethLocationsFilterController","$onInit","source","getElementById","classList","add","sourceid","originalsourceid","guid","lastIndexOf","delivery","GetIt1","links","l","isLinktoOnline","link","translation","fullView","element","text","changeButton","changeButtonText","availabilityLine","button","html","$compile","$rootScope","form","formLength","children","typeFeeAlert","currentTypeFeeAlert","htmlwarning","getFeeAlert","get_peb_button","fn","instant","htmlcompiled","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","origin","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","getAlert","ga","almaHowToGetitService","reqAlert","_htmlMsg","myEl2","addClass","removeClass","service","jwtHelper","jwt","sessionStorage","getItem","decodeToken","userIp","isGuest","decodedToken","userGroup","userName","userIP","found","parseInt","usrNme"],"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 `//availabilitylineHtml,\r\n}\r\n","\"use strict\";\r\n\r\nimport {epfl_availabilitylineHtml} from './epfl_availabilityline.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./epfl_availabilityline.controller.js'),\r\n template: epfl_availabilitylineHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'userService', function($filter, $http, userService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\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 vm.is_epfl_IP = userService.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 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\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","(function () {\r\n var homepage_module = angular.module('databasesModule', ['angularLoad']);\r\n homepage_module.component('prmTreeNavAfter', require('./treenav.component.js'));\r\n})()\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ne fait rien pour le moment\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$filter', function($filter) {\r\n var vm = this;\r\n // console.log(vm);\r\n }],\r\n // template: `
TEST
`,\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 };\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/* FILTRE : traduction */\r\n/***********************/\r\n\r\n/*\r\n OBJECTIF: Permettre des balises html dans les champs.\r\n UTILISATION: S'utilise dans une balise comme un filtre.\r\n EXEMPLE: {{ variable | trustHtml }}\r\n*/\r\n\r\nangular\r\n .module('trustHtmlFilter', [])\r\n .filter('trustHtml', ['$sce', function($sce){\r\n return function(txt){\r\n return $sce.trustAsHtml(txt);\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\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', 'userService', function($filter, userService) {\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 // not for 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 // not for cdi open access\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 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 = userService.isEpflIP();\r\n vm.user_ip = userService.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: true,\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 de: `
\r\n

Das NEBIS-Netzwerk wurde am 07.12.2020 abgeschaltet und durch ein neues, grösseres Netzwerk ersetzt: swisscovery

\r\n
`,\r\n it: `
\r\n

La rete NEBIS è stata sciolta il 7 dicembre 2020 per essere sostituita da una rete piú ampia di biblioteche: swisscovery

\r\n
`},\r\n begin:\"2020-01-04T00:00:00Z\",\r\n end:\"2021-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","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: corriger le lien du menu principal vers les bases de données.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', '$element', function($location, $translate, $element) {\r\n var vm = this;\r\n this.$doCheck = function() {\r\n if (document.readyState === 'complete' /*&& !vm.modified*/){\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 elem.removeAttribute('target');\r\n elem.setAttribute('aria-label', 'Databases');\r\n vm.modified = true;\r\n }\r\n }\r\n };\r\n // console.log(vm.url);\r\n }]\r\n};\r\n","\"use strict\";\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.json (dans ce dossier)\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.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', 'it', 'de'].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\r\n // console.log(vm.alert);\r\n }\r\n ]};\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: afficher l'entête de la page.\r\n REMARQUES: contient le titre BEAST, le teaser, le fil d'ariance. Le controlleur vérifie\r\n si on se trouve dans le compte de lecteur afin de paramétrer le fil d'ariane.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', '$element', function($location, $translate, $element) {\r\n var vm = this;\r\n vm.url = window.location.href.split('?')[0] + '?vid=' + vm.parentCtrl.configurationUtil.vid + '&lang=' + $translate.use();\r\n // console.log(vm.url);\r\n }],\r\n template: `

{{ 'mainTitle' | customTranslate }}

{{ 'subTitle' | customTranslate }}

`\r\n //templateUrl: './custom/41SLSP_EPF-prod/js/homepage/templates/topbar.html'\r\n};\r\n","/************************/\r\n/* List of used modules */\r\n/************************/\r\n\r\n// Import central SLSP package ;\r\n// import { centralCustom } from './slsp/custom_slsp.js';\r\n\r\nimport './filters/custom_translate.filter.js';\r\nimport './filters/trust_html.filter.js';\r\nimport './slsp/slsp-courier-info';\r\nimport './slsp/slsp-ill-signin-order-logged-out';\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 './briefview';\r\nimport './homepage';\r\nimport './fullView'\r\n// import { homepageModule } from './homepage/index.js';\r\n// import { customTranslateFilter } from './filters/custom_translate.filter.js';\r\n// import { trustHtmlFilter } from './filters/trust_html.filter.js';\r\n// import { epflEditPersonalDetails } from './account/index.js';\r\n// import { fullviewModule } from './fullview/index.js';\r\n// import { briefviewModule } from './briefview/index.js';\r\n// import { databasesModule } from './databases/index.js';\r\nimport './databases';\r\nvar app = angular.module('viewCustom', ['angularLoad',\r\n 'customTranslateFilter',\r\n 'trustHtmlFilter',\r\n 'epflCourierInfo',\r\n 'epflIllSigninOrderLoggedOut',\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","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-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 }])\r\n\r\n .component('almaHowovpAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'AlertMsgController',\r\n template: '
{{$ctrl.getAlert()}}
'\r\n });\r\n","require('./js/epfl-ill-signin-order-logged-out.module.js')\r\nmodule.exports = 'epflIllSigninOrderLoggedOut'\r\n"," //--------ILL Signin Order - if logged out ---------------------------------------\r\n\r\nangular\r\n .module('epflIllSigninOrderLoggedOut', [])\r\n\r\n .service('userService', ['jwtHelper', function (jwtHelper) {\r\n this.get_ip = function() {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return;\r\n }\r\n return jwtHelper.decodeToken(jwt).userIp;\r\n }\r\n this.isGuest = function () {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return true;\r\n }\r\n var decodedToken = jwtHelper.decodeToken(jwt);\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 /* ---------------------------------- */\r\n /* - Ajout pour vérifier si IP EPFL - */\r\n this.isEpflIP = function () {\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 }])\r\n\r\n .controller('IllBoxController', ['$scope', 'userService', function ($scope, userService) {\r\n\r\n $scope.usrNme = userService.isGuest();\r\n\r\n if ($scope.usrNme == true) {\r\n var myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.addClass('logged-out')\r\n }\r\n\r\n else {\r\n var myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.removeClass('logged-out');\r\n }\r\n\r\n\r\n }])\r\n\r\n .component('prmUserAreaExpandableAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'IllBoxController',\r\n template: ''\r\n });\r\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","primo-explore/custom/src/js/briefview/index.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/availabilityline.component.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.component.js","primo-explore/custom/src/js/briefview/prm-search-result-availability-line-after/epfl_availabilityline.controller.js","primo-explore/custom/src/js/databases/index.js","primo-explore/custom/src/js/databases/treenav.component.js","primo-explore/custom/src/js/filters/custom_translate.filter.js","primo-explore/custom/src/js/filters/trust_html.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.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/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-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","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-logged-out/index.js","primo-explore/custom/src/js/slsp/slsp-ill-signin-order-logged-out/js/epfl-ill-signin-order-logged-out.module.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","briefview_module","angular","component","bindings","parentCtrl","template","afterCtrl","controller","$filter","$http","userService","this","vm","parse_doi","txt","m","match","is_epfl_IP","isEpflIP","get_doi","hasOwnProperty","result","pnx","addata","doi","control","recordtype","display","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_iterator","identifier","Symbol","iterator","next","done","value","err","return","check_doi","set_url_pdf","url","method","then","response","status","pdf_link","data","fullTextFile","controllerAs","filter","$translate","trad","costWarningScan","fr","en","de","it","costWarningScanEPFL","costWarningNetworkLoan","costWarningPEB","mainTitle","subTitle","switchEduID","illButton","feedbackLink","vpnMSG","feedbackLinkMSG","pdfAccess","includes","use","$sce","trustAsHtml","get_txt","no_report_link","item","openaccess","oa","user_ip","get_ip","mmsId","recordid","title","creationdate","creator","join","type","ident","indexOf","replace","substring","userAgent","navigator","subject","body","encodeURIComponent","fullview_module","active","begin","end","homepage_module","$location","$element","$doCheck","document","readyState","elem","querySelector","parentElement","modified","removeAttribute","setAttribute","alert","d_now","Date","now","lang","showTabsAndScopes","window","location","href","split","configurationUtil","vid","_ethLocationItemsFilter","_epflIButton","ethLocationItemsAfterModule","requires","push","ethLocationItemsFilterModule","name","epflIButtonModule","ethLocationItemsFilterController","$timeout","$scope","_classCallCheck","_this","$watch","newValue","oldValue","scope","$ctrl","isLocationsFilterVisible","currentItemsArray","isArray","console","error","message","$inject","epflIButtonController","getLibrary","currLoc","librarycodeTranslation","biblinkText","biblinkBase","getLibraryUrl","loc","libraryCode","view","_ethLocationsFilter","ethLocationsAfterModule","ethLocationsFilterModule","ethLocationsFilterController","$onInit","source","getElementById","classList","add","sourceid","originalsourceid","guid","lastIndexOf","delivery","GetIt1","links","l","isLinktoOnline","link","translation","fullView","element","text","changeButton","changeButtonText","availabilityLine","button","html","$compile","$rootScope","form","formLength","children","typeFeeAlert","currentTypeFeeAlert","htmlwarning","getFeeAlert","get_peb_button","fn","instant","htmlcompiled","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","origin","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","getAlert","ga","almaHowToGetitService","reqAlert","_htmlMsg","myEl2","addClass","removeClass","service","jwtHelper","jwt","sessionStorage","getItem","decodeToken","userIp","isGuest","decodedToken","userGroup","userName","userIP","found","parseInt","usrNme"],"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 `//availabilitylineHtml,\r\n}\r\n","\"use strict\";\r\n\r\nimport {epfl_availabilitylineHtml} from './epfl_availabilityline.html';\r\n\r\nmodule.exports = {\r\n bindings: {afterCtrl: '<'},\r\n controller: require ('./epfl_availabilityline.controller.js'),\r\n template: epfl_availabilitylineHtml,\r\n}\r\n","module.exports = ['$filter', '$http', 'userService', function($filter, $http, userService) {\r\n this.parentCtrl = this.afterCtrl.parentCtrl;\r\n var vm = this\r\n\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 vm.is_epfl_IP = userService.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 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\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","(function () {\r\n var homepage_module = angular.module('databasesModule', ['angularLoad']);\r\n homepage_module.component('prmTreeNavAfter', require('./treenav.component.js'));\r\n})()\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: Ne fait rien pour le moment\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$filter', function($filter) {\r\n var vm = this;\r\n // console.log(vm);\r\n }],\r\n // template: `
TEST
`,\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 };\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/* FILTRE : traduction */\r\n/***********************/\r\n\r\n/*\r\n OBJECTIF: Permettre des balises html dans les champs.\r\n UTILISATION: S'utilise dans une balise comme un filtre.\r\n EXEMPLE: {{ variable | trustHtml }}\r\n*/\r\n\r\nangular\r\n .module('trustHtmlFilter', [])\r\n .filter('trustHtml', ['$sce', function($sce){\r\n return function(txt){\r\n return $sce.trustAsHtml(txt);\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', 'userService', function($filter, userService) {\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 // not for 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 // not for cdi open access\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 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 = userService.isEpflIP();\r\n vm.user_ip = userService.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: true,\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 de: `
\r\n

Das NEBIS-Netzwerk wurde am 07.12.2020 abgeschaltet und durch ein neues, grösseres Netzwerk ersetzt: swisscovery

\r\n
`,\r\n it: `
\r\n

La rete NEBIS è stata sciolta il 7 dicembre 2020 per essere sostituita da una rete piú ampia di biblioteche: swisscovery

\r\n
`},\r\n begin:\"2020-01-04T00:00:00Z\",\r\n end:\"2021-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","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: corriger le lien du menu principal vers les bases de données.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', '$element', function($location, $translate, $element) {\r\n var vm = this;\r\n this.$doCheck = function() {\r\n if (document.readyState === 'complete' /*&& !vm.modified*/){\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 elem.removeAttribute('target');\r\n elem.setAttribute('aria-label', 'Databases');\r\n vm.modified = true;\r\n }\r\n }\r\n };\r\n // console.log(vm.url);\r\n }]\r\n};\r\n","\"use strict\";\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.json (dans ce dossier)\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.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', 'it', 'de'].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\r\n // console.log(vm.alert);\r\n }\r\n ]};\r\n","\"use strict\";\r\n\r\n/*\r\n OBJECTIF: afficher l'entête de la page.\r\n REMARQUES: contient le titre BEAST, le teaser, le fil d'ariance. Le controlleur vérifie\r\n si on se trouve dans le compte de lecteur afin de paramétrer le fil d'ariane.\r\n*/\r\n\r\nmodule.exports = {\r\n bindings: {parentCtrl: '<'},\r\n controllerAs: 'ctrl',\r\n controller: ['$location', '$translate', '$element', function($location, $translate, $element) {\r\n var vm = this;\r\n vm.url = window.location.href.split('?')[0] + '?vid=' + vm.parentCtrl.configurationUtil.vid + '&lang=' + $translate.use();\r\n // console.log(vm.url);\r\n }],\r\n template: `

{{ 'mainTitle' | customTranslate }}

{{ 'subTitle' | customTranslate }}

`\r\n //templateUrl: './custom/41SLSP_EPF-prod/js/homepage/templates/topbar.html'\r\n};\r\n","/************************/\r\n/* List of used modules */\r\n/************************/\r\n\r\n// Import central SLSP package ;\r\n// import { centralCustom } from './slsp/custom_slsp.js';\r\n\r\nimport './filters/custom_translate.filter.js';\r\nimport './filters/trust_html.filter.js';\r\nimport './slsp/slsp-courier-info';\r\nimport './slsp/slsp-ill-signin-order-logged-out';\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 './briefview';\r\nimport './homepage';\r\nimport './fullView'\r\n// import { homepageModule } from './homepage/index.js';\r\n// import { customTranslateFilter } from './filters/custom_translate.filter.js';\r\n// import { trustHtmlFilter } from './filters/trust_html.filter.js';\r\n// import { epflEditPersonalDetails } from './account/index.js';\r\n// import { fullviewModule } from './fullview/index.js';\r\n// import { briefviewModule } from './briefview/index.js';\r\n// import { databasesModule } from './databases/index.js';\r\nimport './databases';\r\nvar app = angular.module('viewCustom', ['angularLoad',\r\n 'customTranslateFilter',\r\n 'trustHtmlFilter',\r\n 'epflCourierInfo',\r\n 'epflIllSigninOrderLoggedOut',\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","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-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 }])\r\n\r\n .component('almaHowovpAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'AlertMsgController',\r\n template: '
{{$ctrl.getAlert()}}
'\r\n });\r\n","require('./js/epfl-ill-signin-order-logged-out.module.js')\r\nmodule.exports = 'epflIllSigninOrderLoggedOut'\r\n"," //--------ILL Signin Order - if logged out ---------------------------------------\r\n\r\nangular\r\n .module('epflIllSigninOrderLoggedOut', [])\r\n\r\n .service('userService', ['jwtHelper', function (jwtHelper) {\r\n this.get_ip = function() {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return;\r\n }\r\n return jwtHelper.decodeToken(jwt).userIp;\r\n }\r\n this.isGuest = function () {\r\n var jwt = sessionStorage.getItem('primoExploreJwt');\r\n if (!jwt) {\r\n return true;\r\n }\r\n var decodedToken = jwtHelper.decodeToken(jwt);\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 /* ---------------------------------- */\r\n /* - Ajout pour vérifier si IP EPFL - */\r\n this.isEpflIP = function () {\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 }])\r\n\r\n .controller('IllBoxController', ['$scope', 'userService', function ($scope, userService) {\r\n\r\n $scope.usrNme = userService.isGuest();\r\n\r\n if ($scope.usrNme == true) {\r\n var myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.addClass('logged-out')\r\n }\r\n\r\n else {\r\n var myEl = angular.element(document.querySelector('primo-explore'));\r\n return myEl.removeClass('logged-out');\r\n }\r\n\r\n\r\n }])\r\n\r\n .component('prmUserAreaExpandableAfter', {\r\n bindings: { parentCtrl: '<' },\r\n controller: 'IllBoxController',\r\n template: ''\r\n });\r\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/primo-explore/custom/src/js/fullview/almaviewit.component.js b/primo-explore/custom/src/js/fullview/almaviewit.component.js index be5fa73..f6f2d95 100644 --- a/primo-explore/custom/src/js/fullview/almaviewit.component.js +++ b/primo-explore/custom/src/js/fullview/almaviewit.component.js @@ -1,12 +1,15 @@ "use strict"; /* OBJECTIF: Ajouter un lien pour rapporter les problèmes d'accès aux ressources électroniques. Un message d'avertissement s'affiche quand la la personne n'est pas sur le réseau EPFL + + Englobe un module d'archive de l'ETH et un module de l'EPFL. + ETH: primo-explore\custom\src\js\slsp\slsp-archives-viewit\js\slsp-archives-viewit.module.js */ module.exports = { bindings: {parentCtrl: '<'}, template: `
`}