2012-07-27 11 views
9

Da un TBB C# utilizzato da un modello di pagina modulare in SDL Tridion 2011, è possibile accedere all'oggetto Utente che ha avviato l'azione di pubblicazione?Come ottenere l'utente che ha avviato un'azione di pubblicazione in un SDL Tridion C# TBB

Guardando il TOM.NET 6 programmatori Guida di riferimento, sembra che la proprietà ho bisogno è la Creator proprietà dell'oggetto PublicationTransaction, ma non riesco a trovare un modo per accedere a tale da un C# TBB, ho non si vede un modo ovvio per ottenere l'attuale o engine o gli oggetti package e posso trovare solo un modo per ottenere un elenco di oggetti PublicationTransaction utilizzando l'oggetto PublishEngine.

Qualsiasi consiglio sarebbe molto apprezzato.

risposta

10

Avere uno sguardo a questi due post del blog di Mihai Cadariu:

Con quei due si dovrebbe essere in grado di trova quello che ti serve.

La funzione di base avete bisogno nel vostro TBB è questo:

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; 
} 

Potrebbe anche essere la pena di notare che la proprietà engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath restituirà qualcosa di diverso durante il rendering del codificatore in PreviewMode o dal Template Builder rispetto a quando il codice è in esecuzione nel server di pubblicazione. Per visualizzare l'URI PublishTransaction in BinaryStoragePath, è necessario allegare il progetto di debug TBB di Visual Studio al processo TcmPublisher.exe affinché ci sia effettivamente un oggetto PublishTransaction presente, altrimenti il ​​BinaryStoragePath conterrà solo un percorso generico come ../preview.

+1

È fantastico ho aggiunto il codice di Mihai e Chris e ora ho PublishTransaction - Grazie mille – GourmetCMS

Problemi correlati