From 92e81cbf22b78bd06bae8006cd5cda57660838c8 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Fri, 04 Apr 2014 13:58:24 -0400 Subject: [PATCH] Improve error message on failed http connection --- program/js/app.js | 45 +++++++++++++++++++++++++++++---------------- 1 files changed, 29 insertions(+), 16 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index fe7cf81..6d2581a 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -564,7 +564,7 @@ // execute a specific command on the web client this.command = function(command, props, obj, event) { - var ret, uid, cid, url, flag; + var ret, uid, cid, url, flag, aborted = false; if (obj && obj.blur) obj.blur(); @@ -1054,7 +1054,10 @@ // Reset the auto-save timer clearTimeout(this.save_timer); - this.upload_file(props || this.gui_objects.uploadform, 'upload'); + if (!this.upload_file(props || this.gui_objects.uploadform, 'upload')) { + alert(this.get_label('selectimportfile')); + aborted = true; + } break; case 'insert-sig': @@ -1182,6 +1185,7 @@ if (!this.upload_file(form, 'import')) { this.set_busy(false, null, importlock); alert(this.get_label('selectimportfile')); + aborted = true; } break; @@ -1190,6 +1194,7 @@ var file = document.getElementById('rcmimportfile'); if (file && !file.value) { alert(this.get_label('selectimportfile')); + aborted = true; break; } this.gui_objects.importform.submit(); @@ -1241,9 +1246,9 @@ break; } - if (this.triggerEvent('after'+command, props) === false) + if (!aborted && this.triggerEvent('after'+command, props) === false) ret = false; - this.triggerEvent('actionafter', {props:props, action:command}); + this.triggerEvent('actionafter', { props:props, action:command, aborted:aborted }); return ret === false ? false : obj ? false : true; }; @@ -1896,7 +1901,7 @@ tree += '<span id="msgicn'+uid+'" class="'+css_class+'"> </span>'; row.className = row_class; - // build subject link + // build subject link if (cols.subject) { var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show'; var uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid'; @@ -3985,7 +3990,7 @@ if (numfiles) { if (this.env.max_filesize && this.env.filesizeerror && size > this.env.max_filesize) { this.display_message(this.env.filesizeerror, 'error'); - return; + return false; } var frame_name = this.async_upload_form(form, action || 'upload', function(e) { @@ -7058,7 +7063,7 @@ else if (status == 'timeout') this.display_message(this.get_label('requesttimedout'), 'error'); else if (request.status == 0 && status != 'abort') - this.display_message(this.get_label('servererror') + ' (No connection)', 'error'); + this.display_message(this.get_label('connerror'), 'error'); // redirect to url specified in location header if not empty var location_url = request.getResponseHeader("Location"); @@ -7505,20 +7510,28 @@ try { window.navigator.registerProtocolHandler('mailto', this.mailto_handler_uri(), name); } - catch(e) {}; + catch(e) { + this.display_message(String(e), 'error'); + }; }; this.check_protocol_handler = function(name, elem) { var nav = window.navigator; - if (!nav - || (typeof nav.registerProtocolHandler != 'function') - || ((typeof nav.isProtocolHandlerRegistered == 'function') - && nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri()) == 'registered') - ) - $(elem).addClass('disabled'); - else - $(elem).click(function() { rcmail.register_protocol_handler(name); return false; }); + if (!nav || (typeof nav.registerProtocolHandler != 'function')) { + $(elem).addClass('disabled').click(function(){ return false; }); + } + else { + var status = null; + if (typeof nav.isProtocolHandlerRegistered == 'function') { + status = nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri()); + if (status) + $(elem).parent().find('.mailtoprotohandler-status').html(status); + } + else { + $(elem).click(function() { rcmail.register_protocol_handler(name); return false; }); + } + } }; // Checks browser capabilities eg. PDF support, TIF support -- Gitblit v1.9.1