alecpl
2009-06-11 069704b170c9b9bd29f2d8f9151b8dbaa44400ae
- Added message Edit feature (#1483891, #1484440) - need icon


5 files modified
33 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/app.js 16 ●●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 14 ●●●●● patch | view | raw | blame | history
skins/default/includes/messagemenu.html 1 ●●●● patch | view | raw | blame | history
skins/default/mail.css 1 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Added message Edit feature (#1483891, #1484440)
- Fix message Etag generation for counter issues (#1485623)
- Fix messages searching on MailEnable IMAP (#1485762)
- Fixed many 'skip_deleted' issues (#1485634)
program/js/app.js
@@ -189,7 +189,7 @@
        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 @@
          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 @@
    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 @@
      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 @@
      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 @@
            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;
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 @@
  $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 @@
    $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 @@
      }
    }
  }
  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 @@
    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 @@
      $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 @@
  $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;
skins/default/includes/messagemenu.html
@@ -2,6 +2,7 @@
  <ul class="toolbarmenu">
    <li><roundcube:button class="printlink" command="print" label="printmessage" classAct="printlink active" /></li>
    <li><roundcube:button class="downloadlink" command="download" label="emlsave" classAct="downloadlink active" /></li>
    <li><roundcube:button class="editlink" command="edit" label="edit" classAct="editlink active" /></li>
    <li class="separator_below"><roundcube:button class="sourcelink" command="viewsource" label="viewsource" classAct="sourcelink active" /></li>
    <li><roundcube:button class="openlink" command="open" label="openinextwin" target="_blank" classAct="openlink active" /></li>
    <roundcube:container name="messagemenu" id="messagemenu" />
skins/default/mail.css
@@ -136,6 +136,7 @@
#messagemenu li a
{
  background: url('images/messageactions.png') no-repeat 1px 0;
  background-position: 0px 20px;
}
#messagemenu li a.printlink