From 808fb26b619bb858cd77010a7d42648e21f07f81 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Mon, 21 Jul 2008 07:14:24 -0400 Subject: [PATCH] #1485173: fixed empty body check --- program/js/app.js | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 105 insertions(+), 15 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index abd5ca7..9682ada 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -136,7 +136,7 @@ this.message_list.addEventListener('dragend', function(o){ p.drag_active = false; }); this.message_list.init(); - this.enable_command('toggle_status', true); + this.enable_command('toggle_status', 'toggle_flag', true); if (this.gui_objects.mailcontframe) { @@ -203,7 +203,10 @@ if (this.env.messagecount) this.enable_command('select-all', 'select-none', 'expunge', true); - if (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox)) + if (this.env.messagecount + && (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox + || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter)) + || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter)))) this.enable_command('purge', true); this.set_page_buttons(); @@ -370,6 +373,7 @@ row.deleted = this.env.messages[uid].deleted ? true : false; row.unread = this.env.messages[uid].unread ? true : false; row.replied = this.env.messages[uid].replied ? true : false; + row.flagged = this.env.messages[uid].flagged ? true : false; } // set eventhandler to message icon @@ -379,6 +383,24 @@ row.icon.id = 'msgicn_'+row.uid; row.icon._row = row.obj; row.icon.onmousedown = function(e) { p.command('toggle_status', this); }; + } + + // global variable 'flagged_col' may be not defined yet + if (!this.env.flagged_col && this.env.coltypes) + { + var found; + if((found = find_in_array('flag', this.env.coltypes)) >= 0) + this.set_env('flagged_col', found+1); + } + + // set eventhandler to flag icon, if icon found + if (this.env.flagged_col && (row.flagged_icon = row.obj.cells[this.env.flagged_col].childNodes[0]) + && row.flagged_icon.nodeName=='IMG') + { + var p = this; + row.flagged_icon.id = 'flaggedicn_'+row.uid; + row.flagged_icon._row = row.obj; + row.flagged_icon.onmousedown = function(e) { p.command('toggle_flag', this); }; } }; @@ -705,6 +727,24 @@ this.mark_message(flag, uid); break; + case 'toggle_flag': + if (props && !props._row) + break; + + var uid; + var flag = 'flagged'; + + if (props._row.uid) + { + uid = props._row.uid; + this.message_list.dont_select = true; + // toggle flagged/unflagged + if (this.message_list.rows[uid].flagged) + flag = 'unflagged'; + } + this.mark_message(flag, uid); + break; + case 'always-load': if (this.env.uid && this.env.sender) { this.add_contact(urlencode(this.env.sender)); @@ -1523,7 +1563,7 @@ { for (var n=0; n<selection.length; n++) { - a_uids[a_uids.length] = selection[n]; + a_uids[a_uids.length] = selection[n]; } } @@ -1535,8 +1575,10 @@ id = a_uids[n]; if ((flag=='read' && this.message_list.rows[id].unread) || (flag=='unread' && !this.message_list.rows[id].unread) - || (flag=='delete' && !this.message_list.rows[id].deleted) - || (flag=='undelete' && this.message_list.rows[id].deleted)) + || (flag=='delete' && !this.message_list.rows[id].deleted) + || (flag=='undelete' && this.message_list.rows[id].deleted) + || (flag=='flagged' && !this.message_list.rows[id].flagged) + || (flag=='unflagged' && this.message_list.rows[id].flagged)) { r_uids[r_uids.length] = id; } @@ -1555,6 +1597,10 @@ case 'delete': case 'undelete': this.toggle_delete_status(r_uids); + break; + case 'flagged': + case 'unflagged': + this.toggle_flagged_status(flag, a_uids); break; } }; @@ -1622,6 +1668,32 @@ } } + + // set image to flagged or unflagged + this.toggle_flagged_status = function(flag, a_uids) + { + // mark all message rows as flagged/unflagged + var icn_src; + var rows = this.message_list.rows; + for (var i=0; i<a_uids.length; i++) + { + uid = a_uids[i]; + if (rows[uid]) + { + rows[uid].flagged = (flag=='flagged' ? true : false); + + if (rows[uid].flagged && this.env.flaggedicon) + icn_src = this.env.flaggedicon; + else if (this.env.unflaggedicon) + icn_src = this.env.unflaggedicon; + + if (rows[uid].flagged_icon && icn_src) + rows[uid].flagged_icon.src = icn_src; + } + } + + this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag='+flag); + }; // mark all message rows as deleted/undeleted this.toggle_delete_status = function(a_uids) @@ -1817,9 +1889,9 @@ } // check for empty body - if ((input_message.value == '' && - (!window.tinyMCE || tinyMCE.get('compose-body').getContent() == '')) && - !confirm(this.get_label('nobodywarning'))) + if ((((!window.tinyMCE || !tinyMCE.get('compose-body')) && input_message.value == '') + || (window.tinyMCE && tinyMCE.get('compose-body') && tinyMCE.get('compose-body').getContent() == '')) + && !confirm(this.get_label('nobodywarning'))) { input_message.focus(); return false; @@ -3240,9 +3312,12 @@ cell.id = 'rcmHead'+col; } - - if (col == 'subject' && this.message_list) + else if (col == 'subject' && this.message_list) this.message_list.subject_col = n+1; + else if (col == 'flag' && this.env.unflaggedicon) + { + cell.innerHTML = '<img src="'+this.env.unflaggedicon+'" alt="" />'; + } } }; @@ -3258,7 +3333,8 @@ this.env.messages[uid] = {deleted:flags.deleted?1:0, replied:flags.replied?1:0, - unread:flags.unread?1:0}; + unread:flags.unread?1:0, + flagged:flags.flagged?1:0}; var row = document.createElement('TR'); row.id = 'rcmrow'+uid; @@ -3273,7 +3349,7 @@ var col = document.createElement('TD'); col.className = 'icon'; - col.innerHTML = icon ? '<img src="'+icon+'" alt="" border="0" />' : ''; + col.innerHTML = icon ? '<img src="'+icon+'" alt="" />' : ''; row.appendChild(col); // add each submitted col @@ -3282,13 +3358,23 @@ var c = this.coltypes[n]; col = document.createElement('TD'); col.className = String(c).toLowerCase(); - col.innerHTML = cols[c]; + + if (c=='flag') + { + if (flags.flagged && this.env.flaggedicon) + col.innerHTML = '<img src="'+this.env.flaggedicon+'" alt="" />'; + else if(this.env.unflaggedicon) + col.innerHTML = '<img src="'+this.env.unflaggedicon+'" alt="" />'; + } + else + col.innerHTML = cols[c]; + row.appendChild(col); } col = document.createElement('TD'); col.className = 'icon'; - col.innerHTML = attachment && this.env.attachmenticon ? '<img src="'+this.env.attachmenticon+'" alt="" border="0" />' : ''; + col.innerHTML = attachment && this.env.attachmenticon ? '<img src="'+this.env.attachmenticon+'" alt="" />' : ''; row.appendChild(col); this.message_list.insert_row(row, attop); @@ -3559,7 +3645,11 @@ case 'check-recent': case 'getunread': this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); - this.enable_command('purge', (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))); + var mailboxtest = (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox + || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter)) + || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter))) ? true : false; + + this.enable_command('purge', (this.env.messagecount && mailboxtest)); break; -- Gitblit v1.9.1