| | |
| | | |
| | | function rcube_init_settings_tabs() |
| | | { |
| | | var tab = '#settingstabdefault'; |
| | | if (window.rcmail && rcmail.env.action) |
| | | tab = '#settingstab' + (rcmail.env.action=='preferences' ? 'default' : (rcmail.env.action.indexOf('identity')>0 ? 'identities' : rcmail.env.action.replace(/\./g, ''))); |
| | | var el, cl, container = $('#tabsbar'), |
| | | last_tab = $('span:last', container), |
| | | tab = '#settingstabdefault', |
| | | action = window.rcmail && rcmail.env.action ? rcmail.env.action : null; |
| | | |
| | | // move About tab to the end |
| | | if (last_tab && last_tab.attr('id') != 'settingstababout' && (el = $('#settingstababout'))) { |
| | | cl = el.clone(true); |
| | | el.remove(); |
| | | last_tab.after(cl); |
| | | } |
| | | |
| | | // get selected tab |
| | | if (action) |
| | | tab = '#settingstab' + (action == 'preferences' ? 'default' : (action.indexOf('identity')>0 ? 'identities' : action.replace(/\./g, ''))); |
| | | |
| | | $(tab).addClass('tablink-selected'); |
| | | $(tab + '> a').removeAttr('onclick').click(function() { return false; }); |
| | | $('a', tab).removeAttr('onclick').click(function() { return false; }); |
| | | } |
| | | |
| | | function rcube_show_advanced(visible) |
| | |
| | | groupmenu: {id:'groupoptionsmenu', above:1}, |
| | | mailboxmenu: {id:'mailboxoptionsmenu', above:1}, |
| | | composemenu: {id:'composeoptionsmenu', editable:1, overlap:1}, |
| | | spellmenu: {id:'spellmenu'}, |
| | | // 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 } |
| | |
| | | rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0); |
| | | }, |
| | | |
| | | spellmenu: function(show) |
| | | { |
| | | var link, li, |
| | | lang = rcmail.spellcheck_lang(), |
| | | menu = this.popups.spellmenu.obj, |
| | | ul = $('ul', menu); |
| | | |
| | | if (!ul.length) { |
| | | ul = $('<ul>'); |
| | | |
| | | for (i in rcmail.env.spell_langs) { |
| | | li = $('<li>'); |
| | | link = $('<a href="#">').text(rcmail.env.spell_langs[i]) |
| | | .addClass('active').data('lang', i) |
| | | .click(function() { |
| | | rcmail.spellcheck_lang_set($(this).data('lang')); |
| | | }); |
| | | |
| | | link.appendTo(li); |
| | | li.appendTo(ul); |
| | | } |
| | | |
| | | ul.appendTo(menu); |
| | | } |
| | | |
| | | // select current language |
| | | $('li', ul).each(function() { |
| | | var el = $('a', this); |
| | | if (el.data('lang') == lang) |
| | | el.addClass('selected'); |
| | | else if (el.hasClass('selected')) |
| | | el.removeClass('selected'); |
| | | }); |
| | | |
| | | this.show_popupmenu('spellmenu', show); |
| | | }, |
| | | |
| | | body_mouseup: function(evt, p) |
| | | { |
| | | var i, target = rcube_event.get_target(evt); |
| | |
| | | w -= 8; // 2 x 3px padding + 2 x 1px border |
| | | h -= 4; |
| | | |
| | | $('#compose-body_tbl').width((w+6)+'px').height(''); |
| | | $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px'); |
| | | $('#compose-body').width(w+'px').height(h+'px'); |
| | | |
| | | if (window.tinyMCE && tinyMCE.get('compose-body')) { |
| | | $('#compose-body_tbl').width((w+6)+'px').height(''); |
| | | $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px'); |
| | | } |
| | | else { |
| | | $('#googie_edit_layer').height(h+'px'); |
| | | } |
| | | $('#googie_edit_layer').height(h+'px'); |
| | | }, |
| | | |
| | | resize_compose_body_ev: function() |
| | |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * Scroller |
| | | */ |
| | | |
| | | var rcmail_ui; |
| | | |
| | | function rcube_init_mail_ui() |
| | | function rcmail_scroller(list, top, bottom) |
| | | { |
| | | 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_keydown', event:'keydown' }); |
| | | var ref = this; |
| | | |
| | | $('iframe').load(iframe_events) |
| | | .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)}); |
| | | this.list = $(list); |
| | | this.top = $(top); |
| | | this.bottom = $(bottom); |
| | | this.step_size = 6; |
| | | this.step_time = 20; |
| | | this.delay = 500; |
| | | |
| | | if (rcmail.env.task == 'mail') { |
| | | rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui); |
| | | rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui); |
| | | rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui); |
| | | rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui); |
| | | rcmail.gui_object('message_dragmenu', 'dragmessagemenu'); |
| | | this.top |
| | | .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('down'); }, ref.delay); }) |
| | | .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); }); |
| | | |
| | | if (rcmail.gui_objects.mailboxlist) { |
| | | rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist); |
| | | } |
| | | this.bottom |
| | | .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('up'); }, ref.delay); }) |
| | | .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); }); |
| | | |
| | | 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); }); |
| | | } |
| | | } |
| | | this.scroll = function(dir) |
| | | { |
| | | var ref = this, size = this.step_size; |
| | | |
| | | if (!rcmail.drag_active) |
| | | return; |
| | | |
| | | if (dir == 'down') |
| | | size *= -1; |
| | | |
| | | this.list.get(0).scrollTop += size; |
| | | this.ts = window.setTimeout(function() { ref.scroll(dir); }, this.step_time); |
| | | }; |
| | | }; |
| | | |
| | | |
| | | // Events handling in iframes (eg. preview pane) |
| | | function iframe_events() |
| | |
| | | // this==iframe |
| | | var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null; |
| | | rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); |
| | | } |
| | | }; |
| | | |
| | | // Abbreviate mailbox names to fit width of the container |
| | | function rcube_render_mailboxlist() |
| | |
| | | elem.attr('title', text); |
| | | elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev; |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | // inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5 |
| | | function fit_string_to_size(str, elem, len) |
| | |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | }; |
| | | |
| | | function update_quota(data) |
| | | { |
| | | percent_indicator(rcmail.gui_objects.quotadisplay, data); |
| | | }; |
| | | |
| | | // percent (quota) indicator |
| | | function percent_indicator(obj, data) |
| | | { |
| | | if (!data || !obj) |
| | | return false; |
| | | |
| | | var limit_high = 80, |
| | | limit_mid = 55, |
| | | width = data.width ? data.width : rcmail.env.indicator_width ? rcmail.env.indicator_width : 100, |
| | | height = data.height ? data.height : rcmail.env.indicator_height ? rcmail.env.indicator_height : 14, |
| | | quota = data.percent ? Math.abs(parseInt(data.percent)) : 0, |
| | | quota_width = parseInt(quota / 100 * width), |
| | | pos = $(obj).position(); |
| | | |
| | | // workarounds for Opera and Webkit bugs |
| | | pos.top = Math.max(0, pos.top); |
| | | pos.left = Math.max(0, pos.left); |
| | | |
| | | rcmail.env.indicator_width = width; |
| | | rcmail.env.indicator_height = height; |
| | | |
| | | // overlimit |
| | | if (quota_width > width) { |
| | | quota_width = width; |
| | | quota = 100; |
| | | } |
| | | |
| | | if (data.title) |
| | | data.title = rcmail.get_label('quota') + ': ' + data.title; |
| | | |
| | | // main div |
| | | var main = $('<div>'); |
| | | main.css({position: 'absolute', top: pos.top, left: pos.left, |
| | | width: width + 'px', height: height + 'px', zIndex: 100, lineHeight: height + 'px'}) |
| | | .attr('title', data.title).addClass('quota_text').html(quota + '%'); |
| | | // used bar |
| | | var bar1 = $('<div>'); |
| | | bar1.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1, |
| | | width: quota_width + 'px', height: height + 'px', zIndex: 99}); |
| | | // background |
| | | var bar2 = $('<div>'); |
| | | bar2.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1, |
| | | width: width + 'px', height: height + 'px', zIndex: 98}) |
| | | .addClass('quota_bg'); |
| | | |
| | | if (quota >= limit_high) { |
| | | main.addClass(' quota_text_high'); |
| | | bar1.addClass('quota_high'); |
| | | } |
| | | else if(quota >= limit_mid) { |
| | | main.addClass(' quota_text_mid'); |
| | | bar1.addClass('quota_mid'); |
| | | } |
| | | else { |
| | | main.addClass(' quota_text_low'); |
| | | bar1.addClass('quota_low'); |
| | | } |
| | | |
| | | // replace quota image |
| | | $(obj).html('').append(bar1).append(bar2).append(main); |
| | | // update #quotaimg title |
| | | $('#quotaimg').attr('title', data.title); |
| | | }; |
| | | |
| | | // Optional parameters used by TinyMCE |
| | | var rcmail_editor_settings = { |
| | | skin : "default", // "default", "o2k7" |
| | | skin_variant : "" // "", "silver", "black" |
| | | }; |
| | | |
| | | var rcmail_ui; |
| | | |
| | | function rcube_init_mail_ui() |
| | | { |
| | | 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_keydown', event:'keydown' }); |
| | | |
| | | if (rcmail.env.quota_content) |
| | | update_quota(rcmail.env.quota_content); |
| | | rcmail.addEventListener('setquota', update_quota); |
| | | |
| | | $('iframe').load(iframe_events) |
| | | .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)}); |
| | | |
| | | if (rcmail.env.task == 'mail') { |
| | | rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui); |
| | | rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui); |
| | | rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui); |
| | | rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui); |
| | | rcmail.gui_object('message_dragmenu', 'dragmessagemenu'); |
| | | |
| | | if (rcmail.gui_objects.mailboxlist) { |
| | | rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); |
| | | rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist); |
| | | |
| | | new rcmail_scroller('#mailboxlist-content', '#mailboxlist-title', '#mailboxlist-footer'); |
| | | } |
| | | |
| | | 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); }); |
| | | |
| | | if (rcmail.gui_objects.folderlist) |
| | | new rcmail_scroller('#directorylist-content', '#directorylist-title', '#directorylist-footer'); |
| | | } |
| | | else if (rcmail.env.task == 'settings') { |
| | | if (rcmail.gui_objects.subscriptionlist) |
| | | new rcmail_scroller('#folderlist-content', '#folderlist-title', '#folderlist-footer'); |
| | | } |
| | | } |