Sto scrivendo un codice eventi personalizzati in SDL Tridion 2011 SP 1-1 che modifica campo di un componente su salvare o localizzare, durante la fase di inizializzazione:personalizzato codice di eventi per aggiornare un componente Localizzare
var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated);
var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSave, EventPhases.Initiated);
_subscriptions.Add(localize);
_subscriptions.Add(save);
L'evento di salvataggio funziona correttamente, ma lo stesso codice non funziona sull'evento localize: tutte le modifiche apportate all'XML del componente vengono eliminate. Sto utilizzando il codice piuttosto semplice:
var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();
L'unico modo per ottenere le modifiche persistono sulla localizzazione è che se lo faccio in un post/Commit fase e fare un check-out/aggiornamento & salvare/check-in Questo non è eccezionale poiché ci vogliono alcuni secondi per eseguire & in una transazione separata dopo che il componente è stato localizzato. Qualcuno sa di un modo più elegante per fare questo?
Il codice scatta quando si verifica l'evento localize? –
Sì, sto registrando un sacco di output, incluso il componente XML che sembra corretto. – richeym