| | |
| | | | Roundcube List Widget | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2006-2009, Roundcube Dev, - Switzerland | |
| | | | Copyright (C) 2006-2009, The Roundcube Dev Team | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | |
| | | // set eventhandlers to table row |
| | | row.onmousedown = function(e){ return self.drag_row(e, this.uid); }; |
| | | row.onmouseup = function(e){ return self.click_row(e, this.uid); }; |
| | | |
| | | |
| | | if (bw.iphone || bw.ipad) { |
| | | row.addEventListener('touchstart', function(e) { |
| | | if (e.touches.length == 1) { |
| | |
| | | { |
| | | var id; |
| | | this.focused = true; |
| | | |
| | | for (var n in this.selection) { |
| | | id = this.selection[n]; |
| | | if (this.rows[id] && this.rows[id].obj) { |
| | | $(this.rows[id].obj).addClass('selected').removeClass('unfocused'); |
| | | } |
| | | } |
| | | |
| | | // Un-focus already focused elements |
| | | $('*:focus', window).blur(); |
| | | $('iframe').each(function() { this.blur(); }); |
| | | |
| | | if (e || (e = window.event)) |
| | | rcube_event.cancel(e); |
| | |
| | | var prev_row = this.get_prev_row(); |
| | | var new_row = (next_row) ? next_row : prev_row; |
| | | if (new_row) |
| | | this.select_row(new_row.uid, false, false); |
| | | this.select_row(new_row.uid, false, false); |
| | | }, |
| | | |
| | | |
| | |
| | | if (row && mod_key) { |
| | | this.shift_select(row, mod_key); |
| | | this.triggerEvent('select'); |
| | | this.scrollto(row); |
| | | this.scrollto(row); |
| | | } |
| | | else if (row) |
| | | this.select(row); |
| | |
| | | |
| | | // one row |
| | | if (id) { |
| | | for (var n=0 in this.selection) |
| | | for (var n in this.selection) |
| | | if (this.selection[n] == id) { |
| | | this.selection.splice(n,1); |
| | | break; |
| | |
| | | this.select_childs(uid); |
| | | } |
| | | |
| | | // reset content |
| | | this.draglayer.html(''); |
| | | |
| | | // get subjects of selected messages |
| | | var names = ''; |
| | | var c, i, subject, obj; |
| | | for (var n=0; n<this.selection.length; n++) { |
| | | var c, i, n, subject, obj; |
| | | for (n=0; n<this.selection.length; n++) { |
| | | // only show 12 lines |
| | | if (n>12) { |
| | | names += '...'; |
| | | this.draglayer.append('...'); |
| | | break; |
| | | } |
| | | |
| | |
| | | this.drag_start_pos = $(obj.childNodes[i]).offset(); |
| | | |
| | | if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == c)) { |
| | | var node, tmp_node, nodes = obj.childNodes[i].childNodes; |
| | | var entry, node, tmp_node, nodes = obj.childNodes[i].childNodes; |
| | | // find text node |
| | | for (m=0; m<nodes.length; m++) { |
| | | if ((tmp_node = obj.childNodes[i].childNodes[m]) && (tmp_node.nodeType==3 || tmp_node.nodeName=='A')) |
| | |
| | | if (!node) |
| | | break; |
| | | |
| | | subject = node.nodeType==3 ? node.data : node.innerHTML; |
| | | subject = $(node).text(); |
| | | // remove leading spaces |
| | | subject = subject.replace(/^\s+/i, ''); |
| | | subject = $.trim(subject); |
| | | // truncate line to 50 characters |
| | | names += (subject.length > 50 ? subject.substring(0, 50)+'...' : subject) + '<br />'; |
| | | subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject); |
| | | |
| | | entry = $('<div>').text(subject); |
| | | this.draglayer.append(entry); |
| | | break; |
| | | } |
| | | c++; |
| | |
| | | } |
| | | } |
| | | |
| | | this.draglayer.html(names); |
| | | this.draglayer.show(); |
| | | |
| | | this.drag_active = true; |
| | | this.triggerEvent('dragstart'); |
| | | } |