diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 2e085c684..1a28dddf4 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -24,4 +24,5 @@ //= require concavehull.min //= require graham_scan.min //= require leaflet.freedraw -//= require smart_listing \ No newline at end of file +//= require smart_listing +//= require franceconnect_kit \ No newline at end of file diff --git a/app/assets/javascripts/franceconnect_kit.js b/app/assets/javascripts/franceconnect_kit.js new file mode 100644 index 000000000..76df94916 --- /dev/null +++ b/app/assets/javascripts/franceconnect_kit.js @@ -0,0 +1,133 @@ +$(document).on('page:load', franceconnect_kit); +$(document).ready(franceconnect_kit); + +function franceconnect_kit() { + init_franceconnect_kit(); +} + +var fconnect = { + tracesUrl: '/traces', + aboutUrl: '' +}; + +function init_franceconnect_kit() { + initCurrentHostnameSource(); + includeFCCss(); + var fconnectProfile = document.getElementById('fconnect-profile'); + if (fconnectProfile) { + var fcLogoutUrl = fconnectProfile.getAttribute('data-fc-logout-url'); + var access = createFCAccessElement(fcLogoutUrl); + fconnectProfile.parentNode.appendChild(access); + fconnectProfile.onclick = toogleElement.bind(access); + } +} + +function initCurrentHostnameSource() { + var currentScript = 'https://fcp.integ01.dev-franceconnect.fr/js/franceconnect.js'; + var parseUrl = currentScript.split('/'); + fconnect.currentHost = parseUrl[2]; +} + +function includeFCCss() { + var linkCss = document.createElement('link'); + linkCss.rel = 'stylesheet'; + linkCss.href = '//' + fconnect.currentHost + '/stylesheets/franceconnect.css'; + linkCss.type = 'text/css'; + linkCss.media = 'screen'; + + document.getElementsByTagName('head')[0].appendChild(linkCss); +} + +function toogleElement(event) { + event.preventDefault(); + if (this.style.display === "block") { + this.style.display = "none"; + } else { + this.style.display = "block"; + } +} + +function closeFCPopin(event) { + event.preventDefault(); + fconnect.popin.className = 'fade-out'; + setTimeout(function() { + document.body.removeChild(fconnect.popin); + }, 200); +} + +function openFCPopin() { + fconnect.popin = document.createElement('div'); + fconnect.popin.id = 'fc-background'; + + var iframe = createFCIframe(); + + document.body.appendChild(fconnect.popin); + + fconnect.popin.appendChild(iframe); + + setTimeout(function() { + fconnect.popin.className = 'fade-in'; + }, 200); +} + +function createFCIframe() { + var iframe = document.createElement("iframe"); + iframe.setAttribute('id', 'fconnect-iframe'); + iframe.frameBorder = 0; + iframe.name = 'fconnect-iframe'; + return iframe; +} + +function createFCAccessElement(logoutUrl) { + var access = document.createElement('div'); + access.id = 'fconnect-access'; + access.innerHTML = '