// references list of references, be sure to use this in a reply
// msgid if a reply, the msgid of the most recent message in the chain, the one to which we are replying
- // Now display the screen.
+ // Now display the screen. (Yes, I combined regular strings + template literals. I just learned template literals. Converting to all template literals would be fine.)
compose_screen =
// Hidden values that we are storing right here in the document tree for later
"<input id=\"ctdl_mc_is_quoted\" style=\"display:none\" value=\"" + is_quoted + "\"></input>"
compose_screen += "<br><br><blockquote><div id=\"" + quoted_div_name + "\"></div></blockquote>";
}
- compose_screen +=
- "</div>"
-
- // The button bar is a Grid element, and is also a Flexbox container.
- + "<div class=\"ctdl-compose-toolbar\">"
- + "<span class=\"ctdl-msg-button\" onclick=\"mail_send_message()\"><i class=\"fa fa-paper-plane\" style=\"color:green\"></i> " + _("Send message") + "</span>"
- + "<span class=\"ctdl-msg-button\">" + _("Save to Drafts") + "</span>"
- + "<span class=\"ctdl-msg-button\">" + _("Attachments:") + " 0" + "</span>"
- + "<span class=\"ctdl-msg-button\">" + _("Contacts") + "</span>"
- + "<span class=\"ctdl-msg-button\" onClick=\"gotoroom(current_room)\"><i class=\"fa fa-trash\" style=\"color:red\"></i> " + _("Cancel") + "</span>"
- + "</div>"
+ // The button bar is a Grid element, and is also a Flexbox container.
+ compose_screen += `
+ </div>
+ <div class="ctdl-compose-toolbar">
+ <span class="ctdl-msg-button" onclick="mail_send_message()"><i class="fa fa-paper-plane" style="color:green"></i> ${_("Send message")} </span>
+ <span class="ctdl-msg-button"> ${_("Save to Drafts")} </span>
+ <span class="ctdl-msg-button" onClick="show_or_hide_upload_window()"><i class="fa fa-paperclip" style="color:grey"></i> ${_("Attachments:")} <span id="ctdl_num_attachments"> ${uploads.length} </span></span>
+ <span class="ctdl-msg-button"> ${_("Contacts")} </span>
+ <span class="ctdl-msg-button" onClick="flush_uploads();gotoroom(current_room)"><i class="fa fa-trash" style="color:red"></i> ${_("Cancel")} </span>
+ </div>`
;
document.getElementById("ctdl-main").innerHTML = compose_screen;
document.getElementById("ctdl-compose-cc-label").style.display = "block";
document.getElementById("ctdl-compose-cc-field").style.display = "block";
}
-}
+ activate_uploads("ctdl-editor-body");
+}
// Called when the user clicks the button to make the hidden "CC" and "BCC" lines appear.
// It is also called automatically during a Reply when CC is pre-populated.
function mail_send_message() {
document.body.style.cursor = "wait";
+ deactivate_uploads();
let url = "/ctdl/r/" + escapeHTMLURI(current_room)
+ "/dummy_name_for_new_mail"
+ "?wefw=" + msm_field("ctdl_mc_references", "!") // references (if present)
+ "&mailcc=" + msm_field("ctdl-compose-cc-field", ",") // Cc: (if present)
+ "&mailbcc=" + msm_field("ctdl-compose-bcc-field", ",") // Bcc: (if present)
;
- boundary = randomString();
- body_text =
- "--" + boundary + "\r\n"
- + "Content-type: text/html\r\n"
- + "Content-transfer-encoding: quoted-printable\r\n"
- + "\r\n"
- + quoted_printable_encode(
- "<html><body>" + document.getElementById("ctdl-editor-body").innerHTML + "</body></html>"
- ) + "\r\n"
- + "--" + boundary + "--\r\n"
- ;
+ if (uploads.length > 0) {
+ url += "&att=";
+ for (let i=0; i<uploads.length; ++i) {
+ url += uploads[i]["ref"];
+ if (i != uploads.length - 1) {
+ url += ",";
+ }
+ }
+ }
+ body_text = "<html><body>" + document.getElementById("ctdl-editor-body").innerHTML + "</body></html>\r\n";
var request = new XMLHttpRequest();
request.open("PUT", url, true);
- request.setRequestHeader("Content-type", "multipart/mixed; boundary=\"" + boundary + "\"");
+ request.setRequestHeader("Content-type", "text/html");
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.body.style.cursor = "default";
}
}
+ // successfully saving a message means the attachments are now gone from the server.
+ uploads = [];
+
// After saving the message, go back to the mailbox view.
gotoroom(current_room);