diff options
Diffstat (limited to 'program/js/app.js')
-rw-r--r-- | program/js/app.js | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/program/js/app.js b/program/js/app.js index 36072e384..b724287ef 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -159,7 +159,7 @@ function rcube_webmail() if (this.env.action=='show' || this.env.action=='preview') { - this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'mark', 'viewsource', 'print', 'load-attachment', true); + this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'mark', 'viewsource', 'print', 'load-attachment', 'load-headers', true); if (this.env.next_uid) { this.enable_command('nextmessage', true); @@ -510,7 +510,6 @@ function rcube_webmail() return false; } - // process command switch (command) { @@ -554,6 +553,11 @@ function rcube_webmail() break; + case 'load-headers': + this.load_headers(obj); + break; + + case 'sort': // get the type of sorting var a_sort = props.split('_'); @@ -3654,6 +3658,54 @@ function rcube_webmail() } + // display fetched raw headers + this.set_headers = function(content) + { + if (this.gui_objects.all_headers_row && this.gui_objects.all_headers_box && content) + { + var box = this.gui_objects.all_headers_box; + box.innerHTML = content; + box.style.display = 'block'; + + if (this.env.framed && parent.rcmail) + parent.rcmail.set_busy(false); + else + this.set_busy(false); + } + }; + + // display all-headers row and fetch raw message headers + this.load_headers = function(elem) + { + if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box || !this.env.uid) + return; + + this.set_classname(elem, 'show-headers', false); + this.set_classname(elem, 'hide-headers', true); + this.gui_objects.all_headers_row.style.display = bw.ie ? 'block' : 'table-row'; + elem.onclick = function() { rcmail.hide_headers(elem); } + + // fetch headers only once + if (!this.gui_objects.all_headers_box.innerHTML) + { + this.set_busy(true, 'loading'); + this.http_post('headers', '_uid='+this.env.uid); + } + } + + + // hide all-headers row + this.hide_headers = function(elem) + { + if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box) + return; + + this.set_classname(elem, 'hide-headers', false); + this.set_classname(elem, 'show-headers', true); + this.gui_objects.all_headers_row.style.display = 'none'; + elem.onclick = function() { rcmail.load_headers(elem); } + } + /********************************************************/ /********* remote request methods *********/ @@ -3760,7 +3812,7 @@ function rcube_webmail() } if (request_obj.__lock) - this.set_busy(false); + this.set_busy(false); console.log(request_obj.get_text()); |