function initApplication() {
initNavigation();
initCampaignSelects();
}
function initNavigation() {
let redirect = {
start: initStart,
links: initLinks,
page: initPage,
marketing: initMarketingGuidelines,
file: initFile,
bannerlinks: initBannerLinks,
bannerhtml: initBannerHtml,
email: initEmail,
text: initText,
}
$(window).on('hashchange', function(e) {
let url = new URL( this.location.href );
let [action_hash, action_id] = url.hash.split('-');
let action = action_hash.replace('#', '');
$('.page-container').hide();
$('#nav-helper').show();
$('.navbar-nav').removeClass('d-none');
redirect[action](action_id);
parameters.updateFields();
});
$('#email-html-copy').on('click', function(e) {
let copier = $(this);
copier.popover('show');
navigator.clipboard.writeText($('#email-html').text());
setTimeout(function() {
copier.popover("hide");
}, 750);
});
$('#c1').on('keyup', function(e) {
parameters.c1 = $(this).val();
});
$('#c2').on('keyup', function(e) {
parameters.c2 = $(this).val();
});
$('#c3').on('keyup', function(e) {
parameters.c3 = $(this).val();
});
$('#numbers').on('change', function(e) {
parameters.number = $(this).val();
})
$('#reset').on('click', function(e) {
$('#c1, #c2, #c3').val('').trigger('keyup');
});
}
function initCampaignSelects() {
let options = [];
options.push($(''));
campaigns.campaigns.forEach(function(campaign) {
options.push($(''));
});
$('#select-campaign-main, #select-campaign-secondary').empty();
options.forEach(function(option) {
$('#select-campaign-main, #select-campaign-secondary')
.append(option.clone());
});
$('#select-campaign-main, #select-campaign-secondary').on('change', function(e) {
campaigns.current_campaign = $(this).val();
let select = ($(this).prop('id') == 'select-campaign-main') ? 'secondary' : 'main';
$('#select-campaign-' + select).val($(this).val());
window.location.hash = '#links';
$(window).trigger('hashchange');
if( campaigns.current.numbers ) {
parameters.numbers = campaigns.current.numbers;
parameters.number = campaigns.current.numbers[0];
}
updateCampaignNames();
updateNavigationLinks();
});
}
function initStart() {
$('.page-container').hide();
$('#nav-helper').hide();
$('#start-page').show();
}
function initLinks() {
$('#links-page').show();
let links = [];
campaigns.links.forEach(function(link) {
let campaign_link = $($('#campaign-link').html());
campaign_link.find('.link-name').text(link.name == 'Main Redirector' ? 'Landing Page Link' : link.name);
campaign_link.find('a').first().attr('href', link.link).attr('data-original', link.link).text(link.link);
links.push(campaign_link);
});
campaigns.numbers.forEach(function(number) {
let campaign_link = $($('#campaign-link').html());
campaign_link.find('.link-name').text('Number');
campaign_link.find('a').first().attr('href', 'tel:' + number).text( number );
links.push(campaign_link);
});
let optout_link = $($('#campaign-link').html());
optout_link.find('.link-name').text('Optout Link');
optout_link.find('a').first().attr('href', campaigns.current.optout).text(campaigns.current.optout);
links.push(optout_link);
$('#links-list').empty().append(links);
}
function initPage(id) {
let page = pages.find(page => page.id == id);
$('#information-content').html(page.content);
$('#information-page').show();
}
function initFile(id) {
let file = campaigns.file(id);
$('#information-content').html(file.content);
$('#information-page').show();
}
function initBannerLinks() {
let tags = [];
let links = [];
campaigns.banners.forEach(function(banner) {
let tag = $($('#banner-image-tag').html());
let link = $($('#banner-image-tag').html());
tag.find('code').text(banner.link.image)
link.find('code').attr('data-original', banner.link.anchor).text(banner.link.anchor)
tags.push(tag);
links.push(link);
});
$('#banner-image-tags').find('tbody').empty().append(tags);
$('#banner-image-links').find('tbody').empty().append(links);
$('#banner-links-page').show();
}
function initBannerHtml() {
let banners = [];
campaigns.banners.forEach(function(banner) {
let html = $($('#banner-html').html());
html.find('source').prop('src', $(banner.link.image).prop('src'));
html.find('code').attr('data-original', banner.link.anchor).text(banner.link.anchor)
html.find('img').prop('src', 'assets/banners/' + banner.campaign_id + '/' + banner.id + '.' + banner.extension);
html.find('img').on( 'error', function() {
$(this).attr( 'src', 'assets/images/blank.png' );
});
html.find('.image-description').text(banner.description)
html.find('.image-width').text(banner.image.width)
html.find('.image-height').text(banner.image.height)
banners.push(html);
});
$('#banner-html-list').empty().append(banners);
$('#banner-html-page').show();
}
function initMarketingGuidelines() {
$('#email-guidelines-page').show();
}
function initEmail(id) {
let email = campaigns.email(id);
$('#email-html').attr('data-original', email.body).text(email.body)
$('#email-subjects').text(email.subjects.filter(Boolean).join("\r\n"));
$('#email-from-lines').text(email.from_lines.filter(Boolean).join("\r\n"));
$('#email-preview').prop('href', email.preview_path);
if( email.images ) {
$('#email-download-images').prop('href', email.image_path);
$('#email-download-images').show()
} else {
$('#email-download-images').prop('href', '');
$('#email-download-images').hide();
}
$('#email-page').show();
}
function initText(id) {
let text = campaigns.text(id);
$('#text-display').html(text.text);
$('#text-html').find('code').text(text.text);
$('#text-page').show();
}
function updateNavigationLinks() {
let menu = {
pages: {
container: $('#page-menu'),
list: $('#page-menu-list'),
},
banners: {
container: $('#banner-menu'),
list: $('#banner-menu-list'),
},
emails: {
container: $('#email-menu'),
list: $('#email-menu-list'),
},
texts: {
container: $('#text-menu'),
list: $('#text-menu-list'),
}
}
menu.pages.list.empty();
pages.forEach(function(page) {
menu.pages.list.append($('' + page.name + ''));
});
campaigns.current.files.forEach(function(file) {
menu.pages.list.append($('' + file.name + ''))
})
menu.emails.list.empty();
menu.emails.list.append($('Email Marketing Guidlines'))
campaigns.emails.forEach(function(email) {
menu.emails.list.append($('' + email.description + ''));
});
menu.texts.list.empty();
campaigns.texts.forEach(function(text) {
menu.texts.list.append($('' + text.description + ''));
});
(campaigns.banners.length == 0 ) ? menu.banners.container.hide() : menu.banners.container.show();
(campaigns.emails.length == 0 ) ? menu.emails.container.hide() : menu.emails.container.show();
(campaigns.texts.length == 0 ) ? menu.texts.container.hide() : menu.texts.container.show();
}
function updateCampaignNames() {
$('.campaign-name').text(campaigns.campaign_name)
}