Ich verwende das Ereignissystem von Tridion 2011, um einige zusätzliche Aktionen auszuführen, wenn ich Komponenten entpacke. Ich verwende den Code here, um eine verwandte Komponente zu veröffentlichen.Wie erhalte ich das (Un-) PublicationTarget für die Komponente UnPublish-Ereignis in Tridion 2011?
ich mein Event-Handler-Registrierung wie folgt:
EventSystem.Subscribe<Component, UnPublishEventArgs>(
RemoveAndRepublish, EventPhases.Initiated);
... und meine Handler-Methode ist wie folgt:
public void RemoveAndRepublish(Component cmp, UnPublishEventArgs args,
EventPhases phase)
{
// ... code to locate related component, and perform required actions...
var instruction = new PublishInstruction(cmp.Session)
{
DeployAt = DateTime.Now,
RenderInstruction = new RenderInstruction(cmp.Session)
{
RenderMode = RenderMode.Publish
},
ResolveInstruction = new ResolveInstruction(cmp.Session)
{
IncludeComponentLinks = true
},
RollbackOnFailure = true,
StartAt = DateTime.MinValue
};
var target = args.Targets.FirstOrDefault();
PublishEngine.Publish(new[] {related}, instruction, new[] {target});
}
Mein Problem ist, dass die UnPublishEventArgs.Targets
Eigenschaft ist ein IList<PublishingTarget>
, was zur Laufzeit stellt sich heraus, ein List<TargetType>
, und ich muss ein PublicationTarget
Objekt zu PublishEngine.Publish(...)
aufrufen können.
Meine Frage ist: Gibt es eine Möglichkeit, das aktuelle (Un-) PublicationTarget von einem UnPublish-Ereignis zu bekommen?
Kann mir jemand Hilfe anbieten?
OK, klingt der zweite Absatz vielversprechender ... könnte Sie geben mir ein Beispiel? Die Methode 'PublishEngine.Publish' verwendet ein' IEnumerable 'nicht' IEnumerable '. –
Doh, habe die Überladung von 'PublishEngine.Publish()', die ein Array von 'TargetType' braucht, nicht gesehen. Vielen Dank! –