Exemple #1
0
        /// <summary>
        /// Execute the template transformation with the given parameters
        /// </summary>
        /// <param name="itemUri">Tridion item URI.</param>
        /// <param name="templateUri">Tridion template URI.</param>
        /// <param name="publicationTargetUri">Tridion publication target URI.</param>
        /// <returns>Package "Output" item as <see cref="T:System.String" /></returns>
        /// <exception cref="System.ArgumentNullException">
        /// itemUri cannot be null or empty.
        /// or
        /// templateUri cannot be null or empty for itemtype
        /// </exception>
        /// <exception cref="System.ArgumentException">
        /// itemUri is not a valid Tridion URI.
        /// or
        /// templateUri is not a valid Tridion URI.
        /// </exception>
        public override String Execute(String itemUri, String templateUri = null, String publicationTargetUri = null)
        {
            Session session = null;

            try
            {
                session = DebuggerConfig.Instance.Templating.EnableImpersonation && !String.IsNullOrEmpty(DebuggerConfig.Instance.Templating.ImpersonationIdentity) ?
                          new Session(DebuggerConfig.Instance.Templating.ImpersonationIdentity) : new Session();

                IdentifiableObject item = session.GetObject(itemUri);

                Template template = null;

                if (String.IsNullOrEmpty(templateUri))
                {
                    Page page = item as Page;

                    if (page != null)
                    {
                        template = page.PageTemplate;
                    }
                }
                else
                {
                    template = session.GetObject(templateUri) as Template;
                }

                if (template != null)
                {
                    ResolvedItem resolvedItem = new ResolvedItem(item, template);

                    PublishInstruction instruction = new PublishInstruction(session)
                    {
                        RenderInstruction = new RenderInstruction(session)
                        {
                            RenderMode = RenderMode.PreviewDynamic
                        },
                        ResolveInstruction = new ResolveInstruction(session)
                        {
                            IncludeChildPublications = false,
                            IncludeComponentLinks    = true,
                            IncludeWorkflow          = false,
                            OnlyPublishedItems       = false,
                            Purpose = ResolvePurpose.Publish,
                            StructureResolveOption = StructureResolveOption.ItemsAndStructure
                        }
                    };

                    DebuggerHook();

                    RenderedItem renderedItem = global::Tridion.ContentManager.Publishing.Rendering.RenderEngine.Render(resolvedItem,
                                                                                                                        instruction,
                                                                                                                        !String.IsNullOrEmpty(publicationTargetUri) ? new PublicationTarget(new TcmUri(publicationTargetUri), session) : null);

                    using (StreamReader sr = new StreamReader(renderedItem.Content))
                    {
                        renderedItem.Content.Seek(0, SeekOrigin.Begin);
                        return(sr.ReadToEnd());
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(TraceEventType.Error, "Exception while executing TemplateEngine for item {0}, template {1}: {2}", itemUri, templateUri, ex.Message);
            }
            finally
            {
                if (session != null)
                {
                    session.Dispose();
                }
            }

            return(String.Empty);
        }
Exemple #2
0
        /// <summary>
        /// Audits a publishing transaction
        /// </summary>
        /// <param name="transaction"><see cref="T:Tridion.ContentManager.Publishing.PublishTransaction" /></param>
        /// <param name="args">The <see cref="SaveEventArgs"/> instance containing the event data.</param>
        /// <param name="phase"><see cref="T:Tridion.ContentManager.Extensibility.EventPhases" /></param>
        private void AuditPublish(PublishTransaction transaction, SaveEventArgs args, EventPhases phase)
        {
            if (phase == EventPhases.TransactionCommitted && transaction.State == PublishTransactionState.Success)
            {
                try
                {
                    using (SqlConnection connection = Connection)
                    {
                        // Register the publish transaction
                        using (SqlCommand sqlAuditPublishTransaction = new SqlCommand()
                        {
                            CommandText = "AuditPublishTransaction",
                            CommandType = CommandType.StoredProcedure,
                            Connection = connection
                        })
                        {
                            sqlAuditPublishTransaction.AddParameter("@Transaction", SqlDbType.VarChar, transaction.Id.ToString());
                            sqlAuditPublishTransaction.AddParameter("@Action", SqlDbType.VarChar, (transaction.Instruction is PublishInstruction ? "Publish" : "Unpublish"));
                            sqlAuditPublishTransaction.AddParameter("@TimeStamp", SqlDbType.DateTime, transaction.StateChangeDateTime);
                            sqlAuditPublishTransaction.AddParameter("@Username", SqlDbType.VarChar, transaction.Creator.Title.ToUpper());
                            sqlAuditPublishTransaction.AddParameter("@UserDescription", SqlDbType.NVarChar, transaction.Creator.Description);

                            int transactionId = Convert.ToInt32(sqlAuditPublishTransaction.ExecuteScalar());

                            if (transactionId > 0)
                            {
                                using (SqlCommand sqlAuditPublishedItem = new SqlCommand()
                                {
                                    CommandText = "AuditPublishedItem",
                                    CommandType = CommandType.StoredProcedure,
                                    Connection = connection
                                })
                                {
                                    // Register the publication transaction
                                    sqlAuditPublishedItem.AddParameter("@TransactionID", SqlDbType.Int, transactionId);
                                    sqlAuditPublishedItem.AddParameter("@PublicationTarget", SqlDbType.VarChar);
                                    sqlAuditPublishedItem.AddParameter("@Publication", SqlDbType.VarChar);
                                    sqlAuditPublishedItem.AddParameter("@ItemID", SqlDbType.VarChar);
                                    sqlAuditPublishedItem.AddParameter("@ItemTitle", SqlDbType.NVarChar);
                                    sqlAuditPublishedItem.AddParameter("@ItemTemplate", SqlDbType.VarChar);
                                    sqlAuditPublishedItem.AddParameter("@IsComponentTemplate", SqlDbType.Bit);
                                    sqlAuditPublishedItem.AddParameter("@IsDCP", SqlDbType.Bit);

                                    foreach (PublishContext publishContext in transaction.PublishContexts)
                                    {
                                        foreach (ProcessedItem processedItem in publishContext.ProcessedItems)
                                        {
                                            // Register each published item
                                            ResolvedItem resolvedItem = processedItem.ResolvedItem;

                                            sqlAuditPublishedItem.SetValue("@PublicationTarget", publishContext.PublicationTarget.Id.ToString());
                                            sqlAuditPublishedItem.SetValue("@Publication", publishContext.Publication.Id.ToString());
                                            sqlAuditPublishedItem.SetValue("@ItemID", resolvedItem.Item.VersionedItemId());
                                            sqlAuditPublishedItem.SetValue("@ItemTitle", resolvedItem.Item.Title);
                                            sqlAuditPublishedItem.SetValue("@ItemTemplate", resolvedItem.Template.VersionedItemId());
                                            sqlAuditPublishedItem.SetValue("@IsComponentTemplate", resolvedItem.IsComponentPresentation);
                                            sqlAuditPublishedItem.SetValue("@IsDCP", resolvedItem.IsDynamicComponentPresentation);

                                            sqlAuditPublishedItem.ExecuteNonQuery();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Write(ex, "TcmEvents.Audit", LoggingCategory.General, TraceEventType.Error);
                }
            }
        }
        /// <summary>
        /// Execute the template transformation with the given parameters
        /// </summary>
        /// <param name="itemUri">Tridion item URI.</param>
        /// <param name="templateUri">Tridion template URI.</param>
        /// <param name="publicationTargetUri">Tridion publication target URI.</param>
        /// <returns>Package "Output" item as <see cref="T:System.String" /></returns>
        /// <exception cref="System.ArgumentNullException">
        /// itemUri cannot be null or empty.
        /// or
        /// templateUri cannot be null or empty for itemtype
        /// </exception>
        /// <exception cref="System.ArgumentException">
        /// itemUri is not a valid Tridion URI.
        /// or
        /// templateUri is not a valid Tridion URI.
        /// </exception>
        public override String Execute(String itemUri, String templateUri = null, String publicationTargetUri = null)
        {
            Session session = null;

            try
            {
                session = DebuggerConfig.Instance.Templating.EnableImpersonation && !String.IsNullOrEmpty(DebuggerConfig.Instance.Templating.ImpersonationIdentity) ?
                        new Session(DebuggerConfig.Instance.Templating.ImpersonationIdentity) : new Session();

                IdentifiableObject item = session.GetObject(itemUri);

                Template template = null;

                if (String.IsNullOrEmpty(templateUri))
                {
                    Page page = item as Page;

                    if (page != null)
                        template = page.PageTemplate;
                }
                else
                    template = session.GetObject(templateUri) as Template;

                if (template != null)
                {
                    ResolvedItem resolvedItem = new ResolvedItem(item, template);

                    PublishInstruction instruction = new PublishInstruction(session)
                    {
                        RenderInstruction = new RenderInstruction(session)
                        {
                            RenderMode = RenderMode.PreviewDynamic
                        },
                        ResolveInstruction = new ResolveInstruction(session)
                        {
                            IncludeChildPublications = false,
                            IncludeComponentLinks = true,
                            IncludeWorkflow = false,
                            OnlyPublishedItems = false,
                            Purpose = ResolvePurpose.Publish,
                            StructureResolveOption = StructureResolveOption.ItemsAndStructure
                        }
                    };

                    DebuggerHook();

                    RenderedItem renderedItem = global::Tridion.ContentManager.Publishing.Rendering.RenderEngine.Render(resolvedItem,
                        instruction,
                        !String.IsNullOrEmpty(publicationTargetUri) ? new PublicationTarget(new TcmUri(publicationTargetUri), session) : null);

                    using (StreamReader sr = new StreamReader(renderedItem.Content))
                    {
                        renderedItem.Content.Seek(0, SeekOrigin.Begin);
                        return sr.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(TraceEventType.Error, "Exception while executing TemplateEngine for item {0}, template {1}: {2}", itemUri, templateUri, ex.Message);
            }
            finally
            {
                if (session != null)
                    session.Dispose();
            }

            return String.Empty;
        }
 /// <summary>
 /// Creates a RenderedItem object based on the given ResolvedItem and a default render instruction
 /// </summary>
 /// <param name="resolvedItem">ResolvedItem to render</param>
 /// <returns>RenderedItem</returns>
 private RenderedItem CreateRenderedItem(ResolvedItem resolvedItem)
 {
     return new RenderedItem(
         resolvedItem,
         new RenderInstruction(this._session)
     );
 }