Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / PersonalizationProvider.cs / 3 / PersonalizationProvider.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Configuration; using System.Configuration.Provider; using System.Security.Permissions; using System.Security.Principal; using System.Web; using System.Web.Configuration; using System.Web.Hosting; using System.Web.Util; ////// The provider used to access the personalization store for WebPart pages. /// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public abstract class PersonalizationProvider : ProviderBase { private const string scopeFieldName = "__WPPS"; private const string sharedScopeFieldValue = "s"; private const string userScopeFieldValue = "u"; private ICollection _supportedUserCapabilities; ////// Initializes an instance of PersonalizationProvider. /// protected PersonalizationProvider() { } ////// The name of the application that this provider should use to store /// and retrieve personalization data from. /// public abstract string ApplicationName { get; set; } ////// protected virtual IList CreateSupportedUserCapabilities() { ArrayList list = new ArrayList(); list.Add(WebPartPersonalization.EnterSharedScopeUserCapability); list.Add(WebPartPersonalization.ModifyStateUserCapability); return list; } ////// public virtual PersonalizationScope DetermineInitialScope(WebPartManager webPartManager, PersonalizationState loadedState) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } PersonalizationScope scope = webPartManager.Personalization.InitialScope; IPrincipal user = null; if (request.IsAuthenticated) { user = page.User; } if (user == null) { // if no user has been authenticated, then just load all user data scope = PersonalizationScope.Shared; } else { if (page.IsPostBack) { string postedMode = page.Request[scopeFieldName]; if (postedMode == sharedScopeFieldValue) { scope = PersonalizationScope.Shared; } else if (postedMode == userScopeFieldValue) { scope = PersonalizationScope.User; } } else if ((page.PreviousPage != null) && (page.PreviousPage.IsCrossPagePostBack == false)) { WebPartManager previousWebPartManager = WebPartManager.GetCurrentWebPartManager(page.PreviousPage); if (previousWebPartManager != null) { // Note that we scope = previousWebPartManager.Personalization.Scope; } } // Special-case Web Part Export so it executes in the same security context as the page itself ( else if (page.IsExportingWebPart) { scope = (page.IsExportingWebPartShared ? PersonalizationScope.Shared : PersonalizationScope.User); } if ((scope == PersonalizationScope.Shared) && (webPartManager.Personalization.CanEnterSharedScope == false)) { scope = PersonalizationScope.User; } } string fieldValue = (scope == PersonalizationScope.Shared) ? sharedScopeFieldValue : userScopeFieldValue; page.ClientScript.RegisterHiddenField(scopeFieldName, fieldValue); return scope; } ////// public virtual IDictionary DetermineUserCapabilities(WebPartManager webPartManager) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } IPrincipal user = null; if (request.IsAuthenticated) { user = page.User; } if (user != null) { if (_supportedUserCapabilities == null) { _supportedUserCapabilities = CreateSupportedUserCapabilities(); } if ((_supportedUserCapabilities != null) && (_supportedUserCapabilities.Count != 0)) { WebPartsSection configSection = RuntimeConfig.GetConfig().WebParts; if (configSection != null) { WebPartsPersonalizationAuthorization authConfig = configSection.Personalization.Authorization; if (authConfig != null) { IDictionary capabilities = new HybridDictionary(); foreach (WebPartUserCapability capability in _supportedUserCapabilities) { if (authConfig.IsUserAllowed(user, capability.Name)) { capabilities[capability] = capability; } } return capabilities; } } } } return new HybridDictionary(); } public abstract PersonalizationStateInfoCollection FindState(PersonalizationScope scope, PersonalizationStateQuery query, int pageIndex, int pageSize, out int totalRecords); public abstract int GetCountOfState(PersonalizationScope scope, PersonalizationStateQuery query); ////// private void GetParameters(WebPartManager webPartManager, out string path, out string userName) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } path = request.AppRelativeCurrentExecutionFilePath; userName = null; if ((webPartManager.Personalization.Scope == PersonalizationScope.User) && page.Request.IsAuthenticated) { userName = page.User.Identity.Name; } } ////// Loads the data from the data store for the specified path and user. /// If only shared data is to be loaded, userName is null or empty. /// protected abstract void LoadPersonalizationBlobs(WebPartManager webPartManager, string path, string userName, ref byte[] sharedDataBlob, ref byte[] userDataBlob); ////// Allows the provider to load personalization data. The specified /// WebPartManager is used to access the current page, which can be used /// to retrieve the path and user information. /// public virtual PersonalizationState LoadPersonalizationState(WebPartManager webPartManager, bool ignoreCurrentUser) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } string path; string userName; GetParameters(webPartManager, out path, out userName); if (ignoreCurrentUser) { userName = null; } byte[] sharedDataBlob = null; byte[] userDataBlob = null; LoadPersonalizationBlobs(webPartManager, path, userName, ref sharedDataBlob, ref userDataBlob); BlobPersonalizationState blobState = new BlobPersonalizationState(webPartManager); blobState.LoadDataBlobs(sharedDataBlob, userDataBlob); return blobState; } ////// Removes the data from the data store for the specified path and user. /// If userName is null or empty, the shared data is to be reset. /// protected abstract void ResetPersonalizationBlob(WebPartManager webPartManager, string path, string userName); ////// Allows the provider to reset personalization data. The specified /// WebPartManager is used to access the current page, which can be used /// to retrieve the path and user information. /// public virtual void ResetPersonalizationState(WebPartManager webPartManager) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } string path; string userName; GetParameters(webPartManager, out path, out userName); ResetPersonalizationBlob(webPartManager, path, userName); } public abstract int ResetState(PersonalizationScope scope, string[] paths, string[] usernames); public abstract int ResetUserState(string path, DateTime userInactiveSinceDate); ////// Saves the data into the data store for the specified path and user. /// If only shared data is to be saved, userName is null or empty. /// protected abstract void SavePersonalizationBlob(WebPartManager webPartManager, string path, string userName, byte[] dataBlob); ////// Allows the provider to save personalization data. The specified information /// contains a reference to the WebPartManager, which is used to access the /// current Page, and its path and user information. /// public virtual void SavePersonalizationState(PersonalizationState state) { if (state == null) { throw new ArgumentNullException("state"); } BlobPersonalizationState blobState = state as BlobPersonalizationState; if (blobState == null) { throw new ArgumentException(SR.GetString(SR.PersonalizationProvider_WrongType), "state"); } WebPartManager webPartManager = blobState.WebPartManager; string path; string userName; GetParameters(webPartManager, out path, out userName); byte[] dataBlob = null; bool reset = blobState.IsEmpty; if (reset == false) { dataBlob = blobState.SaveDataBlob(); reset = (dataBlob == null) || (dataBlob.Length == 0); } if (reset) { ResetPersonalizationBlob(webPartManager, path, userName); } else { SavePersonalizationBlob(webPartManager, path, userName, dataBlob); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Configuration; using System.Configuration.Provider; using System.Security.Permissions; using System.Security.Principal; using System.Web; using System.Web.Configuration; using System.Web.Hosting; using System.Web.Util; ////// The provider used to access the personalization store for WebPart pages. /// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public abstract class PersonalizationProvider : ProviderBase { private const string scopeFieldName = "__WPPS"; private const string sharedScopeFieldValue = "s"; private const string userScopeFieldValue = "u"; private ICollection _supportedUserCapabilities; ////// Initializes an instance of PersonalizationProvider. /// protected PersonalizationProvider() { } ////// The name of the application that this provider should use to store /// and retrieve personalization data from. /// public abstract string ApplicationName { get; set; } ////// protected virtual IList CreateSupportedUserCapabilities() { ArrayList list = new ArrayList(); list.Add(WebPartPersonalization.EnterSharedScopeUserCapability); list.Add(WebPartPersonalization.ModifyStateUserCapability); return list; } ////// public virtual PersonalizationScope DetermineInitialScope(WebPartManager webPartManager, PersonalizationState loadedState) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } PersonalizationScope scope = webPartManager.Personalization.InitialScope; IPrincipal user = null; if (request.IsAuthenticated) { user = page.User; } if (user == null) { // if no user has been authenticated, then just load all user data scope = PersonalizationScope.Shared; } else { if (page.IsPostBack) { string postedMode = page.Request[scopeFieldName]; if (postedMode == sharedScopeFieldValue) { scope = PersonalizationScope.Shared; } else if (postedMode == userScopeFieldValue) { scope = PersonalizationScope.User; } } else if ((page.PreviousPage != null) && (page.PreviousPage.IsCrossPagePostBack == false)) { WebPartManager previousWebPartManager = WebPartManager.GetCurrentWebPartManager(page.PreviousPage); if (previousWebPartManager != null) { // Note that we scope = previousWebPartManager.Personalization.Scope; } } // Special-case Web Part Export so it executes in the same security context as the page itself ( else if (page.IsExportingWebPart) { scope = (page.IsExportingWebPartShared ? PersonalizationScope.Shared : PersonalizationScope.User); } if ((scope == PersonalizationScope.Shared) && (webPartManager.Personalization.CanEnterSharedScope == false)) { scope = PersonalizationScope.User; } } string fieldValue = (scope == PersonalizationScope.Shared) ? sharedScopeFieldValue : userScopeFieldValue; page.ClientScript.RegisterHiddenField(scopeFieldName, fieldValue); return scope; } ////// public virtual IDictionary DetermineUserCapabilities(WebPartManager webPartManager) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } IPrincipal user = null; if (request.IsAuthenticated) { user = page.User; } if (user != null) { if (_supportedUserCapabilities == null) { _supportedUserCapabilities = CreateSupportedUserCapabilities(); } if ((_supportedUserCapabilities != null) && (_supportedUserCapabilities.Count != 0)) { WebPartsSection configSection = RuntimeConfig.GetConfig().WebParts; if (configSection != null) { WebPartsPersonalizationAuthorization authConfig = configSection.Personalization.Authorization; if (authConfig != null) { IDictionary capabilities = new HybridDictionary(); foreach (WebPartUserCapability capability in _supportedUserCapabilities) { if (authConfig.IsUserAllowed(user, capability.Name)) { capabilities[capability] = capability; } } return capabilities; } } } } return new HybridDictionary(); } public abstract PersonalizationStateInfoCollection FindState(PersonalizationScope scope, PersonalizationStateQuery query, int pageIndex, int pageSize, out int totalRecords); public abstract int GetCountOfState(PersonalizationScope scope, PersonalizationStateQuery query); ////// private void GetParameters(WebPartManager webPartManager, out string path, out string userName) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } Page page = webPartManager.Page; if (page == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page"), "webPartManager"); } HttpRequest request = page.RequestInternal; if (request == null) { throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "Page.Request"), "webPartManager"); } path = request.AppRelativeCurrentExecutionFilePath; userName = null; if ((webPartManager.Personalization.Scope == PersonalizationScope.User) && page.Request.IsAuthenticated) { userName = page.User.Identity.Name; } } ////// Loads the data from the data store for the specified path and user. /// If only shared data is to be loaded, userName is null or empty. /// protected abstract void LoadPersonalizationBlobs(WebPartManager webPartManager, string path, string userName, ref byte[] sharedDataBlob, ref byte[] userDataBlob); ////// Allows the provider to load personalization data. The specified /// WebPartManager is used to access the current page, which can be used /// to retrieve the path and user information. /// public virtual PersonalizationState LoadPersonalizationState(WebPartManager webPartManager, bool ignoreCurrentUser) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } string path; string userName; GetParameters(webPartManager, out path, out userName); if (ignoreCurrentUser) { userName = null; } byte[] sharedDataBlob = null; byte[] userDataBlob = null; LoadPersonalizationBlobs(webPartManager, path, userName, ref sharedDataBlob, ref userDataBlob); BlobPersonalizationState blobState = new BlobPersonalizationState(webPartManager); blobState.LoadDataBlobs(sharedDataBlob, userDataBlob); return blobState; } ////// Removes the data from the data store for the specified path and user. /// If userName is null or empty, the shared data is to be reset. /// protected abstract void ResetPersonalizationBlob(WebPartManager webPartManager, string path, string userName); ////// Allows the provider to reset personalization data. The specified /// WebPartManager is used to access the current page, which can be used /// to retrieve the path and user information. /// public virtual void ResetPersonalizationState(WebPartManager webPartManager) { if (webPartManager == null) { throw new ArgumentNullException("webPartManager"); } string path; string userName; GetParameters(webPartManager, out path, out userName); ResetPersonalizationBlob(webPartManager, path, userName); } public abstract int ResetState(PersonalizationScope scope, string[] paths, string[] usernames); public abstract int ResetUserState(string path, DateTime userInactiveSinceDate); ////// Saves the data into the data store for the specified path and user. /// If only shared data is to be saved, userName is null or empty. /// protected abstract void SavePersonalizationBlob(WebPartManager webPartManager, string path, string userName, byte[] dataBlob); ////// Allows the provider to save personalization data. The specified information /// contains a reference to the WebPartManager, which is used to access the /// current Page, and its path and user information. /// public virtual void SavePersonalizationState(PersonalizationState state) { if (state == null) { throw new ArgumentNullException("state"); } BlobPersonalizationState blobState = state as BlobPersonalizationState; if (blobState == null) { throw new ArgumentException(SR.GetString(SR.PersonalizationProvider_WrongType), "state"); } WebPartManager webPartManager = blobState.WebPartManager; string path; string userName; GetParameters(webPartManager, out path, out userName); byte[] dataBlob = null; bool reset = blobState.IsEmpty; if (reset == false) { dataBlob = blobState.SaveDataBlob(); reset = (dataBlob == null) || (dataBlob.Length == 0); } if (reset) { ResetPersonalizationBlob(webPartManager, path, userName); } else { SavePersonalizationBlob(webPartManager, path, userName, dataBlob); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ManifestResourceInfo.cs
- SemanticKeyElement.cs
- TTSEngineTypes.cs
- ListSortDescriptionCollection.cs
- EventLogException.cs
- UrlMappingsSection.cs
- ProcessHostConfigUtils.cs
- TypeHelpers.cs
- DependencyPropertyKey.cs
- SslStream.cs
- ExpressionPrefixAttribute.cs
- EmbeddedMailObjectsCollection.cs
- SettingsPropertyWrongTypeException.cs
- TraceSection.cs
- UnsignedPublishLicense.cs
- WindowsListViewItemStartMenu.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- MaskedTextBox.cs
- TextSpan.cs
- CommandDevice.cs
- SmiXetterAccessMap.cs
- ClassDataContract.cs
- NamespaceList.cs
- TextChangedEventArgs.cs
- MsmqIntegrationProcessProtocolHandler.cs
- CodeGeneratorOptions.cs
- HashHelpers.cs
- Model3DGroup.cs
- CodeRemoveEventStatement.cs
- OutputScopeManager.cs
- SetterBase.cs
- BaseValidator.cs
- DesignerVerb.cs
- LineSegment.cs
- SortQueryOperator.cs
- WinCategoryAttribute.cs
- Win32SafeHandles.cs
- UICuesEvent.cs
- UserControlParser.cs
- TextAutomationPeer.cs
- FileCodeGroup.cs
- EntityClientCacheKey.cs
- ModelTreeManager.cs
- PerformanceCounterPermissionEntry.cs
- AdornerLayer.cs
- FrameworkContentElementAutomationPeer.cs
- CorrelationKey.cs
- TabletDevice.cs
- CodeIdentifiers.cs
- MessageEnumerator.cs
- CommonDialog.cs
- Switch.cs
- TimelineGroup.cs
- ToolStripContainer.cs
- DesignerTransactionCloseEvent.cs
- TextRange.cs
- GorillaCodec.cs
- MetadataUtilsSmi.cs
- Privilege.cs
- Memoizer.cs
- GraphicsContainer.cs
- DataBoundControl.cs
- XmlCountingReader.cs
- Empty.cs
- ToRequest.cs
- HtmlTableCellCollection.cs
- UniformGrid.cs
- CodeAccessSecurityEngine.cs
- CommonObjectSecurity.cs
- Identifier.cs
- HttpCacheParams.cs
- CompilerGeneratedAttribute.cs
- PrintDialogException.cs
- DiscoveryClientReferences.cs
- SQLBinary.cs
- EdmScalarPropertyAttribute.cs
- AttachmentCollection.cs
- RuntimeEnvironment.cs
- ObjectTokenCategory.cs
- DiagnosticsElement.cs
- UIElementIsland.cs
- mediaeventshelper.cs
- WindowsAltTab.cs
- sqlnorm.cs
- TreeNodeBindingDepthConverter.cs
- XmlSerializerVersionAttribute.cs
- DetailsViewPageEventArgs.cs
- SingleAnimationUsingKeyFrames.cs
- UIElement3DAutomationPeer.cs
- MetadataArtifactLoaderCompositeFile.cs
- SkewTransform.cs
- DataRowComparer.cs
- RefExpr.cs
- xsdvalidator.cs
- RegexWriter.cs
- XmlParserContext.cs
- GridViewCancelEditEventArgs.cs
- ReferenceEqualityComparer.cs
- OleDbErrorCollection.cs
- GregorianCalendar.cs