99 lines
2.6 KiB
JavaScript
99 lines
2.6 KiB
JavaScript
"use strict";
|
|
/* global define, socket, app, ajaxify, ace */
|
|
|
|
define('admin/settings/email', ['admin/settings'], function(settings) {
|
|
var module = {},
|
|
emailEditor;
|
|
|
|
module.init = function() {
|
|
configureEmailTester();
|
|
configureEmailEditor();
|
|
|
|
$(window).on('action:admin.settingsLoaded action:admin.settingsSaved', handleDigestHourChange);
|
|
$(window).on('action:admin.settingsSaved', function() {
|
|
socket.emit('admin.user.restartJobs');
|
|
});
|
|
};
|
|
|
|
function configureEmailTester() {
|
|
$('button[data-action="email.test"]').off('click').on('click', function() {
|
|
socket.emit('admin.email.test', {template: $('#test-email').val()}, function(err) {
|
|
if (err) {
|
|
return app.alertError(err.message);
|
|
}
|
|
app.alertSuccess('Test Email Sent');
|
|
});
|
|
return false;
|
|
});
|
|
}
|
|
|
|
function configureEmailEditor() {
|
|
$('#email-editor-selector').on('change', updateEmailEditor);
|
|
|
|
emailEditor = ace.edit("email-editor");
|
|
emailEditor.setTheme("ace/theme/twilight");
|
|
emailEditor.getSession().setMode("ace/mode/html");
|
|
|
|
emailEditor.on('change', function() {
|
|
var emailPath = $('#email-editor-selector').val();
|
|
var original;
|
|
ajaxify.data.emails.forEach(function(email) {
|
|
if (email.path === emailPath) {
|
|
original = email.original;
|
|
}
|
|
});
|
|
var newEmail = emailEditor.getValue();
|
|
$('#email-editor-holder').val(newEmail !== original ? newEmail : '');
|
|
});
|
|
|
|
$('button[data-action="email.revert"]').off('click').on('click', function() {
|
|
ajaxify.data.emails.forEach(function(email) {
|
|
if (email.path === $('#email-editor-selector').val()) {
|
|
emailEditor.getSession().setValue(email.original);
|
|
$('#email-editor-holder').val('');
|
|
}
|
|
});
|
|
});
|
|
|
|
updateEmailEditor();
|
|
}
|
|
|
|
function updateEmailEditor() {
|
|
ajaxify.data.emails.forEach(function(email) {
|
|
if (email.path === $('#email-editor-selector').val()) {
|
|
emailEditor.getSession().setValue(email.text);
|
|
$('#email-editor-holder')
|
|
.val(email.text !== email.original ? email.text : '')
|
|
.attr('data-field', 'email:custom:' + email.path);
|
|
}
|
|
});
|
|
}
|
|
|
|
function handleDigestHourChange() {
|
|
var hour = parseInt($('#digestHour').val(), 10);
|
|
|
|
if (isNaN(hour)) {
|
|
hour = 17;
|
|
} else if (hour > 23 || hour < 0) {
|
|
hour = 0;
|
|
}
|
|
|
|
socket.emit('meta.getServerTime', {}, function(err, now) {
|
|
now = new Date(now);
|
|
|
|
$('#serverTime').text(now.toString());
|
|
|
|
now.setHours(parseInt(hour, 10), 0, 0, 0);
|
|
|
|
// If adjusted time is in the past, move to next day
|
|
if (now.getTime() < Date.now()) {
|
|
now.setDate(now.getDate() + 1);
|
|
}
|
|
|
|
$('#nextDigestTime').text(now.toString());
|
|
});
|
|
}
|
|
|
|
return module;
|
|
});
|