This is a forum to suggest new features for mojoPortal.
I would like to see a webmail client added as a module. Let me explain just a bit. I run a SMTP/POP3 server with addresses for my users. Currently, they can access through a client like Outlook, or through another 3rd party Webmail app written in ASP.NET
It would be nice to have that functionality incorporated into the portal so that they can login to their POP3 account from within their Mojoportal session.
Tried modifying existing code as a web part or HTML but, that quickly proved itself to be unwise.
I'm not talking about overdoing it with a program that will rival Yahoo! mail - just taking some of the open source work that's already been developed and adding a module that fits into MojoPortal. The site owner could then provide the whole package for users. The e-mail client can give admins the option to allow connections to any POP3/SMTP server, or be locked down to localhost for those who don't want to open their portals up for abuse.
Just an idea. Your thoughts.
This is an interesting idea. I will add it to my list of modules to look into.
nice feauter !!
I don't see it as a "must have" feature ...... But .... If I needed that, I would use Zimbra.
Combining preauth (http://wiki.zimbra.com/index.php?title=Preauth#.NET_C.23_Code_For_Redirecting_to_Zimbra_Preauth) with admin-api (http://zimbra.svn.sourceforge.net/viewvc/zimbra/trunk/ZimbraServer/docs/soap-admin.txt and http://www.zimbra.com/forums/developers/14017-zimbra-csharp-client-library.html#post151268) seems the way to do it.
I created a simple Admin Webmail page. I have no idea how well this addresses the needs of anyone else, but I needed a way to check webmail from within the mojoPortal admin interface. It simply uses an Iframe control.
This is the code for the page (uses inline, rather than code-behind):
<%@ Page Language="C#" ClassName="Webmail" Inherits="mojoPortal.Web.mojoBasePage" MasterPageFile="~/App_MasterPages/layout.Master" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Drawing" %> <%@ Import Namespace="System.Globalization" %> <%@ Import Namespace="System.Web.UI" %> <%@ Import Namespace="mojoPortal.Business" %> <%@ Import Namespace="mojoPortal.Business" %> <%@ Import Namespace="mojoPortal.Business.WebHelpers" %> <%@ Import Namespace="mojoPortal.Web.Framework" %> <%@ Import Namespace="mojoPortal.Web.Controls" %> <%@ Import Namespace="mojoPortal.Web.Editor" %> <%@ Import Namespace="mojoPortal.Net" %> <%@ Import Namespace="Resources" %> <script runat="server"> protected bool IsAdmin = false; private bool isSiteEditor = false; protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); } protected override void OnInit(EventArgs e) { base.OnInit(e); this.SuppressPageMenu(); } protected void Page_Load(object sender, EventArgs e) { if (SiteUtils.SslIsAvailable()) { SiteUtils.ForceSsl(); } LoadSettings(); if ( (!IsAdmin) && (!isSiteEditor) ) { WebUtils.SetupRedirect(this, SiteRoot + "/AccessDenied.aspx"); return; } PopulateLabels(); } private void LoadSettings() { IsAdmin = WebUser.IsAdmin; isSiteEditor = SiteUtils.UserIsSiteEditor(); AddClassToBody("administration"); } private void PopulateLabels() { Title = SiteUtils.FormatPageTitle(siteSettings, "Webmail"); heading.Text = "Webmail"; lnkAdminMenu.Text = Resource.AdminMenuLink; lnkAdminMenu.NavigateUrl = SiteRoot + "/Admin/AdminMenu.aspx"; lnkThisPage.Text = "Webmail"; lnkThisPage.NavigateUrl = SiteRoot + "/Admin/Webmail.aspx"; } </script> <asp:Content ContentPlaceHolderID="leftContent" ID="MPLeftPane" runat="server" /> <asp:Content ContentPlaceHolderID="mainContent" ID="MPContent" runat="server"> <portal:AdminCrumbContainer ID="pnlAdminCrumbs" runat="server" CssClass="breadcrumbs"> <asp:HyperLink ID="lnkAdminMenu" runat="server" NavigateUrl="~/Admin/AdminMenu.aspx" /> <portal:AdminCrumbSeparator id="AdminCrumbSeparator1" runat="server" Text=" >" EnableViewState="false" /> <asp:HyperLink ID="lnkThisPage" runat="server" CssClass="selectedcrumb" /> </portal:AdminCrumbContainer> <portal:OuterWrapperPanel ID="pnlOuterWrap" runat="server"> <mp:CornerRounderTop id="ctop1" runat="server" EnableViewState="false" /> <portal:InnerWrapperPanel ID="pnlInnerWrap" runat="server" CssClass="panelwrapper "> <portal:HeadingControl ID="heading" runat="server" /> <portal:OuterBodyPanel ID="pnlOuterBody" runat="server"> <portal:InnerBodyPanel ID="pnlInnerBody" runat="server" CssClass="modulecontent"> <iframe id="webmailIframe" runat="server" src="https://email.1and1.com/ox6/ox.html" title="1 & 1 Webmail" height="100%" width="100%"> </iframe> </portal:InnerBodyPanel> </portal:OuterBodyPanel> <portal:EmptyPanel id="divCleared" runat="server" CssClass="cleared" SkinID="cleared"></portal:EmptyPanel> </portal:InnerWrapperPanel> <mp:CornerRounderBottom id="cbottom1" runat="server" EnableViewState="false" /> </portal:OuterWrapperPanel> </asp:Content> <asp:Content ContentPlaceHolderID="rightContent" ID="MPRightPane" runat="server" /> <asp:Content ContentPlaceHolderID="pageEditContent" ID="MPPageEdit" runat="server" />
<%@ Page Language="C#" ClassName="Webmail" Inherits="mojoPortal.Web.mojoBasePage" MasterPageFile="~/App_MasterPages/layout.Master" %>
<%@ Import Namespace="System" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Drawing" %> <%@ Import Namespace="System.Globalization" %> <%@ Import Namespace="System.Web.UI" %> <%@ Import Namespace="mojoPortal.Business" %> <%@ Import Namespace="mojoPortal.Business" %> <%@ Import Namespace="mojoPortal.Business.WebHelpers" %> <%@ Import Namespace="mojoPortal.Web.Framework" %> <%@ Import Namespace="mojoPortal.Web.Controls" %> <%@ Import Namespace="mojoPortal.Web.Editor" %> <%@ Import Namespace="mojoPortal.Net" %> <%@ Import Namespace="Resources" %>
<script runat="server">
protected bool IsAdmin = false; private bool isSiteEditor = false;
protected override void OnPreInit(EventArgs e) {
base.OnPreInit(e); }
protected override void OnInit(EventArgs e) { base.OnInit(e); this.SuppressPageMenu(); }
protected void Page_Load(object sender, EventArgs e) { if (SiteUtils.SslIsAvailable()) { SiteUtils.ForceSsl(); } LoadSettings(); if ( (!IsAdmin) && (!isSiteEditor) ) { WebUtils.SetupRedirect(this, SiteRoot + "/AccessDenied.aspx"); return; }
PopulateLabels(); }
private void LoadSettings() { IsAdmin = WebUser.IsAdmin; isSiteEditor = SiteUtils.UserIsSiteEditor();
AddClassToBody("administration");
}
private void PopulateLabels() { Title = SiteUtils.FormatPageTitle(siteSettings, "Webmail");
heading.Text = "Webmail";
lnkAdminMenu.Text = Resource.AdminMenuLink; lnkAdminMenu.NavigateUrl = SiteRoot + "/Admin/AdminMenu.aspx";
lnkThisPage.Text = "Webmail"; lnkThisPage.NavigateUrl = SiteRoot + "/Admin/Webmail.aspx";
</script>
<asp:Content ContentPlaceHolderID="leftContent" ID="MPLeftPane" runat="server" /> <asp:Content ContentPlaceHolderID="mainContent" ID="MPContent" runat="server"> <portal:AdminCrumbContainer ID="pnlAdminCrumbs" runat="server" CssClass="breadcrumbs"> <asp:HyperLink ID="lnkAdminMenu" runat="server" NavigateUrl="~/Admin/AdminMenu.aspx" /> <portal:AdminCrumbSeparator id="AdminCrumbSeparator1" runat="server" Text=" >" EnableViewState="false" /> <asp:HyperLink ID="lnkThisPage" runat="server" CssClass="selectedcrumb" /> </portal:AdminCrumbContainer> <portal:OuterWrapperPanel ID="pnlOuterWrap" runat="server"> <mp:CornerRounderTop id="ctop1" runat="server" EnableViewState="false" /> <portal:InnerWrapperPanel ID="pnlInnerWrap" runat="server" CssClass="panelwrapper "> <portal:HeadingControl ID="heading" runat="server" /> <portal:OuterBodyPanel ID="pnlOuterBody" runat="server"> <portal:InnerBodyPanel ID="pnlInnerBody" runat="server" CssClass="modulecontent"> <iframe id="webmailIframe" runat="server" src="https://email.1and1.com/ox6/ox.html" title="1 & 1 Webmail" height="100%" width="100%"> </iframe>
</portal:InnerBodyPanel> </portal:OuterBodyPanel> <portal:EmptyPanel id="divCleared" runat="server" CssClass="cleared" SkinID="cleared"></portal:EmptyPanel> </portal:InnerWrapperPanel> <mp:CornerRounderBottom id="cbottom1" runat="server" EnableViewState="false" /> </portal:OuterWrapperPanel> </asp:Content> <asp:Content ContentPlaceHolderID="rightContent" ID="MPRightPane" runat="server" /> <asp:Content ContentPlaceHolderID="pageEditContent" ID="MPPageEdit" runat="server" />
As this page uses in-line code, it does not have to be compiled, so you can just save it as an .aspx file and paste it into your ~/Admin directory for immediate use.
This is the xml to add the link to the admin menu page:
<?xml version="1.0" encoding="utf-8" ?> <adminMenuLinks> <adminMenuLink resourceFile="Webmail" resourceKey="Webmail" url="YOUR WEBSITE URL/Admin/Webmail.aspx" visibleToRoles="Admins" cssClass="YOUR CSS CLASS"/> </adminMenuLinks>
<?xml version="1.0" encoding="utf-8" ?> <adminMenuLinks>
<adminMenuLink resourceFile="Webmail" resourceKey="Webmail" url="YOUR WEBSITE URL/Admin/Webmail.aspx" visibleToRoles="Admins" cssClass="YOUR CSS CLASS"/> </adminMenuLinks>
Save this file asy ANYFILENAME.config (I used notepad) and paste it into ~/Data/Sites/1/supplementaladminmenulinks. You will have to create the 'supplementaladminmenulinks' folder, as it doesn't exist by default. If you need it to be available from other sites, just paste it into ~/Data/Sites/SITE #/supplementaladminmenulinks OR you can add it to all sites (including new sites created) by pasting into ~/Setup/initialcontent/supplementaladminmenulinks folder.
Oops. I missed something. As you can tell, I use 1 and 1 as my hosting provider.
<iframe id="webmailIframe" runat="server" src="YOUR WEBMAIL URL" title="Webmail" height="100%" width="100%"></iframe>
Just replace YOUR WEBMAIL URL with the your webmail provider URL.