From e0cf9e8cd90aff75dfe68358a23a229ef7d2bebb Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 27 Apr 2011 11:37:33 +0200 Subject: [PATCH] fixed #123 & #135: the 'compose' callback was not called on error. --- extensions/webmail/static/js/webmail.js | 21 ++++++++++++++------- extensions/webmail/views.py | 14 +++++++------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/extensions/webmail/static/js/webmail.js b/extensions/webmail/static/js/webmail.js index 69c1f4486..56cc70a75 100644 --- a/extensions/webmail/static/js/webmail.js +++ b/extensions/webmail/static/js/webmail.js @@ -82,14 +82,17 @@ function compose_loader(event) { current_anchor.baseurl("compose").update(); } +function resize_window_callback(event) { + setDivHeight("id_body", $("mailheader").getSize().y, 0); +} + /* * Callback of the 'compose' action */ function compose_callback(resp) { wm_updatelisting(resp); - window.addEvent("resize", function(evt) { - setDivHeight("id_body", $("mailheader").getSize().y, 0); - }); + + window.addEvent("resize", resize_window_callback); window.fireEvent("resize"); var editormode = resp.editor; @@ -105,15 +108,19 @@ function compose_callback(resp) { height: $(editorid).getSize().y }); } - $$("a[name=back]").addEvent("click", loadFolder); - $$("a[name=sendmail]").addEvent("click", function(evt) { + $$("a[name=back]") + .removeEvents("click") + .addEvent("click", loadFolder); + $$("a[name=sendmail]") + .removeEvents("click") + .addEvent("click", function(evt) { evt.stop(); $("composemail").set("send", { onSuccess: function(resp) { resp = JSON.decode(resp); if (resp.status == "ko") { - wm_updatelisting(resp); - window.fireEvent("resize"); + get_callback("compose")(resp); + if ($defined(resp.error)) { infobox.error(resp.error); } diff --git a/extensions/webmail/views.py b/extensions/webmail/views.py index 737cbce8e..aabf3a526 100644 --- a/extensions/webmail/views.py +++ b/extensions/webmail/views.py @@ -308,30 +308,30 @@ def send_mail(request, withctx=False, origmsg=None, posturl=None): form = ComposeMailForm(request.POST) error = None ctx = None + editormode = parameters.get_user(request.user, "EDITOR") if form.is_valid(): from email.mime.text import MIMEText from email.utils import make_msgid, formatdate import smtplib - subtype = parameters.get_user(request.user, "EDITOR") body = request.POST["id_body"] charset = "utf-8" - if subtype == "html": + if editormode == "html": from email.mime.multipart import MIMEMultipart msg = MIMEMultipart(_subtype="related") submsg = MIMEMultipart(_subtype="alternative") textbody = __html2plaintext(body) submsg.attach(MIMEText(textbody.encode(charset), - _subtype="plain", _charset=charset)) + _subtype="plain", _charset=charset)) body, images = find_images_in_body(body) - submsg.attach(MIMEText(body.encode(charset), _subtype=subtype, - _charset=charset)) + submsg.attach(MIMEText(body.encode(charset), _subtype=editormode, + _charset=charset)) msg.attach(submsg) for img in images: msg.attach(img) else: - msg = MIMEText(body.encode(charset), _subtype=subtype) + msg = MIMEText(body.encode(charset), _subtype=editormode) msg["Subject"] = request.POST["subject"] address, domain = split_mailbox(request.POST["from_"]) @@ -378,7 +378,7 @@ def send_mail(request, withctx=False, origmsg=None, posturl=None): {"form" : form, "body" : request.POST["id_body"].strip(), "posturl" : posturl}) - ctx = getctx("ko", level=2, error=error, listing=listing) + ctx = getctx("ko", level=2, error=error, listing=listing, editor=editormode) if not withctx: return HttpResponse(simplejson.dumps(ctx), mimetype="application/json") return ctx, HttpResponse(simplejson.dumps(ctx), mimetype="application/json")