From b5693bcef097921afde29b6671f9f681adeb4c67 Mon Sep 17 00:00:00 2001 From: tonio Date: Mon, 3 Jan 2011 14:46:41 +0100 Subject: [PATCH] fixed #81 Added user option + menu entries to enable/disable HTML links display. --- extensions/webmail/main.py | 3 ++ .../webmail/templates/webmail/index.html | 39 ++++++++++++------- extensions/webmail/templatetags/webextras.py | 13 +++++++ extensions/webmail/views.py | 9 ++++- 4 files changed, 48 insertions(+), 16 deletions(-) diff --git a/extensions/webmail/main.py b/extensions/webmail/main.py index c8bcd1c04..0ec493e98 100644 --- a/extensions/webmail/main.py +++ b/extensions/webmail/main.py @@ -57,6 +57,9 @@ def init(): parameters.register_user("MESSAGES_PER_PAGE", type="int", deflt=40, label=_("Number of displayed emails per page"), help=_("Sets the maximum number of messages displayed in a page")) + parameters.register_user("ENABLE_LINKS", type="list_yesno", deflt="no", + label=_("Enable HTML links display"), + help=_("Enable/Disable HTML links display")) def destroy(): events.unregister("UserMenuDisplay", menu) diff --git a/extensions/webmail/templates/webmail/index.html b/extensions/webmail/templates/webmail/index.html index 6ccaaaabd..44e4354e8 100644 --- a/extensions/webmail/templates/webmail/index.html +++ b/extensions/webmail/templates/webmail/index.html @@ -1,3 +1,4 @@ + {% extends "common/email_listing.html" %} {% load i18n %} {% block css %} @@ -19,6 +20,22 @@ if ($defined(resp.folders)) { $("folders").set("html", resp.folders); } + 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(); + }); if ($defined(resp.quota) && resp.quota != "-1") { quota_pb.set(resp.quota); $("quotabox").setStyle("display", "block"); @@ -60,6 +77,14 @@ select($$("a[href=" + current_anchor.getbaseurl() + "]")); }}).get(); }); + $$("a[name=activate_links]").addEvent("click", function(evt) { + evt.stop(); + current_anchor.setparam("links", "1").update(); + }); + $$("a[name=disable_links]").addEvent("click", function(evt) { + evt.stop(); + current_anchor.setparam("links", "0").update(); + }); setDivHeight("mailcontent", 5, 0); }); @@ -187,20 +212,6 @@ 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"; diff --git a/extensions/webmail/templatetags/webextras.py b/extensions/webmail/templatetags/webextras.py index 7f434dc96..bfd310c9b 100644 --- a/extensions/webmail/templatetags/webextras.py +++ b/extensions/webmail/templatetags/webextras.py @@ -32,6 +32,19 @@ def viewm_menu(selection, backurl, folder, mail_id, user): "img" : static_url("pics/remove.png"), "url" : reverse(webmail.views.delete, args=[folder, mail_id]), "label" : _("Delete")}, + {"name" : "display_options", + "label" : _("Display options"), + "img" : static_url("pics/settings.png"), + "class" : "menubardropdown", + "menu" : [ + {"name" : "activate_links", + "label" : _("Activate links"), + "url" : reverse(webmail.views.viewmail, args=[folder, mail_id]) + "?links=1"}, + {"name" : "disable_links", + "label" : _("Disable links"), + "url" : reverse(webmail.views.viewmail, args=[folder, mail_id]) + "?links=0"}, + ] + } ] return render_to_string('common/menu.html', diff --git a/extensions/webmail/views.py b/extensions/webmail/views.py index 326c08b23..c88612260 100644 --- a/extensions/webmail/views.py +++ b/extensions/webmail/views.py @@ -101,9 +101,14 @@ def fetchmail(request, folder, mail_id, all=False): def viewmail(request, folder, mail_id=None): from templatetags.webextras import viewm_menu + if request.GET.has_key("links"): + links = int(request.GET["links"]) + else: + links = parameters.get_user(request.user, "ENABLE_LINKS") == "yes" and 1 or 0 + url = reverse(getmailcontent, args=[folder, mail_id]) + ("?links=%d" % links) content = Template(""" -""").render(Context({"url" : reverse(getmailcontent, args=[folder, mail_id])})) +""").render(Context({"url" : url})) menu = viewm_menu("", __get_current_url(request), folder, mail_id, request.user.get_all_permissions()) mbc = IMAPconnector(user=request.user.username, @@ -119,7 +124,7 @@ def getmailcontent(request, folder, mail_id): if "class" in msg.keys() and msg["class"] == "unseen": IMAPconnector(user=request.user.username, password=request.session["password"]).msg_read(folder, mail_id) - email = ImapEmail(msg, request.user, links="1") + email = ImapEmail(msg, request.user, links=request.GET["links"]) try: pageid = request.session["page"] except KeyError: