2009-08-07 6 views

Répondre

8

J'ai exactement la même exigence.

Peut-être qu'il est possible de joindre récepteur d'événements du système ContentType (tous les types de contenu hériteront que l'un, avec id 0x)

`d vérifier si cela est possible en créant une fonction avec un FeatureReceiver et en ajoutant programme à Type de contenu du système. Certains détails here.

Mon chemin pour trouver une solution

Allright, je l'ai fait quelques tests avec application de la console.

  1. essayé d'ajouter EventReceiverau système (0x). Appelée méthode ContentType.Update (true, false) qui met à jour tous les éléments enfants - et System ContentType mis à jour, ni childs. Il s'avère que vous ne pouvez pas modifier ces contentTypes avec ReadOnly || Sealed Attribut défini sur TRUE
  2. Essayé pour ajouter EventReceiver à l'élément (0x01) ContentType. Comme vu d'ici, tous les ContentTypes héritent toujours de celui-là (voir ContentType hierarchy). Il peut y avoir des types de contenu déployé personnalisé qui héritent du système, mais pas de ceux créés dans l'interface graphique. Mise à jour de ce type de contenu vraiment mis à jour tous les enfants ContentTypes (tous les types de contenu, sauf ceux ReadOnly ou Sealed)

Comment attacher une EventReceiver globale à tous les articles

donc une solution qui fonctionnerait ressemblerait à ceci:

  1. Iterate toutes les listes, définissez Readonly ou Sealed false si vous voulez que ces types de contenu avec vous EventReceivers.
  2. Ajouter votre EventReceiver à des types de contenu existants dans les listes (SPList.ContentTypes)
  3. Ajouter EventReceiver à ContentType (SPWeb.ContentTypes) avec id 0x01 listes afin que les nouveaux se EventReceiver automatiquement ajouté. Les types de contenu nouvellement créés hériteront également de EventReceivers. Tous les sous-sites ContentTypes héritent également de EventReceivers.

Les trois étapes peuvent être une application console ou un script Powershell. Ou une grande fonctionnalité site de collection avec FeatureReceiver

Le résultat

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 

Désolé, mon WSS est localisée, mais {,, ...} signifie que j'ajouté plusieurs EventReceivers aux types de contenu. Comme vous pouvez le constater, les attributs Readonly ou Sealed False sont intacts.

Questions connexes