From: Michael M Slusarz Date: Tue, 10 Feb 2009 01:43:20 +0000 (-0700) Subject: Update mailbox javascript. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=c26d7b0543204d97fc8f1febb2561ec6102b7cba;p=horde.git Update mailbox javascript. --- diff --git a/imp/js/mailbox.js b/imp/js/mailbox.js index c7fecec1a..534569543 100644 --- a/imp/js/mailbox.js +++ b/imp/js/mailbox.js @@ -1 +1 @@ -var keyId,startrange=null;function anySelected(){return $H(messagelist).keys().detect(function(a){return $("check"+a).checked})}function selectRow(c,a){var b=$(c.replace(/check/,"row"));if(a){b.addClassName("selectedRow")}else{b.removeClassName("selectedRow");b.removeClassName("selectedRow-over")}$(c).checked=a}function imp_confirm(a,b){RedBox.overlay=true;RedBox.showHtml('

'+b+'

')}function messages_submit(a){if(!anySelected()){alert(IMP.text.mailbox_submit);return}if(a=="delete_messages"){if(IMP.conf.pop3&&!confirm(IMP.text.mailbox_delete)){return}}else{if(a=="spam_report"){if(!confirm(IMP.text.spam_report)){return}}else{if(a=="notspam_report"){if(!confirm(IMP.text.notspam_report)){return}}}}$("actionID").setValue(a);$("messages").submit()}function makeSelection(b){var a="";switch(parseInt(b)){case-1:if($("checkAll").checked){a="!"}a+=IMP.conf.IMP_ALL;break;case 1:a=$F("filter1");break;default:a=$F("filter2")}if(a.empty()){return}else{if(a.startsWith("!")){selectFlagged(parseInt(a.substring(1)),false)}else{if(a.startsWith("+")){selectFlagged(a.substring(0,1),null)}else{selectFlagged(parseInt(a),true)}}}switch(parseInt(b)){case-1:break;case 1:$("select1").reset();break;default:$("select2").reset()}}function selectRange(c){Event.extend(c);var f=c.element().id,d=$(f);if(!d){return}var b=d.checked;if(startrange!==null&&c.shiftKey){var e=[$(startrange).id,d.id];var a=0;$H(messagelist).keys().detect(function(g){g="check"+g;if(e.indexOf(g)!=-1){++a}if(a){selectRow(g,b);if(a==2){return true}}})}else{selectRow(f,b)}startrange=f}function updateFolders(d){var a=$("targetMailbox2");if(a){var b=$("targetMailbox1");if((d==1&&$F(b)!="")||(d==2&&$F(a)!="")){var c=(d==1)?b.selectedIndex:a.selectedIndex;b.selectedIndex=a.selectedIndex=c}}}function transfer(d,b){if(anySelected()){var a=$("targetMbox");a.setValue((b==1)?$F("targetMailbox1"):$F("targetMailbox2"));if($F(a)=="*new*"){var c=prompt(IMP.text.newfolder,"");if(c!=null&&c!=""){$("newMbox").setValue(1);a.setValue(c);messages_submit(d)}}else{if($F(a)==""){alert(IMP.text.target_mbox)}else{messages_submit(d)}}}else{alert(IMP.text.mailbox_selectone)}}function selectFlagged(a,b){$H(messagelist).keys().each(function(f){var c,d=$("check"+f);if(a=="+"){c=!d.checked}else{if(a&messagelist[f]){c=b}else{c=!b}}selectRow(d.id,c)})}function flagMessages(b){var a=$("flag1"),c=$("flag2");if((b==1&&$F(a)!="")||(b==2&&$F(c)!="")){if(anySelected()){document.messages.flag.value=(b==1)?$F(a):$F(c);messages_submit("flag_messages")}else{if(b==1){a.selectedIndex=0}else{c.selectedIndex=0}alert(IMP.text.mailbox_selectone)}}}function getMessage(e,d){if(!d){return e}var a=$H(messagelist).keys();var c=a.indexOf(e);if(c!=-1){var b=c+d;if(b>=0&&b0)?$H(messagelist).keys().first():$H(messagelist).keys().last();if(Event.KEY_UP||Event.KEY_DOWN){f=$("subject"+keyId)}}}}else{if(j==32&&b.id.indexOf("subject")==0&&b.tagName=="A"){startrange="check"+keyId;selectRow(startrange,!$(startrange).checked)}else{if(!i.shiftKey){var h;if(j==Event.KEY_LEFT&&$("prev")){h=$("prev").href}else{if(j==Event.KEY_RIGHT&&$("next")){h=$("next").href}}if(h){document.location.href=h}return}else{return}}}if(f){f.focus();var k=$("row"+keyId);if(i.altKey){var a=f.id.replace(/subject/,"check");selectRow(a,!$(a).checked)}else{if(c!=f.id&&k.className.indexOf("-over")==-1){k.className+="-over"}}if(c){k=$("row"+c);if(c!=f.id){k.className=k.className.replace(/-over/,"")}}}i.stop()}if(IMP.conf.hasDOM){document.observe("dom:loaded",function(){document.observe("keydown",onKeyDownHandler)})}; \ No newline at end of file +var ImpMessage={keyId:null,startrange:null,anySelected:function(){return $H(this.messagelist).keys().detect(function(a){return $("check"+a).checked})},selectRow:function(c,a){var b=$(c.replace(/check/,"row"));if(a){b.addClassName("selectedRow")}else{b.removeClassName("selectedRow").removeClassName("selectedRow-over")}$(c).checked=a},confirmDialog:function(a,b){RedBox.overlay=true;RedBox.showHtml('

'+b+'

')},submit:function(a){if(!this.anySelected()){alert(IMP.text.mailbox_submit);return}switch(a){case"delete_messages":if(IMP.conf.pop3&&!confirm(IMP.text.mailbox_delete)){return}break;case"spam_report":if(!confirm(IMP.text.spam_report)){return}break;case"nostpam_report":if(!confirm(IMP.text.notspam_report)){return}break}$("actionID").setValue(a);$("messages").submit()},makeSelection:function(b){var a="";switch(parseInt(b)){case-1:if($("checkAll").checked){a="!"}a+=IMP.conf.IMP_ALL;break;case 1:a=$F("filter1");break;default:a=$F("filter2")}if(a.empty()){return}else{if(a.startsWith("!")){this.selectFlagged(parseInt(a.substring(1)),false)}else{if(a.startsWith("+")){this.selectFlagged(a.substring(0,1),null)}else{this.selectFlagged(parseInt(a),true)}}}switch(parseInt(b)){case 1:$("select1").reset();break;default:$("select2").reset()}},selectRange:function(f){var g=f.element().readAttribute("id"),c=$(g),b=0,a,d;if(!c){return}a=c.checked;if(this.startrange!==null&&f.shiftKey){d=[$(this.startrange).readAttribute("id"),c.readAttribute("id")];$H(this.messagelist).keys().detect(function(e){e="check"+e;if(d.indexOf(e)!=-1){++b}if(b){this.selectRow(e,a);if(b==2){return true}}},this)}else{this.selectRow(g,a)}this.startrange=g},updateFolders:function(c){var b=$("targetMailbox1"),a=$("targetMailbox2");if(a){if((c==1&&$F(b)!="")||(c==2&&$F(a)!="")){b.selectedIndex=a.selectedIndex=(c==1)?b.selectedIndex:a.selectedIndex}}},transfer:function(d,b){var c,a;if(this.anySelected()){a=$("targetMbox");a.setValue((b==1)?$F("targetMailbox1"):$F("targetMailbox2"));if($F(a)=="*new*"){c=prompt(IMP.text.newfolder,"");if(c!=null&&c!=""){$("newMbox").setValue(1);a.setValue(c);this.submit(d)}}else{if($F(a)==""){alert(IMP.text.target_mbox)}else{this.submit(d)}}}else{alert(IMP.text.mailbox_selectone)}},selectFlagged:function(a,b){$H(this.messagelist).keys().each(function(f){var c,d=$("check"+f);if(a=="+"){c=!d.checked}else{if(a&this.messagelist[f]){c=b}else{c=!b}}this.selectRow(d.id,c)},this)},flagMessages:function(b){var a=$("flag1"),c=$("flag2");if((b==1&&$F(a)!="")||(b==2&&$F(c)!="")){if(this.anySelected()){document.messages.flag.value=(b==1)?$F(a):$F(c);this.submit("flag_messages")}else{if(b==1){a.selectedIndex=0}else{c.selectedIndex=0}alert(IMP.text.mailbox_selectone)}}},getMessage:function(e,d){if(!d){return e}var a=$H(this.messagelist).keys(),c=a.indexOf(e),b=c+d;if(c!=-1){if(b>=0&&b0)?$H(this.messagelist).keys().first():$H(this.messagelist).keys().last();if(Event.KEY_UP||Event.KEY_DOWN){g=$("subject"+this.keyId)}}}}else{if(j==32&&b.id.indexOf("subject")==0&&b.tagName=="A"){this.startrange="check"+this.keyId;this.selectRow(this.startrange,!$(this.startrange).checked)}else{if(!i.shiftKey){if(j==Event.KEY_LEFT&&$("prev")){h=$("prev").href}else{if(j==Event.KEY_RIGHT&&$("next")){h=$("next").href}}if(h){document.location.href=h}return}else{return}}}if(g){g.focus();k=$("row"+this.keyId);if(i.altKey){a=g.id.replace(/subject/,"check");this.selectRow(a,!$(a).checked)}else{if(c!=g.id&&k.className.indexOf("-over")==-1){k.className+="-over"}}if(c){k=$("row"+c);if(c!=g.id){k.className=k.className.replace(/-over/,"")}}}i.stop()},submitHandler:function(a){if(a.element().readAttribute("id").startsWith("select")){a.stop()}}};document.observe("change",ImpMessage.changeHandler.bindAsEventListener(ImpMessage));document.observe("click",ImpMessage.clickHandler.bindAsEventListener(ImpMessage));document.observe("keydown",ImpMessage.keyDownHandler.bindAsEventListener(ImpMessage));document.observe("submit",ImpMessage.submitHandler.bindAsEventListener(ImpMessage)); \ No newline at end of file diff --git a/imp/js/src/mailbox.js b/imp/js/src/mailbox.js index f53cac006..cbb6105c7 100644 --- a/imp/js/src/mailbox.js +++ b/imp/js/src/mailbox.js @@ -1,317 +1,409 @@ /** - * Provides the javascript for the mailbox.php script + * Provides the javascript for the mailbox.php script (standard view). * * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. */ -var keyId, - startrange = null; - -function anySelected() -{ - return $H(messagelist).keys().detect(function(e) { - return $('check' + e).checked; - }); -} - -function selectRow(id, select) -{ - var rid = $(id.replace(/check/, 'row')); - if (select) { - rid.addClassName('selectedRow'); - } else { - // Make sure to remove both regular and -over versions. - rid.removeClassName('selectedRow'); - rid.removeClassName('selectedRow-over'); - } - $(id).checked = select; -} - -function imp_confirm(url, msg) -{ - RedBox.overlay = true; - RedBox.showHtml('

' + msg + '

' + - '
'); -} - -function messages_submit(actID) -{ - if (!anySelected()) { - alert(IMP.text.mailbox_submit); - return; - } +var ImpMessage = { + // The following variables are defined in mailbox.php: + // messagelist, sortlimit + keyId: null, + startrange: null, - if (actID == 'delete_messages') { - if (IMP.conf.pop3 && !confirm(IMP.text.mailbox_delete)) { - return; + anySelected: function() + { + return $H(this.messagelist).keys().detect(function(e) { + return $('check' + e).checked; + }); + }, + + selectRow: function(id, select) + { + var rid = $(id.replace(/check/, 'row')); + + if (select) { + rid.addClassName('selectedRow'); + } else { + // Make sure to remove both regular and -over versions. + rid.removeClassName('selectedRow').removeClassName('selectedRow-over'); } - } else if (actID == 'spam_report') { - if (!confirm(IMP.text.spam_report)) { + + $(id).checked = select; + }, + + confirmDialog: function(url, msg) + { + RedBox.overlay = true; + RedBox.showHtml('

' + msg + '

' + + '
'); + }, + + submit: function(actID) + { + if (!this.anySelected()) { + alert(IMP.text.mailbox_submit); return; } - } else if (actID == 'notspam_report') { - if (!confirm(IMP.text.notspam_report)) { + + switch (actID) { + case 'delete_messages': + if (IMP.conf.pop3 && !confirm(IMP.text.mailbox_delete)) { + return; + } + break; + + case 'spam_report': + if (!confirm(IMP.text.spam_report)) { + return; + } + break; + + case 'nostpam_report': + if (!confirm(IMP.text.notspam_report)) { + return; + } + break; + } + + $('actionID').setValue(actID); + $('messages').submit(); + }, + + makeSelection: function(form) + { + var flag = ''; + + switch (parseInt(form)) { + case -1: + if ($('checkAll').checked) { + flag = '!'; + } + flag += IMP.conf.IMP_ALL; + break; + + case 1: + flag = $F('filter1'); + break; + + default: + flag = $F('filter2'); + } + + // Fixes Bug #6893 + if (flag.empty()) { return; + } else if (flag.startsWith('!')) { + this.selectFlagged(parseInt(flag.substring(1)), false); + } else if (flag.startsWith('+')) { + this.selectFlagged(flag.substring(0, 1), null); + } else { + this.selectFlagged(parseInt(flag), true); } - } - $('actionID').setValue(actID); - $('messages').submit(); -} - -function makeSelection(form) -{ - var flag = ''; - - switch (parseInt(form)) { - case -1: - if ($('checkAll').checked) { - flag = '!'; + + // Reset the form. + switch (parseInt(form)) { + case 1: + $('select1').reset(); + break; + + default: + $('select2').reset(); } - flag += IMP.conf.IMP_ALL; - break; + }, - case 1: - flag = $F('filter1'); - break; + selectRange: function(e) + { + var id = e.element().readAttribute('id'), + checkbox = $(id), + count = 0, + checked, elts; - default: - flag = $F('filter2'); - } + if (!checkbox) { + return; + } - // Fixes Bug #6893 - if (flag.empty()) { - return; - } else if (flag.startsWith('!')) { - selectFlagged(parseInt(flag.substring(1)), false); - } else if (flag.startsWith('+')) { - selectFlagged(flag.substring(0, 1), null); - } else { - selectFlagged(parseInt(flag), true); - } + checked = checkbox.checked; + + if (this.startrange !== null && e.shiftKey) { + elts = [ $(this.startrange).readAttribute('id'), checkbox.readAttribute('id') ]; + $H(this.messagelist).keys().detect(function(r) { + r = 'check' + r; + if (elts.indexOf(r) != -1) { + ++count; + } + if (count) { + this.selectRow(r, checked); + if (count == 2) { + return true; + } + } + }, this); + } else { + this.selectRow(id, checked); + } - // Reset the form. - switch (parseInt(form)) { - case -1: - break; + this.startrange = id; + }, - case 1: - $('select1').reset(); - break; + updateFolders: function(form) + { + var tm1 = $('targetMailbox1'), + tm2 = $('targetMailbox2'); - default: - $('select2').reset(); - } -} - -function selectRange(event) -{ - Event.extend(event); - var id = event.element().id, checkbox = $(id); - if (!checkbox) { - return; - } - var checked = checkbox.checked; - - if (startrange !== null && event.shiftKey) { - var elts = [ $(startrange).id, checkbox.id ]; - var count = 0; - $H(messagelist).keys().detect(function(r) { - r = 'check' + r; - if (elts.indexOf(r) != -1) { - ++count; + if (tm2) { + if ((form == 1 && $F(tm1) != "") || + (form == 2 && $F(tm2) != "")) { + tm1.selectedIndex = tm2.selectedIndex = (form == 1) + ? tm1.selectedIndex + : tm2.selectedIndex; } - if (count) { - selectRow(r, checked); - if (count == 2) { - return true; + } + }, + + transfer: function(actID, form) + { + var newFolder, tmbox; + + if (this.anySelected()) { + tmbox = $('targetMbox'); + tmbox.setValue((form == 1) ? $F('targetMailbox1') : $F('targetMailbox2')); + + // Check for a mailbox actually being selected. + if ($F(tmbox) == '*new*') { + newFolder = prompt(IMP.text.newfolder, ''); + if (newFolder != null && newFolder != '') { + $('newMbox').setValue(1); + tmbox.setValue(newFolder); + this.submit(actID); + } + } else { + if ($F(tmbox) == '') { + alert(IMP.text.target_mbox); + } else { + this.submit(actID); } } - }); - } else { - selectRow(id, checked); - } - startrange = id; -} - -function updateFolders(form) -{ - var tm2 = $('targetMailbox2'); - if (tm2) { - var tm1 = $('targetMailbox1'); - if ((form == 1 && $F(tm1) != "") || - (form == 2 && $F(tm2) != "")) { - var index = (form == 1) ? tm1.selectedIndex : tm2.selectedIndex; - tm1.selectedIndex = tm2.selectedIndex = index; + } else { + alert(IMP.text.mailbox_selectone); } - } -} - -function transfer(actID, form) -{ - if (anySelected()) { - var tmbox = $('targetMbox'); - tmbox.setValue((form == 1) ? $F('targetMailbox1') : $F('targetMailbox2')); - - // Check for a mailbox actually being selected. - if ($F(tmbox) == '*new*') { - var newFolder = prompt(IMP.text.newfolder, ''); - if (newFolder != null && newFolder != '') { - $('newMbox').setValue(1); - tmbox.setValue(newFolder); - messages_submit(actID); + }, + + // Put everything reliant on IMAP flags in this section. + selectFlagged: function(flag, val) + { + $H(this.messagelist).keys().each(function(e) { + var check, elt = $('check' + e); + if (flag == '+') { + check = !elt.checked; + } else if (flag & this.messagelist[e]) { + check = val; + } else { + check = !val; } - } else { - if ($F(tmbox) == '') { - alert(IMP.text.target_mbox); + this.selectRow(elt.id, check); + }, this); + }, + + flagMessages: function(form) + { + var f1 = $('flag1'), f2 = $('flag2'); + + if ((form == 1 && $F(f1) != "") || + (form == 2 && $F(f2) != "")) { + if (this.anySelected()) { + // Can't use $() here. See Bug #4736. + document.messages.flag.value = (form == 1) ? $F(f1) : $F(f2); + this.submit('flag_messages'); } else { - messages_submit(actID); + if (form == 1) { + f1.selectedIndex = 0; + } else { + f2.selectedIndex = 0; + } + alert(IMP.text.mailbox_selectone); } } - } else { - alert(IMP.text.mailbox_selectone); - } -} - -// Put everything reliant on IMAP flags in this section. -function selectFlagged(flag, val) -{ - $H(messagelist).keys().each(function(e) { - var check, elt = $('check' + e); - if (flag == '+') { - check = !elt.checked; - } else if (flag & messagelist[e]) { - check = val; - } else { - check = !val; + }, + + getMessage: function(id, offset) + { + if (!offset) { + return id; } - selectRow(elt.id, check); - }); -} - -function flagMessages(form) -{ - var f1 = $('flag1'), f2 = $('flag2'); - if ((form == 1 && $F(f1) != "") || - (form == 2 && $F(f2) != "")) { - if (anySelected()) { - // Can't use $() here. See Bug #4736. - document.messages.flag.value = (form == 1) ? $F(f1) : $F(f2); - messages_submit('flag_messages'); - } else { - if (form == 1) { - f1.selectedIndex = 0; - } else { - f2.selectedIndex = 0; + + var mlist = $H(this.messagelist).keys(), + i = mlist.indexOf(id), + j = i + offset; + + if (i != -1) { + if (j >= 0 && j < mlist.length) { + return mlist[j]; } - alert(IMP.text.mailbox_selectone); } - } -} -function getMessage(id, offset) -{ - if (!offset) { - return id; - } + return ''; + }, + + changeHandler: function(e) + { + var id = e.element().readAttribute('id'); - var mlist = $H(messagelist).keys(); - var i = mlist.indexOf(id); - if (i != -1) { - var j = i + offset; - if (j >= 0 && j < mlist.length) { - return mlist[j]; + if (id.startsWith('filter')) { + this.makeSelection(id.substring(6)); + } else if (id.startsWith('flag')) { + this.makeSelection(id.substring(4)); + } else if (id.startsWith('targetMailbox')) { + this.updateFolders(id.substring(13)); } - } - return ''; -} - -function onKeyDownHandler(e) -{ - var o = e.element(); - var key = e.keyCode; - var next, old; - - if (e.altKey || e.ctrlKey) { - var checkinc, subjinc; - - switch (key) { - case Event.KEY_UP: - checkinc = -1; - subjinc = -1; - break; + }, - case Event.KEY_DOWN: - checkinc = 1; - subjinc = 1; - break; + clickHandler: function(e) + { + var elt = e.element(), + id = elt.readAttribute('id'); - default: + if (elt.match('.msgactions A.widget')) { + if (elt.hasClassName('permdeleteAction')) { + if (confirm(IMP.text.mailbox_delete)) { + this.submit('delete_messages'); + } + } else if (elt.hasClassName('deleteAction')) { + this.submit('delete_messages'); + } else if (elt.hasClassName('undeleteAction')) { + this.submit('undelete_messages'); + } else if (elt.hasClassName('blacklistAction')) { + this.submit('blacklist'); + } else if (elt.hasClassName('whitelistAction')) { + this.submit('whitelist'); + } else if (elt.hasClassName('whitelistAction')) { + this.submit('fwd_digest'); + } else if (elt.hasClassName('spamAction')) { + this.submit('spam_report'); + } else if (elt.hasClassName('notspamAction')) { + this.submit('notspam_report'); + } else if (elt.hasClassName('viewAction')) { + this.submit('view_messages'); + } + + e.stop(); return; } - if (typeof messagelist == 'undefined') { + if (!id) { return; } - if (o.id.indexOf('check') == 0 && o.tagName == 'INPUT') { - old = o.id.substring(5); - keyId = getMessage(old, checkinc); - next = $('subject' + keyId); - } else if (o.id.indexOf('subject') == 0 && o.tagName == 'A') { - old = o.id.substring(7); - keyId = getMessage(old, subjinc); - next = $('subject' + keyId); - } else { - keyId = ((checkinc + subjinc) > 0) ? $H(messagelist).keys().first() : $H(messagelist).keys().last(); - if (Event.KEY_UP || Event.KEY_DOWN) { - next = $('subject' + keyId); + switch (id) { + case 'checkheader': + case 'checkAll': + if (id == 'checkheader') { + $('checkAll').checked = !$('checkAll').checked; } + this.makeSelection(-1); + return; } - } else if (key == 32 && + + if (id.startsWith('check') && elt.hasClassName('checkbox')) { + this.selectRange(e); + } else if (!this.sortlimit && + elt.match('TH') && + elt.up('TABLE.messageList')) { + document.location.href = elt.down('A').href; + } + }, + + keyDownHandler: function(e) + { + var o = e.element(), + key = e.keyCode, + checkinc, loc, next, nextId, old, row, subjinc; + + if (e.altKey || e.ctrlKey) { + switch (key) { + case Event.KEY_UP: + checkinc = -1; + subjinc = -1; + break; + + case Event.KEY_DOWN: + checkinc = 1; + subjinc = 1; + break; + + default: + return; + } + + if (typeof this.messagelist == 'undefined') { + return; + } + + if (o.id.indexOf('check') == 0 && o.tagName == 'INPUT') { + old = o.id.substring(5); + this.keyId = this.getMessage(old, checkinc); + next = $('subject' + this.keyId); + } else if (o.id.indexOf('subject') == 0 && o.tagName == 'A') { + old = o.id.substring(7); + this.keyId = this.getMessage(old, subjinc); + next = $('subject' + this.keyId); + } else { + this.keyId = ((checkinc + subjinc) > 0) ? $H(this.messagelist).keys().first() : $H(this.messagelist).keys().last(); + if (Event.KEY_UP || Event.KEY_DOWN) { + next = $('subject' + this.keyId); + } + } + } else if (key == 32 && o.id.indexOf('subject') == 0 && o.tagName == 'A') { - // Space key - toggle selection of the current message. - startrange = 'check' + keyId; - selectRow(startrange, !$(startrange).checked); - } else if (!e.shiftKey) { - var loc; - if (key == Event.KEY_LEFT && $('prev')) { - loc = $('prev').href; - } else if (key == Event.KEY_RIGHT && $('next')) { - loc = $('next').href; - } + // Space key - toggle selection of the current message. + this.startrange = 'check' + this.keyId; + this.selectRow(this.startrange, !$(this.startrange).checked); + } else if (!e.shiftKey) { + if (key == Event.KEY_LEFT && $('prev')) { + loc = $('prev').href; + } else if (key == Event.KEY_RIGHT && $('next')) { + loc = $('next').href; + } - if (loc) { - document.location.href = loc; + if (loc) { + document.location.href = loc; + } + return; + } else { + return; } - return; - } else { - return; - } - if (next) { - next.focus(); - var row = $('row' + keyId); - if (e.altKey) { - var nextId = next.id.replace(/subject/, 'check'); - selectRow(nextId, !$(nextId).checked); - } else if (old != next.id && row.className.indexOf('-over') == -1) { - row.className += '-over'; - } - if (old) { - row = $('row' + old); - if (old != next.id) { - row.className = row.className.replace(/-over/, ''); + if (next) { + next.focus(); + row = $('row' + this.keyId); + if (e.altKey) { + nextId = next.id.replace(/subject/, 'check'); + this.selectRow(nextId, !$(nextId).checked); + } else if (old != next.id && row.className.indexOf('-over') == -1) { + row.className += '-over'; + } + if (old) { + row = $('row' + old); + if (old != next.id) { + row.className = row.className.replace(/-over/, ''); + } } } + + e.stop(); + }, + + submitHandler: function(e) + { + if (e.element().readAttribute('id').startsWith('select')) { + e.stop(); + } } - e.stop(); -} +}; -if (IMP.conf.hasDOM) { - document.observe('dom:loaded', function() { - document.observe('keydown', onKeyDownHandler); - }); -} +document.observe('change', ImpMessage.changeHandler.bindAsEventListener(ImpMessage)); +document.observe('click', ImpMessage.clickHandler.bindAsEventListener(ImpMessage)); +document.observe('keydown', ImpMessage.keyDownHandler.bindAsEventListener(ImpMessage)); +document.observe('submit', ImpMessage.submitHandler.bindAsEventListener(ImpMessage)); diff --git a/imp/mailbox.php b/imp/mailbox.php index 12fe5c96a..5a2c53932 100644 --- a/imp/mailbox.php +++ b/imp/mailbox.php @@ -454,7 +454,7 @@ $hdr_template->set('search', false); if (!$search_mbox) { $hdr_template->set('search', Horde::link(Util::addParameter(Horde::applicationUrl('search.php'), 'search_mailbox', $imp_mbox['mailbox']), sprintf(_("Search %s"), $rawtitle)) . Horde::img('search.png', _("Search"), '', $graphicsdir) . ''); if (!$readonly) { - $hdr_template->set('empty', Horde::link(Util::addParameter($mailbox_imp_url, array('actionID' => 'empty_mailbox', 'mailbox' => $imp_mbox['mailbox'], 'mailbox_token' => $mailbox_token)), _("Empty folder"), '', '', "imp_confirm(this.href, '" . addslashes(_("Are you sure you wish to delete all mail in this folder?")) . "'); return false;") . Horde::img('empty_spam.png', _("Empty folder")) . ''); + $hdr_template->set('empty', Horde::link(Util::addParameter($mailbox_imp_url, array('actionID' => 'empty_mailbox', 'mailbox' => $imp_mbox['mailbox'], 'mailbox_token' => $mailbox_token)), _("Empty folder"), '', '', "ImpMessage.confirmDialog(this.href, '" . addslashes(_("Are you sure you wish to delete all mail in this folder?")) . "'); return false;") . Horde::img('empty_spam.png', _("Empty folder")) . ''); } } else { if ($imp_search->isEditableVFolder()) { @@ -541,13 +541,13 @@ if ($pageOb['msgcount']) { $a_template = new IMP_Template(); if ($use_trash && (($imp_mbox['mailbox'] == (IMP::folderPref($prefs->getValue('trash_folder'), true))) || ($vtrash !== null))) { - $a_template->set('delete', Horde::widget('#', _("Delete"), 'widget', '', "if (confirm('" . addslashes(_("Are you sure you wish to permanently delete these messages?")) . "')) { messages_submit('delete_messages'); } return false;", _("_Delete"))); + $a_template->set('delete', Horde::widget('#', _("Delete"), 'widget permdeleteAction', '', '', _("_Delete"))); } else { - $a_template->set('delete', Horde::widget('#', _("Delete"), 'widget', '', "messages_submit('delete_messages'); return false;", _("_Delete"))); + $a_template->set('delete', Horde::widget('#', _("Delete"), 'widget deleteAction', '', '', _("_Delete"))); } if ($showdelete['purge'] || ($vtrash !== null)) { - $a_template->set('undelete', Horde::widget('#', _("Undelete"), 'widget', '', "messages_submit('undelete_messages'); return false;", _("_Undelete"))); + $a_template->set('undelete', Horde::widget('#', _("Undelete"), 'widget undeleteAction', '', '', _("_Undelete"))); } if ($showdelete['purge']) { @@ -559,32 +559,32 @@ if ($pageOb['msgcount']) { } if (!$readonly && $registry->hasMethod('mail/blacklistFrom')) { - $a_template->set('blacklist', Horde::widget('#', _("Blacklist"), 'widget', '', "messages_submit('blacklist'); return false;", _("_Blacklist"))); + $a_template->set('blacklist', Horde::widget('#', _("Blacklist"), 'widget blacklistAction', '', '', _("_Blacklist"))); } if (!$readonly && $registry->hasMethod('mail/whitelistFrom')) { - $a_template->set('whitelist', Horde::widget('#', _("Whitelist"), 'widget', '', "messages_submit('whitelist'); return false;", _("_Whitelist"))); + $a_template->set('whitelist', Horde::widget('#', _("Whitelist"), 'widget whitelistAction', '', '', _("_Whitelist"))); } if (empty($conf['hooks']['disable_compose']) || !Horde::callHook('_imp_hook_disable_compose', array(false), 'imp')) { - $a_template->set('forward', Horde::widget('#', _("Forward"), 'widget', '', "messages_submit('fwd_digest'); return false;", _("Fo_rward"))); + $a_template->set('forward', Horde::widget('#', _("Forward"), 'widget forwardAction', '', '', _("Fo_rward"))); } if (!$readonly && $conf['spam']['reporting'] && ($conf['spam']['spamfolder'] || ($imp_mbox['mailbox'] != IMP::folderPref($prefs->getValue('spam_folder'), true)))) { - $a_template->set('spam', Horde::widget('#', _("Report as Spam"), 'widget', '', "messages_submit('spam_report'); return false;", _("Report as Spam"))); + $a_template->set('spam', Horde::widget('#', _("Report as Spam"), 'widget spamAction', '', '', _("Report as Spam"))); } if (!$readonly && $conf['notspam']['reporting'] && (!$conf['notspam']['spamfolder'] || ($imp_mbox['mailbox'] == IMP::folderPref($prefs->getValue('spam_folder'), true)))) { - $a_template->set('notspam', Horde::widget('#', _("Report as Innocent"), 'widget', '', "messages_submit('notspam_report'); return false;", _("Report as Innocent"))); + $a_template->set('notspam', Horde::widget('#', _("Report as Innocent"), 'widget notspamAction', '', '', _("Report as Innocent"))); } - $a_template->set('view_messages', Horde::widget('#', _("View Messages"), 'widget', '', "messages_submit('view_messages'); return false;", _("View Messages"))); + $a_template->set('view_messages', Horde::widget('#', _("View Messages"), 'widget viewAction', '', '', _("View Messages"))); echo $a_template->fetch(IMP_TEMPLATES . '/mailbox/actions.html'); } @@ -891,5 +891,9 @@ if (($pageOb['end'] - $pageOb['begin']) >= 20) { echo $n_template->fetch(IMP_TEMPLATES . '/mailbox/navbar.html'); } -IMP::addInlineScript('var messagelist = ' . Horde_Serialize::serialize($ids, SERIALIZE_JSON, NLS::getCharset()) . ';'); +IMP::addInlineScript(array( + 'ImpMessage.messagelist = ' . Horde_Serialize::serialize($ids, SERIALIZE_JSON, NLS::getCharset()), + 'ImpMessage.sortlimit = ' . intval($sortpref['limit']) +)); + require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/imp/templates/javascript_defs.php b/imp/templates/javascript_defs.php index 8ee5e4604..d0cf3dfd0 100644 --- a/imp/templates/javascript_defs.php +++ b/imp/templates/javascript_defs.php @@ -11,7 +11,6 @@ $code = array( /* Variables used in core javascript files. */ 'conf' => array( - 'hasDOM' => $GLOBALS['browser']->hasFeature('dom'), 'IMP_ALL' => IMP::FLAG_ALL, 'isIE' => $GLOBALS['browser']->isBrowser('msie'), 'pop3' => (isset($_SESSION['imp']) && ($_SESSION['imp']['protocol'] == 'pop')), diff --git a/imp/templates/mailbox/mailbox.html b/imp/templates/mailbox/mailbox.html index 734a090e9..55a04dabf 100644 --- a/imp/templates/mailbox/mailbox.html +++ b/imp/templates/mailbox/mailbox.html @@ -1,7 +1,7 @@ - + style="background:"> diff --git a/imp/templates/mailbox/message_headers.html b/imp/templates/mailbox/message_headers.html index 4f541e09e..642413516 100644 --- a/imp/templates/mailbox/message_headers.html +++ b/imp/templates/mailbox/message_headers.html @@ -9,13 +9,13 @@   - + - /> + /> - onclick="document.location.href=this.down('A').href;"> + diff --git a/imp/templates/mailbox/navbar.html b/imp/templates/mailbox/navbar.html index de80ab941..19721e3f1 100644 --- a/imp/templates/mailbox/navbar.html +++ b/imp/templates/mailbox/navbar.html @@ -2,10 +2,10 @@ class="bottomborder">
-
+ - @@ -28,7 +28,7 @@ - @@ -57,7 +57,7 @@
  • -