diff --git a/Oqtane.Client/Modules/Admin/Sites/Index.razor b/Oqtane.Client/Modules/Admin/Sites/Index.razor
index 7133f8b5..9b758fdd 100644
--- a/Oqtane.Client/Modules/Admin/Sites/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Sites/Index.razor
@@ -20,7 +20,7 @@ else
|
- |
+ |
@context.Name |
diff --git a/Oqtane.Client/Modules/Controls/ActionDialog.razor b/Oqtane.Client/Modules/Controls/ActionDialog.razor
index 3a8a94ce..aaffa1f7 100644
--- a/Oqtane.Client/Modules/Controls/ActionDialog.razor
+++ b/Oqtane.Client/Modules/Controls/ActionDialog.razor
@@ -28,7 +28,14 @@
}
@if (authorized)
{
-
+ if (Disabled)
+ {
+
+ }
+ else
+ {
+
+ }
}
@code {
@@ -36,13 +43,13 @@
public string Header { get; set; } // required
[Parameter]
- public string Message { get; set; } // required
+ public string Message { get; set; } // required
[Parameter]
public string Text { get; set; } // optional - defaults to Action if not specified
[Parameter]
- public string Action { get; set; } // optional
+ public string Action { get; set; } // optional
[Parameter]
public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel
@@ -50,6 +57,9 @@
[Parameter]
public string Class { get; set; } // optional
+ [Parameter]
+ public bool Disabled { get; set; } // optional
+
[Parameter]
public string EditMode { get; set; } // optional - specifies if a user must be in edit mode to see the action - default is true
diff --git a/Oqtane.Client/Modules/Controls/ActionLink.razor b/Oqtane.Client/Modules/Controls/ActionLink.razor
index d3c3a08b..2ed9c3e7 100644
--- a/Oqtane.Client/Modules/Controls/ActionLink.razor
+++ b/Oqtane.Client/Modules/Controls/ActionLink.razor
@@ -4,7 +4,14 @@
@if (authorized)
{
- @text
+ if (Disabled)
+ {
+ @text
+ }
+ else
+ {
+ @text
+ }
}
@code {
@@ -26,6 +33,9 @@
[Parameter]
public string Style { get; set; } // optional
+ [Parameter]
+ public bool Disabled { get; set; } // optional
+
[Parameter]
public string EditMode { get; set; } // optional - specifies if a user must be in edit mode to see the action - default is true
diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs
index 23b5c4d7..dc8361ec 100644
--- a/Oqtane.Server/Controllers/SiteController.cs
+++ b/Oqtane.Server/Controllers/SiteController.cs
@@ -87,8 +87,15 @@ namespace Oqtane.Controllers
[Authorize(Roles = Constants.HostRole)]
public void Delete(int id)
{
- Sites.DeleteSite(id);
- logger.Log(LogLevel.Information, this, LogFunction.Delete, "Site Deleted {SiteId}", id);
+ if (Sites.GetSites().Count() > 1)
+ {
+ Sites.DeleteSite(id);
+ logger.Log(LogLevel.Information, this, LogFunction.Delete, "Site Deleted {SiteId}", id);
+ }
+ else
+ {
+ logger.Log(LogLevel.Warning, this, LogFunction.Delete, "Unable to delete the root site.");
+ }
}
}
}
diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs
index 495930ba..b51aace3 100644
--- a/Oqtane.Server/Repository/SiteRepository.cs
+++ b/Oqtane.Server/Repository/SiteRepository.cs
@@ -142,10 +142,13 @@ namespace Oqtane.Repository
}
public void DeleteSite(int siteId)
- {
- Site site = db.Site.Find(siteId);
- db.Site.Remove(site);
- db.SaveChanges();
+ {
+ if (db.Site.Count() > 1)
+ {
+ var site = db.Site.Find(siteId);
+ db.Site.Remove(site);
+ db.SaveChanges();
+ }
}
private void CreateSite(Site site)