/// <summary>Creates a version of the item. This must be called before the item item is modified to save a version before modifications.</summary> /// <param name="item">The item to create a old version of.</param> /// <returns>The old version.</returns> public virtual ContentItem SaveVersion(ContentItem item) { if (item == null) throw new ArgumentNullException("item"); CancellableItemEventArgs args = new CancellableItemEventArgs(item); if (ItemSavingVersion != null) ItemSavingVersion.Invoke(this, args); if (args.Cancel) return null; item = args.AffectedItem; ContentItem oldVersion = item.Clone(false); if(item.State == ContentState.Published) stateChanger.ChangeTo(oldVersion, ContentState.Unpublished); else stateChanger.ChangeTo(oldVersion, ContentState.Draft); oldVersion.Expires = Utility.CurrentTime().AddSeconds(-1); oldVersion.Updated = Utility.CurrentTime().AddSeconds(-1); oldVersion.Parent = null; oldVersion.VersionOf = item; if (item.Parent != null) oldVersion["ParentID"] = item.Parent.ID; itemRepository.SaveOrUpdate(oldVersion); if (ItemSavedVersion != null) ItemSavedVersion.Invoke(this, new ItemEventArgs(oldVersion)); TrimVersionCountTo(item, maximumVersionsPerItem); return oldVersion; }
public void CloningItem_WithNameSetToID_ClearsName() { ContentItem root = CreateOneItem <AnItem>(1, "1", null); ContentItem clone = root.Clone(false); Assert.That(clone.Name, Is.Null); }
public TemplateDefinition GetTemplate(ContentItem item) { var template = CreateTemplate(map.GetOrCreateDefinition(item)); template.OriginalFactory = () => item; template.TemplateFactory = () => item.Clone(false); return template; }
private void CopyItem(NameValueCollection request) { ContentItem item = navigator.Navigate(request["item"]); ContentItem parent; item = item.Clone(true); item.Name = null; item.ZoneName = request["zone"]; string before = request["before"]; string below = request["below"]; if (!string.IsNullOrEmpty(before)) { ContentItem beforeItem = navigator.Navigate(before); parent = beforeItem.Parent; int newIndex = parent.Children.IndexOf(beforeItem); Utility.Insert(item, parent, newIndex); } else { parent = navigator.Navigate(below); Utility.Insert(item, parent, parent.Children.Count); } persister.Save(item); IEnumerable <ContentItem> changedItems = Utility.UpdateSortOrder(parent.Children); foreach (ContentItem changedItem in changedItems) { persister.Save(changedItem); } }
public static ContentItem CloneForVersioningRecursive(this ContentItem item, StateChanger stateChanger = null, bool asPreviousVersion = true) { ContentItem clone = item.Clone(false); if (stateChanger != null) { if (item.State == ContentState.Published && asPreviousVersion) { stateChanger.ChangeTo(clone, ContentState.Unpublished); } else if (item.State != ContentState.Unpublished || asPreviousVersion == false) { stateChanger.ChangeTo(clone, ContentState.Draft); } } clone.Updated = Utility.CurrentTime().AddSeconds(-1); clone.Parent = null; clone.AncestralTrail = "/"; clone.VersionOf = item.VersionOf.Value ?? item; CopyAutoImplementedProperties(item, clone); foreach (var child in item.Children.Where(c => !c.IsPage)) { var childClone = child.CloneForVersioningRecursive(stateChanger, asPreviousVersion); childClone.AddTo(clone); } return(clone); }
public TemplateDefinition GetTemplate(ContentItem item) { var template = CreateTemplate(map.GetOrCreateDefinition(item)); template.OriginalFactory = () => item; template.TemplateFactory = () => item.Clone(false); return(template); }
public void CanClone_Item_WithDetailCollection() { ContentItem root = CreateOneItem<AnItem>(1, "root", null); root.GetDetailCollection("TheDetailCollection", true).Add("TheValue"); ContentItem clonedRoot = root.Clone(false); Assert.AreEqual("TheValue", clonedRoot.GetDetailCollection("TheDetailCollection", false)[0]); }
public void CanClone_Item_WithDateTimeDetail() { ContentItem root = CreateOneItem<AnItem>(1, "root", null); root["TheDetail"] = new DateTime(2009, 05, 09); ContentItem clonedRoot = root.Clone(false); Assert.AreEqual(new DateTime(2009, 05, 09), clonedRoot["TheDetail"]); }
public void CanClone_Item_WithDetail(object value) { ContentItem root = CreateOneItem<AnItem>(1, "root", null); root["TheDetail"] = value; ContentItem clonedRoot = root.Clone(false); Assert.AreEqual(value, clonedRoot["TheDetail"], "The value " + value + " was not intact on the cloned item."); }
public void CanCloneItem() { ContentItem root = CreateOneItem <AnItem>(1, "root", null); ContentItem clonedRoot = root.Clone(false); Assert.AreEqual(0, clonedRoot.ID); Assert.AreEqual(root.Name, clonedRoot.Name); Assert.AreEqual(root.Title, clonedRoot.Title); }
public void CanCloneItem_WithProtectedDefaultConstructor() { ContentItem root = CreateOneItem <AnItemWithProtectedDefaultConstructor>(1, "root", null); ContentItem clonedRoot = root.Clone(false); Assert.AreEqual(0, clonedRoot.ID); Assert.AreEqual(root.Name, clonedRoot.Name); Assert.AreEqual(root.Title, clonedRoot.Title); }
public TemplateDefinition GetTemplate(ContentItem item) { if (item["TemplatName"] != null) return null; var template = CreateTemplate(map.GetOrCreateDefinition(item)); template.Original = () => item; template.Template = () => item.Clone(false); return template; }
public void CanClone_Item_WithObjectDetail() { ContentItem root = CreateOneItem<AnItem>(1, "root", null); X originalValue = new X { Number = 123}; root["TheDetail"] = originalValue; ContentItem clonedRoot = root.Clone(false); X clonedValue = (X) clonedRoot["TheDetail"]; Assert.AreEqual(clonedValue.Number, originalValue.Number); }
/// <summary>Copies an item and all sub-items to a destination</summary> /// <param name="source">The item to copy</param> /// <param name="destination">The destination below which to place the copied item</param> /// <param name="includeChildren">Whether child items should be copied as well.</param> /// <returns>The copied item</returns> public virtual ContentItem Copy(ContentItem source, ContentItem destination, bool includeChildren) { if (includeChildren) { return(Copy(source, destination)); } else { return(Copy(source.Clone(false), destination)); } }
public CommandContext(ItemDefinition definition, ContentItem content, string userInterface, IPrincipal user, IContentForm<CommandContext> binder, IValidator<CommandContext> validator) { Definition = definition; Content = content; Original = content.VersionOf.Value ?? content.Clone(false); Interface = userInterface; User = user; Binder = binder; Validator = validator; ValidationErrors = new List<ValidationError>(); Errors = new List<Exception>(); Parameters = new Dictionary<string, object>(); }
public CommandContext(ItemDefinition definition, ContentItem content, string userInterface, IPrincipal user, IContentForm <CommandContext> binder, IValidator <CommandContext> validator) { Definition = definition; Content = content; Original = content.VersionOf.Value ?? content.Clone(false); Interface = userInterface; User = user; Binder = binder; Validator = validator; ValidationErrors = new List <ValidationError>(); Errors = new List <Exception>(); Parameters = new Dictionary <string, object>(); }
public TemplateDefinition GetTemplate(ContentItem item) { if (item["TemplatName"] != null) { return(null); } var template = CreateTemplate(map.GetOrCreateDefinition(item)); template.Original = () => item; template.Template = () => item.Clone(false); return(template); }
protected override bool UpdateItem(NameValueCollection request, ContentItem item) { item = item.Clone(true); item.Name = null; item.ZoneName = request["zone"]; foreach (var child in Find.EnumerateChildren(item, true, false)) child.SetVersionKey(Guid.NewGuid().ToString()); int newIndex; var parent = GetParentAndIndex(request, Page, out newIndex); if (parent == null) throw new Exception("could not locate target of action"); InsertItem(parent, item, newIndex); return true; }
public override ContentItem Copy(ContentItem source, ContentItem destination) { logger.Info("ContentPersister.Copy " + source + " to " + destination); ContentItem cloned = source.Clone(includeChildren: true); if (cloned.Name == source.ID.ToString()) { cloned.Name = null; } cloned.Parent = destination; Save(cloned); foreach (var descendant in Find.EnumerateChildren(cloned).ToArray()) { Save(descendant); } return(cloned); }
/// <summary>Creates a version of the item. This must be called before the item item is modified to save a version before modifications.</summary> /// <param name="item">The item to create a old version of.</param> /// <returns>The old version.</returns> public virtual ContentItem SaveVersion(ContentItem item) { CancellableItemEventArgs args = new CancellableItemEventArgs(item); if (ItemSavingVersion != null) { ItemSavingVersion.Invoke(this, args); } if (!args.Cancel) { item = args.AffectedItem; ContentItem oldVersion = item.Clone(false); if (item.State == ContentState.Published) { stateChanger.ChangeTo(oldVersion, ContentState.Unpublished); } else { stateChanger.ChangeTo(oldVersion, ContentState.Draft); } oldVersion.Expires = Utility.CurrentTime().AddSeconds(-1); oldVersion.Updated = Utility.CurrentTime().AddSeconds(-1); oldVersion.Parent = null; oldVersion.VersionOf = item; if (item.Parent != null) { oldVersion["ParentID"] = item.Parent.ID; } itemRepository.SaveOrUpdate(oldVersion); if (ItemSavedVersion != null) { ItemSavedVersion.Invoke(this, new ItemEventArgs(oldVersion)); } TrimVersionCountTo(item, maximumVersionsPerItem); return(oldVersion); } return(null); }
protected override bool UpdateItem(NameValueCollection request, ContentItem item) { item = item.Clone(true); item.Name = null; item.ZoneName = request["zone"]; foreach (var child in Find.EnumerateChildren(item, true, false)) { child.SetVersionKey(Guid.NewGuid().ToString()); } int newIndex; var parent = GetParentAndIndex(request, Page, out newIndex); if (parent == null) { throw new Exception("could not locate target of action"); } InsertItem(parent, item, newIndex); return(true); }
private TemplateDefinition CreateTemplateInfo(ContentItem template) { var info = new TemplateDefinition { Name = template.Name, Title = template.Title, Description = template.GetDetail(TemplateDescription, ""), TemplateUrl = template.Url, Definition = map.GetOrCreateDefinition(template.GetContentType(), template.Name), TemplateFactory = () => { var clone = template.Clone(true); clone.SetDetail(TemplateDescription, null, typeof(string)); clone.Title = ""; clone.Name = null; clone.TemplateKey = template.Name; return clone; }, OriginalFactory = () => template }; return info; }
private TemplateDefinition CreateTemplateInfo(ContentItem template) { var clone = template.Clone(true); clone.SetDetail(TemplateDescription, null, typeof(string)); clone.Title = ""; clone.Name = null; clone["TemplateName"] = template.Name; var info = new TemplateDefinition { Name = template.Name, Title = template.Title, Description = template.GetDetail(TemplateDescription, ""), TemplateUrl = template.Url, Definition = definitions.GetDefinition(template.GetContentType()).Clone(), Template = clone, Original = template }; info.Definition.Template = template.Name; return(info); }
private TemplateDefinition CreateTemplateInfo(ContentItem template) { var info = new TemplateDefinition { Name = template.Name, Title = template.Title, Description = template.GetDetail(TemplateDescription, ""), TemplateUrl = template.Url, Definition = map.GetOrCreateDefinition(template.GetContentType(), template.Name), TemplateFactory = () => { var clone = template.Clone(true); clone.SetDetail(TemplateDescription, null, typeof(string)); clone.Title = ""; clone.Name = null; clone.TemplateKey = template.Name; return(clone); }, OriginalFactory = () => template }; return(info); }
private string CopyItem(NameValueCollection request) { var path = PartsExtensions.EnsureDraft(versions, versionRepository, navigator, request); ContentItem item = path.CurrentItem; ContentItem page = path.CurrentPage; item = item.Clone(true); item.Name = null; item.ZoneName = request["zone"]; foreach (var child in Find.EnumerateChildren(item, true, false)) { child.SetVersionKey(Guid.NewGuid().ToString()); } var beforeItem = PartsExtensions.GetBeforeItem(navigator, request, page); ContentItem parent; if (beforeItem != null) { parent = beforeItem.Parent; int newIndex = parent.Children.IndexOf(beforeItem); ValidateLocation(item, parent); Utility.Insert(item, parent, newIndex); } else { parent = PartsExtensions.GetBelowItem(navigator, request, page); ValidateLocation(item, parent); Utility.Insert(item, parent, parent.Children.Count); } Utility.UpdateSortOrder(parent.Children); versionRepository.Save(page); return(page.Url.ToUrl().SetQueryParameter("edit", "drag")); }
public override ContentItem Copy(ContentItem source, ContentItem destination) { Trace.TraceInformation("ContentPersister.Copy " + source + " to " + destination); ContentItem cloned = source.Clone(includeChildren:true); if (cloned.Name == source.ID.ToString()) cloned.Name = null; cloned.Parent = destination; Save(cloned); foreach (var descendant in Find.EnumerateChildren(cloned).ToArray()) Save(descendant); return cloned; }
private ContentTemplate CreateTemplateInfo(ContentItem template) { var clone = template.Clone(true); var info = new ContentTemplate { Name = template.Name, Title = template.Title, Description = template.GetDetail(TemplateDescription, ""), TemplateUrl = template.Url, Definition = definitions.GetDefinition(template.GetContentType()), Template = clone, Original = template //HiddenEditors = (template.GetDetailCollection("HiddenEditors", false) ?? new DetailCollection()).ToList<string>(), }; clone.SetDetail(TemplateDescription, null, typeof(string)); clone.Title = ""; clone.Name = null; return info; }
public override ContentItem Copy(ContentItem source, ContentItem destination) { Trace.TraceInformation("ContentPersister.Copy " + source + " to " + destination); ContentItem cloned = source.Clone(includeChildren:true); if (cloned.Name == source.ID.ToString()) cloned.Name = null; cloned.Parent = destination; Save(cloned); return cloned; }
/// <summary>Creates an old version of an item. This must be called before the item item is modified.</summary> /// <param name="item">The item to create a old version of.</param> /// <returns>The old version.</returns> public virtual ContentItem SaveVersion(ContentItem item) { CancelItemEventArgs args = new CancelItemEventArgs(item); if (ItemSavingVersion != null) ItemSavingVersion.Invoke(this, args); if (!args.Cancel) { item = args.AffectedItem; ContentItem oldVersion = item.Clone(false); oldVersion.Expires = Utility.CurrentTime().AddSeconds(-1); oldVersion.Updated = Utility.CurrentTime().AddSeconds(-1); oldVersion.Parent = null; oldVersion.TranslationOf = null; oldVersion.VersionOf = item; if (item.Parent != null) oldVersion["ParentID"] = item.Parent.ID; if (item.TranslationOf != null) oldVersion["TranslationOfID"] = item.TranslationOf.ID; _itemRepository.SaveOrUpdate(oldVersion); if (ItemSavedVersion != null) ItemSavedVersion.Invoke(this, new ItemEventArgs(oldVersion)); return oldVersion; } return null; }
private TemplateDefinition CreateTemplateInfo(ContentItem template) { var clone = template.Clone(true); clone.SetDetail(TemplateDescription, null, typeof(string)); clone.Title = ""; clone.Name = null; clone["TemplateName"] = template.Name; var info = new TemplateDefinition { Name = template.Name, Title = template.Title, Description = template.GetDetail(TemplateDescription, ""), TemplateUrl = template.Url, Definition = definitions.GetDefinition(template.GetContentType()).Clone(), Template = clone, Original = template }; info.Definition.Template = template.Name; return info; }