From 5f0724f8adca9b545b89e71287f8276e86881868 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 25 Jul 2008 14:42:56 -0400 Subject: [PATCH] #1485143: fixed empty body validation errors on IE --- program/js/app.js | 146 +++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 129 insertions(+), 17 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 96c9ec3..20c561a 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) { @@ -185,7 +185,7 @@ { if (this.gui_objects.remoteobjectsmsg) this.gui_objects.remoteobjectsmsg.style.display = 'block'; - this.enable_command('load-images', true); + this.enable_command('load-images', 'always-load', true); } if (this.env.action=='compose') @@ -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); }; } }; @@ -704,6 +726,31 @@ 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)); + window.setTimeout(function(){ ref.command('load-images'); }, 300); + break; + } case 'load-images': if (this.env.uid) @@ -1516,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]; } } @@ -1528,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; } @@ -1548,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; } }; @@ -1615,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) @@ -1810,11 +1889,18 @@ } // 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 == '' + && !confirm(this.get_label('nobodywarning'))) { input_message.focus(); + return false; + } + else if (window.tinyMCE && tinyMCE.get('compose-body') + && !tinyMCE.get('compose-body').getContent() + && !confirm(this.get_label('nobodywarning'))) + { + tinyMCE.get('compose-body').focus(); return false; } @@ -2754,7 +2840,7 @@ if (this.name_input.__parent) newname = this.name_input.__parent + this.env.delimiter + newname; - this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.subscriptionrows[this.edit_folder][0])+'&_folder_newname='+urlencode(newname)); + this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.subscriptionrows[this.edit_folder][0])+'&_folder_newname='+urlencode(newname), true); } } // escape @@ -3233,9 +3319,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="" />'; + } } }; @@ -3251,7 +3340,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; @@ -3266,7 +3356,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 @@ -3275,13 +3365,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); @@ -3397,6 +3497,14 @@ tinyMCE.execCommand('mceRemoveControl', true, textAreaId); } }; + + + this.toggle_prefer_html = function(checkbox) + { + var addrbook_show_images; + if (addrbook_show_images = document.getElementById('rcmfd_addrbook_show_images')) + addrbook_show_images.disabled = !checkbox.checked; + } @@ -3544,7 +3652,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