Ticket #1484008: roundcube-preview-svn361.patch

File roundcube-preview-svn361.patch, 10.2 KB (added by wobin, 4 years ago)

Updated the patch to work with RoundCube SVN #361

  • config/main.inc.php.dist

     
    171171// Leave empty for default set of Google spell check languages 
    172172$rcmail_config['spellcheck_languages'] = NULL; 
    173173 
     174// Enable preview pane 
     175$rcmail_config['enable_preview'] = FALSE; 
     176 
    174177// path to a text file which will be added to each sent message 
    175178// paths are relative to the RoundCube root folder 
    176179$rcmail_config['generic_message_footer'] = ''; 
     
    216219// prefer displaying HTML messages 
    217220$rcmail_config['prefer_html'] = TRUE; 
    218221 
     222// display preview pane if enabled 
     223$rcmail_config['preview'] = FALSE; 
     224 
    219225// show pretty dates as standard 
    220226$rcmail_config['prettydate'] = TRUE; 
    221227 
  • program/include/main.inc

     
    12001200        'editorselector' => 'rcmail_editor_selector', 
    12011201        'searchform' => 'rcmail_search_form', 
    12021202        'receiptcheckbox' => 'rcmail_receipt_checkbox', 
     1203        'preview' => 'rcmail_message_preview', 
    12031204         
    12041205        // ADDRESS BOOK 
    12051206        'addresslist' => 'rcmail_contacts_list', 
  • program/localization/nl_NL/labels.inc

     
    202202$labels['pagesize']  = 'Rijen per pagina'; 
    203203$labels['signature'] = 'Onderschrift'; 
    204204$labels['dstactive']  = 'Zomertijd'; 
     205$labels['preview'] = 'Voorbeeldvenster'; 
    205206 
    206207$labels['folder']  = 'Map'; 
    207208$labels['folders']  = 'Mappen'; 
  • program/localization/en_US/labels.inc

     
    207207$labels['dstactive']  = 'Daylight savings'; 
    208208$labels['htmleditor'] = 'Compose HTML messages'; 
    209209$labels['htmlsignature'] = 'HTML signature'; 
     210$labels['preview'] = 'Preview message'; 
    210211 
    211212$labels['autosavedraft']  = 'Automatically save draft'; 
    212213$labels['everynminutes']  = 'every $n minutes'; 
  • program/js/app.js

     
    135135          } 
    136136 
    137137        // enable mail commands 
    138         this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', true); 
     138        this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', 'load-attachment', true); 
    139139         
    140140        if (this.env.action=='show') 
    141141          { 
     
    552552          var input_pagesize = rcube_find_object('_pagesize'); 
    553553          var input_name  = rcube_find_object('_name'); 
    554554          var input_email = rcube_find_object('_email'); 
     555          var input_preview = rcube_find_object('_preview'); 
    555556 
    556557          // user prefs 
    557558          if (input_pagesize && isNaN(input_pagesize.value)) 
     
    10391040      this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', selected); 
    10401041      this.enable_command('delete', 'moveto', list.selection.length>0 ? true : false); 
    10411042      } 
     1043    if (selected && this.env.enable_preview && this.env.preview) 
     1044      this.show_preview(list.selection[0]); 
    10421045   }; 
    10431046 
    10441047 
     
    10671070  /*********************************************************/ 
    10681071 
    10691072 
     1073  this.show_preview = function(id, safe) 
     1074    { 
     1075    var add_url = ''; 
     1076    var target = window; 
     1077    var contentframe = rcube_find_object('mailcontframe'); 
     1078    var previewpane = rcube_find_object('previewpane'); 
     1079 
     1080    if (id && contentframe && previewpane) 
     1081      { 
     1082      rcmail.set_busy(true, 'loading'); 
     1083      if (previewpane.style.display=='none') 
     1084        { 
     1085        contentframe.style.height = (contentframe.offsetHeight/2) + 'px'; 
     1086        previewpane.style.top = (contentframe.offsetTop+contentframe.offsetHeight) + 'px'; 
     1087        previewpane.style.display = 'block'; 
     1088        var message = rcube_find_object('rcmrow' + id); 
     1089        message.scrollIntoView(); 
     1090        } 
     1091      var url = '_action=preview&_uid='+id; 
     1092      rcmail.http_request('preview', url, true); 
     1093      } 
     1094    }; 
     1095 
     1096 
    10701097  // when user doble-clicks on a row 
    10711098  this.show_message = function(id, safe) 
    10721099    { 
     
    31153142      case 'expunge': 
    31163143        this.enable_command('select-all', 'select-none', 'expunge', this.env.messagecount ? true : false); 
    31173144        break; 
     3145 
     3146      case 'preview': 
     3147        var previewpane = rcube_find_object('previewpane'); 
     3148        previewpane.innerHTML = request_obj.get_text(); 
     3149        previewpane.scrollTop = 0; 
     3150        break; 
    31183151      } 
    31193152 
    31203153    request_obj.reset(); 
  • program/steps/settings/func.inc

     
    155155                  rep_specialchars_output(rcube_label('htmleditor')), 
    156156                  $input_htmleditor->show($CONFIG['htmleditor']?1:0)); 
    157157 
     158  // Show option for preview pane 
     159  if ($CONFIG['enable_preview']) 
     160    { 
     161    $field_id = 'rcmfd_preview'; 
     162    $input_preview = new checkbox(array('name' => '_preview', 'id' => $field_id, 'value' => 1)); 
     163    $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n", 
     164                    $field_id, 
     165                    rep_specialchars_output(rcube_label('preview')), 
     166                    $input_preview->show($CONFIG['preview']?1:0)); 
     167    } 
     168 
    158169  if (!empty($CONFIG['drafts_mbox'])) 
    159170    { 
    160171    $field_id = 'rcmfd_autosave'; 
     
    242253  } 
    243254 
    244255 
    245 ?> 
    246  No newline at end of file 
     256?> 
  • program/steps/settings/save_prefs.inc

     
    2929$a_user_prefs['pagesize'] = is_numeric($_POST['_pagesize']) ? (int)$_POST['_pagesize'] : $CONFIG['pagesize']; 
    3030$a_user_prefs['prefer_html'] = isset($_POST['_prefer_html']) ? TRUE : FALSE; 
    3131$a_user_prefs['htmleditor'] = isset($_POST['_htmleditor']) ? TRUE : FALSE; 
     32if ($CONFIG['enable_preview']) 
     33  $a_user_prefs['preview'] = isset($_POST['_preview']) ? TRUE : FALSE; 
    3234$a_user_prefs['draft_autosave'] = isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0; 
    3335 
     36 
    3437// MM: Date format toggle (Pretty / Standard) 
    3538$a_user_prefs['prettydate'] = isset($_POST['_pretty_date']) ? TRUE : FALSE; 
    3639 
  • program/steps/mail/show.inc

     
    171171 
    172172if ($_action=='print') 
    173173  parse_template('printmessage'); 
     174else if ($_action=='preview') 
     175  parse_template('previewmessage'); 
    174176else 
    175177  parse_template('message'); 
    176 ?> 
    177  No newline at end of file 
     178?> 
  • program/steps/mail/func.inc

     
    480480  $javascript .= sprintf("%s.set_env('pagecount', %d);\n", $JS_OBJECT_NAME, ceil($message_count/$IMAP->page_size)); 
    481481  $javascript .= sprintf("%s.set_env('sort_col', '%s');\n", $JS_OBJECT_NAME, $sort_col); 
    482482  $javascript .= sprintf("%s.set_env('sort_order', '%s');\n", $JS_OBJECT_NAME, $sort_order); 
     483  if ($CONFIG['enable_preview']) 
     484    $javascript .= sprintf("%s.set_env('preview', '%s');\n", $JS_OBJECT_NAME, $CONFIG['preview']); 
    483485   
    484486  if ($attrib['messageicon']) 
    485487    $javascript .= sprintf("%s.set_env('messageicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path, $attrib['messageicon']); 
  • skins/default/templates/mail.html

     
    5252  attachmentIcon="/images/icons/attachment.png" /> 
    5353</div> 
    5454 
     55<div id="previewpane" style="display: none;"></div> 
     56 
    5557<div id="listcontrols"> 
    5658<roundcube:label name="select" />:&nbsp; 
    5759<roundcube:button command="select-all" label="all" classAct="active" />&nbsp; 
  • skins/default/templates/previewmessage.html

     
     1<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/plus.gif" summary="Message headers" /> 
     2<roundcube:object name="messageAttachments" id="attachment-list" /> 
     3<roundcube:object name="blockedObjects" id="remote-objects-message" /> 
     4<pre><roundcube:object name="messageBody" id="messagebody" showImages="true" /></pre> 
  • skins/default/mail.css

     
    120120  height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); 
    121121} 
    122122 
     123#previewpane 
     124{ 
     125  position: absolute; 
     126  display: none; 
     127  top: 85px; 
     128  left: 200px; 
     129  right: 40px; 
     130  bottom: 40px; 
     131  border: 1px solid #999999; 
     132  border-top: none; 
     133  background-color: #F9F9F9; 
     134  overflow: auto; 
     135  /* css hack for IE */ 
     136  width: expression((parseInt(document.documentElement.clientWidth)-240)+'px'); 
     137  height: expression(( 
     138    parseInt(document.documentElement.clientHeight) - 
     139    parseInt(document.getElementById('mailcontframe').clientHeight) - 125)+'px'); 
     140} 
    123141 
     142body > div#previewpane 
     143{ 
     144  height: auto; 
     145} 
     146 
    124147#messagepartframe 
    125148{ 
    126149  border: 1px solid #999999; 
  • index.php

     
    262262  { 
    263263  include_once('program/steps/mail/func.inc'); 
    264264   
    265   if ($_action=='show' || $_action=='print') 
     265  if ($_action=='show' || $_action=='print' || $_action=='preview') 
    266266    include('program/steps/mail/show.inc'); 
    267267 
    268268  if ($_action=='get')