/* jshint esversion: 6 */ /* global jQuery, _, tp */ (function($) { var _oNewslettersPushAjaxHandle = false; /** * @var string Class to add to the body tag when the user is logged into Piano */ var CLASS_PIANO_LOGGED_IN = 'piano-logged-in'; /** * */ function fnSetupPrimaryNavLoggedIn() { var oContainer = $('.member-links-container'); oContainer.empty(); var oAccountLink = $('', { 'class': 'account', 'href': '/my-account', 'text': 'My Account' }); oAccountLink.appendTo(oContainer); var oLogoutLink = $('', { 'class': 'logout', 'href': '#', 'text': 'Log out' }); oLogoutLink.appendTo(oContainer); } /** * */ function fnSetupPrimaryNavLoggedOut() { var oContainer = $('.member-links-container'); oContainer.empty(); var oAccountLink = $('', { 'class': 'register', 'href': window.blogurls.blog_1 + '/register', 'text': 'Register' }); oAccountLink.appendTo(oContainer); var oLoginLink = $('', { 'class': 'login', 'href': '#', 'text': 'Log in' }); oLoginLink.appendTo(oContainer); } /** * */ function fnPianoLogout(oEvent) { var userId = tp.pianoId.getUser().sub; oEvent.preventDefault(); tp.pianoId.logout(); if(typeof signInPopup !== 'undefined') { signInPopup.gaTrack('logout', { userId: userId }); } window.location.replace('/'); } /** * */ function fnPianoLogin(oEvent) { oEvent.preventDefault(); if(typeof signInPopup !== 'undefined') { if(typeof signInPopup.args !== 'undefined') { signInPopup.open(); } } } /** * */ function fnPianoInit() { tp.enableGACrossDomainLinking(); var pianoIdSettings = { loggedIn: function() { pianoLoginFunctions.loggedIn(); }, loggedOut: function() { pianoLoginFunctions.loggedOut(); } }; if(window.creode.constants.PIANO_IFRAME_URL) { pianoIdSettings.iframeUrl = window.creode.constants.PIANO_IFRAME_URL; } tp.pianoId.init(pianoIdSettings); jQuery(document).ready(function() { signInPopup.init({ signInHeading: 'Log in to your account', resetPasswordHeading: 'Reset your password', resetPasswordButtonText: 'Forgot your password' }); myAccount.init(); newPasswordForm.init(); registerPage.init(); }); } /** * */ function addAccountLinks() { if(typeof dontAddAccountLinks !== 'undefined') { return false; } // Grab the primary nav var oPrimaryNav = $('.sticky-header__container,.primary-nav'); if(oPrimaryNav.length === 0) { return; } // Create a container var oLinksContainer = $('
', { 'class': 'member-links-container' }); oLinksContainer.appendTo(oPrimaryNav); var oLinksContainerMobile = oLinksContainer.clone(); oLinksContainerMobile.addClass('member-links-container--mobile'); jQuery('body').append(oLinksContainerMobile); (tp.pianoId.isUserValid()) ? fnSetupPrimaryNavLoggedIn() : fnSetupPrimaryNavLoggedOut(); jQuery('.user-toggle').on('click', function(event) { event.preventDefault(); oLinksContainerMobile.toggleClass('member-links-container--mobile--active'); }); var oLinksContainerMobileCloseButton = jQuery(''); oLinksContainerMobileCloseButton.on('click', function() { oLinksContainerMobile.removeClass('member-links-container--mobile--active'); }); oLinksContainerMobile.append(oLinksContainerMobileCloseButton); // Bind events oLinksContainer.add(oLinksContainerMobile).on('click', '.logout', fnPianoLogout); oLinksContainer.add(oLinksContainerMobile).on('click', '.login', fnPianoLogin); } function pianoInitialisedWindowEvent() { window.postMessage({ pianoInitialised: true } , '*'); } window.initialNewsletterSignUp = function(callback) { if(tp.pianoId.isUserValid()) { var userData = tp.pianoId.getUser(); if(typeof userData.sub !== 'undefined') { var ajaxData = { action: 'add_to_initial_newsletter_sign_up_queue', pid: userData.sub }; jQuery.ajax({ url: window.wp_ajaxurl, type: 'POST', dataType: 'JSON', data: ajaxData }).done(function(response) { if(response.success) { if(typeof callback == 'function') { callback(); } else { location.reload(); } } else { initialNewsletterSignUp(callback); } }).error(function() { initialNewsletterSignUp(callback); }); } } }; tp.push(['setUsePianoIdUserProvider', true]); tp.push(['init', fnPianoInit]); /** * The DOM is ready */ $(document).ready(function() { tp.push(['init', addAccountLinks]); tp.push(['init', pianoInitialisedWindowEvent]); }); }(jQuery)); var pianoLoginFunctions = { loggedIn: function() { }, loggedOut: function() { } };