From bf29f29ff5e078b11f5c395e848ea6c90859f0cb Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Sat, 2 May 2020 12:20:22 +0200 Subject: [PATCH] get model + editor config in space --- zero.Core/Api/SpacesApi.cs | 45 +++++++++++++++++++ zero.Core/Extensions/StringExtensions.cs | 18 ++++++++ .../App/Components/Buttons/state-button.vue | 2 +- zero.Web/App/Components/Forms/toggle.vue | 11 ++++- zero.Web/App/Pages/spaces/views/editor.vue | 13 +++--- zero.Web/App/Resources/spaces.js | 18 ++++++++ zero.Web/App/editor/editor.vue | 14 ++++-- zero.Web/Controllers/SpacesController.cs | 42 +++++++++++++++++ zero.Web/Models/SpaceContentEditModel.cs | 16 +++++++ zero.Web/Sass/Core/_settings.scss | 2 +- zero.Web/Startup.cs | 2 +- 11 files changed, 169 insertions(+), 14 deletions(-) create mode 100644 zero.Web/Models/SpaceContentEditModel.cs diff --git a/zero.Core/Api/SpacesApi.cs b/zero.Core/Api/SpacesApi.cs index bc98a965..5bebf042 100644 --- a/zero.Core/Api/SpacesApi.cs +++ b/zero.Core/Api/SpacesApi.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Threading.Tasks; using zero.Core.Entities; using zero.Core.Extensions; +using zero.Core.Renderer; namespace zero.Core.Api { @@ -40,6 +41,27 @@ namespace zero.Core.Api } + /// + public RendererConfig GetEditorConfig(string alias) + { + Space space = GetByAlias(alias); + + if (space == null) + { + return null; + } + + AbstractGenericRenderer renderer = Options.Renderers.FirstOrDefault(x => x.TargetType == space.Type); + + if (renderer == null) + { + return null; + } + + return renderer.Build(); + } + + /// public async Task GetItem(string alias) where T : SpaceContent { @@ -53,6 +75,19 @@ namespace zero.Core.Api } + /// + public async Task GetItem(string alias, string id) where T : SpaceContent + { + using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + { + return await session.Query() + .Where(x => x.SpaceAlias == alias && x.Id == id) + .ProjectInto() + .FirstOrDefaultAsync(); + } + } + + /// public async Task> GetList(string alias) where T : SpaceContent { @@ -124,11 +159,21 @@ namespace zero.Core.Api /// SpaceCollection GetAll(); + /// + /// Get editor configuration for a space + /// + RendererConfig GetEditorConfig(string alias); + /// /// Get editor item for a space /// Task GetItem(string alias) where T : SpaceContent; + /// + /// Get editor item for a space + /// + Task GetItem(string alias, string id) where T : SpaceContent; + /// /// Get all list items by space alias /// diff --git a/zero.Core/Extensions/StringExtensions.cs b/zero.Core/Extensions/StringExtensions.cs index 0533b036..e981bff8 100644 --- a/zero.Core/Extensions/StringExtensions.cs +++ b/zero.Core/Extensions/StringExtensions.cs @@ -1,5 +1,6 @@ using System; using System.Globalization; +using System.Linq; namespace zero.Core.Extensions { @@ -87,5 +88,22 @@ namespace zero.Core.Extensions } return input; } + + public static string ToCamelCaseId(this string input) + { + if (String.IsNullOrEmpty(input)) + { + return input; + } + + if (input.Length < 2) + { + return input.ToLowerInvariant(); + } + + string[] parts = input.Split('.'); + + return String.Join(".", parts.Select(x => x.ToCamelCase())); + } } } diff --git a/zero.Web/App/Components/Buttons/state-button.vue b/zero.Web/App/Components/Buttons/state-button.vue index a7e99509..a61bb42d 100644 --- a/zero.Web/App/Components/Buttons/state-button.vue +++ b/zero.Web/App/Components/Buttons/state-button.vue @@ -56,7 +56,7 @@ { background: var(--color-bg-mid); //border: 1px solid var(--color-line); - padding: 6px 16px; + padding: 10px 16px; &:first-of-type { diff --git a/zero.Web/App/Components/Forms/toggle.vue b/zero.Web/App/Components/Forms/toggle.vue index b1142351..b76334d3 100644 --- a/zero.Web/App/Components/Forms/toggle.vue +++ b/zero.Web/App/Components/Forms/toggle.vue @@ -90,16 +90,23 @@ transition: all 0.2s ease; } - &.is-active + &.is-active i { background: var(--color-primary); + transform: translateX(18px); + /*background: var(--color-primary); border-color: transparent; i { background: var(--color-primary-fg); transform: translateX(18px); - } + }*/ } } + + /*.ui-toggle.is-disabled .ui-toggle-switch i + { + background: var(--color-bg-dark); + }*/ \ No newline at end of file diff --git a/zero.Web/App/Pages/spaces/views/editor.vue b/zero.Web/App/Pages/spaces/views/editor.vue index 7563038f..946a024b 100644 --- a/zero.Web/App/Pages/spaces/views/editor.vue +++ b/zero.Web/App/Pages/spaces/views/editor.vue @@ -9,13 +9,12 @@ - +