File: Configuration\WebPartsSection.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="WebPartsSection.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web.Configuration {
 
    using System;
    using System.Configuration;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Security.Principal;
    using System.Web;
    using System.Web.Compilation;
    using System.Web.Configuration;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.Util;
    using System.Xml;
    using System.Security.Permissions;
 
    /*  <!-- Configuration for webParts:
                enableExport="[true|false]" - Enable the export of Web Parts (defaults to false)
                <personalization>
                    <providers>            (Can only be defined at the application level)
                        <add               Register a provider
                            name="string"      Identification of the provider
                            type="string"      Class that implements the provider
                            ... />             Additional provider specific configuration attributes
                        <remove            Unregister a provider
                            name="string" />   Identification of the provider
                        <clear />          Unregister all providers
                    </providers>
                    <authorization>
                        [Same content as an <authorization> section]
                    </authorization>
                </personalization>
                <transformers>
                    <add                    Add a transformer
                        name="string"           Name to identify this transformer instance by
                        type="string"           Class that extends Transformer
                        />
                    <remove                 Remove a transformer
                        name="string" />        Name of transformer to remove
                    <clear>                 Remove all transformers
                </transformers>
        -->
        <webParts enableExport="false">
            <personalization defaultProvider="AspNetSqlPersonalizationProvider">
                <providers>
                    <add name="AspNetSqlPersonalizationProvider"
                         type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                         connectionStringName="LocalSqlServer"
                         applicationName="/" />
                </providers>
                <authorization>
                    <deny users="*" verbs="enterSharedScope" />
                    <allow users="*" verbs="modifyState" />
                </authorization>
            </personalization>
            <transformers>
                <add name="RowToFieldTransformer"
                     type="System.Web.UI.WebControls.WebParts.RowToFieldTransformer" />
                <add name="RowToParametersTransformer"
                     type="System.Web.UI.WebControls.WebParts.RowToParametersTransformer" />
            </transformers>
        </webParts>
 
*/
    public sealed class WebPartsSection : ConfigurationSection {
        private static ConfigurationPropertyCollection _properties;
 
        private static readonly ConfigurationProperty _propEnableExport =
            new ConfigurationProperty("enableExport",
                                        typeof(bool),
                                        false,
                                        ConfigurationPropertyOptions.None);
 
        private static readonly ConfigurationProperty _propPersonalization =
            new ConfigurationProperty("personalization",
                                        typeof(WebPartsPersonalization),
                                        null,
                                        ConfigurationPropertyOptions.None);
        private static readonly ConfigurationProperty _propTransformers =
            new ConfigurationProperty("transformers",
                                        typeof(TransformerInfoCollection),
                                        null,
                                        ConfigurationPropertyOptions.IsDefaultCollection);
 
        static WebPartsSection() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection();
 
            _properties.Add(_propEnableExport);
            _properties.Add(_propPersonalization);
            _properties.Add(_propTransformers);
        }
 
        public WebPartsSection() {
        }
        /*
                protected override void InitializeDefault()
                {
                    /* Don't Add to Basicmap
                    AuthorizationRule rule0 = new AuthorizationRule(AuthorizationRuleAction.Deny);
                    rule0.Users.Add("*");
                    rule0.Verbs.Add("enterSharedScope");
                    Personalization.Authorization.Rules.Add(rule0);
 
                    AuthorizationRule rule1 = new AuthorizationRule(AuthorizationRuleAction.Allow);
                    rule1.Users.Add("*");
                    rule1.Verbs.Add("modifyState");
                    Personalization.Authorization.Rules.Add(rule1);
                    */
        /*        }
        */
 
        [ConfigurationProperty("enableExport", DefaultValue = false)]
        public bool EnableExport {
            get {
                return (bool)base[_propEnableExport];
            }
            set {
                base[_propEnableExport] = value;
            }
        }
 
        [ConfigurationProperty("personalization")]
        public WebPartsPersonalization Personalization {
            get {
                return (WebPartsPersonalization)base[_propPersonalization];
            }
        }
 
        /// <internalonly />
        protected override ConfigurationPropertyCollection Properties {
            get {
                return _properties;
            }
        }
 
        [ConfigurationProperty("transformers")]
        public TransformerInfoCollection Transformers {
            get {
                return (TransformerInfoCollection)base[_propTransformers];
            }
        }
 
        protected override object GetRuntimeObject() {
            Personalization.ValidateAuthorization();
            return base.GetRuntimeObject();
        }
    }
}