Ticket #1295420: roundcubemail.patch

File roundcubemail.patch, 10.9 KB (added by moc, 7 years ago)
  • program/include/main.inc

    diff -urNw -U 2 program/include/main.inc program/include/main.inc
     
    13221322        'mailboxlist' => 'rcmail_mailbox_list', 
    13231323        'message' => 'rcmail_message_container', 
     1324        'messagesheaders' => 'rcmail_message_list_headers', 
    13241325        'messages' => 'rcmail_message_list', 
    13251326        'messagecountdisplay' => 'rcmail_messagecount_display', 
  • program/js/app.js

    diff -urNw -U 2 program/js/app.js program/js/app.js
     
    29912991    // set correct list titles 
    29922992    var cell, col; 
    2993     var thead = this.gui_objects.messagelist ? this.gui_objects.messagelist.tHead : null; 
     2993    var thead = this.gui_objects.messagelistheaders ? this.gui_objects.messagelistheaders.tHead : null; 
    29942994    for (var n=0; thead && n<this.coltypes.length; n++)  
    29952995      { 
  • program/steps/mail/func.inc

    diff -urNw -U 2 program/steps/mail/func.inc program/steps/mail/func.inc
     
    290290 
    291291 
    292 // return the message list as HTML table 
    293 function rcmail_message_list($attrib) 
     292// return the message list headers as HTML table 
     293function rcmail_message_list_headers($attrib) 
    294294  { 
    295295  global $IMAP, $CONFIG, $COMM_PATH, $OUTPUT, $JS_OBJECT_NAME; 
     
    305305  rcube_add_label('from', 'to'); 
    306306 
    307   // get message headers 
    308   $a_headers = $IMAP->list_headers('', '', $sort_col, $sort_order); 
    309  
    310307  // add id to message list table if not specified 
    311308  if (!strlen($attrib['id'])) 
    312     $attrib['id'] = 'rcubemessagelist'; 
     309    $attrib['id'] = 'rcubemessagelistheaders'; 
    313310 
    314311  // allow the following attributes to be added to the <table> tag 
     
    327324    $a_show_cols[$f] = 'to'; 
    328325   
    329   // add col definition 
    330   $out .= '<colgroup>'; 
    331   $out .= '<col class="icon" />'; 
    332  
    333   foreach ($a_show_cols as $col) 
    334     $out .= sprintf('<col class="%s" />', $col); 
    335  
    336   $out .= '<col class="icon" />'; 
    337   $out .= "</colgroup>\n"; 
    338  
    339326  // add table title 
    340327  $out .= "<thead><tr>\n<td class=\"icon\">&nbsp;</td>\n"; 
    341328 
    342   $javascript = ''; 
    343329  foreach ($a_show_cols as $col) 
    344330    { 
     
    350336    if ($IMAP->get_capability('sort') && in_array($col, $a_sort_cols)) 
    351337      { 
     338      write_log('list_messages', 'Sort capabilities'); 
     339       
    352340      // have buttons configured 
    353341      if (!empty($attrib['sortdescbutton']) || !empty($attrib['sortascbutton'])) 
     
    393381 
    394382  $out .= '<td class="icon">'.($attrib['attachmenticon'] ? sprintf($image_tag, $skin_path, $attrib['attachmenticon'], '') : '')."</td>\n"; 
    395   $out .= "</tr></thead>\n<tbody>\n"; 
     383  $out .= "</tr></thead>\n</table>\n"; 
    396384 
     385  // set client env 
     386  $javascript  = ''; 
     387  $javascript .= sprintf("%s.gui_object('mailheaders', '%s');\n", $JS_OBJECT_NAME, 'mailheaders'); 
     388  $javascript .= sprintf("%s.gui_object('messagelistheaders', '%s');\n", $JS_OBJECT_NAME, $attrib['id']); 
     389  $javascript .= sprintf("%s.set_env('sort_col', '%s');\n", $JS_OBJECT_NAME, $sort_col); 
     390  $javascript .= sprintf("%s.set_env('sort_order', '%s');\n", $JS_OBJECT_NAME, $sort_order); 
     391   
     392  $OUTPUT->add_script($javascript);   
     393   
     394  return $out; 
     395  } 
     396 
     397 
     398 
     399// return the message list as HTML table 
     400function rcmail_message_list($attrib) 
     401  { 
     402  global $IMAP, $CONFIG, $COMM_PATH, $OUTPUT, $JS_OBJECT_NAME; 
     403 
     404  $skin_path = $CONFIG['skin_path']; 
     405  $image_tag = '<img src="%s%s" alt="%s" border="0" />'; 
     406 
     407  // check to see if we have some settings for sorting 
     408  $sort_col   = $_SESSION['sort_col']; 
     409  $sort_order = $_SESSION['sort_order']; 
     410   
     411  // add some labels to client 
     412  rcube_add_label('from', 'to'); 
     413 
     414  // get message headers 
     415  $a_headers = $IMAP->list_headers('', '', $sort_col, $sort_order); 
     416   
     417  write_log('list_messages', $a_headers); 
     418         
     419  // add id to message list table if not specified 
     420  if (!strlen($attrib['id'])) 
     421    $attrib['id'] = 'rcubemessagelist'; 
     422 
     423  // allow the following attributes to be added to the <table> tag 
     424  $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id', 'cellpadding', 'cellspacing', 'border', 'summary')); 
     425 
     426  $out = '<table ' . $attrib_str . ">\n"; 
     427 
     428  // define list of cols to be displayed 
     429  $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); 
     430  $a_sort_cols = array('subject', 'date', 'from', 'to', 'size'); 
     431   
     432  // show 'to' instead of from in sent messages 
     433  if (($IMAP->get_mailbox_name()==$CONFIG['sent_mbox'] || $IMAP->get_mailbox_name()==$CONFIG['drafts_mbox']) && ($f = array_search('from', $a_show_cols)) 
     434      && !array_search('to', $a_show_cols)) 
     435    $a_show_cols[$f] = 'to'; 
     436   
     437  // add col definition 
     438  $out .= '<colgroup>'; 
     439  $out .= '<col class="icon" />'; 
     440 
     441  foreach ($a_show_cols as $col) 
     442    $out .= sprintf('<col class="%s" />', $col); 
     443 
     444  $out .= '<col class="icon" />'; 
     445  $out .= "</colgroup>\n"; 
     446   
     447  // add table title 
     448  $out .= "<thead><tr>\n<td class=\"icon\"></td>\n"; 
     449 
     450  foreach ($a_show_cols as $col) 
     451    { 
     452    // put it all together 
     453    $out .= '<td class="'.$col.'" id="rcmHead'.$col.'">' . "</td>\n";     
     454    } 
     455 
     456  $out .= '<td class="icon">'."</td>\n"; 
     457  $out .= "</tr></thead>\n"; 
     458   
     459  $out .= "<tbody>\n"; 
    397460  // no messages in this mailbox 
    398461  if (!sizeof($a_headers)) 
     
    446509      { 
    447510      if ($col=='from' || $col=='to') 
     511        { 
    448512        $cont = Q(rcmail_address_string($header->$col, 3, $attrib['addicon']), 'show'); 
     513        if (!$cont) $cont = '&nbsp;'; 
     514        } 
    449515      else if ($col=='subject') 
    450516        { 
     
    457523        $cont = show_bytes($header->$col); 
    458524      else if ($col=='date') 
     525        { 
    459526        $cont = format_date($header->date); //date('m.d.Y G:i:s', strtotime($header->date)); 
     527        if (!$cont) $cont = '&nbsp;'; 
     528        } 
    460529      else 
    461530        $cont = Q($header->$col); 
     
    464533      } 
    465534 
    466     $out .= sprintf("<td class=\"icon\">%s</td>\n", $attach_icon ? sprintf($image_tag, $skin_path, $attach_icon, '') : ''); 
     535    $out .= sprintf("<td class=\"icon\">%s</td>\n", $attach_icon ? sprintf($image_tag, $skin_path, $attach_icon, '') : '&nbsp;'); 
    467536    $out .= "</tr>\n"; 
    468537     
     
    478547   
    479548  // set client env 
     549  $javascript  = ''; 
    480550  $javascript .= sprintf("%s.gui_object('mailcontframe', '%s');\n", $JS_OBJECT_NAME, 'mailcontframe'); 
    481551  $javascript .= sprintf("%s.gui_object('messagelist', '%s');\n", $JS_OBJECT_NAME, $attrib['id']); 
     
    483553  $javascript .= sprintf("%s.set_env('current_page', %d);\n", $JS_OBJECT_NAME, $IMAP->list_page); 
    484554  $javascript .= sprintf("%s.set_env('pagecount', %d);\n", $JS_OBJECT_NAME, ceil($message_count/$IMAP->page_size)); 
    485   $javascript .= sprintf("%s.set_env('sort_col', '%s');\n", $JS_OBJECT_NAME, $sort_col); 
    486   $javascript .= sprintf("%s.set_env('sort_order', '%s');\n", $JS_OBJECT_NAME, $sort_order); 
    487555   
    488556  if ($attrib['messageicon']) 
     
    14451513  $attrib_str = create_attrib_string($attrib, array('id', 'class', 'style', 'cellspacing', 'cellpadding', 'border', 'summary')); 
    14461514  $out = '<table '. $attrib_str . ">\n"; 
     1515   
     1516  $filename = $part->d_parameters['filename'] ? $part->d_parameters['filename'] : $part->ctype_parameters['name']; 
     1517  $filesize = $part->size; 
    14471518   
    14481519  if ($filename) 
  • skins/default/mail.css

    diff -urNw -U 2 skins/default/mail.css skins/default/mail.css
     
    106106} 
    107107 
    108 #mailcontframe 
     108#mailheaders 
    109109{ 
    110110  position: absolute; 
     
    112112  left: 200px; 
    113113  right: 40px; 
     114  border: 1px solid #999999; 
     115  background-color: #F9F9F9; 
     116  overflow: visible; 
     117  /* css hack for IE */ 
     118  width: expression((parseInt(document.documentElement.clientWidth)-240)+'px'); 
     119  min-width:540px; 
     120  height: 22px; 
     121} 
     122 
     123#mailcontframe 
     124{ 
     125  position: absolute; 
     126  top: 105px; 
     127  left: 200px; 
     128  right: 40px; 
    114129  bottom: 40px; 
    115130  border: 1px solid #999999; 
     
    118133  /* css hack for IE */ 
    119134  width: expression((parseInt(document.documentElement.clientWidth)-240)+'px'); 
    120   height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); 
     135  height: expression((parseInt(document.documentElement.clientHeight)-145)+'px'); 
     136  min-width:540px; 
    121137} 
    122138 
     
    369385} 
    370386 
     387#messagelistheaders 
     388{ 
     389  display: table; 
     390  table-layout: fixed; 
     391  width: 100%; 
     392  /* css hack for IE */ 
     393  width: expression(document.getElementById('mailheaders').clientWidth); 
     394} 
     395 
    371396#messagelist 
    372397{ 
     
    378403} 
    379404 
    380 #messagelist thead tr td 
     405#messagelistheaders thead tr td 
    381406{ 
    382407  height: 20px; 
     
    392417  font-size: 11px; 
    393418  font-weight: bold; 
     419  white-space: nowrap; 
    394420} 
    395421 
    396 #messagelist thead tr td.sortedASC, 
    397 #messagelist thead tr td.sortedDESC 
     422#messagelist thead, #messagelist thead tr, #messagelist thead tr td 
     423{ 
     424        height:1px; 
     425        visible:hidden; 
     426} 
     427 
     428#messagelistheaders thead tr td.sortedASC, 
     429#messagelistheaders thead tr td.sortedDESC 
    398430{ 
    399431  background-image: url(images/listheader_dark.gif);  
    400432} 
    401433 
    402 #messagelist thead tr td.sortedASC a 
     434#messagelistheaders thead tr td.sortedASC a 
    403435{ 
    404436  background: url(images/sort_asc.gif) top right no-repeat; 
    405437} 
    406438 
    407 #messagelist thead tr td.sortedDESC a 
     439#messagelistheaders thead tr td.sortedDESC a 
    408440{ 
    409441  background: url(images/sort_desc.gif) top right no-repeat; 
    410442} 
    411443 
    412 #messagelist thead tr td a, 
    413 #messagelist thead tr td a:hover 
     444#messagelistheaders thead tr td a, 
     445#messagelistheaders thead tr td a:hover 
    414446{ 
    415447  display: block; 
     
    418450  color: #333333; 
    419451  text-decoration: none; 
     452  white-space: nowrap; 
     453} 
     454 
     455#messagelist tbody tr td a, 
     456#messagelist tbody tr td a:hover 
     457{ 
     458  white-space: nowrap; 
    420459} 
    421460 
     
    423462{ 
    424463  height: 16px; 
    425   padding: 2px; 
    426   padding-right: 4px; 
     464  padding: 2px 4px 2px 2px; 
    427465  font-size: 11px; 
    428466  overflow: hidden; 
     
    440478} 
    441479 
    442 #messagelist tr td.icon 
     480#messagelist tr td.icon, #messagelistheaders tr td.icon 
    443481{ 
    444482  width: 16px; 
     
    446484} 
    447485 
    448 #messagelist tr td.subject 
     486#messagelist tr td.subject, #messagelistheaders tr td.subject 
    449487{ 
    450488  overflow: hidden; 
    451489  vertical-align: middle; 
     490  width: 60%; 
    452491} 
    453492 
    454 #messagelist tr td.size 
     493#messagelist tr td.size, #messagelistheaders tr td.size 
    455494{ 
    456   width: 60px; 
     495  width: 80px; 
    457496  text-align: right; 
    458497  vertical-align: middle; 
     
    462501#messagelist tr td.to 
    463502{ 
    464   width: 180px; 
     503  width: 40%; 
     504  vertical-align: middle; 
     505} 
     506 
     507#messagelistheaders tr td.from, 
     508#messagelistheaders tr td.to 
     509{ 
     510  width: 40%; 
    465511  vertical-align: middle; 
    466512} 
    467513 
    468 #messagelist tr td.date 
     514#messagelist tr td.date, #messagelistheaders tr td.date 
    469515{ 
    470516  width: 118px; 
  • skins/default/templates/mail.html

    diff -urNw -U 2 skins/default/templates/mail.html skins/default/templates/mail.html
     
    4343</div> 
    4444 
    45  
     45<div id="mailheaders"> 
     46<roundcube:object name="messagesheaders" 
     47  id="messagelistheaders" 
     48  cellspacing="0" 
     49  summary="Message list headers" 
     50  attachmentIcon="/images/icons/attachment.png" /> 
     51</div> 
    4652<div id="mailcontframe"> 
    4753<roundcube:object name="messages"