N2.Web.UI.WebControls.ItemEditorList.Sort C# (CSharp) Method

Sort() private method

private Sort ( object sender, int offset ) : void
sender object
offset int
return void
		private void Sort(object sender, int offset)
		{
			ContentItem item = GetAssociatedItem(sender);
			var path = EnsureDraft(item);
			
            if (path.CurrentItem != null && path.CurrentItem != path.CurrentPage)
			{
				var parent = path.CurrentItem.Parent;
				var siblings = GetItems().Select(ci => parent.Children.FirstOrDefault(s => s.VersionOf.Value == ci || s == ci)).ToList();
				var currentIndex = siblings.IndexOf(path.CurrentItem);
				var newIndex = currentIndex + offset;
				if (newIndex >= 0)
				{
					if (newIndex < siblings.Count - 1)
						newIndex = parent.Children.IndexOf(siblings[newIndex]);
					else
						newIndex = parent.Children.Count;

					Utility.Insert(path.CurrentItem, parent, newIndex);
					Utility.UpdateSortOrder(parent.Children).ToList();

					UpdateItemFromTopEditor(path);

					var cvr = Engine.Resolve<ContentVersionRepository>();
					cvr.Save(path.CurrentPage);
				}
			}

			RedirectToVersionOfSelf(path.CurrentPage);
		}