diff options
| author | alecpl <alec@alec.pl> | 2008-11-23 12:25:15 +0000 | 
|---|---|---|
| committer | alecpl <alec@alec.pl> | 2008-11-23 12:25:15 +0000 | 
| commit | d59aaa1aafb204ba7ece824fee0550f907af8c3d (patch) | |
| tree | 911e30ab1e44ebed214dc6074a695d4d55c10fbf /program | |
| parent | dcf780a6bd5065ffb0dcc76233b1e5f601e258d2 (diff) | |
- Allow setting attachment col position in 'list_cols' option
- Allow override 'list_cols' via skin (#1485577)
- Fix: allow empty attribs in templates
Diffstat (limited to 'program')
| -rw-r--r-- | program/include/main.inc | 2 | ||||
| -rw-r--r-- | program/js/app.js | 17 | ||||
| -rw-r--r-- | program/steps/mail/func.inc | 51 | 
3 files changed, 49 insertions, 21 deletions
| diff --git a/program/include/main.inc b/program/include/main.inc index db3745b09..e531bd8d3 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -661,7 +661,7 @@ function create_attrib_string($attrib, $allowed_attribs=array('id', 'class', 'st  function parse_attrib_string($str)    {    $attrib = array(); -  preg_match_all('/\s*([-_a-z]+)=(["\'])??(?(2)([^\2]+)\2|(\S+?))/Ui', stripslashes($str), $regs, PREG_SET_ORDER); +  preg_match_all('/\s*([-_a-z]+)=(["\'])??(?(2)([^\2]*)\2|(\S+?))/Ui', stripslashes($str), $regs, PREG_SET_ORDER);    // convert attributes to an associative array (name => value)    if ($regs) diff --git a/program/js/app.js b/program/js/app.js index e7204d040..06978f60b 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -565,7 +565,7 @@ function rcube_webmail()          var sort_col = a_sort[0];          var sort_order = a_sort[1] ? a_sort[1].toUpperCase() : null;          var header; -         +          // no sort order specified: toggle          if (sort_order==null)            { @@ -579,9 +579,9 @@ function rcube_webmail()            break;          // set table header class -        if (header = document.getElementById('rcmHead'+this.env.sort_col)) +        if (header = document.getElementById('rcm'+this.env.sort_col))            this.set_classname(header, 'sorted'+(this.env.sort_order.toUpperCase()), false); -        if (header = document.getElementById('rcmHead'+sort_col)) +        if (header = document.getElementById('rcm'+sort_col))            this.set_classname(header, 'sorted'+sort_order, true);          // save new sort properties @@ -3427,7 +3427,7 @@ function rcube_webmail()          else            cell.innerHTML = this.get_label(this.coltypes[n]); -        cell.id = 'rcmHead'+col; +        cell.id = 'rcm'+col;          }        else if (col == 'subject' && this.message_list)          this.message_list.subject_col = n+1; @@ -3498,18 +3498,15 @@ function rcube_webmail()            col.innerHTML = '<img src="'+this.env.flaggedicon+'" alt="" />';          else if(this.env.unflaggedicon)            col.innerHTML = '<img src="'+this.env.unflaggedicon+'" alt="" />'; -	} +      } +      else if (c=='attachment') +        col.innerHTML = attachment && this.env.attachmenticon ? '<img src="'+this.env.attachmenticon+'" alt="" />' : '';        else          col.innerHTML = cols[c];        row.appendChild(col);        } -    col = document.createElement('TD'); -    col.className = 'icon'; -    col.innerHTML = attachment && this.env.attachmenticon ? '<img src="'+this.env.attachmenticon+'" alt="" />' : ''; -    row.appendChild(col); -      this.message_list.insert_row(row, attop);      // remove 'old' row diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 7f8fb11a8..ea63a266f 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -114,8 +114,16 @@ function rcmail_message_list($attrib)    $out = '<table' . $attrib_str . ">\n"; -  // define list of cols to be displayed -  $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); +  // define list of cols to be displayed based on parameter or config +  if (empty($attrib['columns'])) +      $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); +  else +      $a_show_cols = explode(',', strip_quotes($attrib['columns'])); + +  // store column list in a session-variable +  $_SESSION['list_columns'] = $a_show_cols; +   +  // define sortable columns    $a_sort_cols = array('subject', 'date', 'from', 'to', 'size');    $mbox = $IMAP->get_mailbox_name(); @@ -130,9 +138,8 @@ function rcmail_message_list($attrib)    $out .= '<col class="icon" />';    foreach ($a_show_cols as $col) -    $out .= sprintf('<col class="%s" />', $col); +    $out .= ($col!='attachment') ? sprintf('<col class="%s" />', $col) : '<col class="icon" />'; -  $out .= '<col class="icon" />';    $out .= "</colgroup>\n";    // add table title @@ -142,7 +149,17 @@ function rcmail_message_list($attrib)    foreach ($a_show_cols as $col)      {      // get column name -    $col_name = $col != 'flag' ? Q(rcube_label($col)) : sprintf($image_tag, $skin_path, $attrib['unflaggedicon'], ''); +    switch ($col) +      { +      case 'flag': +        $col_name = sprintf($image_tag, $skin_path, $attrib['unflaggedicon'], ''); +        break; +      case 'attachment': +        $col_name = sprintf($image_tag, $skin_path, $attrib['attachmenticon'], ''); +        break; +      default: +        $col_name = Q(rcube_label($col)); +    }      // make sort links      $sort = ''; @@ -190,10 +207,12 @@ function rcmail_message_list($attrib)      $sort_class = $col==$sort_col ? " sorted$sort_order" : '';      // put it all together -    $out .= '<td class="'.$col.$sort_class.'" id="rcmHead'.$col.'">' . "$col_name$sort</td>\n";     +    if ($col!='attachment') +      $out .= '<td class="'.$col.$sort_class.'" id="rcm'.$col.'">' . "$col_name$sort</td>\n"; +    else     +      $out .= '<td class="icon" id="rcm'.$col.'">' . "$col_name$sort</td>\n";      } -  $out .= '<td class="icon">'.($attrib['attachmenticon'] ? sprintf($image_tag, $skin_path, $attrib['attachmenticon'], '') : ' ')."</td>\n";    $out .= "</tr></thead>\n<tbody>\n";    // no messages in this mailbox @@ -283,10 +302,12 @@ function rcmail_message_list($attrib)        else          $cont = Q($header->$col); -      $out .= '<td class="'.$col.'">' . $cont . "</td>\n"; +      if ($col!='attachment') +        $out .= '<td class="'.$col.'">' . $cont . "</td>\n"; +      else +        $out .= sprintf("<td class=\"icon\">%s</td>\n", $attach_icon ? sprintf($image_tag, $skin_path, $attach_icon, '') : '');        } -    $out .= sprintf("<td class=\"icon\">%s</td>\n", $attach_icon ? sprintf($image_tag, $skin_path, $attach_icon, '') : '');      $out .= "</tr>\n";      if (sizeof($js_row_arr)) @@ -342,7 +363,11 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE)    {    global $CONFIG, $IMAP, $OUTPUT; -  $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); +  if (empty($_SESSION['list_columns'])) +    $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); +  else +    $a_show_cols = $_SESSION['list_columns']; +    $mbox = $IMAP->get_mailbox_name();    // show 'to' instead of from in sent messages @@ -364,6 +389,12 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE)      if (!empty($header->charset))        $IMAP->set_charset($header->charset); +    // remove 'attachment' and 'flag' columns, we don't need them here +    if(($key = array_search('attachment', $a_show_cols)) !== FALSE) +      unset($a_show_cols[$key]); +    if(($key = array_search('flag', $a_show_cols)) !== FALSE) +      unset($a_show_cols[$key]); +      // format each col; similar as in rcmail_message_list()      foreach ($a_show_cols as $col)        { | 
