This commit is contained in:
tonio
2010-04-27 09:37:53 +02:00
parent e1c0e0af70
commit c1921f9dc2
5 changed files with 45 additions and 7 deletions
+7 -3
View File
@@ -212,9 +212,13 @@ class IMAPconnector(object):
result[name] = None
return result
def msgseen(self, imapid):
folder, id = imapid.split("/")
self.m.store(id, "+FLAGS", "\\Seen")
def msg_unread(self, folder, msgset):
self.m.select(self._encodefolder(folder), True)
self.m.store(msgset, "-FLAGS", "\\Seen")
def msg_read(self, folder, msgset):
self.m.select(self._encodefolder(folder), True)
self.m.store(msgset, "+FLAGS", "\\Seen")
def msgforwarded(self, folder, imapid):
self.m.select(self._encodefolder(folder), True)
+16 -1
View File
@@ -129,7 +129,7 @@ def viewmail(request, folder, mail_id=None):
def getmailcontent(request, folder, mail_id):
msg = fetchmail(request, folder, mail_id, True)
if "class" in msg.keys() and msg["class"] == "unseen":
IMAPconnector(request).msgseen(msg["imapid"])
IMAPconnector(request).msg_read(*msg["imapid"].split("/"))
email = ImapEmail(msg, mode="html", links="1")
try:
pageid = request.session["page"]
@@ -182,6 +182,21 @@ def delete(request, fdname, mail_id):
mbc.move(mail_id, fdname, "Trash")
return folder(request, fdname, False)
@login_required
def mark(request, name):
if not request.GET.has_key("status") or not request.GET.has_key("ids"):
return
mbc = IMAPconnector(request)
ids = request.GET["ids"].split(',')
msgset = []
for id in ids:
msgset.append(id.split("/")[1])
try:
getattr(mbc, "msg_%s" % request.GET["status"])(name, ",".join(msgset))
except AttributeError:
pass
return folder(request, name, False)
@login_required
def empty(request, name):
mbc = IMAPconnector(request)
+16
View File
@@ -259,6 +259,22 @@ ul.visible {
}
});
buildmarkrequest = function(evt) {
evt.stop();
if (!selectedRows.length) {
return;
}
var ids = new Array();
selectedRows.each(function(item, index) {
ids.include(item.get("id"));
});
current_anchor.parse_string(evt.target.get("href"), true);
current_anchor.updateparams("ids=" + ids.join());
current_anchor.update();
}
$$("a[name=mark-read]").addEvent("click", buildmarkrequest);
$$("a[name=mark-unread]").addEvent("click", buildmarkrequest);
$$("tr").each(function(item) {
new Drag.Move(item, {
droppables: ".droppable",
+4 -2
View File
@@ -65,9 +65,11 @@ def listing_menu(selection, folder, perms):
"class" : "menubardropdown",
"menu" : [
{"name" : "mark-read",
"label" : _("As read")},
"label" : _("As read"),
"url" : reverse(webmail.main.mark, args=[folder]) + "?status=read"},
{"name" : "mark-unread",
"label" : _("As unread")}
"label" : _("As unread"),
"url" : reverse(webmail.main.mark, args=[folder]) + "?status=unread"}
]
}
]
+2 -1
View File
@@ -4,7 +4,8 @@ urlpatterns = patterns('mailng.extensions.webmail.main',
(r'^$', "index"),
(r'^compose/$', "compose"),
(r'^move/$', "move"),
(r'^empty/(?P<name>.+)/', "empty"),
(r'^mark/(?P<name>.+)/$', "mark"),
(r'^empty/(?P<name>.+)/$', "empty"),
(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'),