summaryrefslogtreecommitdiff
path: root/program/steps/mail
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2008-11-23 12:25:15 +0000
committeralecpl <alec@alec.pl>2008-11-23 12:25:15 +0000
commitd59aaa1aafb204ba7ece824fee0550f907af8c3d (patch)
tree911e30ab1e44ebed214dc6074a695d4d55c10fbf /program/steps/mail
parentdcf780a6bd5065ffb0dcc76233b1e5f601e258d2 (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/steps/mail')
-rw-r--r--program/steps/mail/func.inc51
1 files changed, 41 insertions, 10 deletions
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'], '') : '&nbsp;')."</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)
{