diff --git a/admin/templatetags/admin_extras.py b/admin/templatetags/admin_extras.py
index fc5e2bcba..36c48d0e5 100644
--- a/admin/templatetags/admin_extras.py
+++ b/admin/templatetags/admin_extras.py
@@ -99,11 +99,17 @@ def param(app, definition):
result = """
%s """ % definition["name"]
name = "%s.%s" % (app, definition["name"])
+ value = definition.has_key("value") \
+ and definition["value"] or definition["default"]
+
if definition["type"] in ["string", "int"]:
- value = definition.has_key("value") \
- and definition["value"] or definition["default"]
result += """
""" % (name, name, value)
+
+ if definition["type"] == "text":
+ result += "" \
+ % (name, name, value)
+
if definition["type"] in ["list", "list_yesno"]:
result += """
""" % (name, name)
@@ -113,8 +119,6 @@ def param(app, definition):
else:
if definition.has_key("values"):
values = definition["values"]
- value = definition.has_key("value") \
- and definition["value"] or definition["default"]
for v in values:
selected = ""
if value == v[0]:
diff --git a/extensions/webmail/main.py b/extensions/webmail/main.py
index 36feefa9e..829226af9 100644
--- a/extensions/webmail/main.py
+++ b/extensions/webmail/main.py
@@ -38,6 +38,8 @@ def init():
help=_("Folder where deleted messages go"))
parameters.register_user("webmail", "SENT_FOLDER", type="string", deflt="Sent",
help=_("Folder where copies of sent messages go"))
+ parameters.register_user("webmail", "SIGNATURE", type="text", default="",
+ help=_("User defined email signature"))
def destroy():
events.unregister("UserMenuDisplay", menu)
diff --git a/extensions/webmail/views.py b/extensions/webmail/views.py
index f37ba0cb6..f905a4588 100644
--- a/extensions/webmail/views.py
+++ b/extensions/webmail/views.py
@@ -198,9 +198,18 @@ def compact(request, name):
mbc.compact(name)
return folder(request, name, False)
-def render_compose(request, form, posturl, bodyheader=None, body=None):
+def render_compose(request, form, posturl, bodyheader=None, body=None,
+ insert_signature=False):
menu = compose_menu("", __get_current_url(request),
request.user.get_all_permissions())
+ if insert_signature:
+ if body == None:
+ body = ""
+ body += """
+---
+%s
+""" % parameters.get_user(request.user, "webmail", "SIGNATURE")
+
content = render_to_string("webmail/compose.html", {
"form" : form, "bodyheader" : bodyheader, "body" : body,
"posturl" : posturl
@@ -267,7 +276,7 @@ def compose(request):
form = ComposeMailForm()
form.fields["from_"].initial = request.user.username
- return render_compose(request, form, reverse(compose))
+ return render_compose(request, form, reverse(compose), insert_signature=True)
@login_required
@is_not_localadmin()
diff --git a/lib/parameters.py b/lib/parameters.py
index 7fc0c5df4..dbf567505 100644
--- a/lib/parameters.py
+++ b/lib/parameters.py
@@ -68,7 +68,7 @@ def save_admin(app, name, value):
p = Parameter()
p.name = fullname
if p.value != value:
- p.value = value
+ p.value = str(value).encode("string_escape")
p.save()
return True
@@ -82,7 +82,7 @@ def save_user(user, app, name, value):
p.user = user
p.name = fullname
if p.value != value:
- p.value = value
+ p.value = str(value).encode("string_escape")
p.save()
return True
@@ -92,7 +92,7 @@ def get_admin(app, name):
p = Parameter.objects.get(name="%s.%s" % (app, name))
except Parameter.DoesNotExist:
return _params[app]["A"][name]["default"]
- return p.value
+ return p.value.decode("string_escape")
def get_user(user, app, name):
__is_defined(app, "U", name)
@@ -100,4 +100,4 @@ def get_user(user, app, name):
p = UserParameter.objects.get(user=user, name="%s.%s" % (app, name))
except UserParameter.DoesNotExist:
return _params[app]["U"][name]["default"]
- return p.value
+ return p.value.decode("string_escape")
diff --git a/static/css/default.css b/static/css/default.css
index f6d5ac83c..d89bcc6ed 100644
--- a/static/css/default.css
+++ b/static/css/default.css
@@ -303,6 +303,15 @@ input:hover {
background-color: #ffffcc;
}
+textarea {
+ border: 1px solid #cccccc;
+ background-color: #eee;
+ width: 300px;
+ height: 100px;
+ font-size: 1.1em;
+ font-family: arial, helvetica, verdana, tahoma, sans-serif;
+}
+
table.hr {
width: 80%;
margin: 10px auto;