|
|
|
@ -4,7 +4,6 @@ |
|
|
|
@using Volo.Abp.FeatureManagement.Localization |
|
|
|
@using Volo.Abp.Validation.StringValues |
|
|
|
@using Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement |
|
|
|
@using Volo.Abp.Features |
|
|
|
@model FeatureManagementModal |
|
|
|
@inject IHtmlLocalizer<AbpFeatureManagementResource> L |
|
|
|
@{ |
|
|
|
@ -13,53 +12,67 @@ |
|
|
|
<form method="post" asp-page="/FeatureManagement/FeatureManagementModal" data-script-class="abp.modals.FeatureManagement"> |
|
|
|
<abp-modal size="Large"> |
|
|
|
<abp-modal-header title="@(L["Features"].Value)"></abp-modal-header> |
|
|
|
@if (Model.FeatureListDto?.Features != null && Model.FeatureListDto.Features.Any()) |
|
|
|
@if (Model.FeatureListResultDto != null && Model.FeatureListResultDto.Groups.Any()) |
|
|
|
{ |
|
|
|
<abp-modal-body class="ml-4"> |
|
|
|
<input asp-for="@Model.ProviderKey" /> |
|
|
|
<input asp-for="@Model.ProviderName" /> |
|
|
|
@for (var i = 0; i < Model.FeatureListDto.Features.Count; i++) |
|
|
|
{ |
|
|
|
var feature = Model.FeatureListDto.Features[i]; |
|
|
|
var disabled = Model.IsDisabled(feature.Provider.Name); |
|
|
|
<div class="mt-2" style="padding-left: @(feature.Depth * 20)px"> |
|
|
|
<input asp-for="@Model.ProviderKey"/> |
|
|
|
<input asp-for="@Model.ProviderName"/> |
|
|
|
<abp-tabs name="FeaturesTabs" tab-style="PillVertical" vertical-header-size="_4" class="custom-scroll-container"> |
|
|
|
@for (var i = 0; i < Model.FeatureListResultDto.Groups.Count; i++) |
|
|
|
{ |
|
|
|
<abp-tab title="@Model.FeatureListResultDto.Groups[i].DisplayName" name="v-pills-tab-@Model.FeatureListResultDto.Groups[i].GetNormalizedGroupName()"> |
|
|
|
<h4>@Model.FeatureListResultDto.Groups[i].DisplayName</h4> |
|
|
|
<hr class="mt-2 mb-3"/> |
|
|
|
<div class="custom-scroll-content"> |
|
|
|
<div class="pl-1 pt-1"> |
|
|
|
@for (var j = 0; j < Model.FeatureListResultDto.Groups[i].Features.Count; j++) |
|
|
|
{ |
|
|
|
var feature = Model.FeatureListResultDto.Groups[i].Features[j]; |
|
|
|
var disabled = Model.IsDisabled(feature.Provider.Name); |
|
|
|
<div class="mt-2" style="padding-left: @(feature.Depth * 20)px"> |
|
|
|
|
|
|
|
<spam class="mr-2">@feature.DisplayName @(disabled ? $"({feature.Provider.Name})" : "")</spam> |
|
|
|
<spam class="mr-2">@feature.DisplayName @(disabled ? $"({feature.Provider.Name})" : "")</spam> |
|
|
|
|
|
|
|
<input type="text" name="Features[@i].ProviderName" value="@feature.Provider.Name" hidden /> |
|
|
|
<input type="text" name="Features[@i].Type" value="@feature.ValueType?.Name" hidden /> |
|
|
|
@if (feature.ValueType is FreeTextStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="Features[@i].Name" value="@feature.Name" hidden /> |
|
|
|
<input disabled="@disabled" type="text" name="Features[@i].Value" value="@feature.Value" /> |
|
|
|
} |
|
|
|
@if (feature.ValueType is SelectionStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="Features[@i].Name" value="@feature.Name" hidden /> |
|
|
|
<select disabled="@disabled" name="Features[@i].Value"> |
|
|
|
@foreach (var item in (feature.ValueType as SelectionStringValueType).ItemSource.Items) |
|
|
|
{ |
|
|
|
if (item.Value == feature.Value) |
|
|
|
{ |
|
|
|
<option value="@item.Value" selected="selected"> @L.GetString(item.DisplayText.Name) </option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@item.Value"> @L.GetString(item.DisplayText.Name) </option> |
|
|
|
<input type="text" name="FeatureGroups[@i].Features[@j].ProviderName" value="@feature.Provider.Name" hidden/> |
|
|
|
<input type="text" name="FeatureGroups[@i].Features[@j].Type" value="@feature.ValueType?.Name" hidden/> |
|
|
|
@if (feature.ValueType is FreeTextStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="FeatureGroups[@i].Features[@j].Name" value="@feature.Name" hidden/> |
|
|
|
<input disabled="@disabled" type="text" name="FeatureGroups[@i].Features[@j].Value" value="@feature.Value"/> |
|
|
|
} |
|
|
|
@if (feature.ValueType is SelectionStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="FeatureGroups[@i].Features[@j].Name" value="@feature.Name" hidden/> |
|
|
|
<select disabled="@disabled" name="FeatureGroups[@i].Features[@j].Value"> |
|
|
|
@foreach (var item in (feature.ValueType as SelectionStringValueType).ItemSource.Items) |
|
|
|
{ |
|
|
|
if (item.Value == feature.Value) |
|
|
|
{ |
|
|
|
<option value="@item.Value" selected="selected"> @L.GetString(item.DisplayText.Name) </option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@item.Value"> @L.GetString(item.DisplayText.Name) </option> |
|
|
|
} |
|
|
|
} |
|
|
|
</select> |
|
|
|
} |
|
|
|
@if (feature.ValueType is ToggleStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="FeatureGroups[@i].Features[@j].Name" value="@feature.Name" hidden/> |
|
|
|
<input disabled="@disabled" type="checkbox" class="FeatureValueCheckbox" name="FeatureGroups[@i].Features[@j].BoolValue" value="@feature.Value" |
|
|
|
@Html.Raw(feature.Value == "True" ? "checked" : "")/> |
|
|
|
} |
|
|
|
</div> |
|
|
|
} |
|
|
|
} |
|
|
|
</select> |
|
|
|
} |
|
|
|
@if (feature.ValueType is ToggleStringValueType) |
|
|
|
{ |
|
|
|
<input type="text" name="Features[@i].Name" value="@feature.Name" hidden /> |
|
|
|
<input disabled="@disabled" type="checkbox" class="FeatureValueCheckbox" name="Features[@i].BoolValue" value="@feature.Value" |
|
|
|
@Html.Raw(feature.Value == "True" ? "checked" : "") /> |
|
|
|
} |
|
|
|
</div> |
|
|
|
} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</abp-tab> |
|
|
|
} |
|
|
|
|
|
|
|
</abp-tabs> |
|
|
|
</abp-modal-body> |
|
|
|
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer> |
|
|
|
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
@ -69,4 +82,3 @@ |
|
|
|
} |
|
|
|
</abp-modal> |
|
|
|
</form> |
|
|
|
|
|
|
|
|