Как удалить вновь созданную версию элемента, если программно нет изменений с предыдущей версией в sitecore
Я создаю версию элемента на кнопку блокировки и редактирования. Я хочу удалить эту версию, если автор не изменяет значение этой версии во время проверки версии. Я хотел бы сравнить версии и удалить вновь созданную версию, если нет изменений во время проверки версии элемента.
Примечание: рабочий процесс не требуется
2 ответа
Решение
На событие ItemSaving вы можете получить список изменений в элементе. Вот пример кода, чтобы получить идею:
protected void OnItemSaving(object sender, EventArgs args)
{
var newItem = Event.ExtractParameter(args, 0) as Item;
Item originalItem = newItem.Database.GetItem(newItem.ID, newItem.Language, newItem.Version);
var differences = FindDifferences(newItem, originalItem);
}
private List<string> FindDifferences(Item newItem, Item originalItem)
{
newItem.Fields.ReadAll();
IEnumerable<string> fieldNames = newItem.Fields.Select(f => f.Name);
return fieldNames
.Where(fieldName => newItem[fieldName] != originalItem[fieldName])
.ToList();
}
- Открыть элемент в редакторе контента
- Нажмите на вкладку Версии
- Нажмите кнопку "Сравнить" на блоке "Версии". В результате вы увидите диалог с возможностью сравнения 2 версий. Если вы не обнаружите никаких изменений, вы можете удалить только что созданную версию. PS Снимок экрана с версии 7.2, но 8+ версии имеют аналогичный способ сравнения версий.