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