diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Drivers/ThemeEntryDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Themes/Drivers/ThemeEntryDisplayDriver.cs new file mode 100644 index 00000000000..a8ba0321bf6 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Drivers/ThemeEntryDisplayDriver.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using OrchardCore.DisplayManagement.Handlers; +using OrchardCore.DisplayManagement.Views; +using OrchardCore.Themes.Models; + +namespace OrchardCore.Themes.Drivers; + +public class ThemeEntryDisplayDriver : DisplayDriver +{ + public override IDisplayResult Display(ThemeEntry model) + { + var results = new List() + { + View("ThemeEntry_SummaryAdmin__Thumbnail", model).Location("SummaryAdmin", "Thumbnail:5"), + View("ThemeEntry_SummaryAdmin__Title", model).Location("SummaryAdmin", "Header:5"), + View("ThemeEntry_SummaryAdmin__Descriptions", model).Location("SummaryAdmin", "Content:5"), + View("ThemeEntry_SummaryAdmin__Attributes", model).Location("SummaryAdmin", "Tags:5"), + }; + + if (model.IsCurrent) + { + results.Add(View("ThemeEntry_SummaryAdmin__Current", model).Location("SummaryAdmin", "FooterBelow:5")); + } + else + { + results.AddRange([ + View("ThemeEntry_SummaryAdmin__ButtonsMakeCurrent", model).Location("SummaryAdmin", "FooterStart:5"), + View("ThemeEntry_SummaryAdmin__ButtonsToggleState", model).Location("SummaryAdmin", "FooterEnd:5") + ]); + } + + return Combine(results); + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs index 6329390f965..10e388c7a46 100644 --- a/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs @@ -9,6 +9,7 @@ using OrchardCore.Security.Permissions; using OrchardCore.Themes.Deployment; using OrchardCore.Themes.Drivers; +using OrchardCore.Themes.Models; using OrchardCore.Themes.Recipes; using OrchardCore.Themes.Services; @@ -33,6 +34,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddDeployment(); services.AddScoped, ToggleThemeNavbarDisplayDriver>(); + services.AddScoped, ThemeEntryDisplayDriver>(); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Admin/Index.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Admin/Index.cshtml index 96a9147b686..efec01d1d9a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Admin/Index.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Admin/Index.cshtml @@ -1,4 +1,12 @@ -@model OrchardCore.Themes.Models.SelectThemesViewModel +@using OrchardCore.DisplayManagement +@using OrchardCore.DisplayManagement.ModelBinding +@using OrchardCore.Themes.Models + +@inject IDisplayManager ThemeEntryDisplayManager +@inject IUpdateModelAccessor UpdateModelAccessor + +@model SelectThemesViewModel +

@RenderTitleSegments(T["Themes"])

@@ -12,67 +20,7 @@ else @foreach (var themeEntry in Model.Themes) {
-
-
-
-

@themeEntry.Name

-

- @themeEntry.Extension.Manifest.Description -

    - @if (!string.IsNullOrWhiteSpace(themeEntry.Extension.Manifest.Author)) - { -
  • @themeEntry.Extension.Manifest.Author
  • - } - @if (!string.IsNullOrWhiteSpace(themeEntry.Extension.Manifest.Website)) - { -
  • @themeEntry.Extension.Manifest.Website
  • - } - @if (themeEntry.Extension.Manifest.Tags.Any()) - { -
  • @string.Join(", ", themeEntry.Extension.Manifest.Tags.ToArray())
  • - } -
  • @themeEntry.Extension.Manifest.Version
  • -
-

-
- -
+ @await DisplayAsync(await ThemeEntryDisplayManager.BuildDisplayAsync(themeEntry, UpdateModelAccessor.ModelUpdater, "SummaryAdmin"))
} diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Attributes.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Attributes.SummaryAdmin.cshtml new file mode 100644 index 00000000000..1df41ccfadc --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Attributes.SummaryAdmin.cshtml @@ -0,0 +1,37 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +@if (!string.IsNullOrWhiteSpace(Model.Value.Extension.Manifest.Author)) +{ +
  • + + + @Model.Value.Extension.Manifest.Author + +
  • +} +@if (!string.IsNullOrWhiteSpace(Model.Value.Extension.Manifest.Website)) +{ +
  • + + + @Model.Value.Extension.Manifest.Website + +
  • +} +@if (Model.Value.Extension.Manifest.Tags.Any()) +{ +
  • + + @string.Join(", ", Model.Value.Extension.Manifest.Tags.ToArray()) + +
  • +} +
  • + + @Model.Value.Extension.Manifest.Version + +
  • + diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsMakeCurrent.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsMakeCurrent.SummaryAdmin.cshtml new file mode 100644 index 00000000000..96599f69bb8 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsMakeCurrent.SummaryAdmin.cshtml @@ -0,0 +1,8 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +
    + +
    diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsToggleState.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsToggleState.SummaryAdmin.cshtml new file mode 100644 index 00000000000..891e57e1bcb --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-ButtonsToggleState.SummaryAdmin.cshtml @@ -0,0 +1,17 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +@if (Model.Value.Enabled) +{ +
    + +
    + + return; +} + +
    + +
    diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Current.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Current.SummaryAdmin.cshtml new file mode 100644 index 00000000000..5df81437827 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Current.SummaryAdmin.cshtml @@ -0,0 +1,13 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +@if (Model.Value.IsAdmin) +{ + @T["This is the current Admin theme"] + + return; +} + +@T["This is the current Site theme"] diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Descriptions.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Descriptions.SummaryAdmin.cshtml new file mode 100644 index 00000000000..04d7bfaa8aa --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Descriptions.SummaryAdmin.cshtml @@ -0,0 +1,8 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + + + @Model.Value.Extension.Manifest.Description + diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Thumbnail.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Thumbnail.SummaryAdmin.cshtml new file mode 100644 index 00000000000..7ad50368694 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Thumbnail.SummaryAdmin.cshtml @@ -0,0 +1,6 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +
    diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Title.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Title.SummaryAdmin.cshtml new file mode 100644 index 00000000000..7774734ae6d --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/Items/ThemeEntry-Title.SummaryAdmin.cshtml @@ -0,0 +1,6 @@ +@using OrchardCore.DisplayManagement.Views +@using OrchardCore.Themes.Models + +@model ShapeViewModel + +

    @Model.Value.Name

    diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Views/ThemeEntry.SummaryAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Themes/Views/ThemeEntry.SummaryAdmin.cshtml new file mode 100644 index 00000000000..393ec3f68e3 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Views/ThemeEntry.SummaryAdmin.cshtml @@ -0,0 +1,64 @@ +
    + + @if (Model.Thumbnail != null) + { + @await DisplayAsync(Model.Thumbnail) + } + +
    + + @if (Model.Header != null) + { + @await DisplayAsync(Model.Header) + } + + @if (Model.Content != null || Model.Attributes != null) + { +

    + @if (Model.Content != null) + { + @await DisplayAsync(Model.Content) + } + + @if (Model.Tags != null) + { +

      + @await DisplayAsync(Model.Tags) +
    + } +

    + } + +
    + + @if (Model.FooterStart != null || Model.FooterEnd != null || Model.FooterBelow != null) + { + + } + +