Как удалить вновь созданную версию элемента, если программно нет изменений с предыдущей версией в 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();
    }
  1. Открыть элемент в редакторе контента
  2. Нажмите на вкладку Версии
  3. Нажмите кнопку "Сравнить" на блоке "Версии". В результате вы увидите диалог с возможностью сравнения 2 версий. Если вы не обнаружите никаких изменений, вы можете удалить только что созданную версию. PS Снимок экрана с версии 7.2, но 8+ версии имеют аналогичный способ сравнения версий.
Другие вопросы по тегам