Skip to content

Commit 31690bc

Browse files
authored
Merge pull request #1032 from hargata/Hargata/929
add datetime format override
2 parents 939426a + 18f9129 commit 31690bc

10 files changed

Lines changed: 51 additions & 7 deletions

File tree

Controllers/HomeController.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -550,12 +550,18 @@ public IActionResult DeleteCustomWidgets()
550550
return Json(false);
551551
}
552552
[Authorize(Roles = nameof(UserData.IsRootUser))]
553-
public IActionResult GetLocaleSample(string locale)
553+
public IActionResult GetLocaleSample(string locale, string dtlocale)
554554
{
555-
var cultureInfo = CultureInfo.GetCultureInfo(locale);
555+
var cultureInfo = new CultureInfo(locale);
556+
if (!string.IsNullOrWhiteSpace(dtlocale))
557+
{
558+
var datetimeCulture = CultureInfo.GetCultureInfo(dtlocale);
559+
cultureInfo.DateTimeFormat = datetimeCulture.DateTimeFormat;
560+
}
556561
var viewModel = new LocaleSample
557562
{
558-
ShortDateSample = DateTime.Now.ToString(cultureInfo.DateTimeFormat.ShortDatePattern),
563+
ShortDateSample = DateTime.Now.ToString(cultureInfo.DateTimeFormat.ShortDatePattern, cultureInfo.DateTimeFormat),
564+
ShortDateTimeSample = DateTime.Now.ToString("G", cultureInfo.DateTimeFormat),
559565
CurrencySample = 13.45M.ToString("C", cultureInfo),
560566
NumberSample = 123456.ToString("N", cultureInfo),
561567
DecimalSample = 123456.78M.ToString("N2", cultureInfo)
@@ -572,6 +578,7 @@ public IActionResult Setup()
572578
var viewModel = new ServerSettingsViewModel
573579
{
574580
LocaleOverride = _config.GetLocaleOverride(),
581+
LocaleDateTimeOverride = _config.GetLocaleDateTimeOverride(),
575582
AvailableLocales = installedLocales,
576583
PostgresConnection = _config.GetServerPostgresConnection(),
577584
AllowedFileExtensions = _config.GetAllowedFileUploadExtensions(),

Helper/ConfigHelper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public interface IConfigHelper
1919
string GetWebHookUrl();
2020
bool GetCustomWidgetsEnabled();
2121
string GetLocaleOverride();
22+
string GetLocaleDateTimeOverride();
2223
string GetMOTD();
2324
string GetLogoUrl();
2425
string GetSmallLogoUrl();
@@ -79,6 +80,11 @@ public string GetLocaleOverride()
7980
var locale = CheckString("LUBELOGGER_LOCALE_OVERRIDE");
8081
return locale;
8182
}
83+
public string GetLocaleDateTimeOverride()
84+
{
85+
var locale = CheckString("LUBELOGGER_LOCALE_DT_OVERRIDE");
86+
return locale;
87+
}
8288
public bool GetServerOpenRegistration()
8389
{
8490
return CheckBool(CheckString("LUBELOGGER_OPEN_REGISTRATION"));
@@ -176,6 +182,11 @@ public bool SaveServerConfig(ServerConfig serverConfig)
176182
if (string.IsNullOrWhiteSpace(serverConfig.LocaleOverride))
177183
{
178184
serverConfig.LocaleOverride = null;
185+
serverConfig.LocaleDateTimeOverride = null;
186+
}
187+
if (string.IsNullOrWhiteSpace(serverConfig.LocaleDateTimeOverride))
188+
{
189+
serverConfig.LocaleDateTimeOverride = null;
179190
}
180191
if (serverConfig.AllowedFileExtensions == StaticHelper.DefaultAllowedFileExtensions || string.IsNullOrWhiteSpace(serverConfig.AllowedFileExtensions))
181192
{

Models/ServerConfig.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,8 @@ public class ServerConfig
7171
[JsonPropertyName("LUBELOGGER_LOCALE_OVERRIDE")]
7272
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
7373
public string? LocaleOverride { get; set; } = string.Empty;
74+
[JsonPropertyName("LUBELOGGER_LOCALE_DT_OVERRIDE")]
75+
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
76+
public string? LocaleDateTimeOverride { get; set; } = string.Empty;
7477
}
7578
}

Models/Settings/LocaleSample.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace CarCareTracker.Models
33
public class LocaleSample
44
{
55
public string ShortDateSample { get; set; }
6+
public string ShortDateTimeSample { get; set; }
67
public string CurrencySample { get; set; }
78
public string NumberSample { get; set; }
89
public string DecimalSample { get; set; }

Models/Settings/ServerSettingsViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace CarCareTracker.Models
33
public class ServerSettingsViewModel
44
{
55
public string LocaleOverride { get; set; }
6+
public string LocaleDateTimeOverride { get; set; }
67
public string PostgresConnection { get; set; }
78
public string AllowedFileExtensions { get; set; }
89
public string CustomLogoURL { get; set; }

Program.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@
1818

1919
if (!string.IsNullOrWhiteSpace(builder.Configuration["LUBELOGGER_LOCALE_OVERRIDE"]))
2020
{
21-
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(builder.Configuration["LUBELOGGER_LOCALE_OVERRIDE"]);
22-
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo(builder.Configuration["LUBELOGGER_LOCALE_OVERRIDE"]);
21+
var overrideCulture = new CultureInfo(builder.Configuration["LUBELOGGER_LOCALE_OVERRIDE"]);
22+
if (!string.IsNullOrWhiteSpace(builder.Configuration["LUBELOGGER_LOCALE_DT_OVERRIDE"]))
23+
{
24+
var overrideDTFormat = new CultureInfo(builder.Configuration["LUBELOGGER_LOCALE_DT_OVERRIDE"]);
25+
overrideCulture.DateTimeFormat = overrideDTFormat.DateTimeFormat;
26+
}
27+
CultureInfo.DefaultThreadCurrentCulture = overrideCulture;
28+
CultureInfo.DefaultThreadCurrentUICulture = overrideCulture;
2329
}
2430

2531
//Print Messages

Views/Home/Setup.cshtml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@
6464
}
6565
</select>
6666
<small class="text-body-secondary">@translator.Translate(userLanguage, "Leave blank to use system locale. Restart Required")</small>
67+
<div id="dateTimeLocaleOverride" style="@(string.IsNullOrWhiteSpace(Model.LocaleOverride) ? "display:none;" : "")">
68+
<label for="inputDateTimeLocale">@translator.Translate(userLanguage, "Locale DateTime Override")</label>
69+
<select class="form-select" id="inputDateTimeLocale" onchange="loadLocaleSample()">
70+
@foreach (string installedLocale in Model.AvailableLocales)
71+
{
72+
<!option value="@installedLocale" @(Model.LocaleDateTimeOverride == installedLocale ? "selected" : "")>@installedLocale</!option>
73+
}
74+
</select>
75+
<small class="text-body-secondary">@translator.Translate(userLanguage, "Leave blank to use default datetime format. Restart Required")</small>
76+
</div>
6777
<div id="localeSampleContainer" style="display:none;"></div>
6878
</div>
6979
<div class="form-group">

Views/Home/_LocaleSample.cshtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
}
99
<div class="d-flex flex-column text-secondary">
1010
<span>@translator.Translate(userLanguage, "Short Date"): @Model.ShortDateSample</span>
11+
<span>@translator.Translate(userLanguage, "Short DateTime"): @Model.ShortDateTimeSample</span>
1112
<span>@translator.Translate(userLanguage, "Currency"): @Model.CurrencySample</span>
1213
<span>@translator.Translate(userLanguage, "Number"): @Model.NumberSample</span>
1314
<span>@translator.Translate(userLanguage, "Decimal"): @Model.DecimalSample</span>

wwwroot/defaults/en_US.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

wwwroot/js/serversettings.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ function previousSetupPage() {
4141
}
4242
function loadLocaleSample() {
4343
let selectedLocale = $("#inputLocale").val();
44+
let selectedDateTimeLocale = $("#inputDateTimeLocale").val();
4445
if (selectedLocale.trim() == '') {
4546
$("#localeSampleContainer").hide();
47+
$("#dateTimeLocaleOverride").hide();
4648
} else {
47-
$.get(`/Home/GetLocaleSample?locale=${selectedLocale}`, function (data) {
49+
$("#dateTimeLocaleOverride").show();
50+
$.get(`/Home/GetLocaleSample?locale=${selectedLocale}&dtlocale=${selectedDateTimeLocale}`, function (data) {
4851
$("#localeSampleContainer").html(data);
4952
$("#localeSampleContainer").show();
5053
})
@@ -53,6 +56,7 @@ function loadLocaleSample() {
5356
function saveSetup() {
5457
let setupData = {
5558
LocaleOverride: $("#inputLocale").val(),
59+
LocaleDateTimeOverride: $("#inputDateTimeLocale").val(),
5660
PostgresConnection: $("#inputPostgres").val(),
5761
AllowedFileExtensions: $("#inputFileExt").val(),
5862
CustomLogoURL: $("#inputLogoURL").val(),

0 commit comments

Comments
 (0)