Välj vilken kommunikation du vill ha
Här kan du välja vilka redaktionella gratis nyhetsbrev eller utskick om jobbuppdrag du vill få från oss på Sverek.
(function () {
function getTranslations() {
var translations = { en: { document: { title: 'Manage Preferences' }, title: { preferences: 'Preferences settings', updating_success: 'Preferences are successfully updated' }, checkAll: 'Check all', description: 'You can update your preferences by checking the relevant checkboxes below and then clicking "update"', button_update: 'Update' }, sv: { document: { title: 'Hantera inställningar' }, title: { preferences: 'Preferenser inställningar', updating_success: 'Inställningarna har uppdaterats' }, checkAll: 'Markera alla', description: 'Du kan uppdatera dina preferenser genom att markera de relevanta checkboxarna och sen klicka på "uppdatera"', button_update: 'Uppdatera' } }
var default_language = 'sv'; var language = getParameterByName('lang') || default_language; if (!translations[language]) { language = default_language; }
return translations[language]; }
(function loadPage() {
var stylesLoadTime = 200;
loadStyles();
document.title = getTranslations().document.title;
setTimeout(function () { loadContent(); }, stylesLoadTime); })();
function loadStyles() { var styleUrls = [ 'https://fonts.googleapis.com/css?family=Lato:100,100i,300,300i,400,400i,500,500i,700,700i,900,900&display=swap', getBaseUrl() + '/js/v5/unsubscribe-page.css' ]; styleUrls.forEach(function (styleUrl) { var link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('href', styleUrl); document.head.appendChild(link); }); }
function loadContent() { var subscriber_id = getParameterByName('subscriber_id'), account_id = getParameterByName('account_id'), group_id = getParameterByName('preference_group_id'), rule_unsubscribe_portal = document.querySelector('#rule-unsubscribe-portal');
var url = '/preference/encrypted-preferences?account_id=' + account_id + '&preference_group_id=' + group_id + '&subscriber_id=' + subscriber_id; request({ url: url, callback: function (response) { rule_unsubscribe_portal.innerHTML = getPreferencesPage(response.preference_group); listenUpdatePreferences(account_id, response.preference_group); listenToggleAll(account_id, response.preference_group); listenPreferenceClick(); updateCheckAll(); } }); }
function getPreferencesPage(preference_group) {
var translation = getTranslations();
return '' + '
' + '
' + translation.title.preferences + '
' + '
' + '
' + translation.description + '
' + '
' + '
' + preference_group.name + '
' + '
- ' +
'
- ' + '' + '
' + '
' + '
- ' +
preference_group.preferences.map(function (preference) {
return '' +
'
- ' + '' + '
' }).join(' ') + '
' + '
' + '
' + '
' + '
'; }
function getParameterByName(name) { name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^]*)|&|#|$)'), results = regex.exec(window.location.href); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); }
function listenUpdatePreferences(account_id, preference_group) { var update_button = document.querySelector('#preferences-button'); update_button.addEventListener('click', function () { preference_group.preferences.forEach(function (preference) { var checkbox = document.querySelector('#preference-checkbox-' + preference.id); preference.is_opted_in = checkbox && checkbox.checked; });
updatePreferenceGroup(preference_group); }); }
function updateCheckAll() { var toggle_checkbox = document.querySelector('#preference-checkbox-all'), check_boxes = getCheckBoxes(); var checked_boxes = check_boxes .filter(function(check_box) { return check_box.checked; }); toggle_checkbox.checked = check_boxes.length === checked_boxes.length; }
function getCheckBoxes() { var query = document.querySelectorAll('.preference-checkbox'); var elements = []; query.forEach(function(element) { elements.push(element); }); return elements; }
function listenToggleAll(account_id, preference_group) { var toggle_checkbox = document.querySelector('#preference-checkbox-all'); toggle_checkbox.addEventListener('click', function() { var checked = !toggle_checkbox.checked; preference_group.preferences.forEach(function (preference) { var checkbox = document.querySelector('#preference-checkbox-' + preference.id); checkbox.checked = !checked; }); updateCheckAll(); }); }
function listenPreferenceClick() { document.querySelectorAll('.preference-checkbox').forEach( function(element) { element.addEventListener('click', updateCheckAll); }); }
function updatePreferenceGroup(preference_group) { var url = '/preference/update-subscriber-preferences';
request({ url: url, method: 'PATCH', body: {preference_group: preference_group}, callback: function () { var title = document.querySelector('#preferences-title'); title.innerHTML = getTranslations().title.updating_success; highLight(title); } }); }
function getBaseUrl() { return getParameterByName('domain'); }
function request(params) { var url = getBaseUrl() + params.url, method = params.method || 'GET', callback = params.callback, errorCallback = params.errorCallback, body = JSON.stringify(params.body), test = params.test;
callback = callback || function () { }; errorCallback = errorCallback || function () { };
if (test) { return setTimeout(callback, 500); }
var xhr = new XMLHttpRequest();
xhr.open(method, url); if (['PATCH', 'POST', 'PUT'].indexOf(method) !== -1) { xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); } xhr.send(body);
xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { callback(JSON.parse(xhr.response)); } }; xhr.onerror = errorCallback; }
function highLight(element) { if (element) { element.classList.remove('_yellow-fade'); void element.offsetWidth; element.classList.add('_yellow-fade'); } }
})();