From 45fa64c3c9801f9719638f7fa2f4f11cc6505647 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 18 Nov 2011 07:51:28 -0500 Subject: [PATCH] - Added About tab in Settings --- program/js/app.js | 79 ++++++++++++++++++--------------------- 1 files changed, 36 insertions(+), 43 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index caae45d..37a2925 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -20,7 +20,7 @@ function rcube_webmail() { - this.env = {}; + this.env = { recipients_separator:',', recipients_delimiter:', ' }; this.labels = {}; this.buttons = {}; this.buttons_sel = {}; @@ -155,7 +155,7 @@ } // enable general commands - this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', 'compose', 'undo', true); + this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', 'compose', 'undo', 'about', true); if (this.env.permaurl) this.enable_command('permaurl', true); @@ -207,7 +207,7 @@ 'moveto', 'copy', 'delete', 'open', 'mark', 'edit', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers', 'forward-attachment']; - if (this.env.action=='show' || this.env.action=='preview') { + if (this.env.action == 'show' || this.env.action == 'preview') { this.enable_command(this.env.message_commands, this.env.uid); this.enable_command('reply-list', this.env.list_post); @@ -460,7 +460,7 @@ } // check input before leaving compose step - if (this.task=='mail' && this.env.action=='compose' && $.inArray(command, this.env.compose_commands)<0) { + if (this.task == 'mail' && this.env.action == 'compose' && $.inArray(command, this.env.compose_commands)<0) { if (this.cmp_hash != this.compose_field_hash() && !confirm(this.get_label('notsentwarning'))) return false; } @@ -502,6 +502,10 @@ case 'settings': case 'logout': this.switch_task(command); + break; + + case 'about': + location.href = '?_task=settings&_action=about'; break; case 'permaurl': @@ -815,13 +819,7 @@ if (this.task == 'mail') { url += '&_mbox='+urlencode(this.env.mailbox); - - if (this.env.mailbox == this.env.drafts_mailbox) { - var uid; - if (uid = this.get_single_uid()) - url += '&_draft_uid='+uid; - } - else if (props) + if (props) url += '&_to='+urlencode(props); } // modify url if we're in addressbook @@ -845,7 +843,9 @@ } if (a_cids.length) - this.http_post('mailto', {_cid: a_cids.join(','), _source: this.env.source}, true); + this.http_post('mailto', { _cid: a_cids.join(','), _source: this.env.source}, true); + else if (this.env.group) + this.http_post('mailto', { _gid: this.env.group, _source: this.env.source}, true); break; } @@ -1676,23 +1676,18 @@ flags: flags.extra_flags }); - var c, html, tree = expando = '', + var c, n, col, html, tree = '', expando = '', list = this.message_list, rows = list.rows, - tbody = this.gui_objects.messagelist.tBodies[0], - rowcount = tbody.rows.length, - even = rowcount%2, message = this.env.messages[uid], css_class = 'message' - + (even ? ' even' : ' odd') + (!flags.seen ? ' unread' : '') + (flags.deleted ? ' deleted' : '') + (flags.flagged ? ' flagged' : '') + (flags.unread_children && flags.seen && !this.env.autoexpand_threads ? ' unroot' : '') + (message.selected ? ' selected' : ''), // for performance use DOM instead of jQuery here - row = document.createElement('tr'), - col = document.createElement('td'); + row = document.createElement('tr'); row.id = 'rcmrow'+uid; row.className = css_class; @@ -1719,9 +1714,10 @@ // threads if (this.env.threading) { - // This assumes that div width is hardcoded to 15px, - var width = message.depth * 15; if (message.depth) { + // This assumes that div width is hardcoded to 15px, + tree += '<span id="rcmtab' + uid + '" class="branch" style="width:' + (message.depth * 15) + 'px;"> </span>'; + if ((rows[message.parent_uid] && rows[message.parent_uid].expanded === false) || ((this.env.autoexpand_threads == 0 || this.env.autoexpand_threads == 2) && (!rows[message.parent_uid] || !rows[message.parent_uid].expanded)) @@ -1736,13 +1732,9 @@ if (message.expanded === undefined && (this.env.autoexpand_threads == 1 || (this.env.autoexpand_threads == 2 && message.unread_children))) { message.expanded = true; } - } - if (width) - tree += '<span id="rcmtab' + uid + '" class="branch" style="width:' + width + 'px;"> </span>'; - - if (message.has_children && !message.depth) expando = '<div id="rcmexpando' + uid + '" class="' + (message.expanded ? 'expanded' : 'collapsed') + '"> </div>'; + } } tree += '<span id="msgicn'+uid+'" class="'+css_class+'"> </span>'; @@ -1756,7 +1748,7 @@ } // add each submitted col - for (var n in this.env.coltypes) { + for (n in this.env.coltypes) { c = this.env.coltypes[n]; col = document.createElement('td'); col.className = String(c).toLowerCase(); @@ -2932,6 +2924,8 @@ this.init_address_input_events = function(obj, props) { + this.env.recipients_delimiter = this.env.recipients_separator + ' '; + obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e) { return ref.ksearch_keydown(e, this, props); }) .attr('autocomplete', 'off'); }; @@ -3596,13 +3590,13 @@ // insert all members of a group if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].id) { - insert += this.env.contacts[id].name + ', '; + insert += this.env.contacts[id].name + this.env.recipients_delimiter; this.group2expand = $.extend({}, this.env.contacts[id]); this.group2expand.input = this.ksearch_input; this.http_request('mail/group-expand', '_source='+urlencode(this.env.contacts[id].source)+'&_gid='+urlencode(this.env.contacts[id].id), false); } else if (typeof this.env.contacts[id] === 'string') { - insert = this.env.contacts[id] + ', '; + insert = this.env.contacts[id] + this.env.recipients_delimiter; trigger = true; } @@ -3639,7 +3633,7 @@ // get string from current cursor pos to last comma var cpos = this.get_caret_pos(this.ksearch_input), - p = inp_value.lastIndexOf(',', cpos-1), + p = inp_value.lastIndexOf(this.env.recipients_separator, cpos-1), q = inp_value.substring(p+1, cpos), min = this.env.autocomplete_min_length, ac = this.ksearch_data; @@ -3882,7 +3876,7 @@ } } - this.enable_command('compose', list.selection.length > 0); + this.enable_command('compose', this.env.group || list.selection.length > 0); this.enable_command('edit', id && writable); this.enable_command('delete', list.selection.length && writable); @@ -3968,7 +3962,8 @@ { this.contact_list.clear(true); this.show_contentframe(false); - this.enable_command('delete', 'compose', false); + this.enable_command('delete', false); + this.enable_command('compose', this.env.group ? true : false); }; // load contact record @@ -4113,31 +4108,29 @@ // add row to contacts list this.add_contact_row = function(cid, cols, select) { - if (!this.gui_objects.contactslist || !this.gui_objects.contactslist.tBodies[0]) + if (!this.gui_objects.contactslist) return false; - var tbody = this.gui_objects.contactslist.tBodies[0], - rowcount = tbody.rows.length, - even = rowcount%2, + var c, list = this.contact_list, row = document.createElement('tr'); row.id = 'rcmrow'+String(cid).replace(this.identifier_expr, '_'); - row.className = 'contact '+(even ? 'even' : 'odd'); + row.className = 'contact'; - if (this.contact_list.in_selection(cid)) + if (list.in_selection(cid)) row.className += ' selected'; // add each submitted col - for (var c in cols) { + for (c in cols) { col = document.createElement('td'); col.className = String(c).toLowerCase(); col.innerHTML = cols[c]; row.appendChild(col); } - this.contact_list.insert_row(row); + list.insert_row(row); - this.enable_command('export', (this.contact_list.rowcount > 0)); + this.enable_command('export', list.rowcount > 0); }; this.init_contact_form = function() @@ -4392,7 +4385,7 @@ elem.focus(function(){ ref.focus_textfield(this); }) .blur(function(){ ref.blur_textfield(this); }) - .each(function(){ this._placeholder = this.title = ref.env.coltypes[col].label; ref.blur_textfield(this); }); + .each(function(){ this._placeholder = this.title = (ref.env.coltypes[col].label || ''); ref.blur_textfield(this); }); }; this.insert_edit_field = function(col, section, menu) @@ -5749,7 +5742,7 @@ this.plain2html = function(plainText, id) { var lock = this.set_busy(true, 'converting'); - $(document.getElementById(id)).val('<pre>'+plainText+'</pre>'); + $(document.getElementById(id)).val(plainText ? '<pre>'+plainText+'</pre>' : ''); this.set_busy(false, null, lock); }; -- Gitblit v1.9.1