最近,公司的一些东西用到了feature,本着好记忆不如烂笔头的精神,觉得将自己学习的一些东西写下来,防止以后忘了。我知道园子里有许多人都写过相类似的东西,这里不敢班门弄斧,本着有过改之,无着加勉,希望大家多多提意见。高手们多多指点,新手们共同学习。
首先是对feature的一个定义,我从MSDN上找到一段对feature的定义
Windows SharePoint Services 3.0 introduces an inherently portable and modular functionality known as a feature, which simplifies modification of sites through site definitions. A feature is a package of Windows SharePoint Services elements that can be activated for a specific scope and that helps users accomplish a particular goal or task.
从我自身来说,我觉的可以把feature看做是为了完成某项任务和功能的小模块,而这个小模块可以在不同的范围上激活或是结束。
既然是讲feature,就先讲一个简单的例子,这个例子是MSDN上的,我在我的虚拟机上实验过了,是可行的,讲这个例子的目的是有个更为直观的认识。
1.首先,你可以用VS2005创建一个C#的class library的工程,创建这个工程我们不用里面的任何东西,只是为了编辑两个XML文件,在VS2005编辑feature是很方便的,因为我这台电脑不能使用虚拟机,所以方便之处只能下次再说了。你先创建一个文件夹,然后在这个文件中创建两个XML文件,具体的请看下图:
2.下面是feature的内容,Ttile不用说了。这里最为重要的是Scope和Id这两个属性,Scope指定了,这个feature可以激活使用的范围是什么。一共是有四个级别的范围。Farm WebApplication Site Web.
Farm:服务器场范围,这个是最大的范围
WebApplcation:你可以看就是一个http://ccccc:vv之类的一种形式。在一个服务器场中,会有多个webapplication
Site:site collection就是网站集。
Web:subsite网站集下的一个web
Id属性中的GUID是标识feature的唯一全局标识符,可以用VS2005中的工具来生成,在Tools菜单下面有个Create Guid的工具,选择第四种的格式,你可以不断的生成新的GUID,直到你觉的数字不错了:)
<Feature Title="New Simple Form Toolbar Button"
Scope="Web"
Id="GUID"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml" />
</ElementManifests>
</Feature> 在这个feature.xml文件中是对整个feature做一个描述和基本定义,真正对这个feature起作用的,或是说完成这个feature所预想的功能的是在ElementManifest中指定的文件,你可以指定多个这样的文件,来完成多个工作。
3.这个feature的目的是adds a button to the toolbar of the form for editing announcements items within the scope of a SharePoint site。因为我用的是英文版本的MOSS2007,我不太清楚里面的有些东西该如何翻译成中文,我也没有见过中文版本的MOSS,所以这里我将英文直接贴出来,希望大家谅解。
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction Title="Simple"
Sequence="10"
RegistrationType="List"
RegistrationId="104"
Location="EditFormToolbar"
Id="Simple Toolbar">
<UrlAction Url="/_layouts/SampleUrl.aspx" />
</CustomAction>
</Elements>
上面是elements.xml文件的内容。一个CustomAction是为一个link或是工具栏对象定义行为。
Id:为这个CustomAction指定一个文本标识符
Sequence:指定action的优先级的顺序
Location:Action出现的位置,在MSDN中有对Location有详尽的列表,以后会提到。你不仅可以对action指定title还可以加上你想要的图标。
RgistrationType:Specifies the registration attachment for a per-item action. (不好意思,我不知道该如何翻译才更合适)。这是个可选的文本属性。从我的理解来说,这是对那些类似list中的item指定action。有ContentType List FileType ProgID。这里指定的是List,因为announcements是List的一种类型。
RegistrationID:104代表着announcements。
关于RegistrationID等具体的数值在MSDN中有详细的列表,后面的文章中也会有提到。
UrlAction:指定了,当我们点击相应的item时,调用的是哪个页面。你可以自定义这个页面放在Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Layouts