2019-03-30 23:04:15 -04:00
|
|
|
@model SharedLibraryCore.Configuration.ApplicationConfiguration
|
|
|
|
|
|
|
|
@{
|
|
|
|
ViewData["Title"] = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CONFIGURATION_TITLE"];
|
|
|
|
string optionalText = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex["COMMAND_HELP_OPTIONAL"];
|
|
|
|
string advancedText = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CONFIGURATION_ADVANCED"];
|
|
|
|
string addText = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CONFIGURATION_ADD"];
|
2019-04-11 21:43:05 -04:00
|
|
|
|
|
|
|
var properties = Model.GetType().GetProperties();
|
|
|
|
|
|
|
|
string[] getLinkedPropertyName(System.Reflection.PropertyInfo info)
|
|
|
|
{
|
|
|
|
var test = (info.GetCustomAttributes(false)
|
|
|
|
.Where(_attr => _attr.GetType() == typeof(SharedLibraryCore.Helpers.LinkedConfiguration))
|
|
|
|
.FirstOrDefault() as SharedLibraryCore.Helpers.LinkedConfiguration);
|
|
|
|
|
|
|
|
return test?.LinkedPropertyNames ?? new string[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
bool shouldIgnore(System.Reflection.PropertyInfo info) => (info.GetCustomAttributes(false)
|
|
|
|
.Where(_attr => _attr.GetType() == typeof(SharedLibraryCore.Helpers.ConfigurationIgnore))
|
|
|
|
.FirstOrDefault() as SharedLibraryCore.Helpers.ConfigurationIgnore) != null;
|
|
|
|
|
|
|
|
bool isOptional(System.Reflection.PropertyInfo info) => (info.GetCustomAttributes(false)
|
|
|
|
.Where(_attr => _attr.GetType() == typeof(SharedLibraryCore.Helpers.ConfigurationOptional))
|
|
|
|
.FirstOrDefault() as SharedLibraryCore.Helpers.ConfigurationOptional) != null;
|
|
|
|
|
|
|
|
bool hasLinkedParent(System.Reflection.PropertyInfo info)
|
|
|
|
{
|
|
|
|
return Model.GetType().GetProperties().SelectMany(_prop => getLinkedPropertyName(_prop)).Contains(info.Name);
|
|
|
|
}
|
2019-03-30 23:04:15 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
<div class="row">
|
2019-04-11 21:43:05 -04:00
|
|
|
<div class="col-12 text-white-50 ">
|
|
|
|
<form method="post">
|
|
|
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
|
|
|
|
|
|
|
@foreach (var property in properties)
|
|
|
|
{
|
|
|
|
if (shouldIgnore(property))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
string[] linkedPropertyNames = getLinkedPropertyName(property);
|
|
|
|
|
|
|
|
if (property.PropertyType.Name == typeof(System.Boolean).Name)
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var attributes = linkedPropertyNames.Length > 0 ? new { htmlAttributes = new { @class = "has-related-content", data_related_content = string.Join(',', linkedPropertyNames.Select(_id => $"#{_id}_content")) } } : null;
|
|
|
|
<div class="form-group form-check bg-primary mb-0 pl-3 pr-3 p-2">
|
|
|
|
@Html.Editor(property.Name, attributes)
|
|
|
|
@Html.Label(property.Name, null, new { @class = "form-check-label ml-1" })
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (property.PropertyType.Name.Contains("List"))
|
|
|
|
{
|
|
|
|
if (hasLinkedParent(property))
|
|
|
|
{
|
|
|
|
<div id="@($"{property.Name}_content")" class="@(linkedPropertyNames.Length == 0 ? "" : "hide") bg-dark pl-3 pr-3 pb-2">
|
|
|
|
@if (linkedPropertyNames.Length == 0)
|
|
|
|
{
|
|
|
|
@Html.Label(property.Name, null, new { @class = "pt-3" })
|
|
|
|
}
|
|
|
|
@Html.Editor(property.Name, new { htmlAttributes = new { @class = $"form-group form-control bg-dark text-white-50 {(linkedPropertyNames.Length == 0 ? "mb-3" : "mb-0")}" } })
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
@Html.Label(property.Name, null, new { @class = "bg-primary pl-3 pr-3 p-2 mb-0 mt-0 w-100" })
|
|
|
|
<div id="@($"{property.Name}_content")" class="pl-3 pr-3 pt-2 pb-3 bg-dark">
|
|
|
|
@Html.Editor(property.Name, new { htmlAttributes = new { @class = "form-control bg-dark text-white-50 mt-2", placeholder = isOptional(property) ? optionalText : "" } })
|
|
|
|
<a asp-controller="Configuration" asp-action="GetNewListItem" asp-route-propertyName="@property.Name" class="btn btn-primary configuration-add-new mt-2">@addText</a>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (hasLinkedParent(property))
|
|
|
|
{
|
|
|
|
<div id="@($"{property.Name}_content")" class="@(hasLinkedParent(property) ? "hide" : "") bg-dark pl-3 pr-3 pb-3">
|
|
|
|
@Html.Label(property.Name, null, new { @class = "pt-3" })
|
|
|
|
@Html.Editor(property.Name, new { htmlAttributes = new { @class = "form-group form-control bg-dark text-white-50 mb-0", placeholder = isOptional(property) ? optionalText : "" } })
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
<button asp-controller="Configuration" asp-action="Edit"></button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<div class="col-12 text-white-50 configuration-form d-none">
|
2019-03-30 23:04:15 -04:00
|
|
|
<form asp-action="Index">
|
|
|
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
|
|
|
|
|
|
|
<!-- start webfront settings -->
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input has-related-content" data-related-content="#enable_webfront_content" asp-for="EnableWebFront" /> @Html.DisplayNameFor(model => model.EnableWebFront)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<div id="enable_webfront_content" class="hide bg-dark pl-4 pr-4 pt-2 pb-2">
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="WebfrontBindUrl" class="control-label"></label>
|
|
|
|
<input asp-for="WebfrontBindUrl" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="WebfrontBindUrl" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="ManualWebfrontUrl" class="control-label"></label>
|
|
|
|
<input asp-for="ManualWebfrontUrl" placeholder="@optionalText" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="ManualWebfrontUrl" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- end webfront settings -->
|
|
|
|
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input" asp-for="EnableMultipleOwners" /> @Html.DisplayNameFor(model => model.EnableMultipleOwners)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input" asp-for="EnableSteppedHierarchy" /> @Html.DisplayNameFor(model => model.EnableSteppedHierarchy)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- start social link settings -->
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input" data-related-content="#enable_social_content" asp-for="EnableSocialLink" /> @Html.DisplayNameFor(model => model.EnableSocialLink)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<div id="enable_social_content" class="hide bg-dark pl-4 pr-4 pt-2 pb-2">
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="SocialLinkAddress" class="control-label"></label>
|
|
|
|
<input asp-for="SocialLinkAddress" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="SocialLinkAddress" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="SocialLinkTitle" class="control-label"></label>
|
|
|
|
<input asp-for="SocialLinkTitle" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="SocialLinkTitle" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- end social link settings -->
|
|
|
|
<!-- start custom say name settings -->
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input" data-related-content="#enable_sayname_content" asp-for="EnableCustomSayName" /> @Html.DisplayNameFor(model => model.EnableCustomSayName)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<div id="enable_sayname_content" class="hide bg-dark pl-4 pr-4 pt-2 pb-2">
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="CustomSayName" class="control-label"></label>
|
|
|
|
<input asp-for="CustomSayName" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="CustomSayName" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- end custom say name settings -->
|
|
|
|
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
2019-04-11 21:43:05 -04:00
|
|
|
<input class="form-check-input" asp-for="IgnoreBots" /> @Html.DisplayNameFor(model => model.IgnoreBots)
|
2019-03-30 23:04:15 -04:00
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group form-check bg-primary mb-0">
|
|
|
|
<label class="form-check-label p-2 pl-4">
|
|
|
|
<input class="form-check-input" data-related-content="#enable_webfront_connection_whitelist_content" asp-for="EnableWebfrontConnectionWhitelist" /> @Html.DisplayNameFor(model => model.EnableWebfrontConnectionWhitelist)
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<div id="enable_webfront_connection_whitelist_content" class="hide bg-dark pl-4 pr-4 pt-4 pb-4 ">
|
|
|
|
@Html.EditorFor(model => model.WebfrontConnectionWhitelist, new { htmlAttributes = new { @class = "form-control bg-dark text-white-50 mb-2" } })
|
|
|
|
<div class="btn btn-primary btn-block">@addText</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="bg-primary mt-4">
|
|
|
|
<div class="p-2 pl-4">@advancedText</div>
|
|
|
|
</div>
|
|
|
|
<div class="bg-dark pl-4 pr-4 pt-2 pb-2">
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="CustomParserEncoding" class="control-label"></label>
|
|
|
|
<input asp-for="CustomParserEncoding" placeholder="@optionalText" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="CustomParserEncoding" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="CustomLocale" class="control-label"></label>
|
|
|
|
<input asp-for="CustomLocale" placeholder="@optionalText" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="CustomLocale" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="DatabaseProvider" class="control-label"></label>
|
|
|
|
<input asp-for="DatabaseProvider" placeholder="@optionalText" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="DatabaseProvider" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="ConnectionString" class="control-label"></label>
|
|
|
|
<input asp-for="ConnectionString" placeholder="@optionalText" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="ConnectionString" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="RConPollRate" class="control-label"></label>
|
|
|
|
<input asp-for="RConPollRate" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="RConPollRate" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="MaximumTempBanTime" class="control-label"></label>
|
|
|
|
<input asp-for="MaximumTempBanTime" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="MaximumTempBanTime" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label asp-for="AutoMessagePeriod" class="control-label"></label>
|
|
|
|
<input asp-for="AutoMessagePeriod" class="form-control bg-dark text-white-50" />
|
|
|
|
<span asp-validation-for="AutoMessagePeriod" class="text-danger"></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="submit" value="Save" class="btn btn-primary btn-block" />
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@section scripts {
|
|
|
|
<environment include="Development">
|
|
|
|
<script type="text/javascript" src="~/js/configuration.js"></script>
|
|
|
|
</environment>
|
|
|
|
}
|
|
|
|
|