diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs index 79edbac637..9d7a2dd3f9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.FileProviders; +using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Widgets; -using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.ButtonsDemo { @@ -13,61 +8,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S { public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml"; - private const string DemoSectionOpeningTag = "")) - { - demoName = demoName.Left(demoName.IndexOf(">", StringComparison.InvariantCultureIgnoreCase)); - } - - model.SourceCodes[demoName] = sb.ToString(); - sb = new StringBuilder(); - } - else if(sb != null) - { - sb.AppendLine(line); - } - } - - return View(ViewPath, model); - } - } - - public class DemoViewModel - { - public Dictionary SourceCodes { get; set; } - - public DemoViewModel() - { - SourceCodes = new Dictionary(); + return View(ViewPath); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml index b8675b6cb3..92f160bbb3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml @@ -1,17 +1,8 @@ -@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.ButtonsDemo.DemoViewModel -
-

- Basic Buttons -

-
- - - - -
-
-
-@Model.SourceCodes["Buttons.Basic"]
-
-
-
\ No newline at end of file +@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.ButtonsDemo +

+ Basic Buttons +

+ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpDemoSectionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpDemoSectionTagHelper.cs new file mode 100644 index 0000000000..eba67494a7 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpDemoSectionTagHelper.cs @@ -0,0 +1,84 @@ +using System; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.FileProviders; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.TagHelpers +{ + public class AbpDemoSectionTagHelper : AbpTagHelper + { + private const string DemoSectionOpeningTag = "ABP Tag Helpers"); + output.PostContent.AppendHtml("
");
+            output.PostContent.Append(GetRawDemoSource());
+            output.PostContent.AppendHtml("
"); + output.PostContent.AppendHtml("
"); + output.PostContent.AppendHtml("

Bootstrap

"); + output.PostContent.AppendHtml("
");
+            output.PostContent.Append(content.GetContent());
+            output.PostContent.AppendHtml("
"); + } + + private string GetRawDemoSource() + { + var viewFileInfo = _virtualFileProvider.GetFileInfo(ViewPath); + var viewFileContent = viewFileInfo.ReadAsString(); + var lines = viewFileContent.SplitToLines(); + + StringBuilder sb = null; + + foreach (var line in lines) + { + if (line.Contains(DemoSectionOpeningTag)) + { + if (GetName(line) == Name) + { + sb = new StringBuilder(); + } + } + else if (line.Contains(DemoSectionClosingTag, StringComparison.InvariantCultureIgnoreCase)) + { + if (sb == null) + { + continue; + } + + return sb.ToString(); + } + else if (sb != null) + { + sb.AppendLine(line); + } + } + + return ""; + } + + private string GetName(string line) + { + var str = line.Substring(line.IndexOf("name=\"", StringComparison.OrdinalIgnoreCase) + "name=\"".Length); + str = str.Left(str.IndexOf("\"", StringComparison.OrdinalIgnoreCase)); + return str; + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/_ViewImports.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/_ViewImports.cshtml similarity index 54% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/_ViewImports.cshtml rename to framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/_ViewImports.cshtml index 229004aa93..8015b96c4d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/_ViewImports.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/_ViewImports.cshtml @@ -1,4 +1,5 @@ @using System.Globalization @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap -@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo