From 1babaff610a8f1c7ecd8f8e0633e5f79fd9a5334 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 19 Jul 2023 09:17:58 +0200 Subject: [PATCH] add fake data --- .../src/mocks/data/partial-views.data.ts | 245 ++++++++++++++++-- .../mocks/handlers/partial-views.handlers.ts | 7 +- 2 files changed, 228 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/partial-views.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/partial-views.data.ts index 2a1498a35d..2088f3efbc 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/partial-views.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/partial-views.data.ts @@ -3,10 +3,14 @@ import { createFileSystemTreeItem } from './utils.js'; import { FileSystemTreeItemPresentationModel, PagedFileSystemTreeItemPresentationModel, + PartialViewResponseModel, + PartialViewSnippetResponseModel, SnippetItemResponseModel, } from '@umbraco-cms/backoffice/backend-api'; -export const treeData: Array = [ +type PartialViewsDataItem = PartialViewResponseModel & FileSystemTreeItemPresentationModel; + +export const treeData: Array = [ { path: 'blockgrid', isFolder: true, @@ -34,6 +38,17 @@ export const treeData: Array = [ name: 'area.cshtml', type: 'partial-view', hasChildren: false, + content: `@using Umbraco.Extensions + @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + +
+ @await Html.GetBlockGridItemsHtmlAsync(Model) +
+ `, }, { path: 'blockgrid/items.cshtml', @@ -41,6 +56,7 @@ export const treeData: Array = [ name: 'items.cshtml', type: 'partial-view', hasChildren: false, + content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage', }, { path: 'blocklist/default.cshtml', @@ -48,13 +64,37 @@ export const treeData: Array = [ name: 'default.cshtml', type: 'partial-view', hasChildren: false, + content: `@using Umbraco.Extensions + @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + @{ + if (Model?.Any() != true) { return; } + } + +
+ @await Html.GetBlockGridItemsHtmlAsync(Model) +
+ `, }, { path: 'grid/editors', isFolder: false, - name: 'editors', + name: 'embed.cshtml', type: 'partial-view', hasChildren: false, + content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + + @if (Model is not null) + { + string embedValue = Convert.ToString(Model.value); + embedValue = embedValue.DetectIsJson() ? Model.value.preview : Model.value; + +
+ @Html.Raw(embedValue) +
+ } + `, }, { path: 'grid/default.cshtml', @@ -62,6 +102,7 @@ export const treeData: Array = [ name: 'items.cshtml', type: 'partial-view', hasChildren: false, + content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage', }, ]; @@ -92,50 +133,212 @@ class UmbPartialViewsTreeData extends UmbEntityData = [ +export const snippets: Array = [ { name: 'Empty', + content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage', }, { name: 'Breadcrumb', + content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + @using Umbraco.Cms.Core.Routing + @using Umbraco.Extensions + + @inject IPublishedUrlProvider PublishedUrlProvider + @* + This snippet makes a breadcrumb of parents using an unordered HTML list. + + How it works: + - It uses the Ancestors() method to get all parents and then generates links so the visitor can go back + - Finally it outputs the name of the current page (without a link) + *@ + + @{ var selection = Model.Ancestors().ToArray(); } + + @if (selection?.Length > 0) + { + + }`, }, { name: 'EditProfile', - }, - { - name: 'ListAncestorsFromCurrentPage', - }, - { - name: 'ListChildPagesFromCurrentPage', - }, - { - name: 'ListChildPagesOrderedByDate', - }, - { - name: 'ListChildPagesOrderedByName', - }, - { - name: 'ListChildPagesWithDoctype', - }, - { - name: 'ListDescendantsFromCurrentPage', + content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + + @using Umbraco.Cms.Core.Services + @using Umbraco.Cms.Web.Common.Security + @using Umbraco.Cms.Web.Website.Controllers + @using Umbraco.Cms.Web.Website.Models + @using Umbraco.Extensions + @inject MemberModelBuilderFactory memberModelBuilderFactory; + @inject IMemberExternalLoginProviders memberExternalLoginProviders + @inject IExternalLoginWithKeyService externalLoginWithKeyService + @{ + + // Build a profile model to edit + var profileModel = await memberModelBuilderFactory + .CreateProfileModel() + // If null or not set, this will redirect to the current page + .WithRedirectUrl(null) + // Include editable custom properties on the form + .WithCustomProperties(true) + .BuildForCurrentMemberAsync(); + + var success = TempData["FormSuccess"] != null; + + var loginProviders = await memberExternalLoginProviders.GetMemberProvidersAsync(); + var externalSignInError = ViewData.GetExternalSignInProviderErrors(); + + var currentExternalLogin = profileModel is null + ? new Dictionary() + : externalLoginWithKeyService.GetExternalLogins(profileModel.Key).ToDictionary(x=>x.LoginProvider, x=>x.ProviderKey); + } + + + + + + @if (profileModel != null) + { + if (success) + { + @* This message will show if profileModel.RedirectUrl is not defined (default) *@ +

Profile updated

+ } + + using (Html.BeginUmbracoForm("HandleUpdateProfile", new { RedirectUrl = profileModel.RedirectUrl })) + { +

Update your account.

+
+
+
+ + + +
+
+ + + +
+ + @if (!string.IsNullOrWhiteSpace(profileModel.UserName)) + { +
+ + + +
+ } + + @if (profileModel.MemberProperties != null) + { + for (var i = 0; i < profileModel.MemberProperties.Count; i++) + { +
+ @Html.LabelFor(m => profileModel.MemberProperties[i].Value, profileModel.MemberProperties[i].Name) + + @Html.HiddenFor(m => profileModel.MemberProperties[i].Alias) + +
+ } + } + + + + if (loginProviders.Any()) + { +
+

Link external accounts

+ + if (externalSignInError?.AuthenticationType is null && externalSignInError?.Errors.Any() == true) + { + @Html.DisplayFor(x => externalSignInError.Errors); + } + + @foreach (var login in loginProviders) + { + if (currentExternalLogin.TryGetValue(login.ExternalLoginProvider.AuthenticationType, out var providerKey)) + { + @using (Html.BeginUmbracoForm(nameof(UmbExternalLoginController.Disassociate))) + { + + + + if (externalSignInError?.AuthenticationType == login.ExternalLoginProvider.AuthenticationType) + { + @Html.DisplayFor(x => externalSignInError.Errors); + } + } + } + else + { + @using (Html.BeginUmbracoForm(nameof(UmbExternalLoginController.LinkLogin))) + { + + + if (externalSignInError?.AuthenticationType == login.ExternalLoginProvider.AuthenticationType) + { + @Html.DisplayFor(x => externalSignInError.Errors); + } + } + } + + } + } + } + }`, }, { name: 'Login', + content: 'login', }, { name: 'LoginStatus', + content: 'loginStatus', }, { name: 'MultinodeTree-picker', + content: 'MultinodeTree-picker', }, { name: 'Navigation', + content: 'Navigation', }, { name: 'RegisterMember', + content: 'RegisterMember', }, { name: 'SiteMap', + content: 'SiteMap', }, ]; + +class UmbPartialViewSnippetsData extends UmbEntityData { + constructor() { + super(snippets); + } + + getSnippets(): Array { + return this.data; + } + + getSnippetByName(name: string): SnippetItemResponseModel | undefined { + return this.data.find((item) => item.name === name); + } +} + +export const umbPartialViewSnippetsData = new UmbPartialViewSnippetsData(); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/partial-views.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/partial-views.handlers.ts index 5b41d6b7ae..9c91bca140 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/partial-views.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/partial-views.handlers.ts @@ -1,8 +1,9 @@ const { rest } = window.MockServiceWorker; +import { RestHandler, MockedRequest, DefaultBodyType } from 'msw'; import { umbPartialViewsTreeData } from '../data/partial-views.data.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; - const treeHandlers = [ +const treeHandlers = [ rest.get(umbracoPath('/tree/partial-view/root'), (req, res, ctx) => { const response = umbPartialViewsTreeData.getTreeRoot(); return res(ctx.status(200), ctx.json(response)); @@ -25,7 +26,7 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils'; }), ]; - const detailHandlers = []; - const folderHandlers = []; +const detailHandlers: RestHandler>[] = []; +const folderHandlers: RestHandler>[] = []; export const handlers = [...treeHandlers, ...detailHandlers, ...folderHandlers] \ No newline at end of file