2012-07-27 10 views
9

Desde un C# TBB utilizado por una Plantilla de página modular en SDL Tridion 2011, ¿es posible acceder al objeto Usuario que inició la acción Publicación?Cómo obtener el usuario que inició una acción de publicación en un SDL Tridion C# TBB

Mirando el TOM.NET 6 programadores Guía de Referencia, parece que la propiedad que necesito es la propiedad del objeto CreatorPublicationTransaction, pero no puedo encontrar una manera de acceder a que desde un C# TBB, me no veo una forma obvia de obtener el PublicationTransaction actual de los objetos engine o package, y solo puedo encontrar una forma de obtener una lista de objetos PublicationTransaction utilizando el objeto PublishEngine.

Cualquier consejo sería muy apreciado.

Respuesta

10

Tener un vistazo a estas dos publicaciones en el blog de Mihai Cadariu:

Con los dos debe ser capaz de encuentra lo que necesitas

La función básica que necesita en su TBB es la siguiente:

public PublishTransaction GetPublishTransaction(Engine engine) 
{ 
    String binaryPath = engine.PublishingContext.PublishInstruction. 
             RenderInstruction.BinaryStoragePath; 
    Regex tcmRegex = new Regex(@"tcm_\d+-\d+-66560"); 
    Match match = tcmRegex.Match(binaryPath); 

    if (match.Success) 
    { 
     String transactionId = match.Value.Replace('_', ':'); 
     TcmUri transactionUri = new TcmUri(transactionId); 
     return new PublishTransaction(transactionUri, engine.GetSession()); 
    } 

    return null; 
} 

También podría ser la pena señalar que la propiedad engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath volverá algo diferente cuando se representa el codificador en PreviewMode o desde el Compilador de plantillas en comparación a cuando el código se está ejecutando en el publicador. Para ver el URI de PublishTransaction en BinaryStoragePath, debe conectar su Proyecto de depuración TBB de Visual Studio al proceso TcmPublisher.exe para que exista realmente un objeto PublishTransaction, de lo contrario, BinaryStoragePath contendrá una ruta genérica como ../preview.

+1

Eso es genial, agregué el código de Mihai y Chris ,, y ahora tengo el PublishTransaction - Muchas gracias – GourmetCMS

Cuestiones relacionadas