Fix handling of body parameter in mail compose request

pull/328/head
Aleksander Machniak 9 years ago
parent faeeebdc55
commit b0a8e36930

@ -24,6 +24,7 @@ CHANGELOG Roundcube Webmail
- Plugin API: Added addressbook_export hook - Plugin API: Added addressbook_export hook
- Fix additional_message_headers plugin compatibility with Mail_Mime >= 1.9 (#1490657) - Fix additional_message_headers plugin compatibility with Mail_Mime >= 1.9 (#1490657)
- Hide DSN option in Preferences when smtp_server is not used (#1490666) - Hide DSN option in Preferences when smtp_server is not used (#1490666)
- Fix handling of body parameter in mail compose request
RELEASE 1.2-beta RELEASE 1.2-beta
---------------- ----------------

@ -3967,7 +3967,7 @@ function rcube_webmail()
} }
if (!html_mode) { if (!html_mode) {
pos = this.env.top_posting ? 0 : input_message.value.length; pos = this.env.top_posting && this.env.compose_mode ? 0 : input_message.value.length;
// add signature according to selected identity // add signature according to selected identity
// if we have HTML editor, signature is added in a callback // if we have HTML editor, signature is added in a callback

@ -513,10 +513,10 @@ function rcube_text_editor(config, id)
message = message.substring(0, p) + sig + message.substring(p, message.length); message = message.substring(0, p) + sig + message.substring(p, message.length);
cursor_pos = p - 1; cursor_pos = p - 1;
} }
// empty message // empty message or new-message mode
else if (!message) { else if (!message || !rcmail.env.compose_mode) {
message = '\n\n' + sig; cursor_pos = message.length;
cursor_pos = 0; message += '\n\n' + sig;
} }
else if (rcmail.env.top_posting && !rcmail.env.sig_below) { else if (rcmail.env.top_posting && !rcmail.env.sig_below) {
// at cursor position // at cursor position
@ -555,8 +555,10 @@ function rcube_text_editor(config, id)
sigElem = $('<div id="_rc_sig"></div>').get(0); sigElem = $('<div id="_rc_sig"></div>').get(0);
// insert at start or at cursor position in top-posting mode // insert at start or at cursor position in top-posting mode
// (but not if the content is empty) // (but not if the content is empty and not in new-message mode)
if (rcmail.env.top_posting && !rcmail.env.sig_below && (body.childNodes.length > 1 || $(body).text())) { if (rcmail.env.top_posting && !rcmail.env.sig_below
&& rcmail.env.compose_mode && (body.childNodes.length > 1 || $(body).text())
) {
this.editor.getWin().focus(); // correct focus in IE & Chrome this.editor.getWin().focus(); // correct focus in IE & Chrome
var node = this.editor.selection.getNode(); var node = this.editor.selection.getNode();
@ -566,7 +568,7 @@ function rcube_text_editor(config, id)
} }
else { else {
body.appendChild(sigElem); body.appendChild(sigElem);
position_element = rcmail.env.top_posting ? body.firstChild : $(sigElem).prev(); position_element = rcmail.env.top_posting && rcmail.env.compose_mode ? body.firstChild : $(sigElem).prev();
} }
} }

@ -359,7 +359,12 @@ function rcmail_process_compose_params(&$COMPOSE)
// clean HTML message body which can be submitted by URL // clean HTML message body which can be submitted by URL
if (!empty($COMPOSE['param']['body'])) { if (!empty($COMPOSE['param']['body'])) {
$COMPOSE['param']['body'] = rcmail_wash_html($COMPOSE['param']['body'], array('safe' => false, 'inline_html' => true), array()); if ($COMPOSE['param']['html'] = strpos($COMPOSE['param']['body'], '<') !== false) {
$wash_params = array('safe' => false, 'inline_html' => true);
$COMPOSE['param']['body'] = rcmail_wash_html($COMPOSE['param']['body'], $wash_params, array());
$COMPOSE['param']['body'] = preg_replace('/<!--[^>\n]+>/', '', $COMPOSE['param']['body']);
$COMPOSE['param']['body'] = preg_replace('/<\/?body>/', '', $COMPOSE['param']['body']);
}
} }
$RCMAIL = rcmail::get_instance(); $RCMAIL = rcmail::get_instance();
@ -718,7 +723,10 @@ function rcmail_compose_editor_mode()
$html_editor = intval($RCMAIL->config->get('htmleditor')); $html_editor = intval($RCMAIL->config->get('htmleditor'));
$compose_mode = $COMPOSE['mode']; $compose_mode = $COMPOSE['mode'];
if (isset($_POST['_is_html'])) { if (is_bool($COMPOSE['param']['html'])) {
$useHtml = $COMPOSE['param']['html'];
}
else if (isset($_POST['_is_html'])) {
$useHtml = !empty($_POST['_is_html']); $useHtml = !empty($_POST['_is_html']);
} }
else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) { else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {

Loading…
Cancel
Save