diff --git a/Oqtane.Client/Resources/Modules/Admin/Files/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Files/Add.resx
index 67845d7b..235c5130 100644
--- a/Oqtane.Client/Resources/Modules/Admin/Files/Add.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/Files/Add.resx
@@ -162,4 +162,7 @@
Name:
+
+ Download Files
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx
index 81d6a5a6..38874ed3 100644
--- a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx
@@ -183,4 +183,13 @@
Image Sizes:
+
+ Folder Management!
+
+
+ Private
+
+
+ Public
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx
index a4d0f7f2..381bae6d 100644
--- a/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx
@@ -195,4 +195,7 @@
Please Note That After An Initial Installation You Must <a href={0}>Restart</a> The Application In Order To Activate The Default Scheduled Jobs.
+
+ Refresh
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx
index 4d6bd593..037e700c 100644
--- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx
@@ -141,4 +141,7 @@
Upload
+
+ Product
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx
index 20b0c41f..62972b72 100644
--- a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx
@@ -249,4 +249,10 @@
Please Note That Overriding The Default Site Theme With An Unrelated Page Theme May Result In Compatibility Issues For Your Site
+
+ Permissions
+
+
+ Theme Settings
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/Modules/Admin/Upgrade/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Upgrade/Index.resx
index a6f7fa40..5f1fa146 100644
--- a/Oqtane.Client/Resources/Modules/Admin/Upgrade/Index.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/Upgrade/Index.resx
@@ -141,4 +141,10 @@
Upload
+
+ Framework Is Already Up To Date
+
+
+ Upload A Framework Package (Oqtane.Framework.version.nupkg) And Then Select Upgrade
+
\ No newline at end of file
diff --git a/Oqtane.Client/Resources/SharedResources.resx b/Oqtane.Client/Resources/SharedResources.resx
index d02dfa0a..3c1426b2 100644
--- a/Oqtane.Client/Resources/SharedResources.resx
+++ b/Oqtane.Client/Resources/SharedResources.resx
@@ -402,4 +402,7 @@
Results
+
+ Recently Released
+
\ No newline at end of file
diff --git a/Oqtane.Client/Services/Interfaces/ISyncService.cs b/Oqtane.Client/Services/Interfaces/ISyncService.cs
index 65b5c226..12af4f2e 100644
--- a/Oqtane.Client/Services/Interfaces/ISyncService.cs
+++ b/Oqtane.Client/Services/Interfaces/ISyncService.cs
@@ -14,6 +14,6 @@ namespace Oqtane.Services
///
///
///
- Task
GetSyncAsync(DateTime lastSyncDate);
+ Task GetSyncEventsAsync(DateTime lastSyncDate);
}
}
diff --git a/Oqtane.Client/Services/SyncService.cs b/Oqtane.Client/Services/SyncService.cs
index 6f60d176..3885706c 100644
--- a/Oqtane.Client/Services/SyncService.cs
+++ b/Oqtane.Client/Services/SyncService.cs
@@ -16,7 +16,7 @@ namespace Oqtane.Services
private string ApiUrl => CreateApiUrl("Sync");
///
- public async Task GetSyncAsync(DateTime lastSyncDate)
+ public async Task GetSyncEventsAsync(DateTime lastSyncDate)
{
return await GetJsonAsync($"{ApiUrl}/{lastSyncDate.ToString("yyyyMMddHHmmssfff")}");
}
diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor
index c2a61f64..8e3f4ecc 100644
--- a/Oqtane.Client/UI/SiteRouter.razor
+++ b/Oqtane.Client/UI/SiteRouter.razor
@@ -98,7 +98,7 @@
User user = null;
var editmode = false;
var refresh = false;
- var lastsyncdate = DateTime.UtcNow.AddHours(-1); // events in the past hour
+ var lastsyncdate = DateTime.MinValue;
var runtime = (Shared.Runtime)Enum.Parse(typeof(Shared.Runtime), Runtime);
_error = "";
@@ -177,27 +177,21 @@
}
// process any sync events
- var sync = await SyncService.GetSyncAsync(lastsyncdate);
+ var sync = await SyncService.GetSyncEventsAsync(lastsyncdate);
lastsyncdate = sync.SyncDate;
if (sync.SyncEvents.Any())
{
// reload client application if server was restarted or site runtime/rendermode was modified
if (PageState != null && site != null && sync.SyncEvents.Exists(item => item.Action == SyncEventActions.Reload && ((item.EntityName == EntityNames.Host && site.Runtime != "Server") || (item.EntityName == EntityNames.Site && item.EntityId == site.SiteId))))
{
- if (!querystring.ContainsKey("reloaded"))
- {
- NavigationManager.NavigateTo(_absoluteUri + (!_absoluteUri.Contains("?") ? "?" : "&") + "reloaded", true);
- return;
- }
+ NavigationManager.NavigateTo(_absoluteUri, true);
+ return;
}
// reload client application if current user auth information has changed
if (PageState != null && user != null && sync.SyncEvents.Exists(item => item.Action == SyncEventActions.Reload && item.EntityName == EntityNames.User && item.EntityId == user.UserId))
{
- if (!querystring.ContainsKey("reloaded"))
- {
- NavigationManager.NavigateTo(_absoluteUri + (!_absoluteUri.Contains("?") ? "?" : "&") + "reloaded", true);
- return;
- }
+ NavigationManager.NavigateTo(_absoluteUri, true);
+ return;
}
// when site information has changed the PageState needs to be refreshed
if (sync.SyncEvents.Exists(item => item.EntityName == EntityNames.Site && item.EntityId == SiteState.Alias.SiteId))
diff --git a/Oqtane.Server/Controllers/SyncController.cs b/Oqtane.Server/Controllers/SyncController.cs
index 6c4a136d..2d54d4ff 100644
--- a/Oqtane.Server/Controllers/SyncController.cs
+++ b/Oqtane.Server/Controllers/SyncController.cs
@@ -23,10 +23,16 @@ namespace Oqtane.Controllers
[HttpGet("{lastSyncDate}")]
public Sync Get(string lastSyncDate)
{
+ DateTime currentdate = DateTime.UtcNow;
+ DateTime lastdate = DateTime.ParseExact(lastSyncDate, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
+ if (lastdate == DateTime.MinValue)
+ {
+ lastdate = currentdate;
+ }
Sync sync = new Sync
{
- SyncDate = DateTime.UtcNow,
- SyncEvents = _syncManager.GetSyncEvents(_alias.TenantId, DateTime.ParseExact(lastSyncDate, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture))
+ SyncDate = currentdate,
+ SyncEvents = _syncManager.GetSyncEvents(_alias.TenantId, lastdate)
};
return sync;
}