diff --git a/admin/forms.py b/admin/forms.py
index 38a907c2e..3d7e03f57 100644
--- a/admin/forms.py
+++ b/admin/forms.py
@@ -45,6 +45,7 @@ class AliasForm(forms.ModelForm):
del kwargs["domain"]
super(AliasForm, self).__init__(*args, **kwargs)
self.fields['address'].widget.attrs['size'] = 14
+ self.fields['mbox'].widget.attrs['size'] = 5
if domain:
self.fields['mbox'].queryset = Mailbox.objects.filter(domain=domain.id)
diff --git a/extensions/amavis_quarantine/main.py b/extensions/amavis_quarantine/main.py
index 6baa63471..bdd7fe29d 100644
--- a/extensions/amavis_quarantine/main.py
+++ b/extensions/amavis_quarantine/main.py
@@ -115,7 +115,7 @@ def index(request, message=None):
@login_required
def getmailcontent(request, mail_id):
- from mailng.lib.email_listing import Email
+ from sql_listing import SQLemail
conn = db.getconnection("amavis_quarantine")
status, cursor = db.execute(conn, """
@@ -129,9 +129,9 @@ WHERE quarantine.mail_id='%s'
msg = email.message_from_string(content)
links = request.GET.has_key("links") and request.GET["links"] or "0"
mode = request.GET.has_key("mode") and request.GET["mode"] or "plain"
- mail = Email(msg, mode, links)
+ mail = SQLemail(msg, mode, links)
return _render(request, "common/viewmail.html", {
- "headers" : "",
+ "headers" : mail.render_headers(),
"mailbody" : mail.body,
"pre" : mail.pre
})
diff --git a/extensions/amavis_quarantine/sql_listing.py b/extensions/amavis_quarantine/sql_listing.py
index fed58ffa9..25c3b7a2e 100644
--- a/extensions/amavis_quarantine/sql_listing.py
+++ b/extensions/amavis_quarantine/sql_listing.py
@@ -3,7 +3,7 @@
from datetime import datetime
from django.utils.translation import ugettext as _
from mailng.lib import tables, db
-from mailng.lib.email_listing import MBconnector, EmailListing
+from mailng.lib.email_listing import MBconnector, EmailListing, Email
class Qtable(tables.Table):
tableid = "emails"
@@ -92,3 +92,21 @@ class SQLlisting(EmailListing):
def __init__(self, filter, **kwargs):
self.mbc = SQLconnector(filter)
EmailListing.__init__(self, **kwargs)
+
+class SQLemail(Email):
+ def __init__(self, msg, *args, **kwargs):
+ Email.__init__(self, msg, *args, **kwargs)
+ fields = ["X-Amavis-Alert", "Subject", "From", "To", "Date"]
+ for f in fields:
+ label = f
+ if not msg.has_key(f):
+ f = f.upper()
+ if not msg.has_key(f):
+ self.headers += [{"name" : label, "value" : ""}]
+ continue
+ self.headers += [{"name" : label, "value" : msg[f]}]
+ try:
+ label = re.sub("-", "_", label)
+ setattr(self, label, msg[f])
+ except:
+ pass
diff --git a/extensions/webmail/imap_listing.py b/extensions/webmail/imap_listing.py
index ee1ceb946..cc891af67 100644
--- a/extensions/webmail/imap_listing.py
+++ b/extensions/webmail/imap_listing.py
@@ -349,8 +349,8 @@ class ImapListing(EmailListing):
self.mbc.criterions = ["(%s)" % criterions]
class ImapEmail(Email):
- def __init__(self, msg, addrfull=False, **kwargs):
- Email.__init__(self, msg, **kwargs)
+ def __init__(self, msg, addrfull=False, *args, **kwargs):
+ Email.__init__(self, msg, *args, **kwargs)
fields = ["Subject", "From", "To", "Reply-To", "Cc", "Date"]
for f in fields:
@@ -371,3 +371,16 @@ class ImapEmail(Email):
except:
pass
+ def render_headers(self, **kwargs):
+ attachments = []
+ for part in self.attachments:
+ decoded = decode_header(part.get_filename())
+ if decoded[0][1] is None:
+ attachments += [decoded[0][0]]
+ else:
+ attachments += [unicode(decoded[0][0], decoded[0][1])]
+ return render_to_string("webmail/headers.html", {
+ "headers" : self.headers,
+ "folder" : kwargs["folder"], "mail_id" : kwargs["mail_id"],
+ "attachments" : attachments != [] and attachments or None
+ })
diff --git a/extensions/webmail/templates/headers.html b/extensions/webmail/templates/headers.html
index 213b8a759..11d702132 100644
--- a/extensions/webmail/templates/headers.html
+++ b/extensions/webmail/templates/headers.html
@@ -1,9 +1,8 @@
+{% extends "common/mailheaders.html" %}
{% load i18n %}
-
+{% endif %}
+{% endblock %}
diff --git a/lib/email_listing.py b/lib/email_listing.py
index c24a547b6..ad7cefa67 100644
--- a/lib/email_listing.py
+++ b/lib/email_listing.py
@@ -187,18 +187,9 @@ class Email(object):
return map[m.group(1)]
return url
- def render_headers(self, folder, mail_id):
- attachments = []
- for part in self.attachments:
- decoded = decode_header(part.get_filename())
- if decoded[0][1] is None:
- attachments += [decoded[0][0]]
- else:
- attachments += [unicode(decoded[0][0], decoded[0][1])]
- return render_to_string("webmail/headers.html", {
+ def render_headers(self, **kwargs):
+ return render_to_string("common/mailheaders.html", {
"headers" : self.headers,
- "folder" : folder, "mail_id" : mail_id,
- "attachments" : attachments != [] and attachments or None
})
def render(self, request):
diff --git a/static/stylesheets/box.css b/static/stylesheets/box.css
index 6b1331ce6..57cc9d5c6 100644
--- a/static/stylesheets/box.css
+++ b/static/stylesheets/box.css
@@ -26,11 +26,21 @@ input {
padding: 2px;
}
+input[type=text] {
+ width: 130px
+}
+
input:hover {
color: inherit;
background-color: #ffffcc;
}
+select {
+ width: 135px;
+ background-color: #eee;
+ border: 1px solid #cccccc;
+}
+
td.odd {
background: #F7F9Fb;
}
diff --git a/templates/admin/mailboxes.html b/templates/admin/mailboxes.html
index e1751923f..f0c49ee7c 100644
--- a/templates/admin/mailboxes.html
+++ b/templates/admin/mailboxes.html
@@ -32,7 +32,7 @@
{% url admin.views.newalias domain.id mb.id as alias_url %}
+ rel="{handler:'iframe',size:{x:300,y:250}}">
{% url mbox-aliases domain.id mb.id as aliases_url %}
diff --git a/templates/common/mailheaders.html b/templates/common/mailheaders.html
new file mode 100644
index 000000000..3085afd34
--- /dev/null
+++ b/templates/common/mailheaders.html
@@ -0,0 +1,7 @@
+{% load i18n %}
+