diff --git a/Oqtane.Client/Modules/HtmlText/Edit.razor b/Oqtane.Client/Modules/HtmlText/Edit.razor index 9ad9628b..384a27b4 100644 --- a/Oqtane.Client/Modules/HtmlText/Edit.razor +++ b/Oqtane.Client/Modules/HtmlText/Edit.razor @@ -31,8 +31,8 @@       - @SharedLocalizer["CreatedOn"] - @SharedLocalizer["CreatedBy"] + @Localizer["CreatedOn"] + @Localizer["CreatedBy"] diff --git a/Oqtane.Client/Modules/HtmlText/Settings.razor b/Oqtane.Client/Modules/HtmlText/Settings.razor index 783e1180..85413e55 100644 --- a/Oqtane.Client/Modules/HtmlText/Settings.razor +++ b/Oqtane.Client/Modules/HtmlText/Settings.razor @@ -16,6 +16,12 @@ +
+ +
+ +
+
@@ -26,12 +32,14 @@ private bool validated = false; private string _dynamictokens; + private string _versions = "5"; protected override void OnInitialized() { try { _dynamictokens = SettingService.GetSetting(ModuleState.Settings, "DynamicTokens", "false"); + _versions = SettingService.GetSetting(ModuleState.Settings, "Versions", "3"); } catch (Exception ex) { @@ -45,6 +53,10 @@ { var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); settings = SettingService.SetSetting(settings, "DynamicTokens", _dynamictokens); + if (int.TryParse(_versions, out int versions) && versions >= 0 && versions <= 9) + { + settings = SettingService.SetSetting(settings, "Versions", versions.ToString()); + } await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); } catch (Exception ex) diff --git a/Oqtane.Client/Resources/Modules/HtmlText/Settings.resx b/Oqtane.Client/Resources/Modules/HtmlText/Settings.resx index 68a539c0..f72cd586 100644 --- a/Oqtane.Client/Resources/Modules/HtmlText/Settings.resx +++ b/Oqtane.Client/Resources/Modules/HtmlText/Settings.resx @@ -123,4 +123,10 @@ Dynamic Tokens? + + The number of content versions to preserve (note that zero means unlimited) + + + Versions: + \ No newline at end of file diff --git a/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs b/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs index 53688d4c..2f999602 100644 --- a/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs +++ b/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs @@ -1,7 +1,9 @@ -using System.Linq; -using Oqtane.Documentation; using System.Collections.Generic; +using System.Linq; using Microsoft.EntityFrameworkCore; +using Oqtane.Documentation; +using Oqtane.Repository; +using Oqtane.Shared; namespace Oqtane.Modules.HtmlText.Repository { @@ -18,10 +20,12 @@ namespace Oqtane.Modules.HtmlText.Repository public class HtmlTextRepository : IHtmlTextRepository, ITransientService { private readonly IDbContextFactory _factory; + private readonly ISettingRepository _settingRepository; - public HtmlTextRepository(IDbContextFactory factory) + public HtmlTextRepository(IDbContextFactory factory, ISettingRepository settingRepository) { _factory = factory; + _settingRepository = settingRepository; } public IEnumerable GetHtmlTexts(int moduleId) @@ -39,6 +43,17 @@ namespace Oqtane.Modules.HtmlText.Repository public Models.HtmlText AddHtmlText(Models.HtmlText htmlText) { using var db = _factory.CreateDbContext(); + + var versions = int.Parse(_settingRepository.GetSettingValue(EntityNames.Module, htmlText.ModuleId, "Versions", "3")); + if (versions > 0) + { + var htmlTexts = db.HtmlText.Where(item => item.ModuleId == htmlText.ModuleId).OrderByDescending(item => item.CreatedOn).ToList(); + for (int i = versions - 1; i < htmlTexts.Count; i++) + { + db.HtmlText.Remove(htmlTexts[i]); + } + } + db.HtmlText.Add(htmlText); db.SaveChanges(); return htmlText;