Author: andrews
Date: 2006-06-21 05:00:40 -0400 (Wed, 21 Jun 2006)
New Revision: 61895

Added:
   trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
   trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
Modified:
   trunk/mcs/class/System.Web/ChangeLog
   trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
   trunk/mcs/class/System.Web/System.Web.dll.sources
   trunk/mcs/class/System.Web/System.Web_test.dll.sources
   trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
Log:
Add FileUpload implementation


Modified: trunk/mcs/class/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/ChangeLog        2006-06-21 08:50:43 UTC (rev 
61894)
+++ trunk/mcs/class/System.Web/ChangeLog        2006-06-21 09:00:40 UTC (rev 
61895)
@@ -1,3 +1,8 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+       * System.Web_test.dll.sources add FileUploadTest.cs
+       * System.Web.dll.sources: add FileUpload.cs
+
 2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
 
        * Makefile: add UrlProperty.aspx, UrlProperty.ascx,

Modified: trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog      
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog      
2006-06-21 09:00:40 UTC (rev 61895)
@@ -1,3 +1,7 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+       * FileUpload.cs: added
+
 2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
 
        * FormView.cs: handle CssClass attribute

Added: trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs  
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs  
2006-06-21 09:00:40 UTC (rev 61895)
@@ -0,0 +1,141 @@
+//
+// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
+//
+// Authors:
+//     Andrew Skiba <[EMAIL PROTECTED]>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_2_0
+
+using System;
+using System.ComponentModel;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+using System.Security.Permissions;
+using System.IO;
+
+namespace System.Web.UI.WebControls
+{
+       [ControlValueProperty ("FileBytes")]
+       [ValidationProperty ("FileName")]
+       [Designer 
("DesignerBaseTypeNameSystem.ComponentModel.Design.IDesignerDesignerTypeNameSystem.Web.UI.Design.WebControls.PreviewControlDesigner,
 System.Design, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a")]
+       [AspNetHostingPermission(SecurityAction.LinkDemand, 
Level=AspNetHostingPermissionLevel.Minimal, Unrestricted=false)]
+       [AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, 
Level=AspNetHostingPermissionLevel.Minimal, Unrestricted=false)]
+       public class FileUpload : WebControl
+       {
+               public FileUpload ()
+                       : base (HtmlTextWriterTag.Input)
+               {
+               }
+
+               byte[] cachedBytes;
+               
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+               [Bindable (true, BindingDirection.OneWay)]
+               [Browsable (false)]
+               public byte[] FileBytes
+               {
+                       get
+                       {
+                               if (cachedBytes == null) {
+                                       cachedBytes = new 
byte[FileContent.Length];
+                                       FileContent.Read (cachedBytes, 0, 
cachedBytes.Length);
+                               }
+                               return (byte [])(cachedBytes.Clone ());
+                       }
+               }
+
+               [Browsable(false)]
+               
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+               public Stream FileContent
+               {
+                       get
+                       {
+                               if (PostedFile == null)
+                                       return Stream.Null;
+                               else
+                                       return PostedFile.InputStream;
+                       }
+               }
+
+               [Browsable (false)]
+               [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
+               public string FileName
+               {
+                       get
+                       {
+                               if (PostedFile == null)
+                                       return string.Empty;
+                               else
+                                       return PostedFile.FileName;
+                       }
+               }
+
+               [Browsable (false)]
+               [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
+               public bool HasFile
+               {
+                       get { return PostedFile != null; }
+               }
+
+               [Browsable (false)]
+               [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
+               public HttpPostedFile PostedFile
+               {
+                       get
+                       {
+                               if (Page == null || !Page.IsPostBack)
+                                       return null;
+                               if (Context == null || Context.Request == null)
+                                       return null;
+                               return Context.Request.Files[UniqueID];
+                       }
+               }
+
+               protected override void AddAttributesToRender (HtmlTextWriter 
writer)
+               {
+                       writer.AddAttribute (HtmlTextWriterAttribute.Type, 
"file");
+                       if (!string.IsNullOrEmpty (UniqueID))
+                               writer.AddAttribute 
(HtmlTextWriterAttribute.Name, UniqueID);
+                       base.AddAttributesToRender (writer);
+               }
+
+               protected internal override void OnPreRender (System.EventArgs 
e)
+               {
+                       base.OnPreRender (e);
+                       Page.Form.Enctype = "multipart/form-data";
+               }
+
+               protected internal override void Render (HtmlTextWriter writer)
+               {
+                       if (Page != null)
+                               Page.VerifyRenderingInServerForm (this);
+                       base.Render (writer);
+               }
+
+               [MonoTODO]
+               public void SaveAs (string filename)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
+#endif

Modified: trunk/mcs/class/System.Web/System.Web.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web.dll.sources   2006-06-21 08:50:43 UTC 
(rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.dll.sources   2006-06-21 09:00:40 UTC 
(rev 61895)
@@ -750,6 +750,7 @@
 System.Web.UI.WebControls/DetailsViewUpdateEventHandler.cs
 System.Web.UI.WebControls/DropDownList.cs
 System.Web.UI.WebControls/EditCommandColumn.cs
+System.Web.UI.WebControls/FileUpload.cs
 System.Web.UI.WebControls/FirstDayOfWeek.cs
 System.Web.UI.WebControls/FontInfo.cs
 System.Web.UI.WebControls/FontNamesConverter.cs

Modified: trunk/mcs/class/System.Web/System.Web_test.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web_test.dll.sources      2006-06-21 
08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web_test.dll.sources      2006-06-21 
09:00:40 UTC (rev 61895)
@@ -134,6 +134,7 @@
 System.Web.UI.WebControls/DataListTest.cs
 System.Web.UI.WebControls/DropDownListTest.cs
 System.Web.UI.WebControls/EditCommandColumnTest.cs
+System.Web.UI.WebControls/FileUploadTest.cs
 System.Web.UI.WebControls/FontInfoTest.cs
 System.Web.UI.WebControls/FontNamesConverterTest.cs
 System.Web.UI.WebControls/FontUnitTest.cs

Modified: trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog 
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog 
2006-06-21 09:00:40 UTC (rev 61895)
@@ -1,3 +1,7 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+       * FileUploadTest.cs: add new tests for FileUpload control
+
 2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
 
        * ThemeTest.cs: add new test for UrlPropertyAttribute

Added: 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs 
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs 
2006-06-21 09:00:40 UTC (rev 61895)
@@ -0,0 +1,117 @@
+//
+// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
+//
+// Authors:
+//     Andrew Skiba <[EMAIL PROTECTED]>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+using System;
+using NUnit.Framework;
+using System.Threading;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.IO;
+
+namespace MonoTests.System.Web.UI.WebControls
+{
+       [TestFixture]
+       public class FileUploadTest
+       {
+               class PokerFileUpload : FileUpload
+               {
+                       public void DoRender (HtmlTextWriter writer)
+                       {
+                               base.Render (writer);
+                       }
+               }
+
+               [Test]
+               public void RenderWithoutPageTest ()
+               {
+                       PokerFileUpload fu = new PokerFileUpload ();
+                       using (StringWriter sw = new StringWriter ()) {
+                               using (HtmlTextWriter htw = new HtmlTextWriter 
(sw)) {
+                                       fu.DoRender (htw);
+                               }
+                               sw.Close ();
+                               string res = sw.ToString ();
+                               Assert.AreEqual ("<input type=\"file\" />", 
res);
+                       }
+               }
+
+               [Test]
+               public void RenderWithPageTest ()
+               {
+                       PokerFileUpload fu = new PokerFileUpload ();
+                       fu.Page = new Page ();
+                       fu.Page.Controls.Add (fu);
+                       
+                       using (StringWriter sw = new StringWriter ()) {
+                               using (HtmlTextWriter htw = new HtmlTextWriter 
(sw)) {
+                                       fu.DoRender (htw);
+                               }
+                               sw.Close ();
+                       }
+               }
+
+               [Test]
+               public void RenderControlTest ()
+               {
+                       FileUpload fu = new FileUpload ();
+                       fu.Page = new Page ();
+                       string res;
+                       using (StringWriter sw = new StringWriter ()) {
+                               using (HtmlTextWriter htw = new HtmlTextWriter 
(sw)) {
+                                       fu.RenderControl (htw);
+                               }
+                               sw.Close ();
+                               res = sw.ToString ();
+                       }
+                       Assert.AreEqual ("<input type=\"file\" />", res);
+               }
+               [Test]
+               public void RenderBeginTagTest ()
+               {
+                       FileUpload fu = new FileUpload ();
+                       fu.Page = new Page ();
+                       string res;
+                       using (StringWriter sw = new StringWriter ()) {
+                               using (HtmlTextWriter htw = new HtmlTextWriter 
(sw)) {
+                                       fu.RenderBeginTag (htw);
+                               }
+                               sw.Close ();
+                               res = sw.ToString ();
+                       }
+                       Assert.AreEqual ("<input type=\"file\" />", res);
+               }
+               [Test]
+               public void FileContentTest ()
+               {
+                       FileUpload fu = new FileUpload ();
+                       Stream s = fu.FileContent;
+                       Assert.AreSame (s, Stream.Null);
+               }
+
+       }
+}
+#endif

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to