Click here to Skip to main content
15,886,199 members
Articles / Productivity Apps and Services / Sharepoint

Site Property Management (SharePoint 2010)

Rate me:
Please Sign up or sign in to vote.
5.00/5 (4 votes)
11 Jul 2010CPOL4 min read 49.5K   712   14  
Provides an administrative UI to manage custom properties for a SharePoint site
//
//	EditSiteProperty.cs - © Questech Systems
//	This notice must stay intact for use. Not for resale.
//
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.ApplicationPages;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebControls;

namespace QuestechSystems.SharePoint.ApplicationPages
{
    public partial class EditSiteProperty : WebAdminPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.Page.IsPostBack)
            {
                string propertyName = base.Request.QueryString[Utility.QueryKeyParamProperty];
                if (this.Web.GetProperty(propertyName) == null)
                {
                    throw new SPException(AppGlobalResources.QuestechSiteProperty.MsgSitePropertyNotFound);
                }

                if (!(this.Web.GetProperty(propertyName) is String))
                {
                    OKButton.Enabled = false;
                }

                string propertyValue = this.Web.GetProperty(propertyName).ToString();
                this.NameInputFormTextBox.Text = propertyName;
                this.ValueInputFormTextBox.Text = propertyValue;
            }
        }

        protected void OKButton_Click(object sender, EventArgs e)
        {
            if (!this.Page.IsValid)
            {
                return;
            }

            string originalProperty = base.Request.QueryString[Utility.QueryKeyParamProperty];
            string propertyName = this.NameInputFormTextBox.Text.Trim();
            string propertyValue = this.ValueInputFormTextBox.Text.Trim();

            if (String.IsNullOrEmpty(propertyName))
            {
                NameErrorLabel.Text = AppGlobalResources.QuestechSiteProperty.MsgSitePropertyNameEmpty;
                return;
            }

            try
            {
                if (this.Web.GetProperty(propertyName) == null)
                {
                    this.Web.DeleteProperty(originalProperty);
                    this.Web.AddProperty(propertyName, propertyValue);
                    this.Web.Update();
                }
                else
                {
                    if (propertyName == originalProperty)
                    {
                        this.Web.SetProperty(propertyName, propertyValue);
                        this.Web.Update();
                    }
                    else
                    {
                        NameErrorLabel.Text = AppGlobalResources.QuestechSiteProperty.MsgSitePropertyExists;
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new SPException(ex.Message);
            }

            if (SPContext.Current.IsPopUI)
            {
                Utility.ModalDialogClose(AppGlobalResources.QuestechSiteProperty.MsgSitePropertyUpdated);
            }
            else
            {
                SPUtility.Redirect(Utility.PageNameManageSiteProperties, SPRedirectFlags.UseSource, this.Context);
            }            
        }

        protected void DeleteButton_Click(object sender, EventArgs e)
        {
            if (!this.Page.IsValid)
            {
                return;
            }

            string propertyName = this.NameInputFormTextBox.Text;
            if (this.Web.GetProperty(propertyName) != null)
            {
                try
                {
                    this.Web.DeleteProperty(propertyName);
                    this.Web.Update();
                }
                catch (Exception ex)
                {
                    throw new SPException(ex.Message);
                }
            }

            if (SPContext.Current.IsPopUI)
            {
                Utility.ModalDialogClose(AppGlobalResources.QuestechSiteProperty.MsgSitePropertyDeleted);
            }
            else
            {
                SPUtility.Redirect(Utility.PageNameManageSiteProperties, SPRedirectFlags.UseSource, this.Context);
            }      
        }

        protected override bool RequireSiteAdministrator
        {
            get
            {
                return true;
            }
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Canada Canada
A Microsoft Certified Professional Developer and Technology Specialist.

Experience and expertise in SharePoint 2016 / 2013 / 2010 / 2007.

Role ranges from a developer in a multi-person team to a solution consultant with expert-level skills, leading a project to completion status.

Proven experience working effectively in a team environment and a self-managed environment.

Comments and Discussions