- Allow setting attachment col position in 'list_cols' option

- Allow override 'list_cols' via skin (#1485577)
- Fix: allow empty attribs in templates
release-0.6
alecpl 16 years ago
parent dcf780a6bd
commit d59aaa1aaf

@ -1,6 +1,11 @@
CHANGELOG RoundCube Webmail CHANGELOG RoundCube Webmail
--------------------------- ---------------------------
2008/11/23 (alec)
----------
- Allow setting attachment col position in 'list_cols' option
- Allow override 'list_cols' via skin (#1485577)
2008/11/21 (alec) 2008/11/21 (alec)
---------- ----------
- Fix 'cache' table cleanup on session destroy (#1485516) - Fix 'cache' table cleanup on session destroy (#1485516)

@ -110,9 +110,9 @@ $rcmail_config['smtp_log'] = TRUE;
// How many seconds must pass between emails sent by a user // How many seconds must pass between emails sent by a user
$rcmail_config['sendmail_delay'] = 0; $rcmail_config['sendmail_delay'] = 0;
// These cols are shown in the message list // These cols are shown in the message list. Available cols are:
// available cols are: subject, from, to, cc, replyto, date, size, encoding, flag // subject, from, to, cc, replyto, date, size, encoding, flag, attachment
$rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size', 'flag'); $rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size', 'flag', 'attachment');
// Includes should be interpreted as PHP files // Includes should be interpreted as PHP files
$rcmail_config['skin_include_php'] = FALSE; $rcmail_config['skin_include_php'] = FALSE;

@ -661,7 +661,7 @@ function create_attrib_string($attrib, $allowed_attribs=array('id', 'class', 'st
function parse_attrib_string($str) function parse_attrib_string($str)
{ {
$attrib = array(); $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) // convert attributes to an associative array (name => value)
if ($regs) if ($regs)

@ -565,7 +565,7 @@ function rcube_webmail()
var sort_col = a_sort[0]; var sort_col = a_sort[0];
var sort_order = a_sort[1] ? a_sort[1].toUpperCase() : null; var sort_order = a_sort[1] ? a_sort[1].toUpperCase() : null;
var header; var header;
// no sort order specified: toggle // no sort order specified: toggle
if (sort_order==null) if (sort_order==null)
{ {
@ -579,9 +579,9 @@ function rcube_webmail()
break; break;
// set table header class // 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); 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); this.set_classname(header, 'sorted'+sort_order, true);
// save new sort properties // save new sort properties
@ -3427,7 +3427,7 @@ function rcube_webmail()
else else
cell.innerHTML = this.get_label(this.coltypes[n]); cell.innerHTML = this.get_label(this.coltypes[n]);
cell.id = 'rcmHead'+col; cell.id = 'rcm'+col;
} }
else if (col == 'subject' && this.message_list) else if (col == 'subject' && this.message_list)
this.message_list.subject_col = n+1; this.message_list.subject_col = n+1;
@ -3498,18 +3498,15 @@ function rcube_webmail()
col.innerHTML = '<img src="'+this.env.flaggedicon+'" alt="" />'; col.innerHTML = '<img src="'+this.env.flaggedicon+'" alt="" />';
else if(this.env.unflaggedicon) else if(this.env.unflaggedicon)
col.innerHTML = '<img src="'+this.env.unflaggedicon+'" alt="" />'; 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 else
col.innerHTML = cols[c]; col.innerHTML = cols[c];
row.appendChild(col); 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); this.message_list.insert_row(row, attop);
// remove 'old' row // remove 'old' row

@ -114,8 +114,16 @@ function rcmail_message_list($attrib)
$out = '<table' . $attrib_str . ">\n"; $out = '<table' . $attrib_str . ">\n";
// define list of cols to be displayed // define list of cols to be displayed based on parameter or config
$a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); 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'); $a_sort_cols = array('subject', 'date', 'from', 'to', 'size');
$mbox = $IMAP->get_mailbox_name(); $mbox = $IMAP->get_mailbox_name();
@ -130,9 +138,8 @@ function rcmail_message_list($attrib)
$out .= '<col class="icon" />'; $out .= '<col class="icon" />';
foreach ($a_show_cols as $col) 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"; $out .= "</colgroup>\n";
// add table title // add table title
@ -142,7 +149,17 @@ function rcmail_message_list($attrib)
foreach ($a_show_cols as $col) foreach ($a_show_cols as $col)
{ {
// get column name // 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 // make sort links
$sort = ''; $sort = '';
@ -190,10 +207,12 @@ function rcmail_message_list($attrib)
$sort_class = $col==$sort_col ? " sorted$sort_order" : ''; $sort_class = $col==$sort_col ? " sorted$sort_order" : '';
// put it all together // 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'], '') : '&nbsp;')."</td>\n";
$out .= "</tr></thead>\n<tbody>\n"; $out .= "</tr></thead>\n<tbody>\n";
// no messages in this mailbox // no messages in this mailbox
@ -283,10 +302,12 @@ function rcmail_message_list($attrib)
else else
$cont = Q($header->$col); $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"; $out .= "</tr>\n";
if (sizeof($js_row_arr)) if (sizeof($js_row_arr))
@ -342,7 +363,11 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE)
{ {
global $CONFIG, $IMAP, $OUTPUT; 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(); $mbox = $IMAP->get_mailbox_name();
// show 'to' instead of from in sent messages // 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)) if (!empty($header->charset))
$IMAP->set_charset($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() // format each col; similar as in rcmail_message_list()
foreach ($a_show_cols as $col) foreach ($a_show_cols as $col)
{ {

@ -46,6 +46,7 @@
<roundcube:object name="messages" <roundcube:object name="messages"
id="messagelist" id="messagelist"
cellspacing="0" cellspacing="0"
columns=""
summary="Message list" summary="Message list"
messageIcon="/images/icons/dot.png" messageIcon="/images/icons/dot.png"
unreadIcon="/images/icons/unread.png" unreadIcon="/images/icons/unread.png"

Loading…
Cancel
Save