From 89a9d4b7f2c98df288cd8e95dea74dd8271f0874 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 30 Jul 2014 17:12:07 -0400 Subject: [PATCH] logic for #1837 --- public/language/en_GB/email.json | 2 ++ public/language/en_GB/error.json | 1 + public/src/forum/admin/settings.js | 14 +++++++++++++- src/socket.io/admin.js | 16 +++++++++++++++- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/public/language/en_GB/email.json b/public/language/en_GB/email.json index 687b18503c..87d3a5be39 100644 --- a/public/language/en_GB/email.json +++ b/public/language/en_GB/email.json @@ -20,5 +20,7 @@ "digest.unsub.cta": "Click here to alter those settings", "digest.daily.no_topics": "There have been no active topics in the past day", + "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.", + "closing": "Thanks!" } \ No newline at end of file diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index 79a26a9aa5..2b9a0aec46 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -33,6 +33,7 @@ "no-user": "User doesn't exist", "no-teaser": "Teaser doesn't exist", "no-privileges": "You don't have enough privileges for this action.", + "no-emailers-configured": "No email plugins were loaded, so a test email could not be sent", "category-disabled": "Category disabled", diff --git a/public/src/forum/admin/settings.js b/public/src/forum/admin/settings.js index c43ccc5c35..8cb6ebfdae 100644 --- a/public/src/forum/admin/settings.js +++ b/public/src/forum/admin/settings.js @@ -91,12 +91,24 @@ define('forum/admin/settings', ['uploader', 'sounds'], function(uploader, sounds handleUploads(); - $('#settings-tab a').click(function (e) { + $('#settings-tab a').off('click').on('click', function (e) { e.preventDefault(); $(this).tab('show'); return false; }); + $('button[data-action="email.test"]').off('click').on('click', function() { + socket.emit('admin.email.test', function(err) { + app.alert({ + alert_id: 'test_email_sent', + type: !err ? 'info' : 'danger', + title: 'Test Email Sent', + message: err ? err.message : '', + timeout: 2500 + }); + }); + }); + if (typeof callback === 'function') { callback(); } diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 9f6a0be04b..44bb228ade 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -9,6 +9,7 @@ var groups = require('../groups'), categories = require('../categories'), logger = require('../logger'), events = require('../events'), + emailer = require('../emailer'), db = require('../database'), async = require('async'), winston = require('winston'), @@ -22,7 +23,8 @@ var groups = require('../groups'), plugins: {}, widgets: {}, config: {}, - settings: {} + settings: {}, + email: {} }; SocketAdmin.before = function(socket, method, next) { @@ -121,4 +123,16 @@ SocketAdmin.settings.set = function(socket, data, callback) { meta.settings.set(data.hash, data.values, callback); }; +SocketAdmin.email.test = function(socket, data, callback) { + if (plugins.hasListeners('action:email.send')) { + emailer.send('test', socket.uid, { + subject: '[NodeBB] Test Email', + site_title: meta.config.site_title || 'NodeBB' + }); + callback(); + } else { + callback(new Error('[[error:no-emailers-configured]]')); + } +}; + module.exports = SocketAdmin;