diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/OrchardCoreBuilderExtensions.cs b/src/OrchardCore/OrchardCore.DisplayManagement/OrchardCoreBuilderExtensions.cs index 3d62c5418d7..ca2bff861f0 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/OrchardCoreBuilderExtensions.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/OrchardCoreBuilderExtensions.cs @@ -95,12 +95,14 @@ public static OrchardCoreBuilder AddTheming(this OrchardCoreBuilder builder) services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); + services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); + services.AddTagHelpers(); services.AddTagHelpers(); services.AddTagHelpers(); }); diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/DateTimeTagHelper.cs b/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/DateTimeTagHelper.cs new file mode 100644 index 00000000000..89b8211cf19 --- /dev/null +++ b/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/DateTimeTagHelper.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace OrchardCore.DisplayManagement.TagHelpers +{ + [HtmlTargetElement("datetime")] + public class DateTimeTagHelper : TagHelper + { + private const string UtcAttribute = "utc"; + private const string FormatAttribute = "format"; + + protected IShapeFactory _shapeFactory; + protected IDisplayHelper _displayHelper; + + public DateTimeTagHelper(IShapeFactory shapeFactory, IDisplayHelper displayHelper) + { + _shapeFactory = shapeFactory; + _displayHelper = displayHelper; + } + + [HtmlAttributeName(UtcAttribute)] + public DateTime? Utc { set; get; } + + [HtmlAttributeName(FormatAttribute)] + public string Format { set; get; } + + public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + var shapeType = "DateTime"; + dynamic shape = await _shapeFactory.CreateAsync(shapeType); + shape.Utc = Utc; + shape.Format = Format; + + output.Content.SetHtmlContent(await _displayHelper.ShapeExecuteAsync(shape)); + + // We don't want any encapsulating tag around the shape + output.TagName = null; + } + } +} \ No newline at end of file diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/TimeSpanTagHelper.cs b/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/TimeSpanTagHelper.cs new file mode 100644 index 00000000000..2a094b922c0 --- /dev/null +++ b/src/OrchardCore/OrchardCore.DisplayManagement/TagHelpers/TimeSpanTagHelper.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace OrchardCore.DisplayManagement.TagHelpers +{ + [HtmlTargetElement("timespan")] + public class TimeSpanTagHelper : TagHelper + { + private const string UtcAttribute = "utc"; + private const string OriginAttribute = "origin"; + + protected IShapeFactory _shapeFactory; + protected IDisplayHelper _displayHelper; + + public TimeSpanTagHelper(IShapeFactory shapeFactory, IDisplayHelper displayHelper) + { + _shapeFactory = shapeFactory; + _displayHelper = displayHelper; + } + + [HtmlAttributeName(UtcAttribute)] + public DateTime? Utc { set; get; } + + [HtmlAttributeName(OriginAttribute)] + public DateTime? Origin { set; get; } + + public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + var shapeType = "TimeSpan"; + dynamic shape = await _shapeFactory.CreateAsync(shapeType); + shape.Utc = Utc; + shape.Origin = Origin; + + output.Content.SetHtmlContent(await _displayHelper.ShapeExecuteAsync(shape)); + + // We don't want any encapsulating tag around the shape + output.TagName = null; + } + } +} \ No newline at end of file