@page "/_Admin/FrameworkMenu/Edit/{id}"
@using WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkMenuVMs
@using WalkingTec.Mvvm.Core.Extensions
@inherits BasePage
@if (Model.Entity.IsInside != false)
{
}
else
{
}
@code {
private FrameworkMenuVM2 Model = null;
private List AllType = new List();
private List AllModels = new List();
private List AllFolders = new List();
private List AllActions = new List();
private List IconTypes = new List();
private List Icons = new List();
private List ClientPages;
public string SelectedIconType { get; set; } = "";
private ValidateForm vform { get; set; }
[Parameter]
public string id { get; set; }
protected override async Task OnInitializedAsync()
{
AllType.Add(new SelectedItem { Text = WtmBlazor.Localizer["_Admin.Inside"], Value = "True" });
AllType.Add(new SelectedItem { Text = WtmBlazor.Localizer["_Admin.Outside"], Value = "False" });
AllFolders = await WtmBlazor.Api.CallItemsApi("/api/_FrameworkMenu/GetFolders", placeholder: WtmBlazor.Localizer["Sys.PleaseSelect"]);
IconTypes = await WtmBlazor.Api.CallItemsApi("/api/_FrameworkMenu/GetIcons", placeholder: WtmBlazor.Localizer["Sys.PleaseSelect"]);
var items = WtmBlazor.GetAllPages();
ClientPages = WtmBlazor.GetAllPages();
AllModels.Add(new SelectedItem { Text = WtmBlazor.Localizer["Sys.PleaseSelect"], Value = "" });
foreach (var item in ClientPages)
{
foreach (var sub in item.Children)
{
AllModels.Add(new SelectedItem { Text = sub.PageName, Value = sub.ClassName ?? sub.Url, GroupName = item.PageName });
}
}
var rv = await WtmBlazor.Api.CallAPI($"/api/_FrameworkMenu/{id}");
if (string.IsNullOrEmpty(rv?.Data?.Entity?.Icon) == false)
{
rv.Data.Entity.Icon = rv.Data.Entity.Icon.Trim();
var iconinfo = rv.Data.Entity.Icon.Split(" ");
SelectedIconType = iconinfo[0];
await OnIconChange(new SelectedItem { Value = SelectedIconType });
}
AllActions = await WtmBlazor.Api.CallItemsApi($"/api/_FrameworkMenu/GetActionsByModel?ModelName={rv.Data.SelectedModule}");
Model = rv.Data;
}
private async Task OnModelChange(SelectedItem item)
{
var url = ClientPages.FlatTree().Where(x => x.ClassName == item.Value || x.Url == item.Value).Select(x => x.Url).FirstOrDefault();
AllActions = await WtmBlazor.Api.CallItemsApi($"/api/_FrameworkMenu/GetActionsByModel?ModelName={item.Value}");
Model.Entity.Url = url;
StateHasChanged();
}
private async Task OnIconChange(SelectedItem item)
{
Icons = await WtmBlazor.Api.CallItemsApi($"/api/_FrameworkMenu/GetIconItems?key={item.Value}", placeholder: WtmBlazor.Localizer["Sys.PleaseSelect"]);
foreach (var icon in Icons)
{
if (icon.Value != "")
{
icon.Value = SelectedIconType + " " + icon.Value;
}
}
StateHasChanged();
}
private async Task Submit(EditContext context)
{
await PostsForm(vform, $"/api/_frameworkmenu/edit", (s) => "Sys.OprationSuccess", method: HttpMethodEnum.PUT);
}
public void OnClose()
{
CloseDialog();
}
}