![]() |
Enterprise Systems »
SharePoint Server »
General
Intermediate
License: The Code Project Open License (CPOL)
Extending SharePoint Server 2007 by using FeaturesBy Syed Adnan AhmedCreating and deploying an Event Handler Feature, which can be activated on Web or Site, Site Collection, Web Application or Farm Level |
C#, XML, Windows, .NET, Visual Studio, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
Microsoft provides ways to extend the out of the box functionality of SharePoint Portal Server 2007 e.g. Features, SharePoint Designer 2007, Windows Workflow Foundation etc. Features offer flexibility in terms of developing extended functionality � such as Page Templates, List, Content Types, Web Parts, Workflow and events � to new and existing SharePoint 2007 sites.
SPItemEventReceiver SPListEventReceiver SPWebEventReceiver The Feature Framework has been extended to allow developers to create custom Features. Features can be deployed by using SharePoint Portal Server 2007 new form of deployment, namely Solution Deployment. Solutions are custom packages (e.g. WSP file) or redistributable CAB files, created by developers and deployed by SharePoint Administrators. Administrator can deploy Features to the individual site or to all Web front End Servers.
In this article, I will walk-through Creating and deploying an Event Handler Feature, which can be activated on the Web or Site, Site Collection, Web Application or Farm Level.
A Feature can include any number of files, but it must include a Feature.xml file. The Feature.xml file, or Feature manifest, is the driver of the Feature, and this is the first file SharePoint looks at when invoking a Feature.
Features are organized in folders under the Features directory located under 12 hives; Where SharePoint Server 2007 puts all of its system files, at the following path: %SystemDrive%\Program Files\Common Files\Microsoft Shared\web server extensions\12.
In addition to the Feature.xml file, Features can include sub-folders and supporting files, such as element files that include for example, event handler references, ASPX pages deployed as part of the Feature, ASCX files, and DLL and RESX files.
SharePoint Event Handler is a program that enhances and adds functionality throughout SharePoint List, List Items or Sites. Event Feature can be deployed to new or existing sites by using Features. SharePoint Object Model provides several event classes that can target event handlers to List, List Item or Sites.
In addition to asynchronous events, SharePoint Server 2007 introduces synchronous events i.e. events that activate before the action occurs. Synchronous events can trap an item, document library or site before it is deleted. Synchronous events removed the ability for users to delete an item from the document library or event restricts users to delete columns from the document library.
SharePoint Object Model exposes several event classes inherited from Microsoft.SharePoint assembly. There are three main event classes:
SPItemEventReceiver SPListEventReceiver SPWebEventReceiver Each class includes both synchronous and asynchronous methods to work with Item, List or Web Level. In this article, I will demonstrate how to hook an ItemDeleting, FieldDeleting or SiteDeleting Event to restrict users from deleting an item from the document library or from deleting a column from the document library.
By overriding a member of the SPItemEventReceiver class, developers can restrict users from deleting, updating an Item in a List. Some of the important SPItemEventReceiver class members are described below:
| Event | Event Type | Description |
ItemAdded |
Asynchronous | After an Item added in a list |
ItemAdding |
Synchronous | Before an Item added in a list |
ItemAttachmentAdded |
Asynchronous | After an attachment added from a list item |
ItemAttachmentAdding |
Synchronous | Before an attachment added from a list item |
ItemAttachmentDeleted |
Asynchronous | After attachment deleted from a list item |
ItemAttachmentDeleting |
Synchronous | Before attachment deleted from a list item |
ItemCheckedOut |
Asynchronous | After an item checked-In in a list |
ItemCheckingOut |
Synchronous | Before an item is checked out in a list |
ItemCheckedIn |
Asynchronous | After an item is checked-In in a list |
ItemCheckingIn |
Synchronous | Before an item is checked-In in a list |
ItemDeleted |
Asynchronous | After an item is deleted from a list |
ItemDeleting |
Synchronous | Before an item is deleted from a list |
ItemUpdated |
Asynchronous | After an item is updated in a list |
ItemUpdating |
Synchronous | Before an item is updated in a list |
For the demonstration, I am using a synchronous event i.e. ItemDeleting, which restricts users from deleting an item in a list (document library). You can invoke this event with any type of list of document library by specifying the ListTemplateId attribute in a Feature Schema file e.g. ItemEventReceiver.xml.
See the screenshot below of ItemEventReceiver.cs and ItemEventReceiver.xml for defining the ListTemplateId and Assembly.
The following table shows the default list template integer IDs that you can use in defining the template ID for event handlers.
| List Template Id | List Template |
| 100 | Generic list |
| 101 | Document library |
| 102 | Survey |
| 103 | Links list |
| 104 | Announcements list |
| 105 | Contacts list |
| 106 | Events list |
| 107 | Tasks list |
| 108 | Discussion board |
| 109 | Picture library |
| 110 | Data sources |
| 111 | Site template gallery |
| 113 | Web Part gallery |
| 114 | List template gallery |
| 115 | XML Form library |
| 120 | Custom grid for a list |
| 200 | Meeting Series list |
| 201 | Meeting Agenda list |
| 202 | Meeting Attendees list |
| 204 | Meeting Decisions list |
| 207 | Meeting Objectives list |
| 210 | Meeting text box |
| 211 | Meeting Things To Bring list |
| 212 | Meeting Workspace Pages list |
| 300 | Portal Sites list |
| 1100 | Issue tracking |
| 2002 | Personal document library |
| 2003 | Private document library |
By overriding a member of the SPListEventReceiver class, developers can restrict users from deleting, updating a list from a Site. Some of the important SPListEventReceiver class members are described below.
| Event | Event Type | Description |
FieldAdded |
Asynchronous | After a document is added in a List (Document Library) |
FieldAdding |
Synchronous | Before a document is added in a List (Document Library) |
FieldDeleted |
Asynchronous | After a document is deleted from a list (Document Library) |
FieldDeleting |
Synchronous | Before a document is deleted from a list (Document Library) |
FieldUpdated |
Asynchronous | After a document is updated in a list (Document Library) |
FieldUpdating |
Synchronous | Before a document is updated in a list (Document Library) |
For the demonstration, I am using a synchronous event i.e. FieldDeleting, which restricts users from deleting a document from a list (Document Library). In this case, I am again specifying ListTemplateId = 101 for Document Library in a ListEventReceiver.xml file.
By overriding a member of the SPWebEventReceiver class, developers can restrict users from deleting a site from a site collection or even completely delete a site collection. Some of the important SPWebEventReceiver class members are described below:
| Event | Event Type | Description |
SiteDeleted |
Asynchronous | After a site collection has been deleted |
SiteDeleting |
Synchronous | Before a site collection is being deleted |
WebDeleted |
Asynchronous | After a web site has been deleted |
WebDeleting |
Synchronous | Before a web site is being deleted |
For the demonstration, I am using a synchronous event i.e. WebDeleting, which restricts users from deleting a web site from a site collection.
We need Visual Studio 2005 to create a solution for providing the required functionality.
The steps required to create an event handler for SharePoint Sever application are described below:
EventHand<code>lerFeature ItemEventReceiver, ListEventReceiver and WebEventReceiver folders. Some of the attributes of Feature Tag are described below:
| Attribute | Value | Description |
ID |
GUID |
Contains the globally unique identifier (GUID) for the Feature. |
Title |
Text |
Returns the title of the Feature. Limited to 255 characters. |
Scope |
Farm/WebApplication/Site/Web |
Can contain one of the following values: Farm (farm), WebApplication (Web application), Site (site collection), and Web (Web site). |
Hidden |
True/False |
This attribute equals FALSE by default. |
AlwaysForceInstall |
True/False |
Optional Boolean. TRUE if the Feature is installed by force during installation even if the Feature is already installed. For example, if set to TRUE, Feature installation callouts will always fire anytime a user tries to install the Feature (even if it is already installed) by using either the scanforfeatures or installfeature command-line operation. This attribute equals FALSE by default. The AlwaysForceInstall attribute affects Features of all scopes. |
See screenshot below of Feature.XML file.
Microsoft.SharePoint namespace and inherit this class from SPItemEventReceiver class in order to override ItemDeleting member for restricting users from deleting an Item from a list or document library Note: Complete source code of solution and package file is attached with this article.
In SharePoint Server 2007, Solutions are used to package and deploy Features, Site Definitions, Web Parts, Template Files, Assemblies and Code Access Security (CAS) policies to SharePoint front-end servers.
Steps for creating a Solution Package are described below:
Steps for deploying a Solution Package are described below:
See screen below for a list of solutions deployed in a farm.
EventHandlerFeature link to deploy the solution to specified Web Application. EventHandlerFeature Solution to Web Application. See screenshot below.
ItemEventResource Feature: Navigate to a Document Library in a Site, Where you have activated ItemEventResource feature.
ListEventResource Feature: Navigate to a Document Library in a Site, Where you have activated ListEventResource feature.
WebEventResource Feature: Navigate to a Site in a Web Application, Where you have activated WebEventResource feature.
You can choose to turn deactivate a particular feature on your site or web application, or you can choose to uninstall a feature, which completely removes the feature from your SharePoint deployment. Features can be deactivated either through the administrative user interface or by using the STSADM.EXE command-line tool.
STSADM.EXE �o deactivatefeature �name ItemEventReceiver �url http://mtech.litwareinc.com/ STSADM.EXE �o uninstallfeature �name ItemEventReceiver �force Note: Files deployed as part of the Feature, such as ASPX, ASCX files are not removed when a Feature is uninstalled.
I have tested the included project on the following platforms:
In the article, I have demonstrated how to work with Features to enhance and extend SharePoint Sites by creating features for restricting users from deleting item, column and site for web application. This article also covered Features Packaging and deployment option and how can you de-activate or uninstall an existing feature.
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 18 Nov 2007 Editor: Deeksha Shenoy |
Copyright 2007 by Syed Adnan Ahmed Everything else Copyright © CodeProject, 1999-2009 Web15 | Advertise on the Code Project |