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:
tonio
2010-04-27 18:54:24 +02:00
parent 560f8557de
commit ce9ffbbfe5
8 changed files with 47 additions and 10 deletions
+4
View File
@@ -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 []
+6
View File
@@ -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())
+5
View File
@@ -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",
+18 -8
View File
@@ -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})
+1
View File
@@ -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'),
+7
View File
@@ -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

+6 -2
View File
@@ -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>