mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-20 06:08:35 +02:00
New "actions" menu in folder listing. Available operations are :
* compact folder (ie. expunge IMAP command) * empty folder (only for Trash, we need to do it)
This commit is contained in:
@@ -241,6 +241,10 @@ class IMAPconnector(object):
|
||||
self.m.store(num, "+FLAGS", "\\Deleted")
|
||||
self.m.expunge()
|
||||
|
||||
def compact(self, folder):
|
||||
self.m.select(self._encodefolder(folder))
|
||||
self.m.expunge()
|
||||
|
||||
def fetch(self, start=None, stop=None, folder=None, all=False):
|
||||
if not start and not stop:
|
||||
return []
|
||||
|
||||
@@ -206,6 +206,12 @@ def empty(request, name):
|
||||
mbc.empty(name)
|
||||
return folder(request, name, False)
|
||||
|
||||
@login_required
|
||||
def compact(request, name):
|
||||
mbc = IMAPconnector(request)
|
||||
mbc.compact(name)
|
||||
return folder(request, name, False)
|
||||
|
||||
def render_compose(request, form, posturl, bodyheader=None, body=None):
|
||||
menu = compose_menu("", __get_current_url(request),
|
||||
request.user.get_all_permissions())
|
||||
|
||||
@@ -279,6 +279,11 @@ ul.visible {
|
||||
$$("a[name=mark-read]").addEvent("click", buildmarkrequest);
|
||||
$$("a[name=mark-unread]").addEvent("click", buildmarkrequest);
|
||||
|
||||
$$("a[name=fdaction]").addEvent("click", function(evt) {
|
||||
evt.stop();
|
||||
current_anchor.parse_string(evt.target.get("href"), true).update();
|
||||
});
|
||||
|
||||
$$("tr").each(function(item) {
|
||||
new Drag.Move(item, {
|
||||
droppables: ".droppable",
|
||||
|
||||
@@ -59,7 +59,7 @@ def listing_menu(selection, folder, perms):
|
||||
"url" : reverse(webmail.main.compose),
|
||||
"img" : "/static/pics/edit.png",
|
||||
"label" : _("New message")},
|
||||
{"name" : "actions",
|
||||
{"name" : "mark",
|
||||
"img" : "/static/pics/domains.png",
|
||||
"label" : _("Mark messages"),
|
||||
"class" : "menubardropdown",
|
||||
@@ -71,15 +71,25 @@ def listing_menu(selection, folder, perms):
|
||||
"label" : _("As unread"),
|
||||
"url" : reverse(webmail.main.mark, args=[folder]) + "?status=unread"}
|
||||
]
|
||||
},
|
||||
{"name" : "actions",
|
||||
"img" : "/static/pics/settings.png",
|
||||
"label" : _("Actions"),
|
||||
"class" : "menubardropdown",
|
||||
"width" : "150",
|
||||
"menu" : [
|
||||
{"name" : "fdaction",
|
||||
"label" : _("Compact folder"),
|
||||
"img" : "/static/pics/compress.png",
|
||||
"url" : "compact/%s/" % folder},
|
||||
{"name" : "fdaction",
|
||||
"label" : _("Empty folder"),
|
||||
"img" : "/static/pics/clear.png",
|
||||
"url" : folder == "Trash" \
|
||||
and reverse(webmail.main.empty, args=[folder]) or ""}
|
||||
]
|
||||
}
|
||||
]
|
||||
if folder in ["Trash"]:
|
||||
entries += [
|
||||
{"name" : "empty",
|
||||
"url" : reverse(webmail.main.empty, args=[folder]),
|
||||
"img" : "/static/pics/clear.png",
|
||||
"label" : _("Empty trash")}
|
||||
]
|
||||
menu = render_to_string("main/menu.html",
|
||||
{"selection" : selection, "entries" : entries,
|
||||
"perms" : perms})
|
||||
|
||||
@@ -6,6 +6,7 @@ urlpatterns = patterns('mailng.extensions.webmail.main',
|
||||
(r'^move/$', "move"),
|
||||
(r'^mark/(?P<name>.+)/$', "mark"),
|
||||
(r'^empty/(?P<name>.+)/$', "empty"),
|
||||
(r'^compact/(?P<name>.+)/$', "compact"),
|
||||
(r'^(?P<folder>.+)/(?P<mail_id>[\w\-\+]+)/part/$', 'getattachment'),
|
||||
(r'^(?P<fdname>.+)/(?P<mail_id>[\w\-\+]+)/delete/$', 'delete'),
|
||||
(r'^(?P<folder>.+)/(?P<mail_id>[\w\-\+]+)/content/$', 'getmailcontent'),
|
||||
|
||||
Reference in New Issue
Block a user