nodebb/public/src/admin/settings/email.js

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;
});