public override void Process(
            Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context)
        {
            this.AddMessage(context, this.GetMessage(context));
            Sitecore.Data.Items.Item target = context.PublishOptions.TargetDatabase.GetItem(
                context.ItemId,
                context.PublishOptions.Language);

            if (target != null)
            {
                string msg = "Item exists in target database before publication and has "
                             + target.Versions.Count
                             + " versions there in this language (old path is "
                             + target.Paths.FullPath
                             + ").";
                this.AddMessage(context, msg);
            }
            else
            {
                this.AddMessage(
                    context,
                    "Item does not exist in target database before publication.");
            }

            this.AddMessage(
                context,
                "Result before publishing : " + context.Result);
            this.AddMessage(
                context,
                "Action before publishing : " + context.Action);
            context.CustomData["whatever"] = new Sitecore.Links.UrlOptions();
        }
        /// <summary>
        /// Store source value to use to determine if an item is cloned as value is removed when items are published
        /// http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2013/02/Identify-Cloned-Items-Sitecore-ASPNET-CMS-Publishing-Target-Databases.aspx
        /// </summary>
        /// <param name="context"></param>
        public override void Process(Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context)
        {
            base.Process(context);
            Item versionToPublish = context.VersionToPublish;

            if (!context.Aborted &&
                versionToPublish != null &&
                versionToPublish.InheritsTemplate(BasePageNEWItem.TemplateId) &&
                versionToPublish.Source != null &&
                versionToPublish.IsClone)
            {
                BasePageNEWItem target = context.PublishOptions.TargetDatabase.GetItem(
                    versionToPublish.ID,
                    versionToPublish.Language);

                if (target.InnerItem != null &&
                    target.SourceItem.Field.Value !=
                    versionToPublish.Source.ID.ToString())
                {
                    using (new Sitecore.Data.Items.EditContext(target.InnerItem, updateStatistics: false, silent: true))
                    {
                        target.InnerItem[target.SourceItem.Field.InnerField.Name] = versionToPublish.ID.ToString();
                    }
                }
            }
        }
예제 #3
0
        protected void OnItemPublished(object sender, EventArgs args)
        {
            Assert.IsTrue(args != null, "args != null");
            if (args != null && args is Sitecore.Publishing.Pipelines.PublishItem.ItemProcessedEventArgs && _auditItemPublished)
            {
                using (new SecurityDisabler())
                {
                    Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context = (args as Sitecore.Publishing.Pipelines.PublishItem.ItemProcessedEventArgs).Context;

                    if (context.Result.Operation == Sitecore.Publishing.PublishOperation.Skipped)
                    {
                        try
                        {
                            // If we skipped publishing this item, we only care about logging why if we deliberately tried to republish this item...
                            if (!context.PublishOptions.CompareRevisions && context.PublishOptions.RootItem.ID == context.ItemId)
                            {
                                if (context.PublishHelper.SourceItemExists(context.ItemId))
                                {
                                    Item sourceItem = context.PublishHelper.GetSourceItem(context.ItemId);
                                    Log(string.Format("PUBLISH [{0}]: {1}", context.Result.Operation, AuditFormatter.FormatItem(sourceItem)));
                                }
                                else
                                {
                                    Log(string.Format("PUBLISH [{0}]: {1}", context.Result.Operation, context.ItemId.ToString()));
                                }
                                Log(string.Format("** {0}", context.Result.Explanation));
                            }
                        }
                        catch (Exception)
                        {
                            // We don't need to log - we were skipping this item from getting published anyway
                        }
                    }
                    else
                    {
                        if (context.PublishHelper.SourceItemExists(context.ItemId))
                        {
                            Item sourceItem = context.PublishHelper.GetSourceItem(context.ItemId);
                            Log(string.Format("PUBLISH [{0}]: {1}", context.Result.Operation, AuditFormatter.FormatItem(sourceItem)));
                        }
                        else
                        {
                            Log(string.Format("PUBLISH [{0}]: {1}, msg: {2}", context.Result.Operation, context.ItemId.ToString(), context.Result.Explanation));
                        }
                    }
                }
            }
        }
        public override void Process(
            Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context)
        {
            string name = typeof(
                Sitecore.Sharedsource.Publishing.Pipelines.PublishItem.BeforePerformAction).ToString();

            foreach (Sitecore.Pipelines.PipelineMessage message
                     in context.GetMessages())
            {
                if (message.Text.StartsWith(name))
                {
                    Sitecore.Diagnostics.Log.Info(
                        this + " : " + message.Text, this);
                }
            }

            Sitecore.Diagnostics.Log.Info(
                this + " : Result after publishing : " + context.Result.Operation,
                this);
            Sitecore.Links.UrlOptions opt =
                context.CustomData["whatever"] as Sitecore.Links.UrlOptions;

            if (opt != null)
            {
                Sitecore.Diagnostics.Log.Info(
                    this + " : " + opt + " came through the pipeline.",
                    this);
            }

            if (context.VersionToPublish == null)
            {
                return;
            }

            Sitecore.Data.Fields.DateField lastPublished =
                context.VersionToPublish.Fields["LastPublished"];

            if (lastPublished == null)
            {
                return;
            }

            using (new Sitecore.Data.Items.EditContext(
                       context.VersionToPublish, false /*updateStatistics*/, false /*silent*/))
            {
                lastPublished.Value = Sitecore.DateUtil.IsoNow;
            }
        }
        public override void Process(
            SC.Publishing.Pipelines.PublishItem.PublishItemContext context)
        {
            SC.Diagnostics.Assert.ArgumentNotNull(context, "context");
            SC.Diagnostics.Assert.ArgumentNotNull(context.ItemId, "ItemId");
            SC.Diagnostics.Assert.ArgumentNotNull(
                context.PublishOptions,
                "PublishOptions");
            SC.Diagnostics.Assert.ArgumentNotNull(
                context.PublishOptions.TargetDatabase,
                "TargetDatabase");

            // retrieve the item from the publishing target database
            SC.Data.Items.Item item = context.PublishOptions.TargetDatabase.GetItem(
                context.ItemId);

            // if the item does not exist (or the context user does not have read access)
            if (item == null)
            {
                return;
            }

            foreach (SC.Globalization.Language language in item.Languages)
            {
                SC.Data.Items.Item version = item.Database.GetItem(
                    item.ID,
                    language);

                if (version != null && version.Versions.Count > 0)
                {
                    return;
                }
            }

            SC.Diagnostics.Log.Warn(
                this + " : delete " + item.Paths.FullPath + " from " + item.Database.Name,
                this);
            item.Delete();
        }
        protected string GetMessage(
            Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context)
        {
            string toPublish = "deleted item "
                               + context.ItemId.ToString()
                               + "; current language is "
                               + context.PublishOptions.Language.Name;

            if (context.VersionToPublish != null)
            {
                toPublish = "version "
                            + context.VersionToPublish.Version.Number
                            + " of "
                            + context.VersionToPublish.Paths.FullPath;
            }

            return("About to publish "
                   + toPublish
                   + " from "
                   + context.PublishOptions.SourceDatabase
                   + " to "
                   + context.PublishOptions.TargetDatabase);
        }
 protected void AddMessage(
     Sitecore.Publishing.Pipelines.PublishItem.PublishItemContext context,
     string message)
 {
     context.AddMessage(this + " : " + message);
 }