From 5c024015f02ed5b0b772f8fff5bfe8aa6dab1d93 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 23 Jun 2010 04:02:37 -0400 Subject: [PATCH] - Fix quota indicator position on Opera 10.10 --- program/js/app.js | 101 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 73 insertions(+), 28 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index bbaa79d..666726c 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -203,7 +203,7 @@ 'open', 'mark', 'edit', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers']; if (this.env.action=='show' || this.env.action=='preview') { - this.enable_command(this.env.message_commands, true); + this.enable_command(this.env.message_commands, this.env.uid); if (this.env.next_uid) { this.enable_command('nextmessage', 'lastmessage', true); @@ -243,7 +243,7 @@ this.init_messageform(); } // show printing dialog - else if (this.env.action == 'print') + else if (this.env.action == 'print' && this.env.uid) window.print(); // get unread count for each mailbox @@ -1243,7 +1243,11 @@ var boffset = bw.ie ? -document.documentElement.scrollTop : this.initialBodyScrollTop; var moffset = this.initialListScrollTop-this.gui_objects.folderlist.parentNode.scrollTop; var toffset = -moffset-boffset; - var li, div, pos, mouse; + var li, div, pos, mouse, check, oldclass, + layerclass = 'draglayernormal'; + + if (this.contact_list && this.contact_list.draglayer) + oldclass = this.contact_list.draglayer.attr('class'); mouse = rcube_event.get_mouse_pos(e); pos = this.env.folderlist_coords; @@ -1256,6 +1260,8 @@ this.env.folder_coords[this.env.last_folder_target].on = 0; this.env.last_folder_target = null; } + if (layerclass != oldclass && this.contact_list && this.contact_list.draglayer) + this.contact_list.draglayer.attr('class', layerclass); return; } @@ -1263,7 +1269,7 @@ for (var k in this.env.folder_coords) { pos = this.env.folder_coords[k]; if (mouse.x >= pos.x1 && mouse.x < pos.x2 && mouse.y >= pos.y1 && mouse.y < pos.y2){ - if (this.check_droptarget(k)) { + if ((check = this.check_droptarget(k))) { li = this.get_folder_li(k); div = $(li.getElementsByTagName('div')[0]); @@ -1286,6 +1292,7 @@ $(li).addClass('droptarget'); this.env.folder_coords[k].on = 1; this.env.last_folder_target = k; + layerclass = 'draglayer' + (check > 1 ? 'copy' : 'normal'); } else { // Clear target, otherwise drag end will trigger move into last valid droptarget this.env.last_folder_target = null; } @@ -1295,6 +1302,9 @@ this.env.folder_coords[k].on = 0; } } + + if (layerclass != oldclass && this.contact_list && this.contact_list.draglayer) + this.contact_list.draglayer.attr('class', layerclass); } }; @@ -1485,13 +1495,13 @@ if (this.env.messages[row.uid]) this.env.messages[row.uid].expanded = row.expanded; }; - + this.msglist_set_coltypes = function(list) { var i, found, name, cols = list.list.tHead.rows[0].cells; - + this.env.coltypes = []; - + for (i=0; i<cols.length; i++) if (cols[i].id && cols[i].id.match(/^rcm/)) { name = cols[i].id.replace(/^rcm/, ''); @@ -1509,16 +1519,27 @@ this.check_droptarget = function(id) { + var allow = false, copy = false; + if (this.task == 'mail') - return (this.env.mailboxes[id] && this.env.mailboxes[id].id != this.env.mailbox && !this.env.mailboxes[id].virtual); - else if (this.task == 'addressbook') - return (id != this.env.source && this.env.contactfolders[id] && !this.env.contactfolders[id].readonly && - !(!this.env.source && this.env.contactfolders[id].group) && - !(this.env.contactfolders[id].type == 'group' && this.env.contactfolders[this.env.source].readonly) && - !(this.env.contactfolders[id].type == 'group' && this.env.contactfolders[id].source != this.env.source) && - !(this.env.contactfolders[id].type == 'group' && this.env.contactfolders[id].id == this.env.group)); + allow = (this.env.mailboxes[id] && this.env.mailboxes[id].id != this.env.mailbox && !this.env.mailboxes[id].virtual); else if (this.task == 'settings') - return (id != this.env.folder); + allow = (id != this.env.folder); + else if (this.task == 'addressbook') { + if (id != this.env.source && this.env.contactfolders[id]) { + if (this.env.contactfolders[id].type == 'group') { + var target_abook = this.env.contactfolders[id].source; + allow = this.env.contactfolders[id].id != this.env.group && !this.env.contactfolders[target_abook].readonly; + copy = target_abook != this.env.source; + } + else { + allow = !this.env.contactfolders[id].readonly; + copy = true; + } + } + } + + return allow ? (copy ? 2 : 1) : 0; }; @@ -1573,7 +1594,9 @@ depth: flags.depth?flags.depth:0, unread_children: flags.unread_children?flags.unread_children:0, parent_uid: flags.parent_uid?flags.parent_uid:0, - selected: this.select_all_mode || this.message_list.in_selection(uid) + selected: this.select_all_mode || this.message_list.in_selection(uid), + // flags from plugins + flags: flags.extra_flags }); var c, tree = expando = '', @@ -1873,6 +1896,7 @@ this.env.current_page = page; this.select_all_mode = false; this.show_contentframe(false); + this.env.messages = {}; } if (mbox != this.env.mailbox || (mbox == this.env.mailbox && !page && !sort)) @@ -2237,8 +2261,6 @@ rows[uid].forwarded = status; else if (flag == 'flagged') rows[uid].flagged = status; - -// this.env.messages[uid] = rows[uid]; }; // set message row status, class and icon @@ -3455,7 +3477,7 @@ for (i=0; i < a_results.length; i++) { text = typeof a_results[i] == 'object' ? a_results[i].name : a_results[i]; li = document.createElement('LI'); - li.innerHTML = text.replace(new RegExp('('+s_val+')', 'ig'), '##$1%%').replace(/</g, '<').replace(/>/g, '>').replace(/##([^%]+)%%/g, '<b>$1</b>'); + li.innerHTML = text.replace(new RegExp('('+RegExp.escape(s_val)+')', 'ig'), '##$1%%').replace(/</g, '<').replace(/>/g, '>').replace(/##([^%]+)%%/g, '<b>$1</b>'); li.onmouseover = function(){ ref.ksearch_select(this); }; li.onmouseup = function(){ ref.ksearch_click(this) }; li._rcm_id = i; @@ -3633,10 +3655,24 @@ if (!cid) cid = this.contact_list.get_selection().join(','); - if (to.type == 'group') - this.http_post('group-addmembers', '_cid='+urlencode(cid)+'&_source='+urlencode(this.env.source)+'&_gid='+urlencode(to.id)); - else if (to.id != this.env.source && cid && this.env.address_sources[to.id] && !this.env.address_sources[to.id].readonly) - this.http_post('copy', '_cid='+urlencode(cid)+'&_source='+urlencode(this.env.source)+'&_to='+urlencode(to.id)+(this.env.group ? '&_gid='+urlencode(this.env.group) : '')); + if (to.type == 'group' && to.source == this.env.source) { + this.http_post('group-addmembers', '_cid='+urlencode(cid) + + '&_source='+urlencode(this.env.source) + + '&_gid='+urlencode(to.id)); + } + else if (to.type == 'group' && !this.env.address_sources[to.source].readonly) { + this.http_post('copy', '_cid='+urlencode(cid) + + '&_source='+urlencode(this.env.source) + + '&_to='+urlencode(to.source) + + '&_togid='+urlencode(to.id) + + (this.env.group ? '&_gid='+urlencode(this.env.group) : '')); + } + else if (to.id != this.env.source && cid && this.env.address_sources[to.id] && !this.env.address_sources[to.id].readonly) { + this.http_post('copy', '_cid='+urlencode(cid) + + '&_source='+urlencode(this.env.source) + + '&_to='+urlencode(to.id) + + (this.env.group ? '&_gid='+urlencode(this.env.group) : '')); + } }; @@ -4638,7 +4674,7 @@ this.set_quota = function(content) { if (content && this.gui_objects.quotadisplay) { - if (typeof(content) == 'object') + if (typeof(content) == 'object' && content.type == 'image') this.percent_indicator(this.gui_objects.quotadisplay, content); else $(this.gui_objects.quotadisplay).html(content); @@ -4789,6 +4825,9 @@ quota_width = parseInt(quota / 100 * width), pos = $(obj).position(); + // Opera bug? + pos.top = Math.max(0, pos.top); + this.env.indicator_width = width; this.env.indicator_height = height; @@ -4797,6 +4836,9 @@ quota_width = width; quota = 100; } + + if (data.title) + data.title = this.get_label('quota') + ': ' + data.title; // main div var main = $('<div>'); @@ -4828,6 +4870,8 @@ // replace quota image $(obj).html('').append(bar1).append(bar2).append(main); + // update #quotaimg title + $('#quotaimg').attr('title', data.title); }; /********************************************************/ @@ -4892,7 +4936,7 @@ querystring += (querystring ? '&' : '') + '_remote=1'; var url = this.env.comm_path + '&_action=' + action + '&' + querystring; - + // send request console.log('HTTP GET: ' + url); $.get(url, { _unlock:(lock?1:0) }, function(data){ ref.http_response(data); }, 'json'); @@ -4987,7 +5031,8 @@ this.enable_command(this.env.message_commands, 'purge', 'expunge', 'select-all', 'select-none', 'sort', 'expand-all', 'expand-unread', 'collapse-all', false); } - this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount }); + if (this.message_list) + this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount }); } break; @@ -5041,9 +5086,9 @@ if (this._int) clearInterval(this._int); - if (this.env.keep_alive && !this.env.framed && this.task=='mail' && this.gui_objects.mailboxlist) + if (this.env.keep_alive && !this.env.framed && this.task == 'mail' && this.gui_objects.mailboxlist) this._int = setInterval(function(){ ref.check_for_recent(false); }, this.env.keep_alive * 1000); - else if (this.env.keep_alive && !this.env.framed && this.task!='login') + else if (this.env.keep_alive && !this.env.framed && this.task != 'login' && this.env.action != 'print') this._int = setInterval(function(){ ref.send_keep_alive(); }, this.env.keep_alive * 1000); }; -- Gitblit v1.9.1