Now on CodePlex: SPListConfiguration Feature

SPListConfiguration is a SharePoint feature that developers can use to configure their SharePoint lists using XML and without the need of writing .NET code.

SPListConfiguration can be used for many different purposes. For example, you can use it to set most of theproperties for the 5SPList object that references your list or to stop inheriting permissions from the parent web. You can even use it to add properties to the property bag of the list root folder.

For configuring a list using SPListConfiguration, you should specify the list name in the preoperty Key and the desired configuration settings in the property value as shown below :

<Property Key=”Calendar” Value=”Hidden,true;EnableVersioning,false;AddToPropertyBag,MyKey:MyValue”/>
<Property Key=”Tasks” Value=”BreakRoleInheritance,false;ReadSecurity,2″/>

The previous XML does the following on your behalf :
SPList.Hidden = true;
SPList.EnableVersioning= false;
SPList.ReadSecurity = 2;
And it also adds a property of name “MyKey” and value “MyValue” to the property bag of the SPlist root folder. Neat, eh ? This is the Reflection magic:)

SPListConfiguration can be used in two ways:

1) From a site definition; in the <WebFeatures> element.

<Feature ID=”9697591b-c325-43e8-bf2f-3c33e05c59b4″>
<Property Key=”Calendar” Value=”Hidden,true;EnableVersioning,false;AddToPropertyBag,MyKey:MyValue”/>
<Property Key=”Tasks” Value=”BreakRoleInheritance,false;ReadSecurity,2″/>

2) Since the key component of this feature is its feature receiver which performs all the heavy lifting,
you can only use the feature receiver assembly and hook it up as a receiver for your features :

<Feature Id=”ID of Your Feature” Title=”Countries List”
Description=”A list that contains all the countries of the world”
Hidden=”FALSE” Scope=”Web”
ReceiverAssembly=”SPListConfigurationFeature, Version=, Culture=neutral,
<!– The countries List is created here –>
<ElementManifest Location=”elements.xml”/>
<!– The countries List is configured here –>
<Property Key=”Countries” Value=”Hidden,true;BreakRoleInheritance,false”/>

Also keep in mind that you set any list properties of type String, Boolean or Int32 and this covers almost 95% of the available properties.

Let me know what you think !


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s