diff --git a/extensions/webmail/imap_listing.py b/extensions/webmail/imap_listing.py index e095cbf40..6d964678e 100644 --- a/extensions/webmail/imap_listing.py +++ b/extensions/webmail/imap_listing.py @@ -269,7 +269,7 @@ class IMAPconnector(object): imapid = response_part[0].split()[0] flags = imaplib.ParseFlags(response_part[0]) msg = email.message_from_string(response_part[1]) - msg["imapid"] = "%s/%s" % (folder, imapid) + msg["imapid"] = imapid if not "\\Seen" in flags: msg["class"] = "unseen" if "\\Answered" in flags: diff --git a/extensions/webmail/main.py b/extensions/webmail/main.py index 0460c1e14..0c817b469 100644 --- a/extensions/webmail/main.py +++ b/extensions/webmail/main.py @@ -132,16 +132,17 @@ 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).msg_read(*msg["imapid"].split("/")) + #IMAPconnector(request).msg_read(*msg["imapid"].split("/")) + IMAPconnector(request).msg_read(folder, mail_id) email = ImapEmail(msg, mode="html", links="1") try: pageid = request.session["page"] except KeyError: pageid = "1" - folder, imapid = msg["imapid"].split("/") + #folder, imapid = msg["imapid"].split("/") return _render(request, "common/viewmail.html", { "headers" : email.render_headers(folder, mail_id), - "folder" : folder, "imapid" : imapid, "mailbody" : email.body, + "folder" : folder, "imapid" : mail_id, "mailbody" : email.body, "pre" : email.pre }) @@ -170,14 +171,9 @@ def move(request): for arg in ["msgset", "to"]: if not request.GET.has_key(arg): return - msgset = [] - fdname = "" - for item in request.GET["msgset"].split(","): - fdname, id = item.split("/") - msgset += [id] mbc = IMAPconnector(request) - mbc.move(",".join(msgset), fdname, request.GET["to"]) - return folder(request, fdname, False) + mbc.move(request.GET["msgset"], request.session["folder"], request.GET["to"]) + return folder(request, request.session["folder"], False) @login_required def delete(request, fdname, mail_id): @@ -190,12 +186,8 @@ 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)) + getattr(mbc, "msg_%s" % request.GET["status"])(name, request.GET["ids"]) except AttributeError: pass return folder(request, name, False) diff --git a/extensions/webmail/templates/index.html b/extensions/webmail/templates/index.html index 33ef12db3..d4f70f141 100644 --- a/extensions/webmail/templates/index.html +++ b/extensions/webmail/templates/index.html @@ -250,7 +250,7 @@ ul.visible { th.addClass("selected"); } var selectedRows = new Array(); - $$("tr").addEvent("click", function(event) { + $$("tbody>tr").addEvent("click", function(event) { var tr = event.target.getParent(); if (!tr.hasClass("selected")) { tr.addClass("selected"); @@ -270,9 +270,8 @@ ul.visible { 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(); + new Request.JSON({url : evt.target.get("href"), + onSuccess : get_callback("folder")}).get({ids : ids.join()}); } $$("a[name=mark-read]").addEvent("click", buildmarkrequest); $$("a[name=mark-unread]").addEvent("click", buildmarkrequest); @@ -282,7 +281,7 @@ ul.visible { current_anchor.parse_string(evt.target.get("href"), true).update(); }); - $$("tr").each(function(item) { + $$("tbody>tr").each(function(item) { new Drag.Move(item, { droppables: ".droppable", }).addEvents({ @@ -310,13 +309,6 @@ ul.visible { this.oldelement = this.element; this.element = block; }, - "cancel" : function(item) { - if ($defined(this.oldelement)) { - item.dispose(); - delete(item); - this.element = this.oldelement; - } - }, "enter" : function(item, droppable) { droppable.addClass("dragging"); }, @@ -352,13 +344,13 @@ ul.visible { selectedRows.include(item); }); } else { - $$("tr").each(function(item) { item.removeClass("selected"); }); + $$("tbody>tr").each(function(item) { item.removeClass("selected"); }); selectedRows.empty(); } }); } - $$("tr").addEvent("dblclick", viewmail); + $$("tbody>tr").addEvent("dblclick", viewmail); $$("th[class*=sortable]").addEvent("click", function(evt) { var tmp = "?"; var order = (navparams.has("order")) ? navparams.get("order") : ""; diff --git a/static/js/common.js b/static/js/common.js index 7018ca02f..7164fa5da 100644 --- a/static/js/common.js +++ b/static/js/common.js @@ -31,7 +31,8 @@ check_anchor = function() { delete(current_anchor.force); current_anchor.from_string(location.hash); if (!current_anchor.serialized) { - query = current_anchor.deflocation; + location.hash = current_anchor.deflocation; + return; } else { query = current_anchor.serialized.substring(1); } @@ -155,6 +156,11 @@ function HashWrapper(deflocation) { return this; }; + this.addbaseurl = function(value) { + newbase = this.base + value; + return this.baseurl(newbase); + }; + this.getbaseurl = function() { return this.base.substr(0, this.base.length - 1); }; diff --git a/templates/common/email_listing.html b/templates/common/email_listing.html index 1e8fbcbca..49c64928d 100644 --- a/templates/common/email_listing.html +++ b/templates/common/email_listing.html @@ -43,7 +43,7 @@ window.addEvent("domready", function() { if (event.target.parentNode.id) { var url = event.target.parentNode.id + "/"; event.target.parentNode.setStyle("background", "#ffffcc"); - current_anchor.baseurl(url).update(); + current_anchor.addbaseurl(url).update(); } }