summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/js/app.js16
-rw-r--r--program/steps/mail/compose.inc14
2 files changed, 18 insertions, 12 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 2831e3d8d..218351ca3 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -189,7 +189,7 @@ function rcube_webmail()
if (this.env.action=='show' || this.env.action=='preview')
{
this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete',
- 'open', 'mark', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers', true);
+ 'open', 'mark', 'edit', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers', true);
if (this.env.next_uid)
{
@@ -691,6 +691,10 @@ function rcube_webmail()
this.load_contact(cid, 'edit');
else if (this.task=='settings' && props)
this.load_identity(props, 'edit-identity');
+ else if (this.task=='mail' && (cid = this.get_single_uid())) {
+ var url = (this.env.mailbox == this.env.drafts_mailbox) ? '_draft_uid=' : '_uid=';
+ this.goto_url('compose', url+cid+'&_mbox='+urlencode(this.env.mailbox), true);
+ }
break;
case 'save-identity':
@@ -1393,12 +1397,12 @@ function rcube_webmail()
if (this.env.mailbox == this.env.drafts_mailbox)
{
this.enable_command('reply', 'reply-all', 'forward', false);
- this.enable_command('show', 'print', 'open', 'download', 'viewsource', selected);
+ this.enable_command('show', 'print', 'open', 'edit', 'download', 'viewsource', selected);
this.enable_command('delete', 'moveto', 'mark', (list.selection.length > 0 ? true : false));
}
else
{
- this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', 'open', 'download', 'viewsource', selected);
+ this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', 'edit', 'open', 'download', 'viewsource', selected);
this.enable_command('delete', 'moveto', 'mark', (list.selection.length > 0 ? true : false));
}
@@ -1803,7 +1807,7 @@ function rcube_webmail()
this.show_contentframe(false);
// Hide message command buttons until a message is selected
- this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'viewsource', 'download', false);
+ this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'edit', 'viewsource', 'download', false);
this._with_selected_messages('moveto', lock, add_url);
};
@@ -3940,7 +3944,7 @@ function rcube_webmail()
case 'moveto':
if (this.env.action == 'show') {
// re-enable commands on move/delete error
- this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'viewsource', 'download', true);
+ this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'edit', 'viewsource', 'download', true);
} else if (this.message_list)
this.message_list.init();
break;
@@ -3953,7 +3957,7 @@ function rcube_webmail()
this.show_contentframe(false);
// disable commands useless when mailbox is empty
this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete',
- 'mark', 'viewsource', 'open', 'download', 'print', 'load-attachment',
+ 'mark', 'viewsource', 'open', 'edit', 'download', 'print', 'load-attachment',
'purge', 'expunge', 'select-all', 'select-none', 'sort', false);
}
break;
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 8d541da1e..b0637d345 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -23,6 +23,7 @@
define('RCUBE_COMPOSE_REPLY', 0x0106);
define('RCUBE_COMPOSE_FORWARD', 0x0107);
define('RCUBE_COMPOSE_DRAFT', 0x0108);
+define('RCUBE_COMPOSE_EDIT', 0x0109);
$MESSAGE_FORM = NULL;
$MESSAGE = NULL;
@@ -74,6 +75,8 @@ if ($msg_uid = $_SESSION['compose']['param']['_reply_uid'])
$compose_mode = RCUBE_COMPOSE_REPLY;
else if ($msg_uid = $_SESSION['compose']['param']['_forward_uid'])
$compose_mode = RCUBE_COMPOSE_FORWARD;
+else if ($msg_uid = $_SESSION['compose']['param']['_uid'])
+ $compose_mode = RCUBE_COMPOSE_EDIT;
else if ($msg_uid = $_SESSION['compose']['param']['_draft_uid']) {
$RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']);
$compose_mode = RCUBE_COMPOSE_DRAFT;
@@ -168,7 +171,6 @@ function rcmail_compose_headers($attrib)
$fvalue = get_input_value($fname, RCUBE_INPUT_POST, TRUE);
else if ($fname && !$fvalue && !empty($_SESSION['compose']['param'][$fname]))
$fvalue = $_SESSION['compose']['param'][$fname];
-
else if ($header && $compose_mode == RCUBE_COMPOSE_REPLY)
{
// get recipent address(es) out of the message headers
@@ -208,7 +210,7 @@ function rcmail_compose_headers($attrib)
}
}
}
- else if ($header && $compose_mode == RCUBE_COMPOSE_DRAFT)
+ else if ($header && in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
{
// get drafted headers
if ($header=='to' && !empty($MESSAGE->headers->to))
@@ -385,7 +387,7 @@ function rcmail_compose_body($attrib)
else if ($compose_mode == RCUBE_COMPOSE_FORWARD)
$body = rcmail_create_forward_body($body, $isHtml);
// load draft message body
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT)
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT)
$body = rcmail_create_draft_body($body, $isHtml);
}
else if (!empty($_SESSION['compose']['param']['_body']))
@@ -689,7 +691,7 @@ function rcmail_compose_subject($attrib)
$subject = 'Fwd: '.$MESSAGE->subject;
}
// creeate a draft-subject
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT) {
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
$subject = $MESSAGE->subject;
}
else if (!empty($_SESSION['compose']['param']['_subject'])) {
@@ -828,8 +830,8 @@ function rcmail_receipt_checkbox($attrib)
$checkbox = new html_checkbox($attrib);
$out = $form_start ? "$form_start\n" : '';
- $out .= $checkbox->show(
- $compose_mode == RCUBE_COMPOSE_DRAFT && $MESSAGE->headers->mdn_to ? 1 : 0);
+ $out .= $checkbox->show(in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))
+ && $MESSAGE->headers->mdn_to ? 1 : 0);
$out .= $form_end ? "\n$form_end" : '';
return $out;