From 31036bb3eb65f9b6513631a71936fe19f302815c Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 16 Feb 2011 06:14:28 -0500 Subject: [PATCH] - Add favicon on message print page (#1487789) --- skins/default/functions.js | 101 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 83 insertions(+), 18 deletions(-) diff --git a/skins/default/functions.js b/skins/default/functions.js index b39324e..3497826 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -1,5 +1,5 @@ /** - * RoundCube functions for default skin interface + * Roundcube functions for default skin interface */ /** @@ -13,12 +13,64 @@ tab = '#settingstab' + (rcmail.env.action=='preferences' ? 'default' : (rcmail.env.action.indexOf('identity')>0 ? 'identities' : rcmail.env.action.replace(/\./g, ''))); $(tab).addClass('tablink-selected'); - $(tab + '> a').removeAttr('onclick').unbind('click').bind('click', function(){return false;}); + $(tab + '> a').removeAttr('onclick').click(function() { return false; }); } function rcube_show_advanced(visible) { $('tr.advanced').css('display', (visible ? (bw.ie ? 'block' : 'table-row') : 'none')); +} + +// Fieldsets-to-tabs converter +// Warning: don't place "caller" <script> inside page element (id) +function rcube_init_tabs(id, current) +{ + var content = $('#'+id), + fs = content.children('fieldset'); + + if (!fs.length) + return; + + current = current ? current : 0; + + // first hide not selected tabs + fs.each(function(idx) { if (idx != current) $(this).hide(); }); + + // create tabs container + var tabs = $('<div>').addClass('tabsbar').appendTo($(content)); + + // convert fildsets into tabs + fs.each(function(idx) { + var tab, a, elm = $(this), legend = elm.children('legend'); + + // create a tab + a = $('<a>').text(legend.text()).attr('href', '#'); + tab = $('<span>').attr({'id': 'tab'+idx, 'class': 'tablink'}) + .click(function() { rcube_show_tab(id, idx); return false }) + + // remove legend + legend.remove(); + // style fieldset + elm.addClass('tabbed'); + // style selected tab + if (idx == current) + tab.addClass('tablink-selected'); + + // add the tab to container + tab.append(a).appendTo(tabs); + }); +} + +function rcube_show_tab(id, index) +{ + var fs = $('#'+id).children('fieldset'); + + fs.each(function(idx) { + // Show/hide fieldset (tab content) + $(this)[index==idx ? 'show' : 'hide'](); + // Select/unselect tab + $('#tab'+idx).toggleClass('tablink-selected', idx==index); + }); } /** @@ -29,6 +81,7 @@ { this.popups = { markmenu: {id:'markmessagemenu'}, + replyallmenu: {id:'replyallmenu'}, searchmenu: {id:'searchmenu', editable:1}, messagemenu: {id:'messagemenu'}, listmenu: {id:'listmenu', editable:1}, @@ -36,7 +89,9 @@ groupmenu: {id:'groupoptionsmenu', above:1}, mailboxmenu: {id:'mailboxoptionsmenu', above:1}, composemenu: {id:'composeoptionsmenu', editable:1}, - uploadmenu: {id:'attachment-form', editable:1, above:1} + // toggle: #1486823, #1486930 + uploadmenu: {id:'attachment-form', editable:1, above:1, toggle:!bw.ie&&!bw.linux }, + uploadform: {id:'upload-form', editable:1, toggle:!bw.ie&&!bw.linux } }; var obj; @@ -68,11 +123,19 @@ if (typeof show == 'undefined') show = obj.is(':visible') ? false : true; + else if (this.popups[popup].toggle && show && this.popups[popup].obj.is(':visible') ) + show = false; if (show && ref) { - var pos = $(ref).offset(); - if (!above && pos.top + ref.offsetHeight + obj.height() > window.innerHeight) + var parent = $(ref).parent(), + win = $(window), + pos = parent.hasClass('dropbutton') ? parent.offset() : $(ref).offset(); + + if (!above && pos.top + ref.offsetHeight + obj.height() > win.height()) above = true; + if (pos.left + obj.width() > win.width()) + pos.left = win.width() - obj.width() - 30; + obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) }); } @@ -215,6 +278,7 @@ for (i in this.popups) { if (this.popups[i].obj.is(':visible') && target != rcube_find_object(i+'link') + && !this.popups[i].toggle && (!this.popups[i].editable || !this.target_overlaps(target, this.popups[i].id)) && (!this.popups[i].sticky || !rcube_mouse_is_over(evt, rcube_find_object(this.popups[i].id))) ) { @@ -234,7 +298,7 @@ return false; }, -body_keypress: function(evt, p) +body_keydown: function(evt, p) { if (rcube_event.get_keycode(evt) == 27) { for (var k in this.popups) { @@ -264,7 +328,6 @@ if (uid = rcmail.message_list.get_single_selection()) rcmail.show_message(uid, false, true); - rcmail.http_post('save-pref', '_name=preview_pane&_value=1'); } else { prev_frm.hide(); @@ -283,23 +346,22 @@ rcmail.env.contentframe = null; rcmail.show_contentframe(false); - rcmail.http_post('save-pref', '_name=preview_pane&_value=0'); } + rcmail.http_post('save-pref', '_name=preview_pane&_value='+(elem.checked?1:0)); }, /* Message composing */ init_compose_form: function() { - var cc_field = document.getElementById('_cc'), - bcc_field = document.getElementById('_bcc'), + var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'], div = document.getElementById('compose-div'), headers_div = document.getElementById('compose-headers-div'); - if (cc_field && cc_field.value != '') - rcmail_ui.show_header_form('cc'); - - if (bcc_field && bcc_field.value != '') - rcmail_ui.show_header_form('bcc'); + // Show input elements with non-empty value + for (f=0; f<fields.length; f++) { + if ((field = $('#_'+fields[f])) && field.length && field.val() != '') + rcmail_ui.show_header_form(fields[f]); + } // prevent from form data loss when pressing ESC key in IE if (bw.ie) { @@ -423,10 +485,10 @@ { rcmail_ui = new rcube_mail_ui(); rcube_event.add_listener({ object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); - rcube_event.add_listener({ object:rcmail_ui, method:'body_keypress', event:'keypress' }); + rcube_event.add_listener({ object:rcmail_ui, method:'body_keydown', event:'keydown' }); $('iframe').load(iframe_events) - .contents().mouseup(function(e){parent.rcmail_ui.body_mouseup(e)}); + .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)}); if (rcmail.env.task == 'mail') { rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui); @@ -438,6 +500,9 @@ if (rcmail.env.action == 'compose') rcmail_ui.init_compose_form(); } + else if (rcmail.env.task == 'addressbook') { + rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); }); + } } // Events handling in iframes (eg. preview pane) @@ -445,6 +510,6 @@ { // this==iframe var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null; - parent.rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); + rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); } -- Gitblit v1.9.1