Oulun kaupunginhallitus on lähdössä vierailulle Ruotsin Luulajaan 21.–23. helmikuuta eli vajaan kuukauden päästä. Vierailun teemana on vihreä siirtymä ja rajat ylittävä pohjoinen yhteistyö.
Tarkoitus on vierailla muun muassa Luulajan teknillisessä yliopistossa, fossiilivapaata terästä valmistavassa 1 Hybrit -pilottilaitoksessa ja laajennettavassa Luulajan satamassa.
Tutustu, voit peruuttaa tilauksen koska tahansa.
{ if (window.LorienDispatch) { const payload = { structuredEvent: { eventCategory: ’Funnel Tracking’, eventAction: action, }, }; if (typeof cb === ’function’) { // Never wait longer than CALLBACK_MAX_WAIT setTimeout(() => { cb(); }, CALLBACK_MAX_WAIT); payload.eventTimeout = CALLBACK_EVENT_TIMEOUT; payload.eventCallback = cb; } window.LorienDispatch.dispatchEvent(’loginWallEvent’, payload); } else if (typeof cb === ’function’) { cb(); } }; const trackLoginWallClick = (elem, action) => { elem.addEventListener(’click’, function (event) { event.preventDefault(); const url = event.currentTarget.href; const callbackToRedirectUser = () => { setTimeout(() => { window.location.href = url; }, CALLBACK_DELAY); }; trackLoginPaywallEvent(action, callbackToRedirectUser); }); }; const loginRequiredPaywall = (options) => { const trxId = KalevaPaywallUtils.generateTransactionId(); const pwCreateLink = document.querySelector(’.js-create-account-link’); const pwLoginLink = document.querySelector(’.js-login-link’); const createLinkUrlParams = KalevaPaywallUtils.getLoginwallUrlParams( options.channel, ’login-paywall-signup’, trxId, ); if (pwCreateLink.href.includes(’luotunnus’)) { pwCreateLink.href = pwCreateLink.href + createLinkUrlParams; } else { const newParams = createLinkUrlParams.replace( ’next=’, ’content_url=’ + encodeURIComponent(window.location.origin), ); const hasParams = pwCreateLink.href.includes(’?’); pwCreateLink.href = pwCreateLink.href + (hasParams ? newParams : newParams.replace(’&’, ’?’)); } const loginLinkUrl = pwLoginLink.href + KalevaPaywallUtils.getLoginwallUrlParams(options.channel, ’login-paywall-logins’, trxId); pwLoginLink.href = loginLinkUrl; window.dataLayer.push({ logintxid: trxId, }); trackLoginPaywallEvent(’Login Walled Page Landed’); trackLoginWallClick(pwCreateLink, ’Signup link clicked’); trackLoginWallClick(pwLoginLink, ’Login link clicked’); }; window.login_html_utils = { loginRequiredPaywall, }; })(); function initLoginwall() { !isProd && console.log(’initLoginwall’); // old implementation window.login_html_utils.loginRequiredPaywall({ channel: window.digitalData.channel.title, }); // new zephr stuff const darkTheme = [’body.videosite’, ’body.gallery’, ’.article.-rich’].some((cls) => document.querySelector(cls)); document.querySelector(’.paywall__cta’).classList.add(’km-button-rounded’); document.querySelector(’.paywall__cta’).classList.add(’km-button-rounded__brown’); document.querySelector(’.js-login-link’).classList.add(’no-link-styles’); document.querySelector(’.js-login-link’).classList.add(’km-button-rounded’); document .querySelector(’.js-login-link’) .classList.add(darkTheme ? ’km-button-rounded__black-outlined’ : ’km-button-rounded__white-outlined’); document.querySelector(’.paywall-css-container’).classList.add(darkTheme ? ’-theme-dark’ : ’-theme-normal’); if (darkTheme) { document.querySelector(’.article.-rich’)?.classList.add(’-with-paywall-dark’); } } ]]> { ctaLink.href = KalevaPaywallUtils.setUrlParameter(ctaLink.href, key, value); }); const currentUrlWithKvatxid = KalevaPaywallUtils.setUrlParameter(document.location.href, ’kvatxid’, kvatxid); ctaLink.href = KalevaPaywallUtils.setUrlParameter(ctaLink.href, ’kvatxid’, kvatxid); ctaLink.href = KalevaPaywallUtils.setUrlParameter(ctaLink.href, ’content_url’, currentUrlWithKvatxid); const loginLink = document.querySelector(’a.js-login-link’); if (loginLink) { loginLink.href = KalevaPaywallUtils.setUrlParameter(loginLink.href, ’next’, currentUrlWithKvatxid); } // KalevaPaywallContent.bindListeners(); const parentFrameLinks = document.querySelectorAll(’a.js-parent-frame-link’); Array.prototype.forEach.call(parentFrameLinks, function (element) { element.addEventListener(’click’, function (e) { e.preventDefault(); if (e.target.className.indexOf(’js-cta-link’) > -1) { window.dataLayer.push({ event: ’Paywall CTA click’, }); setTimeout(function () { document.location.href = e.target.getAttribute(’href’); }, 100); } else { document.location.href = e.target.getAttribute(’href’); } }); }); } ]]> t.trim()) .filter(Boolean) .forEach((benefit) => { container.innerHTML += ` ${benefit} ]]>
Lähde