From ffa0d7e63e7b86c6130ae33bbf9d44ef246d673c Mon Sep 17 00:00:00 2001 From: zefie Date: Fri, 18 Mar 2022 16:35:44 -0400 Subject: [PATCH] implement mail signature colors --- .../ServiceVault/wtv-mail/readmail.js | 13 ++--- .../ServiceVault/wtv-mail/sendmail.js | 53 +++++++++++-------- zefie_wtvp_minisrv/WTVMail.js | 33 ++++++++++++ 3 files changed, 71 insertions(+), 28 deletions(-) diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js index 752ac631..70e4e140 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js @@ -39,6 +39,7 @@ Location: wtv-mail:/listmail`; headers = `200 OK Content-type: text/html`; + var message_colors = ssid_sessions[socket.ssid].mailstore.getSignatureColors(message.signature); if (typeof message.subject == "object" && message.subject) message.subject = wtvshared.decodeBufferText(message.subject); data = ` @@ -58,9 +59,9 @@ ${(message.subject) ? wtvshared.htmlEntitize(message.subject) : '(No subject)'} +bgcolor="${message_colors.bgcolor}" +text="${message_colors.text}" +link="${message_colors.link}" vlink="${message_colors.vlink}" vspace=0 hspace=0> @@ -187,13 +188,13 @@ id=save - -
+
+ -
+
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js index 0d5d9f8c..a7621110 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js @@ -28,6 +28,7 @@ wtv-expire: wtv-mail:/sendmail Location: wtv-mail:/sendmail`; } + var to_addr = request_headers.query.message_to || null; var msg_subject = request_headers.query.message_subject || null; var msg_body = request_headers.query.message_body || null; @@ -35,7 +36,7 @@ Location: wtv-mail:/sendmail`; var msg_url = request_headers.query.message_url || null; var msg_url_title = request_headers.query.message_title || null; var no_signature = false; - if (request_headers.query.togglesign == "true") no_signature = false; + var mail_draft_data = ssid_sessions[socket.ssid].getSessionData("mail_draft"); var mail_draft_attachments = ssid_sessions[socket.ssid].getSessionData("mail_draft_attachments") || {}; if (mail_draft_data) { @@ -47,6 +48,10 @@ Location: wtv-mail:/sendmail`; if (mail_draft_data.msg_url) msg_url = mail_draft_data.msg_url; if (mail_draft_data.msg_url_title) msg_url_title = mail_draft_data.msg_url_title; } + + if (request_headers.query.togglesign == "true") no_signature = false; + if (request_headers.query.togglesign == "false") no_signature = true; + if (mail_draft_attachments) { if (mail_draft_attachments.message_snapshot_data) message_snapshot_data = mail_draft_attachments.message_snapshot_data; else if (request_headers.query.message_snapshot_data) message_snapshot_data = request_headers.query.message_snapshot_data; @@ -152,6 +157,10 @@ Content-type: text/html`; mail_draft_data.message_voicemail_data = request_headers.query.message_voicemail_data ssid_sessions[socket.ssid].setSessionData("mail_draft_attachments", mail_draft_data); } + var message_colors = null; + if (no_signature) message_colors = ssid_sessions[socket.ssid].mailstore.getSignatureColors(null, true); + else message_colors = ssid_sessions[socket.ssid].mailstore.getSignatureColors(ssid_sessions[socket.ssid].getSessionData("subscriber_signature"), true); + data = ` @@ -189,7 +198,7 @@ location.reload(); } Write an e-mail message - +
@@ -324,7 +333,7 @@ Write an e-mail message

- +
@@ -337,14 +346,14 @@ Write an e-mail message
-From:  +From:  - +
${address}
-(${userdisplayname}) +(${userdisplayname})
@@ -353,14 +362,14 @@ ${address} To: 
-`; if (ssid_sessions[socket.ssid].getSessionData("subscriber_signature") && ssid_sessions[socket.ssid].getSessionData("subscriber_signature") != "" && !no_signature) { @@ -473,7 +482,7 @@ USESTYLE NOARGS>
- +
@@ -537,7 +546,7 @@ USESTYLE NOARGS>
- +
diff --git a/zefie_wtvp_minisrv/WTVMail.js b/zefie_wtvp_minisrv/WTVMail.js index aff066d7..d4bd1a70 100644 --- a/zefie_wtvp_minisrv/WTVMail.js +++ b/zefie_wtvp_minisrv/WTVMail.js @@ -17,6 +17,8 @@ class WTVMail { mailboxes = null; msgFileExt = ".zmsg"; trashMailboxName = "Trash"; + defaultColors = {}; + sendmailDefaultBGColor = "#1F2033" constructor(minisrv_config, wtvclient) { if (!minisrv_config) throw ("minisrv_config required"); @@ -36,6 +38,12 @@ class WTVMail { "Saved", this.trashMailboxName ]; + this.defaultColors = { + bgcolor: "#171726", + text: "#82A9D9", + link: "#BDA73A", + vlink: "#62B362" + }; } checkMailIntroSeen() { @@ -62,6 +70,31 @@ class WTVMail { return null; } + getSignatureColors(signature = null, sendmail = true) { + var colors = Object.assign({}, this.defaultColors); // start with default colors + if (sendmail) colors.bgcolor = this.sendmailDefaultBGColor; + + if (signature) { + if (signature.length > 0) { + if (signature.indexOf('') >= 0) { + if (signature.indexOf('= 0) { + // parse tag of html signature to get colors + const htmlparser2 = require("htmlparser2"); + const dom = htmlparser2.parseDocument(signature); + const body = htmlparser2.DomUtils.getElementsByTagName('body', dom)[0]; + if (body.attribs) { + for (const [key, value] of Object.entries(body.attribs)) { + colors[key] = value; + } + } + } + } + } + } + if (!colors.cursor) colors.cursor = colors.link; + return colors; + } + mailboxExists(mailboxid) { if (mailboxid > this.mailboxes.length) return null; var mailbox_dir = null;