[Nmailserver-commits] SF.net SVN: nmailserver: [122] NMail/trunk/NMail
Brought to you by:
dframpton-oss,
tmyroadctfig
|
From: <tmy...@us...> - 2007-01-21 06:15:01
|
Revision: 122
http://svn.sourceforge.net/nmailserver/?rev=122&view=rev
Author: tmyroadctfig
Date: 2007-01-20 22:14:55 -0800 (Sat, 20 Jan 2007)
Log Message:
-----------
Got an initial subscribed folder list and mail list working.
Modified Paths:
--------------
NMail/trunk/NMail/DataTypes/LocalStore/ILocalStore.cs
NMail/trunk/NMail/DataTypes/LocalStore/ILocalStoreData.cs
NMail/trunk/NMail.ImapService/State/ExamineState.cs
NMail/trunk/NMail.LocalStore/LocalStore.cs
NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
NMail/trunk/NMail.RemoteAccessService/App_Code/RemoteAccessService.cs
NMail/trunk/NMail.RemoteAccessService.Serializers/NMail.RemoteAccessService.Serializers.csproj
NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.css
NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.skin
NMail/trunk/NMail.WebAccess/App_WebReferences/RemoteAccessService/RemoteAccessService.wsdl
NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx
NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx.cs
NMail/trunk/NMail.WebAccess/Mail.aspx
Added Paths:
-----------
NMail/trunk/NMail.RemoteAccessService.Serializers/DataTypes/EnvelopeSerializer.cs
NMail/trunk/NMail.WebAccess/App_Code/MailListDataSource.cs
NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx
NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx.cs
Modified: NMail/trunk/NMail/DataTypes/LocalStore/ILocalStore.cs
===================================================================
--- NMail/trunk/NMail/DataTypes/LocalStore/ILocalStore.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail/DataTypes/LocalStore/ILocalStore.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -214,9 +214,9 @@
/// Gets a list of message Ids for a given folder.
/// </summary>
/// <param name="authToken">The authentication credentials.</param>
- /// <param name="folder">The folder the message is in.</param>
+ /// <param name="folderId">The Id of the folder the message is in.</param>
/// <returns>The list of messages in the folder.</returns>
- List<int> GetMessageIds(IAuthenticationToken authToken, StoreFolder folder);
+ List<int> GetMessageIds(IAuthenticationToken authToken, int folderId);
#endregion
#region Message Flags
@@ -264,9 +264,9 @@
/// </summary>
/// <param name="authToken">The authentication credentials.</param>
/// <param name="messageId">The Id of the message to get the headers for.</param>
- /// <param name="folder">The folder the message is in.</param>
+ /// <param name="folderId">The Id of folder the message is in.</param>
/// <returns>The message headers or null if none exist.</returns>
- MessageHeaders GetMessageHeaders(IAuthenticationToken authToken, int messageId, StoreFolder folder);
+ MessageHeaders GetMessageHeaders(IAuthenticationToken authToken, int messageId, int folderId);
/// <summary>
/// Gets a specific MIME part from the message.
Modified: NMail/trunk/NMail/DataTypes/LocalStore/ILocalStoreData.cs
===================================================================
--- NMail/trunk/NMail/DataTypes/LocalStore/ILocalStoreData.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail/DataTypes/LocalStore/ILocalStoreData.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -161,9 +161,9 @@
/// <summary>
/// Gets a list of message Ids for a given folder.
/// </summary>
- /// <param name="folder">The folder the message is in.</param>
+ /// <param name="folderId">The Id of the folder the message is in.</param>
/// <returns>The list of messages in the folder.</returns>
- List<int> GetMessageIds(StoreFolder folder);
+ List<int> GetMessageIds(int folderId);
#endregion
#region Message Flags
@@ -206,9 +206,9 @@
/// Gets the headers for the message.
/// </summary>
/// <param name="messageId">The Id of the message to get the headers for.</param>
- /// <param name="folder">The folder the message is in.</param>
+ /// <param name="folderId">The Id of the folder the message is in.</param>
/// <returns>The message headers or null if none exist.</returns>
- MessageHeaders GetMessageHeaders(int messageId, StoreFolder folder);
+ MessageHeaders GetMessageHeaders(int messageId, int folderId);
/// <summary>
/// Gets a specific MIME part from the message.
Modified: NMail/trunk/NMail.ImapService/State/ExamineState.cs
===================================================================
--- NMail/trunk/NMail.ImapService/State/ExamineState.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.ImapService/State/ExamineState.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -155,7 +155,7 @@
#region ensureMessageHeaders
protected virtual void ensureMessageHeaders(int messageUid, ref MessageHeaders messageHeaders) {
if (messageHeaders == null) {
- messageHeaders = this.LocalStore.GetMessageHeaders(Session.AuthenticationToken, messageUid, this.selectedFolder);
+ messageHeaders = this.LocalStore.GetMessageHeaders(Session.AuthenticationToken, messageUid, this.selectedFolder.FolderId);
}
}
#endregion
@@ -525,7 +525,7 @@
#region Search Command
public override void ProcessCommand(SearchCommand cmd) {
// Get a list of Ids for the folder
- List<int> messageUids = LocalStore.GetMessageIds(Session.AuthenticationToken, Session.SelectedFolder);
+ List<int> messageUids = LocalStore.GetMessageIds(Session.AuthenticationToken, Session.SelectedFolder.FolderId);
// Check if there was any messages in the folder
if (messageUids.Count > 0) {
Modified: NMail/trunk/NMail.LocalStore/LocalStore.cs
===================================================================
--- NMail/trunk/NMail.LocalStore/LocalStore.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.LocalStore/LocalStore.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -695,13 +695,13 @@
#region Get Message Ids
- public List<int> GetMessageIds(IAuthenticationToken authToken, StoreFolder folder) {
+ public List<int> GetMessageIds(IAuthenticationToken authToken, int folderId) {
// Ensure the user has rights to get the message Id
- if (hasFolderPrivilege(authToken.Username, folder.FolderId, StoreFolderPrivilege.Read)) {
+ if (hasFolderPrivilege(authToken.Username, folderId, StoreFolderPrivilege.Read)) {
// Return the message Id
- return LocalStoreData.GetMessageIds(folder);
+ return LocalStoreData.GetMessageIds(folderId);
} else {
return new List<int>();
@@ -836,15 +836,15 @@
/// </summary>
/// <param name="authToken">The authentication credentials.</param>
/// <param name="messageId">The Id of the message to get the headers for.</param>
- /// <param name="folder">The folder the message is in.</param>
+ /// <param name="folderId">The Id of the folder the message is in.</param>
/// <returns>The message headers or null if none exist.</returns>
- public MessageHeaders GetMessageHeaders(IAuthenticationToken authToken, int messageId, StoreFolder folder) {
+ public MessageHeaders GetMessageHeaders(IAuthenticationToken authToken, int messageId, int folderId) {
// Ensure the user has rights to get the message headers
- if (hasFolderPrivilege(authToken.Username, folder.FolderId, StoreFolderPrivilege.Read)) {
+ if (hasFolderPrivilege(authToken.Username, folderId, StoreFolderPrivilege.Read)) {
// Return the message headers
- return LocalStoreData.GetMessageHeaders(messageId, folder);
+ return LocalStoreData.GetMessageHeaders(messageId, folderId);
} else {
return null;
Modified: NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
===================================================================
--- NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -554,13 +554,13 @@
#endregion
#region GetMessageIds
- public List<int> GetMessageIds(StoreFolder folder) {
+ public List<int> GetMessageIds(int folderId) {
List<int> result = new List<int>();
using (MySqlConnection cnn = MySqlHelper.GetConnection()) {
using (MySqlCommand cmd = cnn.CreateCommand()) {
cmd.CommandText = "SELECT FolderMessageId FROM Message WHERE FolderId = ?FolderId";
- cmd.Parameters.Add("?FolderId", folder.FolderId);
+ cmd.Parameters.Add("?FolderId", folderId);
MySqlDataReader reader = cmd.ExecuteReader();
@@ -647,11 +647,11 @@
#endregion
#region GetMessageHeaders
- public MessageHeaders GetMessageHeaders(int messageId, StoreFolder folder) {
+ public MessageHeaders GetMessageHeaders(int messageId, int folderId) {
using (MySqlConnection cnn = MySqlHelper.GetConnection()) {
using (MySqlCommand cmd = cnn.CreateCommand()) {
cmd.CommandText = "SELECT Headers FROM Message WHERE FolderId = ?FolderId AND FolderMessageId = ?FolderMessageId";
- cmd.Parameters.Add("?FolderId", folder.FolderId);
+ cmd.Parameters.Add("?FolderId", folderId);
cmd.Parameters.Add("?FolderMessageId", messageId);
byte[] headerBytes = (byte[]) cmd.ExecuteScalar();
@@ -691,7 +691,7 @@
SByte sb = (SByte) cmd.ExecuteScalar();
bool mimeMessage = (sb == 1) ? true : false;
Message result = null;
- MessageHeaders headers = this.GetMessageHeaders(messageId, folder);
+ MessageHeaders headers = this.GetMessageHeaders(messageId, folder.FolderId);
if (mimeMessage) {
cmd.CommandText = "SELECT Preamble, Postamble FROM Message WHERE FolderId = ?FolderId AND FolderMessageId = ?FolderMessageId";
Modified: NMail/trunk/NMail.RemoteAccessService/App_Code/RemoteAccessService.cs
===================================================================
--- NMail/trunk/NMail.RemoteAccessService/App_Code/RemoteAccessService.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.RemoteAccessService/App_Code/RemoteAccessService.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -3,10 +3,14 @@
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
+using System.Xml;
+using System.Xml.Serialization;
using NMail.Authentication;
+using NMail.DataTypes;
using NMail.DataTypes.LocalStore;
using NMail.Server;
+using NMail.RemoteAccessService.Serializers.DataTypes;
using NMail.RemoteAccessService.Serializers.DataTypes.LocalStore;
/// <summary>
@@ -214,6 +218,37 @@
}
#endregion
+ #region GetAllMessageEnvelopes
+ /// <summary>
+ /// Gets all message envelopes and message Ids for a given folder.
+ /// </summary>
+ /// <param name="authToken">The authentication credentials.</param>
+ /// <param name="folderId">The folder to get the envelopes for.</param>
+ /// <returns>The list of envelopes.</returns>
+ [WebMethod]
+ public List<KeyValuePair<int, EnvelopeSerializer>> GetAllMessageEnvelopes(string authToken, int folderId)
+ {
+ IAuthenticationToken token = ValidateAuthenticationToken(authToken);
+ if (token != null)
+ {
+ List<KeyValuePair<int, EnvelopeSerializer>> result = new List<KeyValuePair<int, EnvelopeSerializer>>();
+ List<int> messageIds = ServiceState.remoteAdmin.NMailServer.LocalStore.GetMessageIds(token, folderId);
+
+ foreach (int messageId in messageIds)
+ {
+ MessageHeaders headers = ServiceState.remoteAdmin.NMailServer.LocalStore.GetMessageHeaders(token, messageId, folderId);
+ Envelope e = new Envelope(headers);
+
+ result.Add(new KeyValuePair<int, EnvelopeSerializer>(messageId, new EnvelopeSerializer(e)));
+ }
+
+ return result;
+ }
+
+ throw new InvalidOperationException("Authentication token is not valid.");
+ }
+ #endregion
+
protected IAuthenticationToken ValidateAuthenticationToken(string authToken)
{
Guid key = new Guid(Convert.FromBase64String(authToken));
@@ -233,4 +268,32 @@
return null;
}
+
+ [XmlRoot("KeyValuePair")]
+ [SoapType(IncludeInSchema = true, Namespace = "http://nmailserver.sf.net/RemoteAccessService/1.0", TypeName = "KeyValuePair")]
+ public class KeyValuePair<TKey, TValue>
+ {
+ public KeyValuePair() {}
+
+ public KeyValuePair(TKey key, TValue value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ private TKey key;
+
+ public TKey Key
+ {
+ get { return key;}
+ set { key = value;}
+ }
+
+ private TValue value;
+
+ public TValue Value
+ {
+ get { return value;}
+ set { value = value;}
+ }
+ }
}
Added: NMail/trunk/NMail.RemoteAccessService.Serializers/DataTypes/EnvelopeSerializer.cs
===================================================================
--- NMail/trunk/NMail.RemoteAccessService.Serializers/DataTypes/EnvelopeSerializer.cs (rev 0)
+++ NMail/trunk/NMail.RemoteAccessService.Serializers/DataTypes/EnvelopeSerializer.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+
+using NMail.DataTypes;
+
+namespace NMail.RemoteAccessService.Serializers.DataTypes {
+ /// <summary>
+ /// A simple XML serializer for the message envelope type.
+ /// </summary>
+ [XmlRoot("Envelope")]
+ [SoapType(IncludeInSchema = true, Namespace = "http://nmailserver.sf.net/RemoteAccessService/1.0", TypeName = "Envelope")]
+ public class EnvelopeSerializer {
+ public EnvelopeSerializer() { }
+
+ public EnvelopeSerializer(Envelope envelope) {
+ this.bcc = envelope.Bcc;
+ this.cc = envelope.Cc;
+ this.date = envelope.Date;
+ this.from = envelope.From;
+ this.inReplyTo = envelope.InReplyTo;
+ this.messageId = envelope.MessageId;
+ this.replyTo = envelope.ReplyTo;
+ this.sender = envelope.Sender;
+ this.subject = envelope.Subject;
+ this.to = envelope.To;
+ }
+
+ private string bcc;
+
+ public string Bcc {
+ get { return bcc; }
+ set { bcc = value; }
+ }
+
+ private string cc;
+
+ public string Cc {
+ get { return cc; }
+ set { cc = value; }
+ }
+
+ private string date;
+
+ public string Date {
+ get { return date; }
+ set { date = value; }
+ }
+
+ private string from;
+
+ public string From {
+ get { return from; }
+ set { from = value; }
+ }
+
+ private string inReplyTo;
+
+ public string InReplyTo {
+ get { return inReplyTo; }
+ set { inReplyTo = value; }
+ }
+
+ private string messageId;
+
+ public string MessageId {
+ get { return messageId; }
+ set { messageId = value; }
+ }
+
+ private string replyTo;
+
+ public string ReplyTo {
+ get { return replyTo; }
+ set { replyTo = value; }
+ }
+
+ private string sender;
+
+ public string Sender {
+ get { return sender; }
+ set { sender = value; }
+ }
+
+ private string subject;
+
+ public string Subject {
+ get { return subject; }
+ set { subject = value; }
+ }
+
+ private string to;
+
+ public string To {
+ get { return to; }
+ set { to = value; }
+ }
+ }
+}
Modified: NMail/trunk/NMail.RemoteAccessService.Serializers/NMail.RemoteAccessService.Serializers.csproj
===================================================================
--- NMail/trunk/NMail.RemoteAccessService.Serializers/NMail.RemoteAccessService.Serializers.csproj 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.RemoteAccessService.Serializers/NMail.RemoteAccessService.Serializers.csproj 2007-01-21 06:14:55 UTC (rev 122)
@@ -33,6 +33,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="DataTypes\EnvelopeSerializer.cs" />
<Compile Include="DataTypes\LocalStore\StoreFolderSerializer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
Added: NMail/trunk/NMail.WebAccess/App_Code/MailListDataSource.cs
===================================================================
--- NMail/trunk/NMail.WebAccess/App_Code/MailListDataSource.cs (rev 0)
+++ NMail/trunk/NMail.WebAccess/App_Code/MailListDataSource.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -0,0 +1,35 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+using System.Web.SessionState;
+
+using RemoteAccessService;
+
+namespace NMail.WebAcess
+{
+ public static class MailListDataSource
+ {
+ public static KeyValuePairOfInt32EnvelopeSerializer[] GetMessageEnvelopes(int folderId)
+ {
+ try
+ {
+ IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
+ string authToken = (string)session["AuthToken"];
+ RemoteAccessService.RemoteAccessService ras = (RemoteAccessService.RemoteAccessService)session["RAS"];
+
+ return ras.GetAllMessageEnvelopes(authToken, folderId);
+
+ }
+ catch (Exception)
+ {
+ return null;
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.css
===================================================================
--- NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.css 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.css 2007-01-21 06:14:55 UTC (rev 122)
@@ -37,4 +37,22 @@
.SubscribedFolderUnread
{
font-weight: bold;
+}
+
+.MailList
+{
+ width: 100%;
+}
+
+.MailListSelectedItem
+{
+ background-color: lightblue;
+}
+
+.MailListRow {}
+.MailListAlternatingRow {}
+
+.MailListHeader
+{
+ background-color: buttonface;
}
\ No newline at end of file
Modified: NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.skin
===================================================================
--- NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.skin 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/App_Themes/Default/Default.skin 2007-01-21 06:14:55 UTC (rev 122)
@@ -15,3 +15,5 @@
--%>
<asp:Image runat="server" SkinId="LoginBanner" ImageUrl="~/Images/Skins/Default/LoginBanner.jpg" />
+
+<%-- <asp:GridView runat="server" SkinId="MailList" Width="100%" /> --%>
\ No newline at end of file
Modified: NMail/trunk/NMail.WebAccess/App_WebReferences/RemoteAccessService/RemoteAccessService.wsdl
===================================================================
--- NMail/trunk/NMail.WebAccess/App_WebReferences/RemoteAccessService/RemoteAccessService.wsdl 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/App_WebReferences/RemoteAccessService/RemoteAccessService.wsdl 2007-01-21 06:14:55 UTC (rev 122)
@@ -115,6 +115,46 @@
<s:element minOccurs="0" maxOccurs="unbounded" name="ArrayOfInt" nillable="true" type="tns:ArrayOfInt" />
</s:sequence>
</s:complexType>
+ <s:element name="GetAllMessageEnvelopes">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="authToken" type="s:string" />
+ <s:element minOccurs="1" maxOccurs="1" name="folderId" type="s:int" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="GetAllMessageEnvelopesResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="GetAllMessageEnvelopesResult" type="tns:ArrayOfKeyValuePairOfInt32EnvelopeSerializer" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:complexType name="ArrayOfKeyValuePairOfInt32EnvelopeSerializer">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValuePairOfInt32EnvelopeSerializer" nillable="true" type="tns:KeyValuePairOfInt32EnvelopeSerializer" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="KeyValuePairOfInt32EnvelopeSerializer">
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="Key" type="s:int" />
+ <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:EnvelopeSerializer" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="EnvelopeSerializer">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="Bcc" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Cc" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Date" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="From" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="InReplyTo" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="MessageId" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="ReplyTo" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Sender" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Subject" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="To" type="s:string" />
+ </s:sequence>
+ </s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="AuthenticateSoapIn">
@@ -153,6 +193,12 @@
<wsdl:message name="GetFolderMessageCountsSoapOut">
<wsdl:part name="parameters" element="tns:GetFolderMessageCountsResponse" />
</wsdl:message>
+ <wsdl:message name="GetAllMessageEnvelopesSoapIn">
+ <wsdl:part name="parameters" element="tns:GetAllMessageEnvelopes" />
+ </wsdl:message>
+ <wsdl:message name="GetAllMessageEnvelopesSoapOut">
+ <wsdl:part name="parameters" element="tns:GetAllMessageEnvelopesResponse" />
+ </wsdl:message>
<wsdl:portType name="RemoteAccessServiceSoap">
<wsdl:operation name="Authenticate">
<wsdl:input message="tns:AuthenticateSoapIn" />
@@ -178,6 +224,10 @@
<wsdl:input message="tns:GetFolderMessageCountsSoapIn" />
<wsdl:output message="tns:GetFolderMessageCountsSoapOut" />
</wsdl:operation>
+ <wsdl:operation name="GetAllMessageEnvelopes">
+ <wsdl:input message="tns:GetAllMessageEnvelopesSoapIn" />
+ <wsdl:output message="tns:GetAllMessageEnvelopesSoapOut" />
+ </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RemoteAccessServiceSoap" type="tns:RemoteAccessServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
@@ -235,6 +285,15 @@
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
+ <wsdl:operation name="GetAllMessageEnvelopes">
+ <soap:operation soapAction="http://nmailserver.sf.net/RemoteAccessService/1.0/GetAllMessageEnvelopes" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
</wsdl:binding>
<wsdl:binding name="RemoteAccessServiceSoap12" type="tns:RemoteAccessServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
@@ -292,6 +351,15 @@
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
+ <wsdl:operation name="GetAllMessageEnvelopes">
+ <soap12:operation soapAction="http://nmailserver.sf.net/RemoteAccessService/1.0/GetAllMessageEnvelopes" style="document" />
+ <wsdl:input>
+ <soap12:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
</wsdl:binding>
<wsdl:service name="RemoteAccessService">
<wsdl:port name="RemoteAccessServiceSoap" binding="tns:RemoteAccessServiceSoap">
Added: NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx
===================================================================
--- NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx (rev 0)
+++ NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx 2007-01-21 06:14:55 UTC (rev 122)
@@ -0,0 +1,41 @@
+<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MailList.ascx.cs" Inherits="Controls_Mail_MailList" %>
+<asp:GridView
+ SkinID="MailList"
+ AutoGenerateColumns="false"
+ ID="MailListGridView"
+ runat="server"
+ HeaderStyle-CssClass="MailListHeader"
+ RowStyle-CssClass="MailListRow"
+ AlternatingRowStyle-CssClass="MailListAlternatingRow"
+ SelectedRowStyle-CssClass="MailListSelectedItem"
+ CssClass="MailList"
+ Width="100%"
+ DataSourceID="MailListDataSource">
+
+ <Columns>
+ <asp:TemplateField HeaderText="From">
+ <ItemTemplate><%# Eval("Value.From") %></ItemTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Subject">
+ <ItemTemplate><%# Eval("Value.Subject") %></ItemTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Date">
+ <ItemTemplate><%# Eval("Value.Date") %></ItemTemplate>
+ </asp:TemplateField>
+ </Columns>
+
+ <EmptyDataTemplate>
+ This folder does not contain any messages.
+ </EmptyDataTemplate>
+ <RowStyle CssClass="MailListRow" />
+ <SelectedRowStyle CssClass="MailListSelectedItem" />
+ <HeaderStyle CssClass="MailListHeader" />
+ <AlternatingRowStyle CssClass="MailListAlternatingRow" />
+</asp:GridView>
+
+<asp:ObjectDataSource ID="MailListDataSource" runat="server" SelectMethod="GetMessageEnvelopes" TypeName="NMail.WebAcess.MailListDataSource" >
+ <SelectParameters>
+ <asp:SessionParameter DefaultValue="0" Name="folderId" SessionField="SelectedFolderId"
+ Type="Int32" />
+ </SelectParameters>
+</asp:ObjectDataSource>
Added: NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx.cs
===================================================================
--- NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx.cs (rev 0)
+++ NMail/trunk/NMail.WebAccess/Controls/Mail/MailList.ascx.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -0,0 +1,93 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Collections;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+public partial class Controls_Mail_MailList : System.Web.UI.UserControl, IWebPart
+{
+ protected void Page_Load(object sender, EventArgs e) {}
+
+ #region IWebPart Members
+
+ private string catalogIconImageUrl;
+
+ public string CatalogIconImageUrl
+ {
+ get
+ {
+ return this.catalogIconImageUrl;
+ }
+ set
+ {
+ this.catalogIconImageUrl = value;
+ }
+ }
+
+ private string description = "Displays the list of messages in a folder.";
+
+ public string Description
+ {
+ get
+ {
+ return this.description;
+ }
+ set
+ {
+ this.description = value;
+ }
+ }
+
+ public string Subtitle
+ {
+ get { return null; }
+ }
+
+ private string title = "Mail List";
+
+ public string Title
+ {
+ get
+ {
+ return this.title;
+ }
+ set
+ {
+ this.title = value;
+ }
+ }
+
+ private string titleIconImageUrl;
+
+ public string TitleIconImageUrl
+ {
+ get
+ {
+ return this.titleIconImageUrl;
+ }
+ set
+ {
+ this.titleIconImageUrl = value;
+ }
+ }
+
+ private string titleUrl;
+
+ public string TitleUrl
+ {
+ get
+ {
+ return this.titleUrl;
+ }
+ set
+ {
+ this.titleUrl = value;
+ }
+ }
+ #endregion
+}
Modified: NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx
===================================================================
--- NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx 2007-01-21 06:14:55 UTC (rev 122)
@@ -2,22 +2,20 @@
<%@ Register Assembly="MenuPilot" Namespace="MenuPilot.Web.Ui" TagPrefix="mp" %>
-<asp:Repeater ID="FolderRepeater" runat="server" DataSourceID="SubscribedFolderDataSource">
+<asp:Repeater
+ ID="FolderRepeater"
+ runat="server"
+ OnItemCommand="FolderRepeater_OnItemCommand"
+ DataSourceID="SubscribedFolderDataSource">
+
<ItemTemplate>
- <mp:MenuPilotHyperlink
+ <asp:LinkButton
Text='<%# GetFolderString(Container.DataItem) %>'
- ID="MenuPilotHyperlink"
- HintIcon="~/Images/action.gif"
- NavigateUrl="dff"
- runat="server">
-
- <mp:MenuItem NavigateUrl="someurl" Text="cccc" Title="sfdv" />
- </mp:MenuPilotHyperlink>
-
-
-
+ CommandArgument='<%# DataBinder.Eval(Container.DataItem, "FolderId") %>'
+ CommandName="SelectedFolderChanged"
+ runat="server"
+ ID="LinkButton" />
<br />
- <!-- <mp:MenuPilotLabel Text= -->
</ItemTemplate>
</asp:Repeater>
Modified: NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx.cs
===================================================================
--- NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx.cs 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/Controls/Mail/SubscribedFolderList.ascx.cs 2007-01-21 06:14:55 UTC (rev 122)
@@ -44,4 +44,11 @@
return result.ToString();
}
-}
+
+ protected void FolderRepeater_OnItemCommand(object sender, CommandEventArgs args)
+ {
+ int folderId = int.Parse(args.CommandArgument as string);
+
+ Session["SelectedFolderId"] = folderId;
+ }
+}
\ No newline at end of file
Modified: NMail/trunk/NMail.WebAccess/Mail.aspx
===================================================================
--- NMail/trunk/NMail.WebAccess/Mail.aspx 2007-01-19 13:02:39 UTC (rev 121)
+++ NMail/trunk/NMail.WebAccess/Mail.aspx 2007-01-21 06:14:55 UTC (rev 122)
@@ -1,5 +1,7 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Mail.aspx.cs" Inherits="Mail" %>
+<%@ Register Src="Controls/Mail/MailList.ascx" TagName="MailList" TagPrefix="uc3" %>
+
<%@ Register Src="Controls/Mail/SubscribedFolderList.ascx" TagName="SubscribedFolderList" TagPrefix="uc2" %>
<%@ Register Src="Controls/LinkButtonList.ascx" TagName="LinkButtonList" TagPrefix="uc1" %>
@@ -37,7 +39,10 @@
</tr>
<tr>
<td valign="top">
- <asp:WebPartZone ID="CenterZone" runat="server" LayoutOrientation="Horizontal">
+ <asp:WebPartZone ID="CenterZone" runat="server" LayoutOrientation="Horizontal" HeaderText=" ">
+ <ZoneTemplate>
+ <uc3:MailList ID="MailList1" runat="server" />
+ </ZoneTemplate>
</asp:WebPartZone>
</td>
</tr>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|