2009-08-07 7 views

Respuesta

8

Tengo el mismo requisito exacto.

tal vez es posible adjuntar receptor de eventos de sistema ContentType (todos los tipos de contenido que se heredan, con id 0x)

`d comprobar si eso es posible mediante la creación de una función con un FeatureReceiver y programación de añadirla a Tipo de contenido del sistema. Algunos detalles here.

Mi camino en la búsqueda de una solución

Allright, hice algunas pruebas con aplicación de consola.

  1. intentado añadir EventReceiveral sistema (0x). Se llamó al método ContentType.Update (verdadero, falso) que actualiza todos los elementos secundarios - ni se actualizó el sistema ContentType, ni childs. Resulta que no puede modificar esos contentTypes con ReadOnly || Sealed atributo establecido en TRUE
  2. Trató de agregar EventReceiver al artículo (0x01) ContentType. Como se ve desde aquí, todos ContentTypes todavía heredan de ese (ver ContentType hierarchy). Puede haber tipos de contenido implementados personalizados que hereden del Sistema, pero no los que se realizan en la GUI. La actualización de este tipo de contenido verdaderamente actualiza todos los niños ContentTypes (todos los tipos de contenido, excepto los ReadOnly o Sealed)

Cómo conectar un EventReceiver global para todos los artículos

lo tanto una solución que funcionaría sería el siguiente:

  1. Iterar todas las listas, establecen Readonly o Sealed en false si quieres ese tipo de contenido con que EventReceivers.
  2. añaden sus EventReceiver a tipos de contenido existentes en las listas (SPList.ContentTypes)
  3. Añadir EventReceiver a ContentType (SPWeb.ContentTypes) con id 0x01 así obtener nuevas listas EventReceiver añade automáticamente. Los tipos de contenido recién creados también heredarán EventReceivers. También todos los subweb ContentTypes heredan EventReceivers.

Los tres pasos pueden ser una aplicación de consola o un script de powershell. O una característica amplia colección de sitios con FeatureReceiver

El resultado

PS C:\Documents and Settings\Administrator> $web.contentTypes |ft id, name, EventReceivers, readonly, sealed 

Id      Name     EventReceivers       ReadOnly     Sealed 
--      ----     --------------       --------     ------ 
0x      Sistēma     {}          False     True 
0x007F1DD730DB144C84... Darba kārtības vēsture {}           True     True 
0x01     Ieraksts    {, , , ...}        False     False 
0x01003420C661289843... Darba kārtības ieraksts {, , , ...}        False     False 
0x0101     Dokuments    {, , , ...}        False     False 
0x010100629D00608F81... Office datu savienoj... {}           True     False 
0x010100B4CBD48E029A... Universālais datu sa... {}           True     False 
0x010101    Veidlapa    {, , , ...}        False     False 
0x010102    Attēls     {, , , ...}        False     False 
0x010104    Nezināms dokumenta tips {}           True     False 
0x010105    Lapu šablons   {, , , ...}        False     False 
0x010107    Lietotāja darbplūsma... {, , , ...}        False     False 
0x010108    Wiki lapa    {, , , ...}        False     False 
0x010109    Pamatlapa    {, , , ...}        False     False 
0x01010901    Web daļu lapa   {, , , ...}        False     False 
0x01010A    Saistīt ar dokumentu {, , , ...}        False     False 
0x01010B    Dublinas pamata kolo... {, , , ...}        False     False 
0x0102     Notikums    {, , , ...}        False     False 
0x0103     Diskutējamais jautājums {, , , ...}        False     False 
0x0104     Paziņojums    {, , , ...}        False     False 
0x0105     Saite     {, , , ...}        False     False 
0x0106     Kontaktpersona   {, , , ...}        False     False 
0x0107     Ziņojums    {, , , ...}        False     False 
0x0108     Uzdevums    {, , , ...}        False     False 
0x0108007122AD6D76CD... Darba kārtības uzdevums {, , , ...}        False     False 
0x010801    Darbplūsmas uzdevums {, , , ...}        False     False 
0x010802    Administratīvs uzdevums {, , , ...}        False     False 
0x0109     Darbplūsmas vēsture  {, , , ...}        False     False 
0x010A     Person     {, , , ...}        False     False 
0x010B     SharePointGroup   {, , , ...}        False     False 
0x010C     DomainGroup    {, , , ...}        False     False 
0x0110     Ziņa     {, , , ...}        False     False 
0x0111     Komentārs    {, , , ...}        False     False 
0x0116     Tālo Austrumu līgums {, , , ...}        False     False 
0x0120     Mape     {}          False     True 
0x012001    RootOfList    {}          False     True 
0x012002    Diskusija    {, , , ...}        False     False 

Lo siento, mi WSS se localiza, pero {,,, ...} significa añadí varios EventReceivers a tipos de contenido. Como puede ver, aquellos con el atributo Readonly o Sealed False no se modifican.

Cuestiones relacionadas