You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.7 KiB
JavaScript

'use strict';
define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) {
var module = {};
var 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.$blockScrolling = Infinity;
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) {
if (err) {
return app.alertError(err.message);
}
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;
});