ChangeLog: Updated
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / AdRotator.cs
index 30a2b2a18a2cd79be6936e838f00916d0785bbfc..bf9066c3a83608d6ea4e993737819ea7943d2b80 100755 (executable)
@@ -1,16 +1,38 @@
-/**
- * Namespace: System.Web.UI.WebControls
- * Class:     AdRotator
- *
- * Authors:  Gaurav Vaish, Gonzalo Paniagua
- * Maintainer: gvaish@iitk.ac.in, gonzalo@ximian.com
- * Implementation: yes
- * Contact: <gvaish@iitk.ac.in>
- * Status:  100%
- *
- * (C) Gaurav Vaish (2001)
- * (C) 2003 Ximian, Inc. (http://www.ximian.com)
- */
+//
+// System.Web.UI.WebControls.AdRotator.cs
+//
+// Authors:
+//   Gaurav Vaish (gvaish@iitk.ac.in)
+//   Gonzalo Paniagua Javier (gonzalo@ximian.com)
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//   Sanjay Gupta (gsanjay@novell.com)
+//
+// (c) 2002 Ximian, Inc. (http://www.ximian.com)
+// (C) Gaurav Vaish (2002)
+// (C) 2003 Andreas Nahr
+// (C) 2004 Novell, Inc. (http://www.novell.com)
+//
+
+//
+// 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.
+//
 
 using System;
 using System.IO;
@@ -22,12 +44,13 @@ using System.Web.UI;
 using System.Xml;
 using System.Web.Util;
 using System.ComponentModel;
+using System.ComponentModel.Design;
 
 namespace System.Web.UI.WebControls
 {
        [DefaultEvent("AdCreated")]
        [DefaultProperty("AdvertisementFile")]
-       //TODO: [Designer("??")]
+       [Designer ("System.Web.UI.Design.WebControls.AdRotatorDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
        [ToolboxData("<{0}:AdRotator runat=\"server\" Height=\"60px\" "
        + "Width=\"468\"></{0}:AdRotator>")]
        public class AdRotator: WebControl
@@ -195,21 +218,27 @@ namespace System.Web.UI.WebControls
 
                [Bindable(true)]
                [DefaultValue("")]
-               //[Editor("??")]
-               [WebCategory("Behaviour")]
+               [Editor ("System.Web.UI.Design.XmlUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+               [WebCategory("Behavior")]
                [WebSysDescription("AdRotator_AdvertisementFile")]
+#if NET_2_0
+               [Localizable (true)]
+               [UrlProperty ()]
+#endif
                public string AdvertisementFile {
                        get { return ((advertisementFile != null) ? advertisementFile : ""); }
                        set { advertisementFile = value; }
                }
 
+               [Browsable (false), EditorBrowsable (EditorBrowsableState.Never)]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public override FontInfo Font {
                        get { return base.Font; }
                }
 
                [Bindable(true)]
                [DefaultValue("")]
-               [WebCategory("Behaviour")]
+               [WebCategory("Behavior")]
                [WebSysDescription("AdRotator_KeywordFilter")]
                public string KeywordFilter {
                        get {
@@ -228,7 +257,7 @@ namespace System.Web.UI.WebControls
                [Bindable(true)]
                [DefaultValue("")]
                [TypeConverter(typeof(TargetConverter))]
-               [WebCategory("Behaviour")]
+               [WebCategory("Behavior")]
                [WebSysDescription("AdRotator_Target")]
                public string Target {
                        get {
@@ -264,11 +293,13 @@ namespace System.Web.UI.WebControls
                                return;
 
                        AdCreatedEventArgs acea = new AdCreatedEventArgs (SelectAd ());
+                       OnAdCreated (acea);
                        imageUrl = acea.ImageUrl;
                        navigateUrl = acea.NavigateUrl;
                        alternateText = acea.AlternateText;
                }
 
+               [MonoTODO ("Update method with net 2.0 properties added for AdRotator class")]
                protected override void Render (HtmlTextWriter writer)
                {
                        HyperLink hLink = new HyperLink ();
@@ -299,6 +330,169 @@ namespace System.Web.UI.WebControls
                        hLink.RenderEndTag (writer);
                }
 
+#if NET_2_0
+               AdType adType;
+               
+               [DefaultValueAttribute ("Banner")]
+               [WebCategoryAttribute ("Behavior")]
+               [WebSysDescriptionAttribute ("Advertisement of specific type is created by specified value")]
+               public AdType AdType {
+                       get { return adType; }
+                       set { adType = value; }
+               }
+
+               string alternateTextField;
+
+               [DefaultValueAttribute ("AlternateText")]
+               [WebCategoryAttribute ("Behavior")]
+               [WebSysDescriptionAttribute ("Alternate text is retrieved from the elmenet name specified.")]
+               //[VerificationAttribute ()]
+               public string AlternateTextField {
+                       get { return alternateTextField; }
+                       set { alternateTextField = value; }
+               }
+
+               bool countClicks;
+               
+               [DefaultValueAttribute (false)]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("On clicking an advertisement, click-through events should be counted.")]
+               public bool CountClicks {
+                       get { return countClicks; }
+                       set { countClicks = value; }
+               }
+
+               string counterGroup;
+               
+               [DefaultValueAttribute ("AdRotator")]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("Name of the group which takes care of counting.")]
+               public string CounterGroup {
+                       get { return counterGroup; }
+                       set { counterGroup = value; }
+               }
+
+               string counterName;
+
+               [DefaultValueAttribute ("")]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("Name of the group which takes care of counting.")]
+               public string CounterName {
+                       get { return counterName; }
+                       set { counterName = value; }
+               }
+
+               bool countViews;
+               
+               [DefaultValueAttribute (false)]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("On creation of an advertisement, view events should be counted.")]
+               public bool CountViews {
+                       get { return countViews; }
+                       set { countViews = value; }
+               }
+
+               string imageUrlField;
+
+               [DefaultValueAttribute ("ImageUrl")]
+               [WebCategoryAttribute ("Behavior")]
+               [WebSysDescriptionAttribute ("Image URL is retrieved from the elmenet name specified.")]
+               public string ImageUrlField {
+                       get { return imageUrlField; }
+                       set { imageUrlField = value; }
+               }
+
+               string navigateUrlField;
+
+               [DefaultValueAttribute ("NavigateUrl")]
+               [WebCategoryAttribute ("Behavior")]
+               [WebSysDescriptionAttribute ("Advertisement Web page URL is retrieved from the elmenet name specified.")]
+               public string NavigateUrlField {
+                       get { return navigateUrlField; }
+                       set { navigateUrlField = value; }
+               }
+
+               int popFrequency;
+
+               [DefaultValueAttribute ("100")]
+               [WebCategoryAttribute ("Behavior")]
+               [WebSysDescriptionAttribute ("Frequency in percentage for creation of Popup or PopUnder advertisement.")]
+               public int PopFrequency {
+                       get { return popFrequency; }
+                       set { popFrequency = value; }
+               }
+
+               int popPositionLeft;
+
+               [DefaultValueAttribute ("-1")]
+               [WebCategoryAttribute ("Appearance")]
+               [WebSysDescriptionAttribute ("Specifies X-coordinate in pixels of Popunder or Popup advertisements top-left corner.")]
+               public int PopPositionLeft {
+                       get { return popPositionLeft; }
+                       set { popPositionLeft = value; }
+               }
+
+               int popPositionTop;
+
+               [DefaultValueAttribute ("-1")]
+               [WebCategoryAttribute ("Appearance")]
+               [WebSysDescriptionAttribute ("Specifies Y-coordinate in pixels of Popunder or Popup advertisements top-left corner.")]
+               public int PopPositionTop {
+                       get { return popPositionTop; }
+                       set { popPositionTop = value; }
+               }
+
+               int rowsPerDay;
+
+               [DefaultValueAttribute ("-1")]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("On a given day this many number of rows of data needs to be collected.")]
+               public int RowsPerDay {
+                       get { return rowsPerDay; }
+                       set { rowsPerDay = value; }
+               }
+               string siteCountersProvider;
+
+               [DefaultValueAttribute ("")]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("Control uses the specified provider.")]
+               public string SiteCountersProvider {
+                       get { return siteCountersProvider; }
+                       set { siteCountersProvider = value; }
+               }
+
+               bool trackApplicationName;
+
+               [DefaultValueAttribute (true)]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("SiteCounters service tracks and stores the specified application name in a database.")]
+               public bool TrackApplicationName {
+                       get { return trackApplicationName; }
+                       set { trackApplicationName = value; }
+               }
+
+               bool trackNavigateUrl;
+
+               [DefaultValueAttribute (true)]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("SiteCounters service tracks and stores the destination URL of click through event in a database.")]
+               public bool TrackNavigateUrl {
+                       get { return trackNavigateUrl; }
+                       set { trackNavigateUrl = value; }
+               }
+
+               bool trackPageUrl;
+
+               [DefaultValueAttribute (true)]
+               [WebCategoryAttribute ("Site Counters")]
+               [WebSysDescriptionAttribute ("SiteCounters service tracks and stores the originating page URL in a database.")]
+               public bool TrackPageUrl {
+                       get { return trackPageUrl; }
+                       set { trackPageUrl = value; }
+               }
+#endif
+
                class AdRecord
                {
                        public IDictionary Properties;