Archive for Luglio 13th, 2008

Image Gallery and AdRotator

CodeKeep C# Feed Luglio 13th, 2008

Description: Add images via a form to an image datalist or create/append an XML file which is used by an AdRotator control.

Link: http://www.codekeep.net/snippets/355fc725-81b4-4d1c-a4ad-3ade31c01095.aspx

using System;
using System.Xml;
using System.IO;

partial class WebUserControl : System.Web.UI.UserControl
{
   public void Page_Load(Object sender, EventArgs e)
    {
        btnImage.Click += (Button_Click);
    }

   protected bool imageIsAd;

   protected void AdRadio_CheckedChanged(object sender, EventArgs e)
   {
       imageIsAd = true;
   }

   protected void GalleryRadio_CheckedChanged(object sender, EventArgs e)
   {
       imageIsAd = false;
   }
   
    public void Button_Click(object sender, EventArgs e)
    {
        if (!imageUpload.HasFile) return;

        if (!imageIsAd)
        {
            var filePath = "~/Assets/Images/" + imageUpload.FileName;
            imageUpload.SaveAs(MapPath(filePath));
        }

        var adPath = "~/Assets/Ads/" + imageUpload.FileName;
        imageUpload.SaveAs(MapPath(adPath));
        WriteXml();
        ImageLink.Text = String.Empty;
        AltText.Text = String.Empty;
    }



        void Page_PreRender()
        {
            var imgFolder = MapPath("~/Assets/Images/");
            var dir = new DirectoryInfo(imgFolder);
            dlstImages.DataSource = dir.GetFiles();
            dlstImages.DataBind();
        }

        protected void WriteXml()
        {
            if (!imageIsAd) return;
            System.Drawing.Image UppedImage = System.Drawing.Image.FromStream(imageUpload.PostedFile.InputStream);
            float UploadedImageWidth = UppedImage.PhysicalDimension.Width;
            float UploadedImageHeight = UppedImage.PhysicalDimension.Height;
            var imagePath = "~/Assets/Ads/" + imageUpload.FileName;
            // *Insert* var xmlFile = Absolute Path of XML file (use Literal)
            var xmlFileInfo = new FileInfo(xmlFile);

            if (!xmlFileInfo.Exists)
            {
                var writer = new XmlTextWriter(xmlFile, null);
                writer.WriteStartDocument();
                writer.WriteRaw("\n");
                writer.WriteStartElement("Advertisements");
                writer.WriteRaw("\n");
                writer.WriteStartElement("Ad");
                writer.WriteRaw("\n");
                writer.WriteStartElement("", "ImageUrl", "");
                writer.WriteString(imagePath);
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteStartElement("", "Width", "");
                writer.WriteString(UploadedImageWidth.ToString());
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteStartElement("", "Height", "");
                writer.WriteString(UploadedImageHeight.ToString());
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteStartElement("", "NavigateUrl", "");
                writer.WriteString(ImageLink.Text);
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteStartElement("", "AlternateText", "");
                writer.WriteString(AltText.Text);
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteEndElement();
                writer.WriteRaw("\n");
                writer.WriteEndDocument();
                writer.Close();
            }

            else
            {
                var xdoc = new XmlDocument();
                xdoc.Load(xmlFile);
                var adverts = xdoc.SelectSingleNode("Advertisements");

                XmlElement ad = xdoc.CreateElement("Ad");
                XmlElement img = xdoc.CreateElement("ImageUrl");
                img.InnerText = imagePath;
                XmlElement width = xdoc.CreateElement("Width");
                width.InnerText = UploadedImageWidth.ToString();
                XmlElement height = xdoc.CreateElement("Height");
                height.InnerText = UploadedImageHeight.ToString();
                XmlElement navUrl = xdoc.CreateElement("NavigateUrl");
                navUrl.InnerText = ImageLink.Text;
                XmlElement xaltText = xdoc.CreateElement("AlternateText");
                xaltText.InnerText = AltText.Text;

                adverts.AppendChild(ad);
                ad.AppendChild(img);
                ad.AppendChild(width);
                ad.AppendChild(height);
                ad.AppendChild(navUrl);
                ad.AppendChild(xaltText);
                xdoc.Save(xmlFile);
            }
        }
}