wip: big refactoring

Webmail template tags.
This commit is contained in:
Antoine Nguyen
2013-08-23 10:34:39 +02:00
parent 932431da42
commit a310416632
@@ -10,113 +10,118 @@ from modoboa.lib import parameters
register = template.Library()
@register.simple_tag
def viewmail_menu(selection, folder, user, mail_id=None):
entries = [
{"name" : "reply",
"url" : "action=reply&mbox=%s&mailid=%s" % (folder, mail_id),
"img" : "icon-share",
"label" : _("Reply")},
{"name" : "replyall",
"url" : "action=reply&mbox=%s&mailid=%s&all=1" % (folder, mail_id),
"img" : "",
"label" : _("Reply all")},
{"name" : "forward",
"url" : "action=forward&mbox=%s&mailid=%s" % (folder, mail_id),
"img" : "icon-arrow-right",
"label" : _("Forward")},
{"name" : "delete",
"img" : "icon-trash",
"url" : reverse(webmail.views.delete) + "?mbox=%s&selection[]=%s" % (folder, mail_id),
"label" : _("Delete")},
{"name" : "display_options",
"label" : _("Display options"),
"menu" : [
{"name" : "activate_links",
"label" : _("Activate links")},
{"name" : "disable_links",
"label" : _("Disable links")}
]
{"name": "reply",
"url": "action=reply&mbox=%s&mailid=%s" % (folder, mail_id),
"img": "icon-share",
"label": _("Reply")},
{"name": "replyall",
"url": "action=reply&mbox=%s&mailid=%s&all=1" % (folder, mail_id),
"img": "",
"label": _("Reply all")},
{"name": "forward",
"url": "action=forward&mbox=%s&mailid=%s" % (folder, mail_id),
"img": "icon-arrow-right",
"label": _("Forward")},
{"name": "delete",
"img": "icon-trash",
"url": reverse(webmail.views.delete) + "?mbox=%s&selection[]=%s" % (folder, mail_id),
"label": _("Delete")},
{"name": "display_options",
"label": _("Display options"),
"menu": [
{"name": "activate_links",
"label": _("Activate links")},
{"name": "disable_links",
"label": _("Disable links")}
]
}
]
]
menu = render_to_string('common/buttons_list.html',
{"selection" : selection, "entries" : entries,
"user" : user, "extraclasses" : "pull-left"})
entries = [{"name" : "close",
"title" : _("Close this message"),
"img" : "icon-remove"}]
menu += render_to_string('common/buttons_list.html',
{"entries" : entries, "extraclasses" : "pull-right"})
{"selection": selection, "entries": entries,
"user": user, "extraclasses": "pull-left"})
entries = [{"name": "close",
"title": _("Close this message"),
"img": "icon-remove"}]
menu += render_to_string(
'common/buttons_list.html',
{"entries": entries, "extraclasses": "pull-right"}
)
return menu
@register.simple_tag
def compose_menu(selection, backurl, user):
entries = [
{"name" : "back",
"url" : "javascript:history.go(-2);",
"img" : "icon-arrow-left",
"label" : _("Back")},
{"name" : "sendmail",
"url" : "",
"img" : "icon-envelope",
"label" : _("Send")},
]
{"name": "back",
"url": "javascript:history.go(-2);",
"img": "icon-arrow-left",
"label": _("Back")},
{"name": "sendmail",
"url": "",
"img": "icon-envelope",
"label": _("Send")},
]
return render_to_string('common/buttons_list.html',
{"selection" : selection, "entries" : entries,
"user" : user})
{"selection": selection, "entries": entries,
"user": user})
@register.simple_tag
def listmailbox_menu(selection, folder, user):
entries = [
{"name" : "compose",
"url" : "compose",
"img" : "icon-edit",
"label" : _("New message"),
"class" : "btn"},
{"name": "compose",
"url": "compose",
"img": "icon-edit",
"label": _("New message"),
"class": "btn"},
{"name": "totrash",
"label": "",
"class": "",
"img": "icon-trash",
"url": reverse("modoboa.extensions.webmail.views.delete"),
},
{"name" : "mark",
"label" : _("Mark messages"),
"class" : "btn",
"menu" : [
{"name" : "mark-read",
"label" : _("As read"),
"url" : reverse(webmail.views.mark, args=[folder]) + "?status=read"},
{"name" : "mark-unread",
"label" : _("As unread"),
"url" : reverse(webmail.views.mark, args=[folder]) + "?status=unread"}
]
},
{"name" : "actions",
"label" : _("Actions"),
"class" : "btn",
"menu" : [
{"name" : "compress",
"label" : _("Compress folder"),
"url" : "compact/%s/" % folder}
]
{"name": "mark",
"label": _("Mark messages"),
"class": "btn",
"menu": [
{"name": "mark-read",
"label": _("As read"),
"url": reverse(webmail.views.mark, args=[folder]) + "?status=read"},
{"name": "mark-unread",
"label": _("As unread"),
"url": reverse(webmail.views.mark, args=[folder]) + "?status=unread"}
]
},
]
{"name": "actions",
"label": _("Actions"),
"class": "btn",
"menu": [
{"name": "compress",
"label": _("Compress folder"),
"url": "compact/%s/" % folder}
]
},
]
if folder == parameters.get_user(user, "TRASH_FOLDER"):
entries[1]["class"] += " disabled"
entries[3]["menu"] += [
{"name" : "empty",
"label" : _("Empty folder"),
"url" : reverse(webmail.views.empty, args=[folder])}
]
{"name": "empty",
"label": _("Empty folder"),
"url": reverse(webmail.views.empty, args=[folder])}
]
searchbar = render_to_string('common/email_searchbar.html', {
"STATIC_URL" : settings.STATIC_URL
})
"STATIC_URL": settings.STATIC_URL
})
return render_to_string('common/buttons_list.html', dict(
selection=selection, entries=entries, extracontent=searchbar,
user=user, css="nav"
))
selection=selection, entries=entries, extracontent=searchbar,
user=user, css="nav"
))
@register.simple_tag
def print_mailboxes(tree, selected=None, withunseen=False, selectonly=False):
@@ -128,12 +133,12 @@ def print_mailboxes(tree, selected=None, withunseen=False, selectonly=False):
for mbox in tree:
cssclass = ""
name = mbox["path"] if mbox.has_key("sub") else mbox["name"]
name = mbox["path"] if "sub" in mbox else mbox["name"]
label = separate_mailbox(mbox["name"])[0]
if selected == name:
cssclass = "active"
result += "<li name='%s' class='droppable %s'>\n" % (name, cssclass)
if mbox.has_key("sub"):
if "sub" in mbox:
if selected is not None and selected != name and selected.count(name):
ul_state = "visible"
div_state = "expanded"
@@ -144,46 +149,49 @@ def print_mailboxes(tree, selected=None, withunseen=False, selectonly=False):
cssclass = "block"
extra_attrs = ""
if withunseen and mbox.has_key("unseen"):
if withunseen and "unseen" in mbox:
label += " (%d)" % mbox["unseen"]
cssclass += " unseen"
extra_attrs = ' data-toggle="%d"' % mbox["unseen"]
iclass = mbox["class"] if mbox.has_key("class") else "icon-folder-close"
iclass = mbox["class"] if "class" in mbox else "icon-folder-close"
result += """<a href='%s' class='%s' name='%s'%s>
<i class="%s"></i>
%s
</a>
""" % (mbox.has_key("path") and mbox["path"] or mbox["name"], cssclass,
'selectfolder' if selectonly else 'loadfolder', extra_attrs, iclass, label)
if mbox.has_key("sub") and len(mbox["sub"]):
""" % ("path" in mbox and mbox["path"] or mbox["name"], cssclass,
'selectfolder' if selectonly else 'loadfolder',
extra_attrs, iclass, label)
if "sub" in mbox and len(mbox["sub"]):
result += "<ul name='%s' class='nav nav-list %s'>" % (mbox["path"], ul_state) \
+ print_mailboxes(mbox["sub"], selected, withunseen, selectonly) + "</ul>\n"
result += "</li>\n"
return result
@register.simple_tag
def mboxes_menu():
entries = [
{"name" : "newmbox",
"url" : reverse(webmail.views.newfolder),
"img" : "icon-plus",
"title" : _("Create a new mailbox"),
"modal" : True,
"modalcb" : "webmail.mboxform_cb",
"closecb" : "webmail.mboxform_close",
"class" : "btn btn-mini"},
{"name" : "editmbox",
"url" : reverse(webmail.views.editfolder),
"img" : "icon-edit",
"title" : _("Edit the selected mailbox"),
"class" : "btn btn-mini"},
{"name" : "removembox",
"url" : reverse(webmail.views.delfolder),
"img" : "icon-remove",
"title" : _("Remove the selected mailbox"),
"class" : "btn btn-mini"}
]
{"name": "newmbox",
"url": reverse(webmail.views.newfolder),
"img": "icon-plus",
"title": _("Create a new mailbox"),
"modal": True,
"modalcb": "webmail.mboxform_cb",
"closecb": "webmail.mboxform_close",
"class": "btn btn-mini"},
{"name": "editmbox",
"url": reverse(webmail.views.editfolder),
"img": "icon-edit",
"title": _("Edit the selected mailbox"),
"class": "btn btn-mini"},
{"name": "removembox",
"url": reverse(webmail.views.delfolder),
"img": "icon-remove",
"title": _("Remove the selected mailbox"),
"class": "btn btn-mini"}
]
return render_to_string('common/buttons_list.html', dict(
entries=entries, css="nav"
))
entries=entries, css="nav"
))