add fake data
This commit is contained in:
@@ -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<FileSystemTreeItemPresentationModel> = [
|
||||
type PartialViewsDataItem = PartialViewResponseModel & FileSystemTreeItemPresentationModel;
|
||||
|
||||
export const treeData: Array<PartialViewsDataItem> = [
|
||||
{
|
||||
path: 'blockgrid',
|
||||
isFolder: true,
|
||||
@@ -34,6 +38,17 @@ export const treeData: Array<FileSystemTreeItemPresentationModel> = [
|
||||
name: 'area.cshtml',
|
||||
type: 'partial-view',
|
||||
hasChildren: false,
|
||||
content: `@using Umbraco.Extensions
|
||||
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockGridArea>
|
||||
|
||||
<div class="umb-block-grid__area"
|
||||
data-area-col-span="@Model.ColumnSpan"
|
||||
data-area-row-span="@Model.RowSpan"
|
||||
data-area-alias="@Model.Alias"
|
||||
style="--umb-block-grid--grid-columns: @Model.ColumnSpan;--umb-block-grid--area-column-span: @Model.ColumnSpan; --umb-block-grid--area-row-span: @Model.RowSpan;">
|
||||
@await Html.GetBlockGridItemsHtmlAsync(Model)
|
||||
</div>
|
||||
`,
|
||||
},
|
||||
{
|
||||
path: 'blockgrid/items.cshtml',
|
||||
@@ -41,6 +56,7 @@ export const treeData: Array<FileSystemTreeItemPresentationModel> = [
|
||||
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<FileSystemTreeItemPresentationModel> = [
|
||||
name: 'default.cshtml',
|
||||
type: 'partial-view',
|
||||
hasChildren: false,
|
||||
content: `@using Umbraco.Extensions
|
||||
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockGridModel>
|
||||
@{
|
||||
if (Model?.Any() != true) { return; }
|
||||
}
|
||||
|
||||
<div class="umb-block-grid"
|
||||
data-grid-columns="@(Model.GridColumns?.ToString() ?? "12");"
|
||||
style="--umb-block-grid--grid-columns: @(Model.GridColumns?.ToString() ?? "12");">
|
||||
@await Html.GetBlockGridItemsHtmlAsync(Model)
|
||||
</div>
|
||||
`,
|
||||
},
|
||||
{
|
||||
path: 'grid/editors',
|
||||
isFolder: false,
|
||||
name: 'editors',
|
||||
name: 'embed.cshtml',
|
||||
type: 'partial-view',
|
||||
hasChildren: false,
|
||||
content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<dynamic>
|
||||
|
||||
@if (Model is not null)
|
||||
{
|
||||
string embedValue = Convert.ToString(Model.value);
|
||||
embedValue = embedValue.DetectIsJson() ? Model.value.preview : Model.value;
|
||||
|
||||
<div class="video-wrapper">
|
||||
@Html.Raw(embedValue)
|
||||
</div>
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
path: 'grid/default.cshtml',
|
||||
@@ -62,6 +102,7 @@ export const treeData: Array<FileSystemTreeItemPresentationModel> = [
|
||||
name: 'items.cshtml',
|
||||
type: 'partial-view',
|
||||
hasChildren: false,
|
||||
content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -92,50 +133,212 @@ class UmbPartialViewsTreeData extends UmbEntityData<FileSystemTreeItemPresentati
|
||||
|
||||
export const umbPartialViewsTreeData = new UmbPartialViewsTreeData();
|
||||
|
||||
export const snippets: Array<SnippetItemResponseModel> = [
|
||||
export const snippets: Array<PartialViewSnippetResponseModel> = [
|
||||
{
|
||||
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)
|
||||
{
|
||||
<ul class="breadcrumb">
|
||||
@* For each page in the ancestors collection which have been ordered by Level (so we start with the highest top node first) *@
|
||||
@foreach (var item in selection.OrderBy(x => x.Level))
|
||||
{
|
||||
<li><a href="@item.Url(PublishedUrlProvider)">@item.Name</a> <span class="divider">/</span></li>
|
||||
}
|
||||
|
||||
@* Display the current page as the last item in the list *@
|
||||
<li class="active">@Model.Name</li>
|
||||
</ul>
|
||||
}`,
|
||||
},
|
||||
{
|
||||
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<string, string>()
|
||||
: externalLoginWithKeyService.GetExternalLogins(profileModel.Key).ToDictionary(x=>x.LoginProvider, x=>x.ProviderKey);
|
||||
}
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
|
||||
|
||||
@if (profileModel != null)
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
@* This message will show if profileModel.RedirectUrl is not defined (default) *@
|
||||
<p class="text-success">Profile updated</p>
|
||||
}
|
||||
|
||||
using (Html.BeginUmbracoForm<UmbProfileController>("HandleUpdateProfile", new { RedirectUrl = profileModel.RedirectUrl }))
|
||||
{
|
||||
<h2>Update your account.</h2>
|
||||
<hr />
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="@profileModel.Name" class="form-label"></label>
|
||||
<input asp-for="@profileModel.Name" class="form-control" aria-required="true" />
|
||||
<span asp-validation-for="@profileModel.Name" class="form-text text-danger"></span>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="@profileModel.Email" class="form-label"></label>
|
||||
<input asp-for="@profileModel.Email" class="form-control" autocomplete="username" aria-required="true" />
|
||||
<span asp-validation-for="@profileModel.Email" class="form-text text-danger"></span>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(profileModel.UserName))
|
||||
{
|
||||
<div class="mb-3">
|
||||
<label asp-for="@profileModel.UserName" class="form-label"></label>
|
||||
<input asp-for="@profileModel.UserName" class="form-control" autocomplete="username" aria-required="true" />
|
||||
<span asp-validation-for="@profileModel.UserName" class="form-text text-danger"></span>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (profileModel.MemberProperties != null)
|
||||
{
|
||||
for (var i = 0; i < profileModel.MemberProperties.Count; i++)
|
||||
{
|
||||
<div class="mb-3">
|
||||
@Html.LabelFor(m => profileModel.MemberProperties[i].Value, profileModel.MemberProperties[i].Name)
|
||||
<input asp-for="@profileModel.MemberProperties[i].Value" class="form-control" />
|
||||
@Html.HiddenFor(m => profileModel.MemberProperties[i].Alias)
|
||||
<span asp-validation-for="@profileModel.MemberProperties[i].Value" class="form-text text-danger"></span>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
<button type="submit" class="btn btn-primary">Update</button>
|
||||
|
||||
if (loginProviders.Any())
|
||||
{
|
||||
<hr/>
|
||||
<h4>Link external accounts</h4>
|
||||
|
||||
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<UmbExternalLoginController>(nameof(UmbExternalLoginController.Disassociate)))
|
||||
{
|
||||
<input type="hidden" name="providerKey" value="@providerKey"/>
|
||||
<button type="submit" name="provider" value="@login.ExternalLoginProvider.AuthenticationType">
|
||||
Un-Link your @login.AuthenticationScheme.DisplayName account
|
||||
</button>
|
||||
|
||||
if (externalSignInError?.AuthenticationType == login.ExternalLoginProvider.AuthenticationType)
|
||||
{
|
||||
@Html.DisplayFor(x => externalSignInError.Errors);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@using (Html.BeginUmbracoForm<UmbExternalLoginController>(nameof(UmbExternalLoginController.LinkLogin)))
|
||||
{
|
||||
<button type="submit" name="provider" value="@login.ExternalLoginProvider.AuthenticationType">
|
||||
Link your @login.AuthenticationScheme.DisplayName account
|
||||
</button>
|
||||
|
||||
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<SnippetItemResponseModel> {
|
||||
constructor() {
|
||||
super(snippets);
|
||||
}
|
||||
|
||||
getSnippets(): Array<SnippetItemResponseModel> {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
getSnippetByName(name: string): SnippetItemResponseModel | undefined {
|
||||
return this.data.find((item) => item.name === name);
|
||||
}
|
||||
}
|
||||
|
||||
export const umbPartialViewSnippetsData = new UmbPartialViewSnippetsData();
|
||||
@@ -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<MockedRequest<DefaultBodyType>>[] = [];
|
||||
const folderHandlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [];
|
||||
|
||||
export const handlers = [...treeHandlers, ...detailHandlers, ...folderHandlers]
|
||||
Reference in New Issue
Block a user