diff options
author | alecpl <alec@alec.pl> | 2010-05-30 07:48:15 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-05-30 07:48:15 +0000 |
commit | 6c9d496fcc44a1d36299fb1d107d49e53858104c (patch) | |
tree | d9f467ceeedb49b32ea641b5f9da410fd68e2257 | |
parent | 7ceabc8815ef27557826380d649e18942b02c814 (diff) |
- 'threads' column made movable
-rw-r--r-- | program/js/app.js | 18 | ||||
-rw-r--r-- | program/steps/mail/func.inc | 21 | ||||
-rw-r--r-- | skins/default/functions.js | 10 | ||||
-rw-r--r-- | skins/default/mail.css | 10 |
4 files changed, 39 insertions, 20 deletions
diff --git a/program/js/app.js b/program/js/app.js index dcc212071..3921fab9b 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -166,7 +166,7 @@ function rcube_webmail() this.message_list = new rcube_list_widget(this.gui_objects.messagelist, { multiselect:true, multiexpand:true, draggable:true, keyboard:true, - column_movable:this.env.col_movable, column_fixed:0, dblclick_time:this.dblclick_time + column_movable:this.env.col_movable, dblclick_time:this.dblclick_time }); this.message_list.row_init = function(o){ p.init_message_row(o); }; this.message_list.addEventListener('dblclick', function(o){ p.msglist_dbl_click(o); }); @@ -1645,11 +1645,6 @@ function rcube_webmail() tree += icon ? '<img id="msgicn'+uid+'" src="'+icon+'" alt="" class="msgicon" />' : ''; - // first col is always there - col.className = 'threads'; - col.innerHTML = expando; - row.appendChild(col); - // build subject link if (!bw.ie && cols.subject) { var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show'; @@ -1671,6 +1666,8 @@ function rcube_webmail() else if(!flags.flagged && this.env.unflaggedicon) html = '<img id="flaggedicn'+uid+'" src="'+this.env.unflaggedicon+'" class="flagicon" alt="" />'; } + else if (c == 'threads') + html = expando; else if (c == 'attachment') html = flags.attachment && this.env.attachmenticon ? '<img src="'+this.env.attachmenticon+'" alt="" />' : ' '; else if (c == 'subject') @@ -1733,12 +1730,15 @@ function rcube_webmail() newcols[newcols.length] = name; delete cols[idx]; } + else if (name == 'threads') { + delete oldcols[i]; + } } for (i=0; i<cols.length; i++) if (cols[i]) newcols[newcols.length] = cols[i]; - if (newcols.join() != this.env.coltypes.join()) { + if (newcols.join() != oldcols.join()) { update = 1; add_url += '&_cols=' + newcols.join(','); } @@ -4589,7 +4589,7 @@ function rcube_webmail() var cell, col, n; for (n=0; thead && n<this.env.coltypes.length; n++) { col = this.env.coltypes[n]; - if ((cell = thead.rows[0].cells[n+1]) && (col=='from' || col=='to')) { + if ((cell = thead.rows[0].cells[n]) && (col=='from' || col=='to')) { // if we have links for sorting, it's a bit more complicated... if (cell.firstChild && cell.firstChild.tagName.toLowerCase()=='a') { cell.firstChild.innerHTML = this.get_label(this.env.coltypes[n]); @@ -4614,7 +4614,7 @@ function rcube_webmail() if ((found = $.inArray('subject', this.env.coltypes)) >= 0) { this.set_env('subject_col', found); if (this.message_list) - this.message_list.subject_col = found+1; + this.message_list.subject_col = found; } if ((found = $.inArray('flag', this.env.coltypes)) >= 0) this.set_env('flagged_col', found); diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index b07e3a6d9..384074b71 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -171,6 +171,10 @@ function rcmail_message_list($attrib) && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false) $a_show_cols[$f] = 'to'; + // make sure 'threads' column is present + if (!in_array('threads', $a_show_cols)) + array_unshift($a_show_cols, 'threads'); + $skin_path = $_SESSION['skin_path'] = $CONFIG['skin_path']; // set client env @@ -238,6 +242,10 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $head_replace=FAL && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false) $a_show_cols[$f] = 'to'; + // make sure 'threads' column is present + if (!in_array('threads', $a_show_cols)) + array_unshift($a_show_cols, 'threads'); + $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL; $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead); @@ -245,10 +253,12 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $head_replace=FAL if (empty($a_headers)) return; - // remove 'attachment' and 'flag' columns, we don't need them here - if(($key = array_search('attachment', $a_show_cols)) !== FALSE) + // remove 'threads', 'attachment', '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) + if (($key = array_search('flag', $a_show_cols)) !== FALSE) + unset($a_show_cols[$key]); + if (($key = array_search('threads', $a_show_cols)) !== FALSE) unset($a_show_cols[$key]); // loop through message headers @@ -345,7 +355,7 @@ function rcmail_message_list_head($attrib, $a_show_cols) else $list_menu = ''; - $cells = array(array('className' => 'threads', 'html' => $list_menu)); + $cells = array(); foreach ($a_show_cols as $col) { // get column name @@ -356,6 +366,9 @@ function rcmail_message_list_head($attrib, $a_show_cols) case 'attachment': $col_name = sprintf($image_tag, $skin_path, $attrib['attachmenticon'], ''); break; + case 'threads': + $col_name = $list_menu; + break; default: $col_name = Q(rcube_label($col)); } diff --git a/skins/default/functions.js b/skins/default/functions.js index e9b03a125..e1edee1e8 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -148,7 +148,7 @@ show_popupmenu: function(obj, refname, show, above) { if (typeof show == 'undefined') show = obj.is(':visible') ? false : true; - + var ref = rcube_find_object(refname); if (show && ref) { var pos = $(ref).offset(); @@ -214,7 +214,13 @@ show_listmenu: function(show) var ref = rcube_find_object('listmenulink'); if (show && ref) { - var pos = $(ref).offset(); + var pos = $(ref).offset(), + menuwidth = this.listmenu.width(), + pagewidth = $(document).width(); + + if (pagewidth - pos.left < menuwidth && pos.left > menuwidth) + pos.left = pos.left - menuwidth; + this.listmenu.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)}); // set form values $('input[name="sort_col"][value="'+rcmail.env.sort_col+'"]').attr('checked', 1); diff --git a/skins/default/mail.css b/skins/default/mail.css index 8a78b4749..dfa091384 100644 --- a/skins/default/mail.css +++ b/skins/default/mail.css @@ -743,8 +743,8 @@ body.messagelist #messagelist tr td.attachment, #messagelist tr td.flag { - width: 20px; - padding: 0px 1px 1px 1px; + width: 18px; + padding: 0px 1px 1px 3px; } #messagelist tbody td span.branch, @@ -756,7 +756,7 @@ body.messagelist #messagelist tbody td img.msgicon { - margin-right: 2px; + margin: 0 2px; } #messagelist tr td div.collapsed, @@ -770,12 +770,12 @@ body.messagelist #messagelist tr td div.collapsed { - background: url(images/messageactions.png) 1px -91px no-repeat; + background: url(images/messageactions.png) -1px -91px no-repeat; } #messagelist tr td div.expanded { - background: url(images/messageactions.png) 1px -109px no-repeat; + background: url(images/messageactions.png) -1px -109px no-repeat; } #messagelist tbody tr td.flag img:hover, |