@((MarkupString)Message)
@if (Type == MessageType.Error && PageState != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
{
diff --git a/Oqtane.Client/UI/RenderModeBoundary.razor b/Oqtane.Client/UI/RenderModeBoundary.razor
index 9289e5a0..abf96087 100644
--- a/Oqtane.Client/UI/RenderModeBoundary.razor
+++ b/Oqtane.Client/UI/RenderModeBoundary.razor
@@ -118,7 +118,7 @@
public void AddModuleMessage(string message, MessageType type, string position, MessageStyle style)
{
- if (message != _messageContent || type != _messageType || position != _messagePosition || style != _messageStyle)
+ if (message != _messageContent || type != _messageType || position != _messagePosition || style != _messageStyle || style == MessageStyle.Toast)
{
_messageContent = message;
_messageType = type;
diff --git a/Oqtane.Server/Controllers/ThemeController.cs b/Oqtane.Server/Controllers/ThemeController.cs
index eb250069..c103d501 100644
--- a/Oqtane.Server/Controllers/ThemeController.cs
+++ b/Oqtane.Server/Controllers/ThemeController.cs
@@ -127,7 +127,7 @@ namespace Oqtane.Controllers
}
// DELETE api/
/5?siteid=x
- [HttpDelete("{themename}")]
+ [HttpDelete("{id}")]
[Authorize(Roles = RoleNames.Host)]
public void Delete(int id, int siteid)
{
diff --git a/Oqtane.Server/Infrastructure/UpgradeManager.cs b/Oqtane.Server/Infrastructure/UpgradeManager.cs
index 532bc3d0..f77edd50 100644
--- a/Oqtane.Server/Infrastructure/UpgradeManager.cs
+++ b/Oqtane.Server/Infrastructure/UpgradeManager.cs
@@ -7,15 +7,11 @@ using Oqtane.Infrastructure.SiteTemplates;
using Oqtane.Models;
using Oqtane.Repository;
using Oqtane.Shared;
-using Oqtane.UI;
-using Org.BouncyCastle.Pqc.Crypto.Lms;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
-using System.Reflection.Metadata;
-using System.Runtime.Serialization;
namespace Oqtane.Infrastructure
{
diff --git a/Oqtane.Server/Oqtane.Server.csproj b/Oqtane.Server/Oqtane.Server.csproj
index 6dde2259..76dd1fb6 100644
--- a/Oqtane.Server/Oqtane.Server.csproj
+++ b/Oqtane.Server/Oqtane.Server.csproj
@@ -13,8 +13,10 @@
+
+
diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs
index bd84354e..fe840c5e 100644
--- a/Oqtane.Server/Repository/SiteRepository.cs
+++ b/Oqtane.Server/Repository/SiteRepository.cs
@@ -168,7 +168,7 @@ namespace Oqtane.Repository
var attribute = (SiteMigrationAttribute)Attribute.GetCustomAttribute(type, typeof(SiteMigrationAttribute));
if (attribute.AliasName == "*" || attribute.AliasName == alias.Name)
{
- if (string.IsNullOrEmpty(site.Version) || Version.Parse(attribute.Version) > Version.Parse(site.Version))
+ if (string.IsNullOrEmpty(site.Version) || attribute.Version == "*" || Version.Parse(attribute.Version) > Version.Parse(site.Version))
{
try
{
@@ -176,14 +176,14 @@ namespace Oqtane.Repository
if (obj != null)
{
obj.Up(site, alias);
- _logger.Log(LogLevel.Information, "Site Migration", LogFunction.Other, "Site Migrated Successfully To Version {version} For {Alias}", version, alias.Name);
+ _logger.Log(LogLevel.Information, "Site Migration", LogFunction.Other, "Site Migrated Successfully For {Alias} And Version {version}", alias.Name, attribute.Version);
}
}
catch (Exception ex)
{
- _logger.Log(LogLevel.Error, "Site Migration", LogFunction.Other, ex, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version}", type, alias.Name, version);
+ _logger.Log(LogLevel.Error, "Site Migration", LogFunction.Other, ex, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version}", type, alias.Name, attribute.Version);
}
- if (string.IsNullOrEmpty(version) || Version.Parse(attribute.Version) > Version.Parse(version))
+ if (attribute.Version != "*" && (string.IsNullOrEmpty(version) || Version.Parse(attribute.Version) > Version.Parse(version)))
{
version = attribute.Version;
}
@@ -490,7 +490,27 @@ namespace Oqtane.Repository
}
else
{
- var module = _moduleRepository.AddModule(pageModule.Module);
+ Module module = null;
+ if (pageTemplateModule.FromPagePath != "")
+ {
+ // used for modules shared across pages
+ var pagePath = pageTemplateModule.FromPagePath;
+ pagePath = (pagePath.ToLower() == "home") ? "" : pagePath;
+ pagePath = (pagePath == "/") ? "" : pagePath;
+ if (pages.Any(item => item.Path.ToLower() == pagePath.ToLower()))
+ {
+ var pageId = pages.First(item => item.Path.ToLower() == pagePath.ToLower()).PageId;
+ if (pageModules.Any(item => item.PageId == pageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title.ToLower() == pageTemplateModule.Title.ToLower()))
+ {
+ module = pageModules.FirstOrDefault(item => item.PageId == pageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title.ToLower() == pageTemplateModule.Title.ToLower()).Module;
+ }
+ }
+ }
+ if (module == null)
+ {
+ module = _moduleRepository.AddModule(pageModule.Module);
+ }
+
pageModule.ModuleId = module.ModuleId;
pageModule.Module = null; // remove tracking
_pageModuleRepository.AddPageModule(pageModule);
diff --git a/Oqtane.Shared/Models/SiteTemplate.cs b/Oqtane.Shared/Models/SiteTemplate.cs
index 42cbffee..9cbade09 100644
--- a/Oqtane.Shared/Models/SiteTemplate.cs
+++ b/Oqtane.Shared/Models/SiteTemplate.cs
@@ -105,6 +105,7 @@ namespace Oqtane.Models
};
Settings = new List();
Content = "";
+ FromPagePath = "";
}
public string ModuleDefinitionName { get; set; }
@@ -118,6 +119,7 @@ namespace Oqtane.Models
public List PermissionList { get; set; }
public List Settings { get; set; }
public string Content { get; set; }
+ public string FromPagePath { get; set; } // for modules shared across pages
[Obsolete("The ModulePermissions property is deprecated. Use PermissionList instead", false)]
public string ModulePermissions