thomascube
2008-07-31 d224551cfbf5903505f41bc9e51ad9840119942f
Fix read_when_deleted behavior + javascript codestyle

4 files modified
81 ■■■■■ changed files
config/main.inc.php.dist 2 ●●● patch | view | raw | blame | history
program/include/rcmail.php 2 ●●● patch | view | raw | blame | history
program/js/app.js 70 ●●●●● patch | view | raw | blame | history
program/steps/mail/move_del.inc 7 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist
@@ -175,7 +175,7 @@
// When a Trash folder is not present and a message is deleted, flag 
// the message for deletion rather than deleting it immediately.  Setting this to 
// false causes deleted messages to be permanantly removed if there is no Trash folder
$rcmail_config['flag_for_deletion'] = TRUE;
$rcmail_config['flag_for_deletion'] = FALSE;
// Behavior if a received message requests a message delivery notification (read receipt)
// 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask)
program/include/rcmail.php
@@ -243,7 +243,7 @@
    if (!($this->output instanceof rcube_template))
      $this->output = new rcube_template($this->task, $framed);
    foreach (array('flag_for_deletion') as $js_config_var) {
    foreach (array('flag_for_deletion','read_when_deleted') as $js_config_var) {
      $this->output->set_env($js_config_var, $this->config->get($js_config_var));
    }
program/js/app.js
@@ -1282,8 +1282,8 @@
      if (!show && window.frames[this.env.contentframe])
        {
        if (window.frames[this.env.contentframe].location.href.indexOf(this.env.blankpage)<0)
      window.frames[this.env.contentframe].location.href = this.env.blankpage;
    }
          window.frames[this.env.contentframe].location.href = this.env.blankpage;
        }
      else if (!bw.safari)
        frm.style.display = show ? 'block' : 'none';
      }
@@ -1506,13 +1506,13 @@
  // Send a specifc request with UIDs of all selected messages
  // @private
  this._with_selected_messages = function(action, lock, add_url, remove)
    {
  {
    var a_uids = new Array();
    if (this.env.uid)
      a_uids[0] = this.env.uid;
    else
      {
    {
      var selection = this.message_list.get_selection();
      var rows = this.message_list.rows;
      var id;
@@ -1521,23 +1521,28 @@
        id = selection[n];
        a_uids[a_uids.length] = id;
    if (remove)
        if (remove)
          this.message_list.remove_row(id, (n == selection.length-1));
        else
      {
      rows[id].deleted = true;
        {
          rows[id].deleted = true;
        
          if (rows[id].classname.indexOf('deleted')<0)
        {
          {
            rows[id].classname += ' deleted';
            this.set_classname(rows[id].obj, 'deleted', true);
            }
          }
          if (this.env.read_when_deleted)
          {
            rows[id].classname = rows[id].classname.replace(/\s*unread/, '');
            this.set_classname(rows[id].obj, 'unread', false);
          }
        
      if (rows[id].icon && this.env.deletedicon)
          if (rows[id].icon && this.env.deletedicon)
            rows[id].icon.src = this.env.deletedicon;
      }
        }
      }
    }
    
    // also send search request to get the right messages 
    if (this.env.search_request) 
@@ -1545,7 +1550,7 @@
    // send request to server
    this.http_post(action, '_uid='+a_uids.join(',')+'&_mbox='+urlencode(this.env.mailbox)+add_url, lock);
    };
  };
  // set a specific flag to one or more messages
@@ -1574,14 +1579,14 @@
      {
        id = a_uids[n];
        if ((flag=='read' && this.message_list.rows[id].unread) 
        || (flag=='unread' && !this.message_list.rows[id].unread)
        || (flag=='delete' && !this.message_list.rows[id].deleted)
        || (flag=='undelete' && this.message_list.rows[id].deleted)
        || (flag=='flagged' && !this.message_list.rows[id].flagged)
        || (flag=='unflagged' && this.message_list.rows[id].flagged))
      {
        r_uids[r_uids.length] = id;
      }
            || (flag=='unread' && !this.message_list.rows[id].unread)
            || (flag=='delete' && !this.message_list.rows[id].deleted)
            || (flag=='undelete' && this.message_list.rows[id].deleted)
            || (flag=='flagged' && !this.message_list.rows[id].flagged)
            || (flag=='unflagged' && this.message_list.rows[id].flagged))
        {
          r_uids[r_uids.length] = id;
        }
      }
    // nothing to do
@@ -1636,7 +1641,7 @@
          }
        if (rows[uid].icon && icn_src 
        && !(rows[uid].replied && this.env.repliedicon)
            && !(rows[uid].replied && this.env.repliedicon)
            && !(rows[uid].deleted && this.env.deletedicon))
          rows[uid].icon.src = icn_src;
        }
@@ -1657,13 +1662,13 @@
        parent.rcmail.set_classname(rows[uid].obj, 'unread', false);
        if (rows[uid].replied && parent.rcmail.env.repliedicon)
          icn_src = parent.rcmail.env.repliedicon;
          icn_src = parent.rcmail.env.repliedicon;
        else if (rows[uid].deleted && parent.rcmail.env.deletedicon)
          icn_src = parent.rcmail.env.deletedicon;
          icn_src = parent.rcmail.env.deletedicon;
        else if (parent.rcmail.env.messageicon)
          icn_src = parent.rcmail.env.messageicon;
      
    if (rows[uid].icon && icn_src)
        if (rows[uid].icon && icn_src)
          rows[uid].icon.src = icn_src;
      }
  }
@@ -1779,16 +1784,21 @@
        rows[uid].deleted = true;
        
        if (rows[uid].classname.indexOf('deleted')<0)
      {
          {
          rows[uid].classname += ' deleted';
          this.set_classname(rows[uid].obj, 'deleted', true);
          }
    if (rows[uid].icon && this.env.deletedicon)
        if (this.env.read_when_deleted)
        {
          rows[uid].classname = rows[uid].classname.replace(/\s*unread/, '');
          this.set_classname(rows[uid].obj, 'unread', false);
        }
        if (rows[uid].icon && this.env.deletedicon)
          rows[uid].icon.src = this.env.deletedicon;
    if (rows[uid].unread)
      r_uids[r_uids.length] = uid;
        if (rows[uid].unread)
          r_uids[r_uids.length] = uid;
        }
      }
@@ -1817,7 +1827,7 @@
      if (rows[uid])
        {
        rows[uid].unread = false;
    rows[uid].read = true;
        rows[uid].read = true;
        
        rows[uid].classname = rows[uid].classname.replace(/\s*unread/, '');
        this.set_classname(rows[uid].obj, 'unread', false);
program/steps/mail/move_del.inc
@@ -29,7 +29,12 @@
    $target = get_input_value('_target_mbox', RCUBE_INPUT_POST);
    $moved = $IMAP->move_message($uids, $target, get_input_value('_mbox', RCUBE_INPUT_POST));
  
    if (!$moved) {
    if ($moved) {
        // flag old messages as read because rcube_imap will not send expunge command after moving
        if ($CONFIG['read_when_deleted'])
            $IMAP->set_flag($uids, 'SEEN');
    }
    else {
        // send error message
        $OUTPUT->command('list_mailbox');
        $OUTPUT->show_message('errormoving', 'error');