From 9729246a4c2297a633ee6b97e53f46e14452e94c Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:10:19 +0100 Subject: [PATCH 1/8] Add reply_to field to campaigns table --- setup/sql/mailtrain.sql | 5 +++-- setup/sql/upgrade-00020.sql | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 setup/sql/upgrade-00020.sql diff --git a/setup/sql/mailtrain.sql b/setup/sql/mailtrain.sql index 3ada3fdf..ad7ec0c4 100644 --- a/setup/sql/mailtrain.sql +++ b/setup/sql/mailtrain.sql @@ -56,6 +56,7 @@ CREATE TABLE `campaigns` ( `check_status` varchar(255) DEFAULT NULL, `from` varchar(255) DEFAULT '', `address` varchar(255) DEFAULT '', + `reply_to` varchar(255) DEFAULT '', `subject` varchar(255) DEFAULT '', `html` longtext, `html_prepared` longtext, @@ -209,7 +210,7 @@ CREATE TABLE `settings` ( `value` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `key` (`key`) -) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4; INSERT INTO `settings` (`id`, `key`, `value`) VALUES (1,'smtp_hostname','localhost'); INSERT INTO `settings` (`id`, `key`, `value`) VALUES (2,'smtp_port','465'); INSERT INTO `settings` (`id`, `key`, `value`) VALUES (3,'smtp_encryption','TLS'); @@ -226,7 +227,7 @@ INSERT INTO `settings` (`id`, `key`, `value`) VALUES (13,'default_from','My Awes INSERT INTO `settings` (`id`, `key`, `value`) VALUES (14,'default_address','admin@example.com'); INSERT INTO `settings` (`id`, `key`, `value`) VALUES (15,'default_subject','Test message'); INSERT INTO `settings` (`id`, `key`, `value`) VALUES (16,'default_homepage','http://localhost:3000/'); -INSERT INTO `settings` (`id`, `key`, `value`) VALUES (17,'db_schema_version','19'); +INSERT INTO `settings` (`id`, `key`, `value`) VALUES (17,'db_schema_version','20'); CREATE TABLE `subscription` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `cid` varchar(255) CHARACTER SET ascii NOT NULL, diff --git a/setup/sql/upgrade-00020.sql b/setup/sql/upgrade-00020.sql new file mode 100644 index 00000000..16d675db --- /dev/null +++ b/setup/sql/upgrade-00020.sql @@ -0,0 +1,11 @@ +# Header section +# Define incrementing schema version number +SET @schema_version = '20'; + +# Add reply_to field +ALTER TABLE `campaigns` ADD COLUMN `reply_to` varchar(255) DEFAULT '' AFTER `address`; + +# Footer section +LOCK TABLES `settings` WRITE; +INSERT INTO `settings` (`key`, `value`) VALUES('db_schema_version', @schema_version) ON DUPLICATE KEY UPDATE `value`=@schema_version; +UNLOCK TABLES; From 901591dde42851d8897657ada728354056f4a879 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:10:44 +0100 Subject: [PATCH 2/8] Ensure the campaigns model picks up reply_to --- lib/models/campaigns.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/campaigns.js b/lib/models/campaigns.js index e6c2cd7f..78114c59 100644 --- a/lib/models/campaigns.js +++ b/lib/models/campaigns.js @@ -14,7 +14,7 @@ let mailer = require('../mailer'); let caches = require('../caches'); let humanize = require('humanize'); -let allowedKeys = ['description', 'from', 'address', 'subject', 'template', 'source_url', 'list', 'segment', 'html', 'text', 'tracking_disabled']; +let allowedKeys = ['description', 'from', 'address', 'reply_to', 'subject', 'template', 'source_url', 'list', 'segment', 'html', 'text', 'tracking_disabled']; module.exports.list = (start, limit, callback) => { db.getConnection((err, connection) => { From 15613ba50c001eb414a0c054029d3d1849797ddc Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:41:32 +0100 Subject: [PATCH 3/8] Show replyTo address in campaign view --- views/campaigns/view.hbs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/views/campaigns/view.hbs b/views/campaigns/view.hbs index 7f8463a6..55c07b34 100644 --- a/views/campaigns/view.hbs +++ b/views/campaigns/view.hbs @@ -78,6 +78,11 @@
{{address}}
{{/if}} + {{#if replyTo}} +
Email "reply-to"
+
{{replyTo}}
+ {{/if}} + {{#if subject}}
Email "subject line"
{{subject}}
From ac72abd993a480f013435e4e8e85d68cca1f15aa Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:43:38 +0100 Subject: [PATCH 4/8] Ensure replyTo is picked up for campaign creation page --- routes/campaigns.js | 1 + 1 file changed, 1 insertion(+) diff --git a/routes/campaigns.js b/routes/campaigns.js index f41143a4..8a9b2e23 100644 --- a/routes/campaigns.js +++ b/routes/campaigns.js @@ -88,6 +88,7 @@ router.get('/create', passport.csrfProtection, (req, res) => { data.from = data.from || configItems.defaultFrom; data.address = data.address || configItems.defaultAddress; + data.replyTo = data.replyTo || ''; data.subject = data.subject || configItems.defaultSubject; let view; From e756e315e80b8a895caa27c6a2ff4506015d631b Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:44:06 +0100 Subject: [PATCH 5/8] Add form field for replyTo email in campaign creation --- views/campaigns/create.hbs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/views/campaigns/create.hbs b/views/campaigns/create.hbs index b39ae1e8..e2853260 100644 --- a/views/campaigns/create.hbs +++ b/views/campaigns/create.hbs @@ -91,7 +91,13 @@
- + +
+
+
+ +
+
From 385dca65c8dc817391700368bbc6511e06119c84 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 17:44:16 +0100 Subject: [PATCH 6/8] Add form field for replyTo email in campaign edit --- views/campaigns/edit.hbs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/views/campaigns/edit.hbs b/views/campaigns/edit.hbs index a33173ba..7ca0dcde 100644 --- a/views/campaigns/edit.hbs +++ b/views/campaigns/edit.hbs @@ -102,7 +102,13 @@
- + +
+
+
+ +
+
From bdd0d6b4913d8ac367e4bb20af816ab442668d73 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 18:10:13 +0100 Subject: [PATCH 7/8] Pass replyTo together with the mail data --- services/sender.js | 1 + 1 file changed, 1 insertion(+) diff --git a/services/sender.js b/services/sender.js index 6b15ebeb..14cb04aa 100644 --- a/services/sender.js +++ b/services/sender.js @@ -333,6 +333,7 @@ function formatMessage(message, callback) { name: campaign.from, address: campaign.address }, + replyTo: campaign.replyTo, xMailer: 'Mailtrain Mailer (+https://mailtrain.org)', to: { name: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' '), From 9d7c686f206d5b5886d503b2ee1bee448d327007 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 25 Nov 2016 18:37:19 +0100 Subject: [PATCH 8/8] Ensure the 'address' label fits the layout --- public/css/mailtrain.css | 12 ++++++++++++ views/campaigns/view.hbs | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/public/css/mailtrain.css b/public/css/mailtrain.css index 79e94191..87026aad 100644 --- a/public/css/mailtrain.css +++ b/public/css/mailtrain.css @@ -12,3 +12,15 @@ from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); } } + +/* Supporting wider description lists */ + +@media screen and (min-width: 768px) { + .dl-horizontal dt { + width: 200px; + } + + .dl-horizontal dd { + margin-left: 220px; + } +} diff --git a/views/campaigns/view.hbs b/views/campaigns/view.hbs index 55c07b34..bd4a7bd6 100644 --- a/views/campaigns/view.hbs +++ b/views/campaigns/view.hbs @@ -79,7 +79,7 @@ {{/if}} {{#if replyTo}} -
Email "reply-to"
+
Email "reply-to" address
{{replyTo}}
{{/if}}