2009-08-07 17 views

risposta

8

Ho lo stesso esatto requisito.

forse è possibile allegare ricevitore di eventi del sistema ContentType (tutti i tipi di contenuto che si ereditano, con id 0x)

`d verificare se è possibile con la creazione di una funzione con un FeatureReceiver e programmaticamente aggiungendolo al Tipo di contenuto del sistema. Alcuni dettagli here.

Il mio percorso per trovare una soluzione

Allright, ho fatto alcuni test con la console app.

  1. provato ad aggiungere EventReceiverdel sistema (0x). Metodo chiamato ContentType.Update (true, false) che aggiorna tutti gli elementi figlio - , né il sistema ContentType aggiornato, né child. Risulta che non è possibile modificare quei contentTipi con ReadOnly || Attributo Sealed impostato su TRUE
  2. Tentativo di aggiungere EventReceiver all'elemento (0x01) ContentType. Come visto da qui, tutti gli ContentTypes ereditano ancora da quello (vedi ContentType hierarchy). Potrebbero esserci tipi di contenuto distribuiti personalizzati che ereditano da System, ma non quelli creati nella GUI. Aggiornamento di questo tipo di contenuto veramente aggiornato tutti i bambini ContentTypes (tutti i tipi di contenuto ad eccezione di quelli ReadOnly o Sealed)

Come allegare un EventReceiver globale a tutti gli elementi

Quindi una soluzione che avrebbe funzionato sarebbe simile a questa:

  1. Iterazione tutte le liste, impostare Readonly o Sealed su false se si desidera che tali tipi di contenuto con voi EventReceivers.
  2. Aggiungi la tua EventReceiver ai tipi di contenuto già esistenti nelle liste (SPList.ContentTypes)
  3. Aggiungi EventReceiver a ContentType (SPWeb.ContentTypes) con id 0x01 in modo da ottenere nuovi elenchi EventReceiver aggiunto automaticamente. I tipi di contenuto appena creati erediteranno anche EventReceivers. Anche tutto il Web secondario ContentTypes eredita EventReceivers.

Tutti e tre i passaggi potrebbero essere un'applicazione console o uno script PowerShell. O una caratteristica a livello di raccolta siti con FeatureReceiver

Il risultato

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 

Siamo spiacenti, il mio WSS è localizzato, ma {,,, ...} significa ho aggiunto diversi EventReceivers di tipi di contenuto. Come puoi vedere con gli attributi Readonly o Sealed False non sono stati modificati.

Problemi correlati