This commit is contained in:
tonio
2011-11-18 23:48:30 +01:00
9 changed files with 85 additions and 27 deletions
File diff suppressed because one or more lines are too long
+3 -1
View File
@@ -39,9 +39,11 @@ def dologin(request):
error = _("Your username and password didn't match. Please try again.")
else:
form = LoginForm()
next = request.GET.has_key("next") and request.GET["next"] or None
return render_to_response("registration/login.html", {
"form" : form, "error" : error, "next" : next
"form" : form, "error" : error, "next" : next,
"annoucements" : events.raiseQueryEvent("GetAnnouncement", target="loginpage")
}, context_instance=RequestContext(request))
def dologout(request):
+9 -1
View File
@@ -2,6 +2,7 @@
from django.conf import settings
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_noop as _
from django.template.loader import render_to_string
from modoboa.lib import events
from modoboa.lib.webutils import static_url
@@ -28,5 +29,12 @@ def menu(**kwargs):
}
]
if 'demo' in settings.INSTALLED_APPS:
def announcement(**kwargs):
if kwargs["target"] == "loginpage":
txt = render_to_string("demo/login_announcement.html")
return [txt]
return ""
if 'modoboa.demo' in settings.INSTALLED_APPS:
events.register("UserMenuDisplay", menu)
events.register("GetAnnouncement", announcement)
@@ -0,0 +1,13 @@
{% load i18n %}
{% blocktrans %}
<h1>Welcome to the online demo!</h1>
<p><b>Warning:</b> the demo's concent is resetted every two hours.</p>
<p>To try the demo, the following users are available (<i>username/password</i>): </p>
<ul>
<li>A super administrator : <b>admin/password</b></li>
<li>A domain administrator : <b>admin@demo.local/admin</b></li>
<li>A simple user : <b>user@demo.local/user</b></li>
</ul>
<p>Please report any issue of give any suggestion to
<a href="https://groups.google.com/forum/#!forum/modoboa-users">the mailing list</a>.</p>
{% endblocktrans %}
+12 -1
View File
@@ -126,7 +126,7 @@ that corresponds to the ``Request`` object used inside the associated
view function.
UserLogout
__________
----------
Raised when a user logs out. This event provides a ``request`` argument
that corresponds to the ``Request`` object used inside the associated
@@ -245,6 +245,17 @@ ExtDisabled
Raised just after an extension has been disabled. The Extension
object is available inside the ``ext`` keyword argument.
GetAnnouncement
---------------
Some places in the interface let plugins add their own announcement
(ie. message). A keyword argument ``target`` is provided to registered
callbacks and indicates the place where the announcement will appear:
* ``loginpage`` : corresponds to the login page
Callbacks listening to this event must return a list of string.
Parameters
==========
+3 -1
View File
@@ -22,7 +22,9 @@ events = ["CreateDomain",
"ExtDisabled",
"UserLogin",
"UserLogout"]
"UserLogout",
"GetAnnouncement"]
callbacks = {}
+1
View File
@@ -0,0 +1 @@
[{"pk": 1, "model": "lib.parameter", "fields": {"name": "stats.IMG_ROOTDIR", "value": "/srv/www/modoboa/static/stats"}}, {"pk": 2, "model": "lib.parameter", "fields": {"name": "webmail.IMAP_SECURED", "value": "no"}}, {"pk": 3, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.AM_PDP_PORT", "value": "9998"}}, {"pk": 4, "model": "lib.parameter", "fields": {"name": "postfix_autoreply.AUTOREPLIES_TIMEOUT", "value": "86400"}}, {"pk": 5, "model": "lib.parameter", "fields": {"name": "sievefilters.AUTHENTICATION_MECH", "value": "AUTO"}}, {"pk": 6, "model": "lib.parameter", "fields": {"name": "general.DEFAULT_TOP_REDIRECTION", "value": "userprefs"}}, {"pk": 7, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.AM_PDP_SOCKET", "value": "/var/amavis/amavisd.sock"}}, {"pk": 8, "model": "lib.parameter", "fields": {"name": "auth.SECRET_KEY", "value": "abcdefghijklmnop"}}, {"pk": 9, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.AM_PDP_MODE", "value": "inet"}}, {"pk": 10, "model": "lib.parameter", "fields": {"name": "webmail.IMAP_PORT", "value": "143"}}, {"pk": 11, "model": "lib.parameter", "fields": {"name": "webmail.SMTP_SECURED_MODE", "value": "none"}}, {"pk": 12, "model": "lib.parameter", "fields": {"name": "admin.STORAGE_PATH", "value": "/srv/vmail"}}, {"pk": 13, "model": "lib.parameter", "fields": {"name": "admin.ITEMS_PER_PAGE", "value": "30"}}, {"pk": 14, "model": "lib.parameter", "fields": {"name": "sievefilters.SERVER", "value": "127.0.0.1"}}, {"pk": 15, "model": "lib.parameter", "fields": {"name": "webmail.SMTP_SERVER", "value": "127.0.0.1"}}, {"pk": 16, "model": "lib.parameter", "fields": {"name": "webmail.MAX_ATTACHMENT_SIZE", "value": "2048"}}, {"pk": 17, "model": "lib.parameter", "fields": {"name": "stats.RRD_ROOTDIR", "value": "/srv/www/modoboa/tmp"}}, {"pk": 18, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.RELEASED_MSGS_CLEANUP", "value": "no"}}, {"pk": 19, "model": "lib.parameter", "fields": {"name": "admin.VIRTUAL_UID", "value": "vmail"}}, {"pk": 20, "model": "lib.parameter", "fields": {"name": "admin.MAILDIR_ROOT", "value": ".maildir"}}, {"pk": 21, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.MAX_MESSAGES_AGE", "value": "14"}}, {"pk": 22, "model": "lib.parameter", "fields": {"name": "webmail.SMTP_PORT", "value": "25"}}, {"pk": 23, "model": "lib.parameter", "fields": {"name": "webmail.SMTP_AUTHENTICATION", "value": "no"}}, {"pk": 24, "model": "lib.parameter", "fields": {"name": "admin.PASSWORD_SCHEME", "value": "crypt"}}, {"pk": 25, "model": "lib.parameter", "fields": {"name": "webmail.IMAP_SERVER", "value": "127.0.0.1"}}, {"pk": 26, "model": "lib.parameter", "fields": {"name": "admin.CREATE_DIRECTORIES", "value": "yes"}}, {"pk": 27, "model": "lib.parameter", "fields": {"name": "amavis_quarantine.AM_PDP_HOST", "value": "localhost"}}, {"pk": 28, "model": "lib.parameter", "fields": {"name": "admin.MAILBOX_TYPE", "value": "maildir"}}, {"pk": 29, "model": "lib.parameter", "fields": {"name": "sievefilters.PORT", "value": "2000"}}, {"pk": 30, "model": "lib.parameter", "fields": {"name": "admin.VIRTUAL_GID", "value": "vmail"}}, {"pk": 31, "model": "lib.parameter", "fields": {"name": "sievefilters.STARTTLS", "value": "no"}}, {"pk": 32, "model": "lib.parameter", "fields": {"name": "stats.LOGFILE", "value": "/var/log/mail.log"}}]
+38 -20
View File
@@ -7,26 +7,10 @@ html, body {
}
#loginbox {
margin: 100px auto;
width: 610px;
padding-bottom: 15px;
background: white;
border: 5px solid #333;
/*-moz-box-shadow: 0 10px 30px #222;*/
-webkit-box-shadow: 0 10px 30px #222;
-moz-border-radius: 10px;
-webkit-border-radius: 5px;
}
#loginbox h2 {
margin: 30px 10px 0 10px;
font-size: small;
}
#loginbox h3 {
font-size: small;
text-align: center;
margin: 100px auto 10px auto;
padding: 0 0 15px 0;
font-size: 1em;
width: 630px;
}
#logo {
@@ -46,6 +30,40 @@ html, body {
width: 300px;
}
.roundedbox {
margin: 10px auto;
padding: 10px;
width: 610px;
background: white;
font-size: 1.1em;
border: 5px solid #333;
border-radius: 10px;
}
.roundedbox h1 {
padding: 0;
margin: 0;
font-size: 1.2em;
text-align: center;
}
.roundedbox h2 {
margin: 30px 10px 0 10px;
font-size: small;
}
.roundedbox h3 {
font-size: small;
text-align: center;
}
.roundedbox a, a:visited {
font-weight: bold;
color: black;
text-decoration: none;
}
.spacer {
clear: both;
}
+5 -3
View File
@@ -16,7 +16,7 @@
</head>
<body>
<div id="loginbox">
<div id="loginbox" class="roundedbox">
<div id="logo">
<img src="{{ MEDIA_URL }}css/modoboa.png" />
{% if error %}
@@ -27,8 +27,7 @@
<div id="test">
<h3>{% trans "Welcome" %}</h3>
<form method="post" action="">
{% include "common/genericform.html" %}
{% include "common/genericform.html" %}
<div class="lastrow" align="center">
<input type="submit" value="login" />
</div>
@@ -37,5 +36,8 @@
</div>
<div class="spacer"></div>
</div>
{% for annoucement in annoucements %}
<div class="roundedbox">{{ annoucement|safe }}</div>
{% endfor %}
</body>
</html>