# coding: utf-8 from django.utils.translation import ugettext_noop as _, ugettext from django.core.urlresolvers import reverse from modoboa.lib import events, parameters from modoboa.lib.webutils import static_url def load(): parameters.register_app(uparams_opts=dict(needs_mailbox=True)) parameters.register_admin("IMAP_SERVER", type="string", deflt="127.0.0.1", help=_("Address of your IMAP server")) parameters.register_admin("IMAP_SECURED", type="list_yesno", deflt="no", help=_("Use a secured connection to access IMAP server")) parameters.register_admin("IMAP_PORT", type="int", deflt="143", help=_("Listening port of your IMAP server")) parameters.register_admin("SMTP_SERVER", type="string", deflt="127.0.0.1", help=_("Address of your SMTP server")) parameters.register_admin("SMTP_SECURED_MODE", type="list", values=[("none", _("None")), ("starttls", "STARTTLS"), ("ssl", "SSL/TLS")], deflt="none", help=_("Use a secured connection to access SMTP server")) parameters.register_admin("SMTP_PORT", type="int", deflt="25", help=_("Listening port of your SMTP server")) parameters.register_admin("SMTP_AUTHENTICATION", type="list_yesno", deflt="no", help=_("Server needs authentication")) parameters.register_admin("MAX_ATTACHMENT_SIZE", type="int", deflt=2048, help=_("Maximum attachment size in bytes (or KB, MB, GB if specified)")) 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("REFRESH_INTERVAL", type="int", deflt=300, label=_("Listing refresh rate"), help=_("Automatic folder refresh rate (in seconds)")) parameters.register_user("TRASH_FOLDER", type="string", deflt="Trash", label=_("Trash folder"), help=_("Folder where deleted messages go")) parameters.register_user("SENT_FOLDER", type="string", deflt="Sent", label=_("Sent folder"), help=_("Folder where copies of sent messages go")) parameters.register_user("DRAFTS_FOLDER", type="string", deflt="Drafts", label=_("Drafts folder"), help=_("Folder where drafts go")) parameters.register_user("SIGNATURE", type="text", deflt="", label=_("Signature text"), help=_("User defined email signature")) parameters.register_user("EDITOR", type="list", deflt="plain", label=_("Default editor"), values=[("html", "html"), ("plain", "text")], help=_("The default editor to use when composing a message")) parameters.register_user("DISPLAYMODE", type="list", deflt="plain", label=_("Default message display mode"), values=[("html", "html"), ("plain", "text")], help=_("The default mode used when displaying a message")) 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) parameters.unregister_app("webmail") def infos(): return { "name" : "Webmail", "version" : "1.0", "description" : ugettext("Simple IMAP webmail"), "url" : "webmail" } @events.observe("UserMenuDisplay") def menu(target, user): if target != "top_menu": return [] if not user.has_mailbox: return [] return [ {"name" : "webmail", "label" : _("Webmail"), "url" : reverse("modoboa.extensions.webmail.views.index")}, ] @events.observe("Userlogout") def userlogout(request): from lib import IMAPconnector if not request.user.has_mailbox: return try: m = IMAPconnector(user=request.user.username, password=request.session["password"]) except Exception, e: pass else: m.logout()