diff --git a/Oqtane.Client/App.razor b/Oqtane.Client/App.razor
index 14f64da5..92b73433 100644
--- a/Oqtane.Client/App.razor
+++ b/Oqtane.Client/App.razor
@@ -30,28 +30,32 @@
}
@code {
- [Parameter]
- public string AntiForgeryToken { get; set; }
+ [Parameter]
+ public string AntiForgeryToken { get; set; }
- [Parameter]
- public string Runtime { get; set; }
+ [Parameter]
+ public string Runtime { get; set; }
- [Parameter]
- public string RenderMode { get; set; }
+ [Parameter]
+ public string RenderMode { get; set; }
- [Parameter]
- public int VisitorId { get; set; }
+ [Parameter]
+ public int VisitorId { get; set; }
- private bool _initialized = false;
- private string _display = "display: none;";
- private Installation _installation = new Installation { Success = false, Message = "" };
+ [Parameter]
+ public string RemoteIPAddress { get; set; }
- private PageState PageState { get; set; }
+ private bool _initialized = false;
+ private string _display = "display: none;";
+ private Installation _installation = new Installation { Success = false, Message = "" };
- protected override async Task OnParametersSetAsync()
- {
- SiteState.AntiForgeryToken = AntiForgeryToken;
- InstallationService.SetAntiForgeryTokenHeader(AntiForgeryToken);
+ private PageState PageState { get; set; }
+
+ protected override async Task OnParametersSetAsync()
+ {
+ SiteState.RemoteIPAddress = RemoteIPAddress;
+ SiteState.AntiForgeryToken = AntiForgeryToken;
+ InstallationService.SetAntiForgeryTokenHeader(AntiForgeryToken);
_installation = await InstallationService.IsInstalled();
if (_installation.Alias != null)
diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor
index 108c4b02..63ce2afc 100644
--- a/Oqtane.Client/Modules/Admin/Site/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Site/Index.razor
@@ -533,6 +533,7 @@
else
{
AddModuleMessage(Localizer["Success.Settings.SaveSite"], MessageType.Success);
+ await interop.ScrollTo(0, 0, "smooth");
}
}
}
diff --git a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
index 61728e5f..ef09cd2a 100644
--- a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
+++ b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
@@ -33,7 +33,7 @@
-
+
@@ -123,11 +123,7 @@
_clrversion = systeminfo["clrversion"];
_osversion = systeminfo["osversion"];
_serverpath = systeminfo["serverpath"];
- _servertime = systeminfo["servertime"];
- if (DateTime.TryParse(_servertime, out DateTime date))
- {
- _servertime += " (" + date.ToUniversalTime().ToString() + " UTC)";
- }
+ _servertime = systeminfo["servertime"] + " UTC";
_installationid = systeminfo["installationid"];
_detailederrors = systeminfo["detailederrors"];
diff --git a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
index 724b58dd..e564fcf8 100644
--- a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
@@ -133,7 +133,7 @@
Server Path
- Server Time
+ Server Date/Time (in UTC)
Framework Version:
@@ -148,7 +148,7 @@
Server Path:
- Server Time:
+ Server Date/Time:
Restart Application
diff --git a/Oqtane.Client/UI/Interop.cs b/Oqtane.Client/UI/Interop.cs
index 2aa9fb9f..28b72307 100644
--- a/Oqtane.Client/UI/Interop.cs
+++ b/Oqtane.Client/UI/Interop.cs
@@ -262,5 +262,22 @@ namespace Oqtane.UI
return Task.CompletedTask;
}
}
+
+ public Task ScrollTo(int top, int left, string behavior)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(behavior)) behavior = "smooth";
+ _jsRuntime.InvokeVoidAsync(
+ "Oqtane.Interop.scrollTo",
+ top, left, behavior);
+ return Task.CompletedTask;
+ }
+ catch
+ {
+ return Task.CompletedTask;
+ }
+ }
+
}
}
diff --git a/Oqtane.Client/UI/PageState.cs b/Oqtane.Client/UI/PageState.cs
index bc0fdacf..5b14ad00 100644
--- a/Oqtane.Client/UI/PageState.cs
+++ b/Oqtane.Client/UI/PageState.cs
@@ -21,5 +21,6 @@ namespace Oqtane.UI
public DateTime LastSyncDate { get; set; }
public Oqtane.Shared.Runtime Runtime { get; set; }
public int VisitorId { get; set; }
+ public string RemoteIPAddress { get; set; }
}
}
diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor
index a5339642..360ff6a1 100644
--- a/Oqtane.Client/UI/SiteRouter.razor
+++ b/Oqtane.Client/UI/SiteRouter.razor
@@ -229,7 +229,8 @@
EditMode = editmode,
LastSyncDate = lastsyncdate,
Runtime = runtime,
- VisitorId = VisitorId
+ VisitorId = VisitorId,
+ RemoteIPAddress = SiteState.RemoteIPAddress
};
OnStateChange?.Invoke(_pagestate);
diff --git a/Oqtane.Client/UI/ThemeBuilder.razor b/Oqtane.Client/UI/ThemeBuilder.razor
index a5437288..77f95a6c 100644
--- a/Oqtane.Client/UI/ThemeBuilder.razor
+++ b/Oqtane.Client/UI/ThemeBuilder.razor
@@ -31,7 +31,7 @@
var interop = new Interop(JsRuntime);
// manage stylesheets for this page
- string batch = DateTime.Now.ToString("yyyyMMddHHmmssfff");
+ string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff");
var links = new List