mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +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'),
|
||||
|
||||
@@ -170,6 +170,8 @@ function HashWrapper(deflocation) {
|
||||
|
||||
parse_menubar = function(id) {
|
||||
if ($(id)) {
|
||||
var first = true;
|
||||
|
||||
$(id).getElements('li.dropdown').each(function(elem){
|
||||
var list = elem.getElement('ul.links');
|
||||
var myFx = new Fx.Slide(list, {
|
||||
@@ -190,6 +192,11 @@ parse_menubar = function(id) {
|
||||
myFx.slideOut();
|
||||
}
|
||||
});
|
||||
if (!first) {
|
||||
elem.setStyle("margin-left", "10em");
|
||||
} else {
|
||||
first = false;
|
||||
}
|
||||
});
|
||||
SqueezeBox.assign($$('a.boxed'), {
|
||||
parse: 'rel',
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 540 B |
@@ -5,10 +5,14 @@
|
||||
<li class="dropdown {{ entry.class }}">
|
||||
<img src="{{ entry.img }}" border="0" />
|
||||
<label>{{ entry.label }}</label>
|
||||
<ul class="links">
|
||||
<ul class="links"
|
||||
{% if entry.width %}style="width: {{ entry.width }}px"{% endif %}>
|
||||
{% for sentry in entry.menu %}
|
||||
<li>
|
||||
<a href="{{ sentry.url }}" name="{{ sentry.name }}">{{ sentry.label }}</a>
|
||||
<a href="{{ sentry.url }}" name="{{ sentry.name }}">
|
||||
<img src="{{ sentry.img }}" border="0" />
|
||||
{{ sentry.label }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user