From 9888be1ba97c95cd546c90cd1cacd0d5aa5abeef Mon Sep 17 00:00:00 2001 From: tonio Date: Tue, 27 Jul 2010 10:37:06 +0200 Subject: [PATCH] wip: #65, more messages added. Ticket reported to a future release. --- admin/views.py | 7 ++++-- .../amavis_quarantine/templates/index.html | 2 +- extensions/postfix_autoreply/views.py | 6 ++--- extensions/webmail/templates/index.html | 4 ++-- lib/templatetags/libextras.py | 22 +++++++++++++++++++ settings_sample.py | 6 +++++ static/js/common.js | 18 +++++++++------ static/js/infobox.js | 2 +- templates/admin/domain_header.html | 5 ++++- templates/admin/settings_header.html | 5 ++++- templates/userprefs/preferences.html | 6 +++-- 11 files changed, 63 insertions(+), 20 deletions(-) diff --git a/admin/views.py b/admin/views.py index 13aa2655a..6be08a981 100644 --- a/admin/views.py +++ b/admin/views.py @@ -11,6 +11,8 @@ from django.core.urlresolvers import reverse from django.contrib.auth.decorators \ import login_required, permission_required, user_passes_test from django.contrib.auth.models import User, Group +from django.contrib import messages + from modoboa import admin, userprefs from modoboa.admin.models import Domain, Mailbox, Alias from forms import MailboxForm, DomainForm, AliasForm, PermissionForm @@ -191,7 +193,8 @@ def newmailbox(request, dom_id=None): events.raiseEvent("CreateMailbox", mbox=mb) - request.user.message_set.create(message=_("Mailbox created.")) + messages.info(request, _("Mailbox created."), + fail_silently=True) ctx = _ctx_ok(reverse(admin.views.mailboxes, args=[domain.id])) return HttpResponse(simplejson.dumps(ctx), mimetype="application/json") @@ -398,7 +401,7 @@ def deletepermission(request, mbox_id, group): if group == "SuperAdmins": user = User.objects.get(pk=mbox_id) if user.username == "admin": - request.user.message_set.create(message=_("admin is intouchable!!")) + messages.error(request, _("admin is intouchable!!"), fail_silently=True) else: user.is_superuser = False user.save() diff --git a/extensions/amavis_quarantine/templates/index.html b/extensions/amavis_quarantine/templates/index.html index 1f7aee4fc..7ee48fc21 100644 --- a/extensions/amavis_quarantine/templates/index.html +++ b/extensions/amavis_quarantine/templates/index.html @@ -102,7 +102,7 @@ $("menubar").set("html", ""); $("navbar").set("html", ""); if (resp.status == "ok") { - infobox.notice(resp.message); + infobox.info(resp.message); } else { infobox.error(resp.message); } diff --git a/extensions/postfix_autoreply/views.py b/extensions/postfix_autoreply/views.py index 716ac7343..c796600fa 100644 --- a/extensions/postfix_autoreply/views.py +++ b/extensions/postfix_autoreply/views.py @@ -4,6 +4,7 @@ from django.http import HttpResponse from django.utils import simplejson from django.contrib.auth.decorators \ import login_required +from django.contrib import messages from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ from modoboa.lib import _render, _ctx_ok, _ctx_ko, is_not_localadmin @@ -30,9 +31,8 @@ def autoreply(request): arm = form.save(commit=False) arm.mbox = mb arm.save() - request.user.message_set.create( - message=_("Auto reply message updated successfully.") - ) + messages.info(request, _("Auto reply message updated successfully."), + fail_silently=True) ctx = _ctx_ok(reverse(userprefs.views.index)) else: ctx = _ctx_ko("postfix_autoreply/autoreply.html", { diff --git a/extensions/webmail/templates/index.html b/extensions/webmail/templates/index.html index 816bfe501..f7029b2a0 100644 --- a/extensions/webmail/templates/index.html +++ b/extensions/webmail/templates/index.html @@ -129,7 +129,7 @@ new Request.JSON({url: query, noCache : true, onSuccess: function(resp) { callback = ($defined(resp.callback)) ? resp.callback : "default"; callbacks[callback](resp); - infobox.notice('{% trans "Done" %}'); + infobox.info('{% trans "Done" %}'); infobox.hide(1); }}).get(); } @@ -245,7 +245,7 @@ new Request.JSON({url : url, onSuccess : function(response) { get_callback("folder")(response); - infobox.notice(gettext("Done")); + infobox.info(gettext("Done")); infobox.hide(1); } }).get(params); diff --git a/lib/templatetags/libextras.py b/lib/templatetags/libextras.py index f490af740..8520fe664 100644 --- a/lib/templatetags/libextras.py +++ b/lib/templatetags/libextras.py @@ -1,6 +1,7 @@ import os from django.conf import settings from django import template +from django.contrib import messages from modoboa.lib import exec_cmd register = template.Library() @@ -26,3 +27,24 @@ def join(items, sep=','): res += sep res += "%s : '%s'" % (k, v) return res + + +@register.simple_tag +def display_messages(msgs): + from django.contrib import messages + + text = "" + level = "info" + for m in msgs: + level = m.tags + text += str(m) + "\\\n" + + return """ + +""" % (level, text) + diff --git a/settings_sample.py b/settings_sample.py index bb0a93af3..f1306d9c9 100644 --- a/settings_sample.py +++ b/settings_sample.py @@ -64,6 +64,7 @@ MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', ) ROOT_URLCONF = 'modoboa.urls' @@ -77,11 +78,16 @@ TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__), 'templates'), ) +TEMPLATE_CONTEXT_PROCESSORS = ( + 'django.contrib.messages.context_processors.messages', +) + INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', + 'django.contrib.messages', 'south', 'modoboa', 'modoboa.lib', diff --git a/static/js/common.js b/static/js/common.js index 1fe0f2ddc..d117f1a96 100644 --- a/static/js/common.js +++ b/static/js/common.js @@ -40,7 +40,7 @@ check_anchor = function() { new Request.JSON({url: query, noCache : true, onSuccess: function(resp) { callback = ($defined(resp.callback)) ? resp.callback : "default"; callbacks[callback](resp); - infobox.notice(gettext("Done")); + infobox.info(gettext("Done")); infobox.hide(1); }}).get(); } @@ -345,13 +345,17 @@ searchbox_init = function() { // The following code prevents a bug under IE7 because fullpath is // returned instead of a relative one. (even if mootools uses -// getAttribute("href", 2), this is not working with AJAX -// requests) +// getAttribute("href", 2), this is not working for AJAX requests) gethref = function(obj) { var url = obj.get("href"); - var baseurl = "http://" + location.host + location.pathname; - - return url.replace(baseurl, ""); + var re = new RegExp("^(https?):"); + var scheme = re.exec(url); + + if (scheme != null) { + var baseurl = scheme[0] + "://" + location.host + location.pathname; + return url.replace(baseurl, ""); + } + return url; } saveparams = function(id, message) { @@ -361,7 +365,7 @@ saveparams = function(id, message) { onSuccess: function(response) { var decode = JSON.decode(response); if (decode.status == "ok") { - infobox.notice(message); + infobox.info(message); infobox.hide(1); } } diff --git a/static/js/infobox.js b/static/js/infobox.js index 32ef01b2c..6c20e43bb 100644 --- a/static/js/infobox.js +++ b/static/js/infobox.js @@ -55,7 +55,7 @@ var InfoBox = new Class({ }); }, - notice: function(message) { + info: function(message) { this.show(message, { profile: "green" }); diff --git a/templates/admin/domain_header.html b/templates/admin/domain_header.html index d2f8e20b7..d143835bf 100644 --- a/templates/admin/domain_header.html +++ b/templates/admin/domain_header.html @@ -1,10 +1,13 @@ {% extends "nlayout.html" %} -{% load i18n %} +{% load i18n libextras %} {% block html_head %} {% endblock %} {% block middletitle %}{% trans "Domain" %} {{ domain.name }}{% endblock %} {% block content %} +{% if messages %} +{% display_messages messages %} +{% endif %}
{% block domcontent %}{% endblock %}
diff --git a/templates/admin/settings_header.html b/templates/admin/settings_header.html index 814bfa687..046a62607 100644 --- a/templates/admin/settings_header.html +++ b/templates/admin/settings_header.html @@ -1,10 +1,13 @@ {% extends "nlayout.html" %} -{% load i18n %} +{% load i18n libextras %} {% block html_head %} {% endblock %} {% block middletitle %}{% trans "Settings" %}{% endblock %} {% block content %} +{% if messages %} +{% display_messages messages %} +{% endif %}
{% block setcontent %}{% endblock %}
diff --git a/templates/userprefs/preferences.html b/templates/userprefs/preferences.html index d13da53a8..81a659bb6 100644 --- a/templates/userprefs/preferences.html +++ b/templates/userprefs/preferences.html @@ -1,12 +1,14 @@ {% extends "nlayout.html" %} -{% load i18n %} -{% load uprefs_extras %} +{% load i18n uprefs_extras libextras %} {% block html_head %} {% endblock %} {% block middletitle %}{% trans "Preferences" %}{% endblock %} {% block menu %}{% uprefs_menu user %}{% endblock %} {% block content %} +{% if messages %} + {% display_messages messages %} +{% endif %}
{% include "common/parameters.html" %}