Top menubar modifications.

see #204
This commit is contained in:
Antoine Nguyen
2012-02-21 17:49:41 +01:00
parent d17e78ad02
commit 97d3996d2e
6 changed files with 80 additions and 33 deletions
+6
View File
@@ -124,6 +124,12 @@ class User(DUser):
def has_mailbox(self):
return len(self.mailbox_set.all()) != 0
@property
def fullname(self):
if self.first_name != "":
return "%s %s" % (self.first_name, self.last_name)
return self.username
def belongs_to_group(self, name):
"""Simple shortcut to check if this user is a member of a
specific group.
+17 -16
View File
@@ -14,46 +14,47 @@ genders = {
@register.simple_tag
def admin_menu(user):
entries = [
{"name" : "admin",
"img" : static_url('pics/admin.png'),
"label" : _("Admin"),
"class" : "topdropdown",
"menu" : []
}
]
# entries = [
# {"name" : "admin",
# "img" : static_url('pics/admin.png'),
# "label" : _("Admin"),
# "class" : "topdropdown",
# "menu" : []
# }
# ]
entries = []
if user.has_perm("admin.view_domains"):
entries[0]["menu"] += [
entries += [
{"name" : "domains",
"url" : reverse(admin.views.domains),
"label" : _("Domains"),
"img" : static_url("pics/domains.png")}
]
elif user.has_perm("admin.view_mailboxes"):
entries[0]["menu"] += [
entries += [
{"name" : "mailboxes",
"url" : reverse(admin.views.domains),
"label" : _("Mailboxes"),
"img" : static_url("pics/mailbox.png")}
]
entries[0]["menu"] += \
entries += \
events.raiseQueryEvent("AdminMenuDisplay", "top_menu", user)
if user.has_perm("auth.view_permissions"):
entries[0]["menu"] += [
entries += [
{"name" : "permissions",
"url" : reverse(admin.views.permissions),
"label" : _("Permissions"),
"label" : _("Accounts"),
"img" : static_url("pics/permissions.png")}
]
if user.is_superuser:
entries[0]["menu"] += [
entries += [
{"name" : "settings",
"img" : static_url("pics/settings.png"),
"label" : _("Settings"),
"label" : _("Modoboa"),
"url" : reverse(admin.views.viewparameters)}
]
if not len(entries[0]["menu"]):
if not len(entries):
return ""
return render_to_string("common/menulist.html",
{"entries" : entries, "user" : user})
+44
View File
@@ -3,8 +3,12 @@ import os
from django.conf import settings
from django import template
from django.contrib import messages
from django.template.loader import render_to_string
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from modoboa.lib import events
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.webutils import static_url
register = template.Library()
@@ -55,3 +59,43 @@ def load_optionalmenu(user):
menu = events.raiseQueryEvent("UserMenuDisplay", "top_menu_middle", user)
return template.loader.render_to_string('common/menulist.html',
{"entries" : menu, "user" : user})
@register.simple_tag
def user_menu(user):
entries = [
{"name" : "user",
"img" : static_url('pics/administrators.png'),
"label" : user.fullname,
"class" : "topdropdown",
"menu" : [
{"name" : "changepwd",
"url" : reverse("modoboa.userprefs.views.changepassword"),
"img" : static_url("pics/edit.png"),
"label" : _("Change password"),
"class" : "boxed",
"rel" : "{handler:'iframe',size:{x:360,y:200},closeBtn:true}"},
{"name" : "preferences",
"img" : static_url("pics/user.png"),
"label" : _("Preferences"),
"url" : reverse("modoboa.userprefs.views.preferences")},
{"name" : "logout",
"url" : reverse("modoboa.auth.views.dologout"),
"label" : _("Logout"),
"img" : static_url("pics/logout.png")}
]
}
]
if user.belongs_to_group('SimpleUsers'):
entries[0]["menu"] += [{
"name" : "setforwards",
"url" : reverse("modoboa.userprefs.views.setforward"),
"img" : static_url("pics/alias.png"),
"label" : _("Forward"),
"class" : "boxed",
"rel" : "{handler:'iframe',size:{x:360,y:350},closeBtn:true}"
}]
entries[0]["menu"] += events.raiseQueryEvent("UserMenuDisplay", "options_menu", user)
return render_to_string("common/menulist.html",
{"entries" : entries, "user" : user})
+5 -1
View File
@@ -29,6 +29,10 @@ div#topmenubar {
bottom: auto;
}
#usermenubox {
margin-right: 5px;
}
div#footer {
position: absolute;
height: 30px;
@@ -247,7 +251,7 @@ div.right {
border-bottom: 5px solid #333;
border-right: 5px solid #333;
border-left: 5px solid #333;
width: 150px;
/*width: 150px;*/
float: left;
position: relative;
z-index: 4;
+5 -1
View File
@@ -72,8 +72,12 @@ function parse_menubar(id) {
duration: 200
});
var coords = elem.getCoordinates();
myFx.wrapper.setStyles({
"position" : "absolute"
position : "absolute",
/*top: 30,*/
left : coords['left']
});
myFx.hide();
+3 -15
View File
@@ -28,26 +28,14 @@
<div class="left" style="width: 50%">
<ul>
{% loadextmenu user %}
{% options_menu user %}
{% admin_menu user %}
{% load_optionalmenu user %}
</ul>
</div>
<div class="right">
<div id="usermenubox" class="right">
<ul>
<li class="title">
{% if user.first_name %}
{{ user.first_name }} {{ user.last_name }}
{% else %}
{{ user.username }}
{% endif %}
/
</li>
<li>
{% url modoboa.auth.views.dologout as logout_url %}
<a href="{{ logout_url }}">
<img src="{{ MEDIA_URL }}pics/logout.png" border="0" />{% trans "Logout" %}</a>
</li>
{% user_menu user %}
</ul>
</div>
</div>