mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-21 06:18:45 +02:00
#24 : added calendar class for mootools from http://www.electricprism.com/aeron/calendar/.
- some css stuff as well. - selector view implementation for stats plugin (from admin menu)
This commit is contained in:
@@ -7,6 +7,7 @@ This module provides rrdtool support to retreive statistics
|
||||
from postfix log : sent, received, bounced, rejected
|
||||
|
||||
"""
|
||||
import calendar
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.conf.urls.defaults import *
|
||||
@@ -89,6 +90,8 @@ def graph_display(request,dom_id,graph_t=graph_types):
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def adminindex(request):
|
||||
CH = calendar.HTMLCalendar(calendar.MONDAY)
|
||||
CH_print = CH.formatmonth(2009,11)
|
||||
period = request.GET.has_key("period") and request.GET["period"] or "day"
|
||||
domain = request.GET.has_key("domain") and request.GET["domain"] or "global"
|
||||
if domain != "global":
|
||||
@@ -100,8 +103,25 @@ def adminindex(request):
|
||||
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
|
||||
{"name" : "badtraffic", "label" : _("Average bad traffic")},
|
||||
{"name" : "size", "label" : _("Average normal traffic size")}],
|
||||
"periods" : ["day", "week", "month", "year"],
|
||||
"period" : period
|
||||
"periods" : ["day", "week", "month", "year","Custom"],
|
||||
"period" : period, "cal" : CH_print
|
||||
})
|
||||
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def custom_period(request):
|
||||
print "[stats] json get"
|
||||
start = request.GET.has_key("start")
|
||||
if not start:
|
||||
print "[stats] no start selected"
|
||||
return
|
||||
end = request.GET.has_key("end")
|
||||
return _render(request, 'stats/graphs.html', {
|
||||
"domain" : domain,
|
||||
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
|
||||
{"name" : "badtraffic", "label" : _("Average bad traffic")},
|
||||
{"name" : "size", "label" : _("Average normal traffic size")}],
|
||||
"period" : "%s_%s" %(start,end)
|
||||
})
|
||||
|
||||
@login_required
|
||||
@@ -118,6 +138,6 @@ def index(request, dom_id=None):
|
||||
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
|
||||
{"name" : "badtraffic", "label" : _("Average bad traffic")},
|
||||
{"name" : "size", "label" : _("Average normal traffic size")}],
|
||||
"periods" : ["day", "week", "month", "year"],
|
||||
"periods" : ["day", "week", "month", "year","Custom"],
|
||||
"period" : period
|
||||
})
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
{% block html_head %}
|
||||
<script src="/static/js/mootools-more.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/box.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/calendar.css" />
|
||||
<style type="text/css">
|
||||
#graphcontent {
|
||||
margin: 25px auto 10px;
|
||||
@@ -11,7 +12,7 @@
|
||||
}
|
||||
|
||||
#selectors {
|
||||
float: right;
|
||||
float: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -27,6 +28,7 @@ window.addEvent("domready", function() {
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" src="/static/js/calendar.js"></script>
|
||||
{% endblock %}
|
||||
{% block middletitle %}{% trans "Global statistics" %}{% endblock %}
|
||||
{% block content %}
|
||||
@@ -46,7 +48,15 @@ window.addEvent("domready", function() {
|
||||
<option value="{{ p }}" {% ifequal p period %}selected{% endifequal %}>{% getLabel p %}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% ifequal period "Custom" %}
|
||||
{% include "stats/calendar.html" %}
|
||||
{% url extensions.stats.main.adminindex as c_stats_url %}
|
||||
{% endifequal %}
|
||||
</div>
|
||||
{% include "stats/graphs.html" %}
|
||||
<!--
|
||||
<h2>
|
||||
{% trans "Period " %}{% trans period %}
|
||||
</h2>-->
|
||||
{% include "stats/graphs.html" %}</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{% load i18n %}
|
||||
<div id="periodSelector" style="border:1px solid #dddddd;float:right;padding:3px;margin-top:-3px;">
|
||||
<form class="calendarForm" method="post" action="" name="" onSubmit="change()">
|
||||
{% trans "Start" %}: <input id="dateTravelStart" value="" type="text"/>
|
||||
{% trans "End" %}: <input id="dateTravelEnd" value="" type="text" />
|
||||
<input TYPE=SUBMIT VALUE="ok">
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function change() {
|
||||
alert("New period : start = " + $("dateTravelStart").value + " end = " + $("dateTravelEnd").value);
|
||||
{% url extensions.stats.main.custom_period as c_stats_url %}
|
||||
alert("url for json : {{ c_stats_url}} ");
|
||||
|
||||
js = new Request.JSON({url: "{{ c_stats_url }}", onSuccess: function(resp) {
|
||||
alert("html", resp.content);
|
||||
}}).get({"start" : $("dateTravelStart").value, "end" : $("dateTravelEnd").value});
|
||||
};
|
||||
myCal = new Calendar(
|
||||
{
|
||||
dateTravelStart: 'D, d/m/Y',
|
||||
dateTravelEnd : 'D, d/m/Y'
|
||||
},
|
||||
{
|
||||
direction: 0, // -1 past, 0 past + future, 1 future
|
||||
pad:1,
|
||||
offset: 1, // first day of the week: 0 = sunday, 1 = monday, etc..
|
||||
tweak: {x: -147, y: 18}, // tweak calendar positioning
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<!--
|
||||
<form name="calendar">
|
||||
<textarea type="text" rows="0" cols="5">{{ sdate }}</textarea>
|
||||
<textarea type="text" rows="0" cols="5">{{ edate }}</textarea>
|
||||
</select>
|
||||
-->
|
||||
@@ -2,6 +2,7 @@ from django.conf.urls.defaults import *
|
||||
|
||||
urlpatterns = patterns('mailng.extensions.stats.main',
|
||||
url(r'^$', 'adminindex', name='fullindex'),
|
||||
url(r'^custom_period$', 'custom_period'),
|
||||
url(r'^(?P<dom_id>\d+)/$', 'index', name='domindex'),
|
||||
(r'^display/(?P<dom_id>\d+)/(?P<graph_t>\w+)/$', 'graph_display'),
|
||||
(r'^domain/(?P<dom_id>\d+)/$', 'domain'),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
Document : calendar.css
|
||||
Created on : 29.07.2009
|
||||
Author : jens klose
|
||||
Description:
|
||||
example styles for calendar
|
||||
*/
|
||||
.calendarForm{
|
||||
float:right;
|
||||
}
|
||||
.calendar{
|
||||
font-family:verdana,sans-serif;
|
||||
font-size:10px;
|
||||
float:None;
|
||||
}
|
||||
button.calendar{
|
||||
position:relative;
|
||||
top:-3px;
|
||||
left:1px;
|
||||
background-color:transparent;
|
||||
background-image:url(../pics/calendar.gif);
|
||||
border:none;
|
||||
margin: 0px;
|
||||
padding:0px;
|
||||
margin-right:3px;
|
||||
cursor:pointer;
|
||||
width:16px;
|
||||
height:16px;
|
||||
}
|
||||
input.calendar{
|
||||
cursor:pointer;
|
||||
border: 1px solid #87847F;
|
||||
height:12px;
|
||||
width:100px;
|
||||
color: #87847F;
|
||||
}
|
||||
div.calendar{
|
||||
background:white;
|
||||
border: 1px solid #87847F;
|
||||
width:180px
|
||||
}
|
||||
a.footer{
|
||||
color:#474747;
|
||||
padding:2px;
|
||||
}
|
||||
.calendar table{
|
||||
width:100%;
|
||||
}
|
||||
.calendar th,
|
||||
.calendar td{
|
||||
text-align:center;
|
||||
font-size:10px;
|
||||
padding: 0.1em 0.25em 0.1em 0.3em;
|
||||
}
|
||||
.calendar tbody td,
|
||||
.calendar .invalid{
|
||||
color:silver;
|
||||
}
|
||||
.calendar .valid{
|
||||
color:blue;
|
||||
font-weight:bold;
|
||||
}
|
||||
.calendar .valid.hover{
|
||||
background:#FFFF77;
|
||||
cursor:pointer;
|
||||
font-weight:bold;
|
||||
}
|
||||
.calendar caption a,
|
||||
.calendar .next{
|
||||
color:blue;
|
||||
font-weight:bold;
|
||||
padding:2px;
|
||||
}
|
||||
.calendar .next.hover{
|
||||
background:#FFFF77;
|
||||
cursor:pointer;
|
||||
font-weight:bold;
|
||||
}
|
||||
.calendar .prev{
|
||||
color:blue;
|
||||
font-weight:bold;
|
||||
padding:2px;
|
||||
}
|
||||
.calendar .prev.hover{
|
||||
background:#FFFF77;
|
||||
cursor:pointer;
|
||||
font-weight:bold;
|
||||
}
|
||||
.calendar .active,
|
||||
.calendar .hilite,
|
||||
.calendar .inactive{
|
||||
color:white;
|
||||
background-color:#BE3916;
|
||||
font-weight:bold;
|
||||
}
|
||||
.calendar .active,
|
||||
.calendar .inactive{
|
||||
background-color:red;
|
||||
}
|
||||
Reference in New Issue
Block a user