Ticket #1485012: previewnotread.r2682.patch

File previewnotread.r2682.patch, 11.0 KB (added by JohnDoh, 9 months ago)
  • config/main.inc.php.dist

    diff -Naur --exclude='*.svn*' roundcube_svn/config/main.inc.php.dist roundcube_pub/config/main.inc.php.dist
    old new  
    387387// default setting if preview pane is enabled 
    388388$rcmail_config['preview_pane'] = FALSE; 
    389389 
     390// Preview pane mark as read 
     391$rcmail_config['preview_pane_mark_read'] = TRUE; 
     392 
     393// Preview pane mark as read delay (seconds) 
     394$rcmail_config['preview_pane_mark_read_delay'] = 0; 
     395 
     396// Message display mark as read 
     397$rcmail_config['message_view_mark_read'] = TRUE; 
     398 
    390399// focus new window if new message arrives 
    391400$rcmail_config['focus_on_new_message'] = true; 
    392401 
  • program/include/rcube_config.php

    diff -Naur --exclude='*.svn*' roundcube_svn/program/include/rcube_config.php roundcube_pub/program/include/rcube_config.php
    old new  
    7979      foreach ($this->prop['default_imap_folders'] as $n => $folder) 
    8080        $this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP'); 
    8181 
     82    // fix default mark as read behaviour 
     83    if (empty($this->prop['preview_pane_mark_read'])) $this->prop['preview_pane_mark_read'] = TRUE; 
     84    if (empty($this->prop['preview_pane_mark_read_delay'])) $this->prop['preview_pane_mark_read_delay'] = 0; 
     85    if (empty($this->prop['message_view_mark_read'])) $this->prop['message_view_mark_read'] = TRUE; 
     86 
    8287    // set PHP error logging according to config 
    8388    if ($this->prop['debug_level'] & 1) { 
    8489      ini_set('log_errors', 1); 
  • program/js/app.js

    diff -Naur --exclude='*.svn*' roundcube_svn/program/js/app.js roundcube_pub/program/js/app.js
    old new  
    12491249    if (this.preview_timer) 
    12501250      clearTimeout(this.preview_timer); 
    12511251     
     1252    if (this.preview_read_timer) 
     1253      clearTimeout(this.preview_read_timer); 
     1254 
    12521255    // save folderlist and folders location/sizes for droptarget calculation in drag_move() 
    12531256    if (this.gui_objects.folderlist && model) 
    12541257      { 
     
    14141417    if (this.preview_timer) 
    14151418      clearTimeout(this.preview_timer); 
    14161419 
     1420    if (this.preview_read_timer) 
     1421      clearTimeout(this.preview_read_timer); 
     1422 
    14171423    var selected = list.selection.length==1; 
    14181424 
    14191425    // Hide certain command buttons when Drafts folder is selected 
     
    14411447      if (this.preview_timer) 
    14421448        clearTimeout(this.preview_timer); 
    14431449 
     1450      if (this.preview_read_timer) 
     1451        clearTimeout(this.preview_read_timer); 
     1452 
    14441453    var uid = list.get_single_selection(); 
    14451454    if (uid && this.env.mailbox == this.env.drafts_mailbox) 
    14461455      this.goto_url('compose', '_draft_uid='+uid+'&_mbox='+urlencode(this.env.mailbox), true); 
     
    15151524      target.location.href = this.env.comm_path+url; 
    15161525 
    15171526      // mark as read and change mbox unread counter 
    1518       if (action == 'preview' && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread) 
     1527      if (action == 'preview' && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read) 
    15191528        { 
    1520         this.set_message(id, 'unread', false); 
    1521         if (this.env.unread_counts[this.env.mailbox]) 
     1529          this.preview_read_timer = window.setTimeout(function(rcmail){ 
     1530          ref.set_message(id, 'unread', false); 
     1531          if (ref.env.unread_counts[ref.env.mailbox]) 
    15221532          { 
    1523           this.env.unread_counts[this.env.mailbox] -= 1; 
    1524           this.set_unread_count(this.env.mailbox, this.env.unread_counts[this.env.mailbox], this.env.mailbox == 'INBOX'); 
     1533            ref.env.unread_counts[ref.env.mailbox] -= 1; 
     1534            ref.set_unread_count(ref.env.mailbox, ref.env.unread_counts[ref.env.mailbox], ref.env.mailbox == 'INBOX'); 
    15251535          } 
     1536          if (ref.env.preview_pane_mark_read_delay > 0) ref.toggle_read_status('read', Array(id)); 
     1537          }, this.env.preview_pane_mark_read_delay * 1000); 
    15261538        } 
    15271539      } 
    15281540    }; 
     
    38093821      addrbook_show_images.disabled = !checkbox.checked; 
    38103822    } 
    38113823 
     3824  this.toggle_preview_pane = function(checkbox) 
     3825    { 
     3826    var preview_pane_mark_read; 
     3827    if (preview_pane_mark_read = document.getElementById('rcmfd_preview_pane_mark_read')) 
     3828      preview_pane_mark_read.disabled = !checkbox.checked; 
     3829    } 
     3830 
     3831  this.toggle_preview_read = function(checkbox) 
     3832    { 
     3833    var preview_pane_mark_read_delay; 
     3834    if (preview_pane_mark_read_delay = document.getElementById('rcmfd_preview_pane_mark_read_delay')) 
     3835      preview_pane_mark_read_delay.disabled = !checkbox.checked; 
     3836    } 
     3837 
    38123838  // display fetched raw headers 
    38133839  this.set_headers = function(content) 
    38143840  { 
  • program/localization/en_US/labels.inc

    diff -Naur --exclude='*.svn*' roundcube_svn/program/localization/en_US/labels.inc roundcube_pub/program/localization/en_US/labels.inc
    old new  
    329329$labels['MB'] = 'MB'; 
    330330$labels['GB'] = 'GB'; 
    331331 
     332$labels['previewpanemarkread']  = 'Mark previewed messages as read'; 
     333$labels['previewpanemarkreaddelay']  = 'Wait %s seconds before marking message as read'; 
     334$labels['messageviewmarkread']  = 'Mark displayed messages as read'; 
     335 
    332336?> 
  • program/steps/mail/func.inc

    diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/mail/func.inc roundcube_pub/program/steps/mail/func.inc
    old new  
    9696  if ($CONFIG['skip_deleted']) 
    9797    $OUTPUT->set_env('skip_deleted', true); 
    9898           
     99  if ($CONFIG['preview_pane_mark_read']) 
     100    $OUTPUT->set_env('preview_pane_mark_read', true); 
     101  if ($CONFIG['preview_pane_mark_read_delay']) 
     102    $OUTPUT->set_env('preview_pane_mark_read_delay', $CONFIG['preview_pane_mark_read_delay']); 
     103 
    99104  if ($CONFIG['trash_mbox']) 
    100105    $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']); 
    101106  if ($CONFIG['drafts_mbox']) 
  • program/steps/mail/show.inc

    diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/mail/show.inc roundcube_pub/program/steps/mail/show.inc
    old new  
    138138    } 
    139139 
    140140  // mark message as read 
    141   if (!$MESSAGE->headers->seen) { 
     141  if (!$MESSAGE->headers->seen && (($RCMAIL->action == 'preview' && $CONFIG['preview_pane_mark_read'] && $CONFIG['preview_pane_mark_read_delay'] == 0) || ($RCMAIL->action == 'show' && $CONFIG['message_view_mark_read']))) { 
    142142    $IMAP->set_flag($MESSAGE->uid, 'SEEN'); 
    143143    $RCMAIL->plugins->exec_hook('message_read', array('uid' => $MESSAGE->uid, 'mailbox' => $IMAP->mailbox, 'message' => $MESSAGE)); 
    144144  } 
  • program/steps/settings/func.inc

    diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/settings/func.inc roundcube_pub/program/steps/settings/func.inc
    old new  
    180180    // show config parameter for preview pane 
    181181    if (!isset($no_override['preview_pane'])) { 
    182182      $field_id = 'rcmfd_preview'; 
    183       $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1)); 
     183      $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1, 
     184        'onchange' => JS_OBJECT_NAME.'.toggle_preview_pane(this)')); 
    184185 
    185186      $table->add('title', html::label($field_id, Q(rcube_label('previewpane')))); 
    186187      $table->add(null, $input_preview->show($config['preview_pane']?1:0)); 
    187188    } 
    188189 
     190    // show config parameter for preview pane auto mark as read 
     191    if (!isset($no_override['preview_pane_mark_read'])) { 
     192      $field_id = 'rcmfd_preview_pane_mark_read'; 
     193      $input_preview = new html_checkbox(array('name' => '_preview_pane_mark_read', 'id' => $field_id, 
     194        'value' => 1,  'disabled' => $config['preview_pane']?0:1, 'onchange' => JS_OBJECT_NAME.'.toggle_preview_read(this)')); 
     195 
     196      $table->add('title', html::label($field_id, Q(rcube_label('previewpanemarkread')))); 
     197      $table->add(null, $input_preview->show($config['preview_pane_mark_read']?1:0)); 
     198    } 
     199 
     200    // show config parameter for preview pane auto mark as read delay 
     201    if (!isset($no_override['preview_pane_mark_read_delay'])) { 
     202      $field_id = 'rcmfd_preview_pane_mark_read_delay'; 
     203      $input_delay = new html_inputfield(array('name' => '_preview_pane_mark_read_delay', 'id' => $field_id, 'size' => 5, 
     204        'disabled' => $config['preview_pane_mark_read']?0:1)); 
     205 
     206      $table->set_row_attribs('advanced'); 
     207      $table->add(array('class' => 'title', 'colspan' => '2'), "    " . html::label($field_id, str_replace('%s', $input_delay->show($config['preview_pane_mark_read_delay']), Q(rcube_label('previewpanemarkreaddelay'))))); 
     208      $table->add_row(); 
     209    } 
     210 
    189211    if (!isset($no_override['mdn_requests'])) { 
    190212      $field_id = 'rcmfd_mdn_requests'; 
    191213      $select_mdn_requests = new html_select(array('name' => '_mdn_requests', 'id' => $field_id)); 
     
    229251  case 'mailview': 
    230252    $table = new html_table(array('cols' => 2)); 
    231253 
     254    // show config parameter for message view auto mark as read 
     255    if (!isset($no_override['message_view_mark_read'])) { 
     256      $field_id = 'rcmfd_message_view_mark_read'; 
     257      $input_mark = new html_checkbox(array('name' => '_message_view_mark_read', 'id' => $field_id, 'value' => 1)); 
     258 
     259      $table->add('title', html::label($field_id, Q(rcube_label('messageviewmarkread')))); 
     260      $table->add(null, $input_mark->show($config['message_view_mark_read']?1:0)); 
     261    } 
     262 
    232263    // show checkbox for HTML/plaintext messages 
    233264    if (!isset($no_override['prefer_html'])) { 
    234265      $field_id = 'rcmfd_htmlmsg'; 
  • program/steps/settings/save_prefs.inc

    diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/settings/save_prefs.inc roundcube_pub/program/steps/settings/save_prefs.inc
    old new  
    2929  'htmleditor'   => isset($_POST['_htmleditor']) ? TRUE : FALSE, 
    3030  'inline_images'   => isset($_POST['_inline_images']) ? TRUE : FALSE, 
    3131  'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE, 
     32  'preview_pane_mark_read' => isset($_POST['_preview_pane_mark_read']) ? TRUE : FALSE, 
     33  'preview_pane_mark_read_delay' => is_numeric($_POST['_preview_pane_mark_read_delay']) ? intval($_POST['_preview_pane_mark_read_delay']) : $CONFIG['preview_pane_mark_read_delay'], 
     34  'message_view_mark_read' => isset($_POST['_message_view_mark_read']) ? TRUE : FALSE, 
    3235  'focus_on_new_message' => isset($_POST['_focus_on_new_message']) ? TRUE : FALSE, 
    3336  'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE, 
    3437  'skip_deleted' => isset($_POST['_skip_deleted']) ? TRUE : FALSE,