2012-04-03 4 views
1

Ich arbeite daran, ein Ereignis auszulösen, um automatisch eine Seite zu erstellen, wenn der Benutzer eine Seite erstellt.Ereignis zum Erstellen einer Seite, wenn ein Benutzer eine Seite in SDL Tridion 2011 SP1 erstellt

namespace TestEventHandler 
{ 
    [TcmExtension("MyEventHandlerExtension")] 
    public class MyEventHandler : TcmExtension 
    { 
     public MyEventHandler() 
     { 
      Subscribe(); 
     } 

     public void Subscribe() 
     { 
      EventSystem.Subscribe<Page, SaveEventArgs>(HandlerForProcessed, EventPhases.Processed); 
      //EventSystem.Subscribe<Page, PublishEventArgs>(HandlerForInitiated, EventPhases.Initiated); 
     } 

     private void HandlerForProcessed(Page subject, SaveEventArgs args, EventPhases phase) 
     { 
      //create page. 
      Tridion.ContentManager.Session mySession = new Tridion.ContentManager.Session(@"user"); 

      XmlElement XmlElement = null; 
      Page newPage = new Page(XmlElement, mySession); 

      newPage.Title = subject.Title + "_auto"; 
      newPage.FileName = subject.FileName + "_auto"; 
      newPage.PageTemplate = subject.PageTemplate; 

      newPage.Save(true); 
      newPage.CheckOut(); 

     } 
    } 
} 

Die Seite wird nicht automatisch erstellt. Ich denke, dass einige Änderungen für diesen Code erforderlich sind.

Ich erhalte den Fehler "Identitätswechsel durch diesen Benutzer erfordert, dass das Computername \ MTSUser-Konto als Identitätswechselbenutzer konfiguriert wird".

Kann jemand mit den notwendigen Modifikationen helfen? Ich verwende hierfür die TOM.net-API.

Vielen Dank.

Antwort

7

Der Fehler ist auf die neue Sitzung zurückzuführen, die Sie erstellen möchten. Das sollte nicht notwendig sein. Sie können es von Seite subject.Session erhalten.

Darüber hinaus verwenden Sie den falschen Konstruktor für die Seite. Schau dir die Dokumentation an.

Beispielcode:

Page page = page = new Page(session, new TcmUri(sg)); 
page.Title = theTitle; 
page.FileName = new Regex("\\W").Replace(theTitle, ""); 
page.PageTemplate = session.GetObject(pt) as PageTemplate; 
ComponentTemplate componentTemplate = session.GetObject(ct) as ComponentTemplate; 
page.ComponentPresentations.Add(
     new ComponentPresentation(component, componentTemplate)); 
page.Save(true); 

Die Parameter, die Sie brauchen, sind sg, theTitle, pt, ct, component. Sie könnten sie beispielsweise aus Folder-Metadaten lesen.

+0

danke für die Informationen – Patan

Verwandte Themen