mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Ticket #47
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user