{% extends "common/email_listing.html" %} {% load i18n %} {% block css %} {% endblock %} {% block js %} quota_pb = new ProgressBar({ container: $("quotabox"), startPercentage: 0, boxID: "box", percentageID: "perc", displayText: true, displayID: "quotatext" }); wm_updatelisting = function(resp) { window.removeEvents("resize"); updatelisting(resp); if ($defined(resp.folders)) { $("folders").set("html", resp.folders); } if ($defined(resp.quota) && resp.quota != "-1") { quota_pb.set(resp.quota); $("quotabox").setStyle("display", "block"); $("quotalabel").setStyle("display", "block"); } $$("a[name=loadfolder]").addEvent("click", foldercallback); $$("a[name=compose]").addEvent("click", loadCompose); }; select = function(obj) { $$("a[name=loadfolder]").each(function(item) { item.getParent().removeClass("selected"); item.getParent().addClass("droppable"); }); obj.getParent().removeClass("droppable"); obj.getParent().addClass("selected"); $$(obj.getParents("ul[class*=hidden]")).each(function(item) { item.removeClass("hidden"); item.addClass("visible"); $$("li[name=" + item.get("name") + "]").each(function(item) { item.setStyle("background", "url('{{ MEDIA_URL }}pics/folder-open.png') no-repeat"); }); }); }; register_callback("viewmail", function(resp) { wm_updatelisting(resp, "hidden"); $$("a[name=back]").addEvent("click", loadFolder); $$("a[name=reply]").addEvent("click", reply); $$("a[name=replyall]").addEvent("click", replyall); $$("a[name=forward]").addEvent("click", forward); $$("a[name=delete]").addEvent("click", function(event) { var lnk = event.target; event.stop(); new Request.JSON({url: lnk.get("href"), onSuccess: function(resp) { current_anchor.parse_string(resp.next).update(); select($$("a[href=" + current_anchor.getbaseurl() + "]")); }}).get(); }); setDivHeight("mailcontent", 5, 0); }); compose_callback = function(resp) { wm_updatelisting(resp); window.addEvent("resize", function(evt) { setDivHeight("id_body", $("mailheader").getSize().y, 0); }); window.fireEvent("resize"); var editormode = resp.editor; var editorid = "id_body"; if (editormode == "html") { var instance = CKEDITOR.instances[editorid]; if (instance) { CKEDITOR.remove(instance); } CKEDITOR.replace(editorid, { customConfig: "{{ MEDIA_URL }}/js/editor_config.js", height: $(editorid).getSize().y }); } $$("a[name=back]").addEvent("click", loadFolder); $$("a[name=sendmail]").addEvent("click", function(evt) { evt.stop(); $("composemail").set("send", { onSuccess: function(resp) { resp = JSON.decode(resp); if (resp.status == "ko") { wm_updatelisting(resp); window.fireEvent("resize"); if ($defined(resp.error)) { infobox.error(resp.error); } return; } current_anchor.parse_string(resp.url, true).setparams(navparams); current_anchor.update(); } }); if (editormode == "html") { CKEDITOR.instances[editorid].updateElement(); } $("composemail").send(); }); var files2upload = new Array(); delete_attachment = function(evt) { var litag = evt.target.getParents("li"); var attachment = litag.get("text"); files2upload.erase(attachment); litag.destroy(); }; $("upload_input").addEvent("change", function(evt) { var atag = new Element("a").set("name", "delete_attachment"); var imgtag = new Element("img").set("src", "{{ MEDIA_URL }}pics/remove.png"); var litag = new Element("li").set("text", evt.target.value); files2upload.include(evt.target.value); imgtag.inject(atag); atag.inject(litag); litag.inject($("files2upload")); atag.addEvent("click", delete_attachment); }); }; loadCompose = function(event) { event.stop(); current_anchor.baseurl("compose").update(); }; register_callback("compose", compose_callback); reply = function(event) { event.stop(); location.hash += event.target.get("href"); }; register_callback("reply", compose_callback); replyall = function(event) { event.stop(); location.hash += event.target.get("href") + "?all=1"; }; register_callback("replyall", compose_callback); forward = function(event) { event.stop(); location.hash += event.target.get("href"); }; register_callback("forward", compose_callback); var rtimer = null; window.addEvent("pageRefresh", function() { $clear(rtimer); }); refreshFolder = function() { var query = current_anchor.serialized.substring(1); $clear(rtimer); infobox.show('{% trans "Reloading..." %}', { profile : "gray", spinner : true }); new Request.JSON({url: query, noCache : true, onSuccess: function(resp) { callback = ($defined(resp.callback)) ? resp.callback : "default"; callbacks[callback](resp); infobox.info('{% trans "Done" %}'); infobox.hide(1); }}).get(); }; loadFolder = function(event, obj) { event.stop(); if (!$defined(obj)) { obj = $(event.target); } current_anchor.parse_string(gethref(obj), true).setparams(navparams); current_anchor.update(); }; register_callback("folder", function(resp) { wm_updatelisting(resp); rtimer = refreshFolder.periodical({{ refreshrate }}); select($$("a[href=" + current_anchor.getbaseurl() + "]")); $$("li[class*=clickable]").removeEvents(); $$("li[class*=clickable]").addEvent("click", function(evt) { $$("ul[name=" + evt.target.get("name") + "]").each(function(item) { if (item.hasClass("hidden")) { evt.target.setStyle("background", "url('{{ MEDIA_URL }}pics/folder-open.png') no-repeat"); item.removeClass("hidden").addClass("visible"); } else { evt.target.setStyle("background", "url('{{ MEDIA_URL }}pics/subfolders.png') no-repeat"); item.removeClass("visible").addClass("hidden"); } }); evt.stop(); }); searchbox_init(); if (navparams.has("order")) { src = navparams.get("order").charAt(0) == "-" ? "down_arrow.png" : "up_arrow.png"; th = $$("th[id=" + navparams.get("order").substring(1) + "]"); th.getElement("img").set("src", "{{ MEDIA_URL }}pics/" + src); th.getElement("img").setStyle("display", "block"); th.addClass("selected"); } var selectedRows = new Array(); var fromrow = -1; var torow = -1; /* The IE way for disabling default selection */ $$("tbody>tr").set("unselectable", "on"); $$("tbody>tr").addEvent("click", function(event) { var tr = $(event.target).getParent(); if (event.shift && fromrow != -1) { var currentrow = parseInt(tr.get("name")); if (fromrow < currentrow) { rangeUp2Down(fromrow, currentrow); } else { rangeDown2Up(fromrow, currentrow); } fromrow = currentrow; return; } fromrow = parseInt(tr.get("name")); toggleSelectRow(tr); }); rangeUp2Down = function(start, end) { for (var i = start + 1; i <= end; i++) { var tr = $$("tr[name=" + i + "]")[0]; toggleSelectRow(tr) } }; rangeDown2Up = function(start, end) { for (var i = start - 1; i >= end; i--) { var tr = $$("tr[name=" + i + "]")[0]; toggleSelectRow(tr) } }; toggleSelectRow = function(tr) { if (!tr.hasClass("selected")) { selectRow(tr); } else { unselectRow(tr, true); } }; selectRow = function(tr) { tr.addClass("selected"); selectedRows.include(tr); tr.setStyle("position", "relative"); makeRowDraggable(tr); }; unselectRow = function(tr, remove) { tr.removeClass("selected"); if (remove) { selectedRows.erase(tr); } tr.setStyle("position", "static"); }; makeRowDraggable = function(item) { new Drag.Move(item, { droppables: ".droppable" }).addEvents({ "start" : function(item) { if (!item.hasClass("selected")) { selectedRows.each(function(item, index) { item.removeClass("selected"); }); selectedRows.empty(); item.addClass("selected"); selectedRows.include(item); } var block = new Element("div", {id: "draggeditems"}) .setStyles({"position" : "absolute", "opacity" : 0.8, "width" : "200px", "padding" : "5px", "text-align" : "center", "height" : "25px", "border" : "1px solid #333", "background" : "white", "z-index" : 3}) .setPosition(item.getPosition()) .inject(document.body); block.set("html", "Moving " + selectedRows.length + " messages"); this.oldelement = this.element; this.element = block; }, "enter" : function(item, droppable) { droppable.addClass("dragging"); }, "leave" : function(item, droppable) { droppable.removeClass("dragging"); }, "drop" : function(item, droppable, event) { item.dispose(); delete(item); if (!droppable) { this.element = this.oldelement; return; } droppable.removeClass("dragging"); dest = gethref(droppable.getFirst("a")); msgset = new Array(); selectedRows.each(function(item, index) { msgset.include(item.get("id")); }); {% url extensions.webmail.views.move as moveurl %} simple_request("{{ moveurl }}", {msgset : msgset.join(), to : dest}); } }); }; simple_request = function(url, params) { infobox.show(gettext("Waiting..."), { profile: "gray", spinner: true }); new Request.JSON({url : url, onSuccess : function(response) { get_callback("folder")(response); infobox.info(gettext("Done")); infobox.hide(1); } }).get(params); }; buildmarkrequest = function(evt) { evt.stop(); if (!selectedRows.length) { return; } var ids = new Array(); selectedRows.each(function(item, index) { ids.include(item.get("id")); }); simple_request(evt.target.get("href"), {ids : ids.join()}); }; $$("a[name=mark-read]").addEvent("click", buildmarkrequest); $$("a[name=mark-unread]").addEvent("click", buildmarkrequest); $$("a[name=fdaction]").addEvent("click", function(evt) { simple_request(evt.target.get("href"), {}); evt.stop(); }); if ($("toggleselect")) { $("toggleselect").addEvent("click", function(evt) { var checked = evt.target.get("checked"); if (checked) { $$("tbody>tr").each(function(item) { selectRow(item); }); } else { $$("tbody>tr").each(function(item) { unselectRow(item, false); }); selectedRows.empty(); } }); } $$("tbody>tr").addEvent("dblclick", viewmail); $$("th[class*=sortable]").addEvent("click", function(evt) { var tmp = "?"; var order = (navparams.has("order")) ? navparams.get("order") : ""; if (order == "") { order = current_anchor.getparam("order"); } if (order.substring(1) == evt.target.id) { var sign = (order.charAt(0) == '+') ? '-' : '+'; order = sign + evt.target.id; } else { order = "-" + evt.target.id; } navparams.set("order", order); current_anchor.setparams(navparams).update(); }); }); foldercallback = function(event) { select(event.target); loadFolder(event, event.target); }; {% endblock %} {% block middletitle %}{% trans "Webmail" %}{% endblock %} {% block leftcol %}