diff --git a/extensions/webmail/forms.py b/extensions/webmail/forms.py index 8e5b75abc..5bab1fc0b 100644 --- a/extensions/webmail/forms.py +++ b/extensions/webmail/forms.py @@ -5,7 +5,7 @@ class ComposeMailForm(forms.Form): from_ = forms.CharField(label=_("From")) to = forms.CharField(label=_("To"), widget=forms.Textarea()) cc = forms.CharField(label=_("Cc"), widget=forms.Textarea(), required=False) - subject = forms.CharField(label=_("Subject"), max_length=255) + subject = forms.CharField(label=_("Subject"), max_length=255, required=False) class FolderForm(forms.Form): name = forms.CharField() diff --git a/extensions/webmail/lib.py b/extensions/webmail/lib.py index c00a611a7..819736592 100644 --- a/extensions/webmail/lib.py +++ b/extensions/webmail/lib.py @@ -542,7 +542,7 @@ def send_mail(request, origmsg=None, posturl=None): """ from email.mime.multipart import MIMEMultipart from forms import ComposeMailForm - from modoboa.lib.webutils import getctx, ajax_simple_response + from modoboa.lib.webutils import getctx, ajax_simple_response, _render_to_string from modoboa.auth.lib import get_password form = ComposeMailForm(request.POST) @@ -623,13 +623,13 @@ def send_mail(request, origmsg=None, posturl=None): del request.session["compose_mail"] return True, ajax_simple_response(getctx("ok", url=get_current_url(request))) - - listing = render_to_string("webmail/compose.html", - {"form" : form, + listing = _render_to_string(request, "webmail/compose.html", + {"form" : form, "noerrors" : True, "body" : request.POST["id_body"].strip(), "posturl" : posturl}) + error = _("Red fields are mandatories") return False, ajax_simple_response( - getctx("ko", level=2, listing=listing, editor=editormode) + getctx("ko", level=2, respmsg=error, listing=listing, editor=editormode) ) class AttachmentUploadHandler(FileUploadHandler): diff --git a/extensions/webmail/static/js/webmail.js b/extensions/webmail/static/js/webmail.js index 7072210e3..32cdec3c5 100644 --- a/extensions/webmail/static/js/webmail.js +++ b/extensions/webmail/static/js/webmail.js @@ -762,6 +762,8 @@ function sendmail_callback(evt) { current_anchor.get_callback("compose")(resp); if ($defined(resp.respmsg)) { infobox.error(resp.respmsg); + } else { + infobox.hide(); } enable_link(this, sendmail_callback); return; diff --git a/static/css/default.css b/static/css/default.css index b78bf88a1..3e0f0a58d 100644 --- a/static/css/default.css +++ b/static/css/default.css @@ -403,6 +403,11 @@ div.row label { padding: 3px 0; } +.missing input, +.missing textarea { + background-color: #F9D2D2; +} + .error { margin: 0 auto; padding: 5px; diff --git a/templates/common/genericform.html b/templates/common/genericform.html index 76adb06ff..13e60edf2 100644 --- a/templates/common/genericform.html +++ b/templates/common/genericform.html @@ -7,6 +7,6 @@