From d48a0715310b99aab44d19fb5cd36edebd05b7dc Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 8 Jun 2022 16:04:17 +0300 Subject: [PATCH] set properties dynamically --- .../Shared/Components/Pages/ContentParser.cs | 23 +++++++++++-------- .../Shared/Components/Pages/Default.cshtml | 5 +--- .../Components/Pages/WidgetContentFragment.cs | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/ContentParser.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/ContentParser.cs index 8019ae3ac2..e0d53e1b6e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/ContentParser.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/ContentParser.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; @@ -10,6 +9,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Pages; public class ContentParser : IContentParser, ITransientDependency { + private const string delimeter = "----"; private readonly CmsKitContentWidgetOptions _options; public ContentParser(IOptions options) { @@ -26,7 +26,6 @@ public class ContentParser : IContentParser, ITransientDependency }; } - string delimeter = "----"; var replacedText = Regex.Replace(content, @"\[.*?\]", delimeter); var parsedList = new List(); @@ -56,7 +55,6 @@ public class ContentParser : IContentParser, ITransientDependency { parsedList.Add(replacedText.Substring(0, index)); replacedText = replacedText.Substring(index, replacedText.Length - index); - } else { @@ -64,22 +62,27 @@ public class ContentParser : IContentParser, ITransientDependency } } - var name = _options.WidgetConfigs.FirstOrDefault(p => p.Key == "Poll").Value?.Name; - var pollNames = Regex.Matches(content, @"(?<=PollName="")(.*?)(?="")").Select(p => p.Value).ToList(); + var polls = Regex.Matches(content, @"(?<=Widget Type="")(.*?)(?="")").Select(p => p.Value).ToList(); var contentFragments = new List(); + for (int i = 0, k = 0; i < parsedList.Count; i++) { if (parsedList[i] == delimeter) { - contentFragments.Add(new WidgetContentFragment(name) + var name = _options.WidgetConfigs.Where(p => p.Key == polls[k]).Select(p => p.Value.Name).FirstOrDefault(); + if (name is not null) { - Properties = + contentFragments.Add(new WidgetContentFragment(name) { - { "name", pollNames[k++] } - } - }); + Properties = + { + { "Name", pollNames[k]} + } + }); + } + k++; } else { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/Default.cshtml index 45720013b6..3b6e6f0f8c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/Default.cshtml @@ -18,10 +18,7 @@ } else if (contentFragment is WidgetContentFragment widgetContentFragment) { - @await Component.InvokeAsync(widgetContentFragment.Name, new - { - name = widgetContentFragment.Properties.FirstOrDefault().Value - }) + @await Component.InvokeAsync(widgetContentFragment.Name, widgetContentFragment.Properties) } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/WidgetContentFragment.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/WidgetContentFragment.cs index 125c48a72e..8dea303b0e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/WidgetContentFragment.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Pages/WidgetContentFragment.cs @@ -8,11 +8,11 @@ public class WidgetContentFragment : ContentFragment public string ViewComponentName { get; set; } - public Dictionary Properties { get; } + public IDictionary Properties { get; } public WidgetContentFragment(string name) { Name = name; - Properties = new Dictionary(); + Properties = new Dictionary(); } } \ No newline at end of file