in webui/js/ponymail.js [697:820]
function compose_email(replyto, list) {
let email = null;
let mua_trigger = null;
let loggedIn = (G_ponymail_preferences.login && G_ponymail_preferences.login.credentials) ? true : false;
if (replyto) email = G_full_emails[replyto || ''];
let listname = list;
mua_headers = {};
if (email) {
listname = email.list_raw.replace(/[<>]/g, '').replace('.', '@', 1);
mua_trigger = mua_link(email);
if (email['message-id'] && email['message-id'].length > 0) mua_headers['in-reply-to'] = email['message-id'];
if (email['message-id'] && email['message-id'].length > 0) mua_headers.references = email['message-id'];
mua_headers.eid = email.mid;
} else {
mua_trigger = mua_link(null, listname);
}
mua_headers.to = listname;
// Not logged in? MUA it is, then!
if (!loggedIn) {
if (email) {
let a = new HTML('a', {
href: mua_trigger
}, "Reply via your own email client");
let p = new HTML('p', {}, [
"In order to reply to emails using the web interface, you need to be ",
new HTML('a', {
href: '/oauth.html'
}, "logged in first"),
". You can however still reply to this email using your own email client: ",
a
]);
composer("Reply to thread:", p);
return;
} else {
modal("Please log in", "You need to be logged in before you can start a new thread.", "warning");
return
}
}
// Replying to an email and logged in?
let eml_subject = "";
let eml_body = "";
let eml_title = `Start a new thread on ${listname}:`;
if (email) {
eml_subject = email.subject;
if (!eml_subject.match(/^Re:\s+/i)) { // Add "Re: " if needed only.
eml_subject = "Re: " + eml_subject;
}
eml_body = composer_re(email);
eml_title = `Reply to email on ${listname}:`;
}
let form = [];
form.push(new HTML('b', {}, "Sending as:"));
let s = new HTML('select', {
id: 'composer_alt'
});
s.inject(new HTML('option', {}, G_ponymail_preferences.login.credentials.email));
if (G_ponymail_preferences.login && G_ponymail_preferences.login.alternates) {
for (let alternate of G_ponymail_preferences.login.alternates) {
s.inject(new HTML('option', {}, alternate));
}
}
form.push(new HTML('br'));
form.push(s);
form.push(new HTML('br'));
form.push(new HTML('b', {}, "Subject:"));
form.push(new HTML('br'));
form.push(new HTML('input', {
style: {
width: '90%'
},
id: 'composer_subject',
type: 'text',
value: eml_subject
}));
form.push(new HTML('br'));
form.push(new HTML('b', {}, "Cc:"));
form.push(new HTML('br'));
form.push(new HTML('input', {
style: {
width: '90%'
},
id: 'composer_cc',
type: 'text',
}));
form.push(new HTML('br'));
form.push(new HTML('b', {}, "Bcc:"));
form.push(new HTML('br'));
form.push(new HTML('input', {
style: {
width: '90%'
},
id: 'composer_bcc',
type: 'text',
}));
form.push(new HTML('br'));
form.push(new HTML('b', {}, "Reply:"));
form.push(new HTML('br'));
let body = new HTML('textarea', {
style: {
width: '90%',
minHeight: '400px'
},
id: 'composer_body'
}, eml_body);
form.push(body);
let btn = new HTML('button', {
onclick: 'compose_send();'
}, "Send reply");
form.push(btn);
form.push(" ");
form.push(new HTML('a', {
href: mua_trigger,
style: {
marginLeft: '10px'
}
}, "Or compose via your own email client"));
composer(eml_title, form);
if (email) document.getElementById('composer_body').focus();
}