From a1ac730633448d618aafcc39154ff9936a058b9e Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Mon, 18 Oct 2021 15:26:38 +0100 Subject: [PATCH] Added XML configuration support for cleanup policy --- .../UmbracoSettings/ContentElement.cs | 5 +++++ .../ContentVersionCleanupPolicyElement.cs | 16 ++++++++++++++++ .../UmbracoSettings/IContentSection.cs | 2 ++ .../IContentVersionCleanupPolicySettings.cs | 9 +++++++++ src/Umbraco.Core/Umbraco.Core.csproj | 2 ++ .../config/umbracoSettings.Release.config | 2 ++ 6 files changed, 36 insertions(+) create mode 100644 src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyElement.cs create mode 100644 src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicySettings.cs diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs index 7c6ff4405f..12cc890c2b 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs @@ -22,6 +22,9 @@ namespace Umbraco.Core.Configuration.UmbracoSettings [ConfigurationProperty("notifications", IsRequired = true)] internal NotificationsElement Notifications => (NotificationsElement) base["notifications"]; + [ConfigurationProperty("contentVersionCleanupPolicy", IsRequired = false)] + internal ContentVersionCleanupPolicyElement ContentVersionCleanupPolicy => (ContentVersionCleanupPolicyElement) this["contentVersionCleanupPolicy"]; + [ConfigurationProperty("PreviewBadge")] internal InnerTextConfigurationElement PreviewBadge => GetOptionalTextElement("PreviewBadge", DefaultPreviewBadge); @@ -61,6 +64,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings IEnumerable IContentSection.AllowedUploadFiles => AllowedUploadFiles; + IContentVersionCleanupPolicySettings IContentSection.ContentVersionCleanupPolicySettings => ContentVersionCleanupPolicy; + bool IContentSection.ShowDeprecatedPropertyEditors => ShowDeprecatedPropertyEditors; string IContentSection.LoginBackgroundImage => LoginBackgroundImage; diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyElement.cs new file mode 100644 index 0000000000..a736ccfd34 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyElement.cs @@ -0,0 +1,16 @@ +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentVersionCleanupPolicyElement : UmbracoConfigurationElement, IContentVersionCleanupPolicySettings + { + [ConfigurationProperty("enable", DefaultValue = false)] + public bool EnableCleanup => (bool)this["enable"]; + + [ConfigurationProperty("keepAllVersionsNewerThanDays", DefaultValue = 2)] + public int KeepAllVersionsNewerThanDays => (int)this["keepAllVersionsNewerThanDays"]; + + [ConfigurationProperty("keepLatestVersionPerDayForDays", DefaultValue = 30)] + public int KeepLatestVersionPerDayForDays => (int)this["keepLatestVersionPerDayForDays"]; + } +} diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs index 0f52adf02e..97893e0a91 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs @@ -25,6 +25,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings IEnumerable AllowedUploadFiles { get; } + IContentVersionCleanupPolicySettings ContentVersionCleanupPolicySettings { get; } + /// /// Gets a value indicating whether to show deprecated property editors in /// a datatype list of available editors. diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicySettings.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicySettings.cs new file mode 100644 index 0000000000..66e9e17d97 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicySettings.cs @@ -0,0 +1,9 @@ +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + public interface IContentVersionCleanupPolicySettings + { + bool EnableCleanup { get; } + int KeepAllVersionsNewerThanDays { get; } + int KeepLatestVersionPerDayForDays { get; } + } +} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index d6b373cbcf..696de73fd0 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -130,6 +130,8 @@ + + diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.Release.config b/src/Umbraco.Web.UI/config/umbracoSettings.Release.config index 5ce2c24d41..f41eb10ce1 100644 --- a/src/Umbraco.Web.UI/config/umbracoSettings.Release.config +++ b/src/Umbraco.Web.UI/config/umbracoSettings.Release.config @@ -190,6 +190,8 @@ assets/img/application/umbraco_logo_white.svg + +