refactoring of site groups
This commit is contained in:
@@ -57,8 +57,8 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||
services.AddScoped<ICookieConsentService, CookieConsentService>();
|
||||
services.AddScoped<ITimeZoneService, TimeZoneService>();
|
||||
services.AddScoped<IMigrationHistoryService, MigrationHistoryService>();
|
||||
services.AddScoped<ISiteGroupDefinitionService, SiteGroupDefinitionService>();
|
||||
services.AddScoped<ISiteGroupService, SiteGroupService>();
|
||||
services.AddScoped<ISiteGroupMemberService, SiteGroupMemberService>();
|
||||
services.AddScoped<IOutputCacheService, OutputCacheService>();
|
||||
|
||||
// providers
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
@inject IJobService JobService
|
||||
@inject IStringLocalizer<SharedResources> SharedLocalizer
|
||||
@inject IOutputCacheService CacheService
|
||||
@inject ISiteGroupDefinitionService SiteGroupDefinitionService
|
||||
@inject ISiteGroupService SiteGroupService
|
||||
@inject ISiteGroupMemberService SiteGroupMemberService
|
||||
|
||||
@if (_initialized)
|
||||
{
|
||||
@@ -448,22 +448,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</Section>
|
||||
<Section Name="SiteGroups" Heading="Site Groups" ResourceKey="SiteGroups">
|
||||
<Section Name="SiteGroupMembers" Heading="Site Groups" ResourceKey="SiteGroupMembers">
|
||||
<div class="container">
|
||||
@if (!_addSiteGroupDefinition)
|
||||
@if (!_addSiteGroup)
|
||||
{
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="group" HelpText="The site groups in this tenant (database)" ResourceKey="SiteGroups">Group: </Label>
|
||||
<Label Class="col-sm-3" For="group" HelpText="The site groups in this tenant (database)" ResourceKey="SiteGroupMembers">Group: </Label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<select id="group" class="form-select" value="@_siteGroupDefinitionId" @onchange="(e => SiteGroupChanged(e))">
|
||||
<select id="group" class="form-select" value="@_siteGroupId" @onchange="(e => SiteGroupChanged(e))">
|
||||
<option value="-1"><@SharedLocalizer["Not Specified"]></option>
|
||||
@foreach (var siteGroupDefinition in _siteGroupDefinitions)
|
||||
@foreach (var siteGroup in _siteGroups)
|
||||
{
|
||||
<option value="@siteGroupDefinition.SiteGroupDefinitionId">@siteGroupDefinition.Name</option>
|
||||
<option value="@siteGroup.SiteGroupId">@siteGroup.Name</option>
|
||||
}
|
||||
</select>
|
||||
@if (!_addSiteGroupDefinition)
|
||||
@if (!_addSiteGroup)
|
||||
{
|
||||
<button type="button" class="btn btn-primary" @onclick="AddSiteGroup">@SharedLocalizer["Add"]</button>
|
||||
}
|
||||
@@ -471,75 +471,62 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (_siteGroupDefinitionId != -1 || _addSiteGroupDefinition)
|
||||
@if (_siteGroupId != -1 || _addSiteGroup)
|
||||
{
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="groupname" HelpText="Name of the site group" ResourceKey="GroupName">Group Name: </Label>
|
||||
<Label Class="col-sm-3" For="groupname" HelpText="Name of the site group" ResourceKey="GroupName">Name: </Label>
|
||||
<div class="col-sm-9">
|
||||
<input id="groupname" class="form-control" @bind="@_groupName" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="synchronization" HelpText="Specifies if the group supports content synchronization between the primary site and other sites in the group" ResourceKey="Synchronization">Synchronization? </Label>
|
||||
<Label Class="col-sm-3" For="grouptype" HelpText="The site group type (ie. synchronization, localization)" ResourceKey="GroupType">Type: </Label>
|
||||
<div class="col-sm-9">
|
||||
<select id="synchronization" class="form-select" @bind="@_synchronization">
|
||||
<option value="False">@SharedLocalizer["No"]</option>
|
||||
<option value="True">@Localizer["Yes"]</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="localization" HelpText="Specifies if the content of the sites in the group are localized" ResourceKey="Localization">Localization? </Label>
|
||||
<div class="col-sm-9">
|
||||
<select id="localization" class="form-select" @bind="@_localization">
|
||||
<option value="True">@SharedLocalizer["Yes"]</option>
|
||||
<option value="False">@SharedLocalizer["No"]</option>
|
||||
<select id="grouptype" class="form-select" @bind="@_groupType">
|
||||
<option value="@SiteGroupTypes.Synchronization">@Localizer[@SiteGroupTypes.Synchronization]</option>
|
||||
<option value="@SiteGroupTypes.Localization">@Localizer[SiteGroupTypes.Localization]</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (_siteGroupDefinitionId != -1)
|
||||
@if (_siteGroupId != -1)
|
||||
{
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="site" HelpText="The sites in this tenant (database)" ResourceKey="Site">Site: </Label>
|
||||
<Label Class="col-sm-3" For="site" HelpText="The sites which are members of this site group" ResourceKey="Site">Members: </Label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<select id="site" class="form-select" value="@_siteId" @onchange="(e => SiteChanged(e))">
|
||||
<option value="-1"><@SharedLocalizer["Not Specified"]></option>
|
||||
@foreach (var site in _sites)
|
||||
{
|
||||
<option value="@site.SiteId">@site.Name @((!string.IsNullOrEmpty(site.Fingerprint)) ? "(" + Localizer[site.Fingerprint] + ")" : "")</option>
|
||||
<option value="@site.SiteId">@site.Name</option>
|
||||
}
|
||||
</select>
|
||||
@if (!_addSiteGroupMember)
|
||||
{
|
||||
<button type="button" class="btn btn-primary" @onclick="AddSiteGroupMember">@SharedLocalizer["Add"]</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button type="button" class="btn btn-primary" @onclick="AddSiteGroupMember">@SharedLocalizer["Select"]</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (_siteGroupDefinitionId != -1)
|
||||
@if (_siteGroupId != -1 && _siteId != -1)
|
||||
{
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="member" HelpText="Indicates if the current site is a member of the selected group" ResourceKey="GroupMember">Member? </Label>
|
||||
<Label Class="col-sm-3" For="primary" HelpText="Indicates if the selected site is the primary member of the site group" ResourceKey="Primary">Primary? </Label>
|
||||
<div class="col-sm-9">
|
||||
<select id="member" class="form-select" @bind="@_member">
|
||||
<select id="primary" class="form-select" @bind="@_primary">
|
||||
<option value="False">@SharedLocalizer["No"]</option>
|
||||
<option value="Primary">@Localizer["Primary"]</option>
|
||||
<option value="Secondary">@Localizer["Secondary"]</option>
|
||||
<option value="True">@SharedLocalizer["Yes"]</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@if (_member == "Secondary" && _synchronization == "True")
|
||||
@if (_primary == "False" && _groupType == SiteGroupTypes.Synchronization)
|
||||
{
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="synchronize" HelpText="Specifies the synchronization approach between the primary site and the selected site" ResourceKey="Synchronize">Synchronize? </Label>
|
||||
<div class="col-sm-9">
|
||||
<select id="synchronize" class="form-select" @bind="@_synchronize">
|
||||
<option value="False">@Localizer["Compare"]</option>
|
||||
@if (_localization == "False")
|
||||
{
|
||||
<option value="True">@Localizer["Update"]</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1 align-items-center">
|
||||
<Label Class="col-sm-3" For="notify" HelpText="Specifies if site administrators should be notified of any synchronization activity" ResourceKey="Notify">Notify? </Label>
|
||||
<div class="col-sm-9">
|
||||
@@ -556,7 +543,7 @@
|
||||
<input id="synchronized" class="form-control" @bind="@_synchronized" disabled />
|
||||
@if (!string.IsNullOrEmpty(_synchronized))
|
||||
{
|
||||
<button type="button" class="btn btn-primary" @onclick="ResetSiteGroup">@SharedLocalizer["Reset"]</button>
|
||||
<button type="button" class="btn btn-primary" @onclick="ResetSiteGroupMember">@SharedLocalizer["Reset"]</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -566,17 +553,17 @@
|
||||
<div class="row mb-1 align-items-center">
|
||||
<div class="col-sm-3"></div>
|
||||
<div class="col-sm-9">
|
||||
@if ((_siteGroupDefinitionId != -1 || _addSiteGroupDefinition))
|
||||
@if ((_siteGroupId != -1 || _addSiteGroup))
|
||||
{
|
||||
<button type="button" class="btn btn-success me-2" @onclick="SaveSiteGroup">@SharedLocalizer["Save"]</button>
|
||||
<button type="button" class="btn btn-success me-2" @onclick="SaveSiteGroupMember">@SharedLocalizer["Save"]</button>
|
||||
}
|
||||
@if ((_siteGroupDefinitionId != -1 && !_addSiteGroupDefinition) && _member != "False")
|
||||
@if (_siteGroupId != -1 && !_addSiteGroup && _siteId != -1 && !_addSiteGroupMember)
|
||||
{
|
||||
<ActionDialog Action="Delete" OnClick="@(async () => await DeleteSiteGroup())" ResourceKey="DeleteSiteGroup" Class="btn btn-danger" Header="Delete Site Group" Message="@string.Format(Localizer["Confirm.SiteGroup.Delete", _groupName])" />
|
||||
<ActionDialog Action="Delete" OnClick="@(async () => await DeleteSiteGroupMember())" ResourceKey="DeleteSiteGroupMember" Class="btn btn-danger" Header="Delete Site Group" Message="@Localizer["Confirm.SiteGroupMember.Delete"]" />
|
||||
}
|
||||
@if (_addSiteGroupDefinition)
|
||||
@if (_addSiteGroup)
|
||||
{
|
||||
<button type="button" class="btn btn-secondary" @onclick="CancelSiteGroup">@SharedLocalizer["Cancel"]</button>
|
||||
<button type="button" class="btn btn-secondary" @onclick="CancelSiteGroupMember">@SharedLocalizer["Cancel"]</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -684,18 +671,17 @@
|
||||
private string _defaultalias;
|
||||
private bool _addAlias = false;
|
||||
|
||||
private List<SiteGroupDefinition> _siteGroupDefinitions = new List<SiteGroupDefinition>();
|
||||
private List<SiteGroup> _siteGroups = new List<SiteGroup>();
|
||||
private List<Site> _sites = new List<Site>();
|
||||
private int _siteGroupDefinitionId = -1;
|
||||
private int _siteGroupId = -1;
|
||||
private int _siteId;
|
||||
private string _groupName = string.Empty;
|
||||
private string _synchronization = "True";
|
||||
private string _localization = "False";
|
||||
private string _member = "Primary";
|
||||
private string _synchronize = "True";
|
||||
private string _groupType = SiteGroupTypes.Synchronization;
|
||||
private string _primary = "True";
|
||||
private string _notify = "True";
|
||||
private string _synchronized = string.Empty;
|
||||
private bool _addSiteGroupDefinition = false;
|
||||
private bool _addSiteGroup = false;
|
||||
private bool _addSiteGroupMember = false;
|
||||
|
||||
private string _tenant = string.Empty;
|
||||
private string _database = string.Empty;
|
||||
@@ -1261,82 +1247,78 @@
|
||||
|
||||
private async Task LoadSiteGroups()
|
||||
{
|
||||
_siteGroupDefinitions = await SiteGroupDefinitionService.GetSiteGroupDefinitionsAsync();
|
||||
_siteGroupDefinitionId = -1;
|
||||
_addSiteGroupDefinition = false;
|
||||
_siteGroups = await SiteGroupService.GetSiteGroupsAsync();
|
||||
_siteGroupId = -1;
|
||||
_addSiteGroup = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async void SiteGroupChanged(ChangeEventArgs e)
|
||||
private async Task SiteGroupChanged(ChangeEventArgs e)
|
||||
{
|
||||
_siteGroupDefinitionId = int.Parse(e.Value.ToString());
|
||||
if (_siteGroupDefinitionId != -1)
|
||||
_siteGroupId = int.Parse(e.Value.ToString());
|
||||
if (_siteGroupId != -1)
|
||||
{
|
||||
var group = _siteGroupDefinitions.FirstOrDefault(item => item.SiteGroupDefinitionId == _siteGroupDefinitionId);
|
||||
var group = _siteGroups.FirstOrDefault(item => item.SiteGroupId == _siteGroupId);
|
||||
if (group != null)
|
||||
{
|
||||
_groupName = group.Name;
|
||||
_synchronization = group.Synchronization.ToString();
|
||||
_localization = group.Localization.ToString();
|
||||
_groupType = group.Type;
|
||||
_siteId = -1;
|
||||
_primary = "False";
|
||||
_addSiteGroupMember = false;
|
||||
|
||||
if (_sites.Count == 0)
|
||||
{
|
||||
_sites = await SiteService.GetSitesAsync();
|
||||
}
|
||||
_siteId = PageState.Site.SiteId;
|
||||
_member = "False";
|
||||
|
||||
var siteGroups = await SiteGroupService.GetSiteGroupsAsync(-1, _siteGroupDefinitionId);
|
||||
foreach (var site in _sites)
|
||||
{
|
||||
site.Fingerprint = ""; // used as temporary state
|
||||
var siteGroup = siteGroups.FirstOrDefault(item => item.SiteId == site.SiteId);
|
||||
if (siteGroup != null)
|
||||
{
|
||||
if (group.PrimarySiteId == site.SiteId)
|
||||
{
|
||||
site.Fingerprint = "Primary";
|
||||
}
|
||||
else
|
||||
{
|
||||
site.Fingerprint = "Secondary";
|
||||
}
|
||||
|
||||
if (siteGroup.SiteId == _siteId)
|
||||
{
|
||||
_member = site.Fingerprint;
|
||||
_synchronize = siteGroup.Synchronize.ToString();
|
||||
_notify = siteGroup.Notify.ToString();
|
||||
_synchronized = UtcToLocal(siteGroup.SynchronizedOn).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
await LoadSites();
|
||||
}
|
||||
}
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async void SiteChanged(ChangeEventArgs e)
|
||||
private async Task LoadSites()
|
||||
{
|
||||
_siteId = int.Parse(e.Value.ToString());
|
||||
var siteGroup = await SiteGroupService.GetSiteGroupAsync(_siteId, _siteGroupDefinitionId);
|
||||
if (siteGroup != null)
|
||||
var siteGroupMembers = await SiteGroupMemberService.GetSiteGroupMembersAsync(-1, _siteGroupId);
|
||||
|
||||
_sites = await SiteService.GetSitesAsync();
|
||||
if (_addSiteGroupMember)
|
||||
{
|
||||
if (siteGroup.SiteGroupDefinition.PrimarySiteId == _siteId)
|
||||
{
|
||||
_member = "Primary";
|
||||
}
|
||||
else
|
||||
{
|
||||
_member = "Secondary";
|
||||
}
|
||||
_synchronize = siteGroup.Synchronize.ToString();
|
||||
_notify = siteGroup.Notify.ToString();
|
||||
_synchronized = UtcToLocal(siteGroup.SynchronizedOn).ToString();
|
||||
// include sites which are not members
|
||||
_sites = _sites.ExceptBy(siteGroupMembers.Select(item => item.SiteId), item => item.SiteId).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
_member = "False";
|
||||
// include sites which are members
|
||||
_sites = _sites.Where(item => siteGroupMembers.Any(item2 => item2.SiteId == item.SiteId)).ToList();
|
||||
var group = _siteGroups.FirstOrDefault(item => item.SiteGroupId == _siteGroupId);
|
||||
foreach (var site in _sites)
|
||||
{
|
||||
if (group.PrimarySiteId == site.SiteId)
|
||||
{
|
||||
site.Name += $" ({Localizer["Primary"]})";
|
||||
}
|
||||
else
|
||||
{
|
||||
site.Name += $" ({Localizer["Secondary"]})";
|
||||
}
|
||||
}
|
||||
|
||||
var siteGroupMember = siteGroupMembers.FirstOrDefault(item => item.SiteId == _siteId);
|
||||
if (siteGroupMember != null)
|
||||
{
|
||||
_primary = (siteGroupMember.SiteGroup.PrimarySiteId == _siteId) ? "True" : "False";
|
||||
_notify = siteGroupMember.Notify.ToString();
|
||||
_synchronized = UtcToLocal(siteGroupMember.SynchronizedOn).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SiteChanged(ChangeEventArgs e)
|
||||
{
|
||||
_siteId = int.Parse(e.Value.ToString());
|
||||
var siteGroupMember = await SiteGroupMemberService.GetSiteGroupMemberAsync(_siteId, _siteGroupId);
|
||||
if (siteGroupMember != null)
|
||||
{
|
||||
_primary = (siteGroupMember.SiteGroup.PrimarySiteId == _siteId) ? "True" : "False";
|
||||
_notify = siteGroupMember.Notify.ToString();
|
||||
_synchronized = UtcToLocal(siteGroupMember.SynchronizedOn).ToString();
|
||||
}
|
||||
StateHasChanged();
|
||||
}
|
||||
@@ -1345,77 +1327,73 @@
|
||||
{
|
||||
_groupName = "";
|
||||
_siteId = PageState.Site.SiteId;
|
||||
_member = "Primary";
|
||||
_primary = "True";
|
||||
_synchronized = "";
|
||||
_addSiteGroupDefinition = true;
|
||||
_addSiteGroup = true;
|
||||
}
|
||||
|
||||
private async Task SaveSiteGroup()
|
||||
private async Task AddSiteGroupMember()
|
||||
{
|
||||
SiteGroupDefinition siteGroupDefinition = null;
|
||||
_addSiteGroupMember = !_addSiteGroupMember;
|
||||
_siteId = -1;
|
||||
await LoadSites();
|
||||
}
|
||||
|
||||
private async Task SaveSiteGroupMember()
|
||||
{
|
||||
SiteGroup siteGroup = null;
|
||||
|
||||
if (_siteGroupDefinitionId == -1)
|
||||
if (_siteGroupId == -1)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_groupName))
|
||||
{
|
||||
siteGroupDefinition = new Models.SiteGroupDefinition
|
||||
siteGroup = new SiteGroup
|
||||
{
|
||||
Name = _groupName,
|
||||
Type = _groupType,
|
||||
PrimarySiteId = _siteId,
|
||||
Synchronization = bool.Parse(_synchronization),
|
||||
Localization = bool.Parse(_localization),
|
||||
Synchronize = false
|
||||
};
|
||||
siteGroupDefinition = await SiteGroupDefinitionService.AddSiteGroupDefinitionAsync(siteGroupDefinition);
|
||||
siteGroup = await SiteGroupService.AddSiteGroupAsync(siteGroup);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
siteGroupDefinition = _siteGroupDefinitions.FirstOrDefault(item => item.SiteGroupDefinitionId == _siteGroupDefinitionId);
|
||||
if (siteGroupDefinition != null && !string.IsNullOrEmpty(_groupName))
|
||||
siteGroup = _siteGroups.FirstOrDefault(item => item.SiteGroupId == _siteGroupId);
|
||||
if (siteGroup != null && !string.IsNullOrEmpty(_groupName))
|
||||
{
|
||||
siteGroupDefinition.Name = _groupName;
|
||||
siteGroupDefinition.PrimarySiteId = (_member == "Primary") ? _siteId : siteGroupDefinition.PrimarySiteId;
|
||||
siteGroupDefinition.Synchronization = bool.Parse(_synchronization);
|
||||
siteGroupDefinition.Localization = bool.Parse(_localization);
|
||||
siteGroupDefinition = await SiteGroupDefinitionService.UpdateSiteGroupDefinitionAsync(siteGroupDefinition);
|
||||
siteGroup.Name = _groupName;
|
||||
siteGroup.Type = _groupType;
|
||||
siteGroup.PrimarySiteId = (_primary == "True") ? _siteId : siteGroup.PrimarySiteId;
|
||||
siteGroup = await SiteGroupService.UpdateSiteGroupAsync(siteGroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
siteGroupDefinition = null;
|
||||
siteGroup = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (siteGroupDefinition != null)
|
||||
if (siteGroup != null)
|
||||
{
|
||||
var siteGroup = await SiteGroupService.GetSiteGroupAsync(_siteId, siteGroupDefinition.SiteGroupDefinitionId);
|
||||
if (siteGroup == null)
|
||||
var siteGroupMember = await SiteGroupMemberService.GetSiteGroupMemberAsync(_siteId, siteGroup.SiteGroupId);
|
||||
if (siteGroupMember == null)
|
||||
{
|
||||
siteGroup = new SiteGroup
|
||||
siteGroupMember = new SiteGroupMember
|
||||
{
|
||||
SiteGroupDefinitionId = siteGroupDefinition.SiteGroupDefinitionId,
|
||||
SiteGroupId = siteGroup.SiteGroupId,
|
||||
SiteId = _siteId,
|
||||
Synchronize = bool.Parse(_synchronize),
|
||||
Notify = bool.Parse(_notify)
|
||||
};
|
||||
await SiteGroupService.AddSiteGroupAsync(siteGroup);
|
||||
await SiteGroupMemberService.AddSiteGroupMemberAsync(siteGroupMember);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_member == "False")
|
||||
{
|
||||
await SiteGroupService.DeleteSiteGroupAsync(siteGroup.SiteGroupId);
|
||||
}
|
||||
else
|
||||
{
|
||||
siteGroup.Synchronize = bool.Parse(_synchronize);
|
||||
siteGroup.Notify = bool.Parse(_notify);
|
||||
siteGroup.SynchronizedOn = string.IsNullOrEmpty(_synchronized) ? null : siteGroup.SynchronizedOn;
|
||||
await SiteGroupService.UpdateSiteGroupAsync(siteGroup);
|
||||
}
|
||||
siteGroupMember.Notify = bool.Parse(_notify);
|
||||
siteGroupMember.SynchronizedOn = string.IsNullOrEmpty(_synchronized) ? null : siteGroupMember.SynchronizedOn;
|
||||
await SiteGroupMemberService.UpdateSiteGroupMemberAsync(siteGroupMember);
|
||||
}
|
||||
|
||||
if (siteGroupDefinition.Synchronization)
|
||||
if (siteGroup.Type == SiteGroupTypes.Synchronization)
|
||||
{
|
||||
// enable synchronization job if it is not enabled already
|
||||
var jobs = await JobService.GetJobsAsync();
|
||||
@@ -1436,33 +1414,33 @@
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CancelSiteGroup()
|
||||
private async Task CancelSiteGroupMember()
|
||||
{
|
||||
_groupName = "";
|
||||
await LoadSiteGroups();
|
||||
}
|
||||
|
||||
private async Task DeleteSiteGroup()
|
||||
private async Task DeleteSiteGroupMember()
|
||||
{
|
||||
if (_siteGroupDefinitionId != -1)
|
||||
if (_siteGroupId != -1)
|
||||
{
|
||||
var siteGroup = await SiteGroupService.GetSiteGroupAsync(PageState.Site.SiteId, _siteGroupDefinitionId);
|
||||
if (siteGroup != null)
|
||||
var siteGroupMember = await SiteGroupMemberService.GetSiteGroupMemberAsync(PageState.Site.SiteId, _siteGroupId);
|
||||
if (siteGroupMember != null)
|
||||
{
|
||||
await SiteGroupService.DeleteSiteGroupAsync(siteGroup.SiteGroupDefinitionId);
|
||||
await SiteGroupMemberService.DeleteSiteGroupMemberAsync(siteGroupMember.SiteGroupId);
|
||||
}
|
||||
|
||||
var siteGroups = await SiteGroupService.GetSiteGroupsAsync(-1, _siteGroupDefinitionId);
|
||||
if (!siteGroups.Any())
|
||||
var siteGroupMembers = await SiteGroupMemberService.GetSiteGroupMembersAsync(-1, _siteGroupId);
|
||||
if (!siteGroupMembers.Any())
|
||||
{
|
||||
await SiteGroupDefinitionService.DeleteSiteGroupDefinitionAsync(_siteGroupDefinitionId);
|
||||
await SiteGroupService.DeleteSiteGroupAsync(_siteGroupId);
|
||||
}
|
||||
|
||||
await LoadSiteGroups();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ResetSiteGroup()
|
||||
private async Task ResetSiteGroupMember()
|
||||
{
|
||||
_synchronized = "";
|
||||
}
|
||||
|
||||
@@ -498,17 +498,17 @@
|
||||
<data name="AliasName.HelpText" xml:space="preserve">
|
||||
<value>A url for this site. This can include domain names (ie. domain.com), subdomains (ie. sub.domain.com) or virtual folders (ie. domain.com/folder).</value>
|
||||
</data>
|
||||
<data name="SiteGroups.Text" xml:space="preserve">
|
||||
<data name="SiteGroupMembers.Text" xml:space="preserve">
|
||||
<value>Group:</value>
|
||||
</data>
|
||||
<data name="SiteGroups.HelpText" xml:space="preserve">
|
||||
<data name="SiteGroupMembers.HelpText" xml:space="preserve">
|
||||
<value>The site groups in this tenant (database)</value>
|
||||
</data>
|
||||
<data name="GroupMember.Text" xml:space="preserve">
|
||||
<value>Member?</value>
|
||||
<data name="Primary.Text" xml:space="preserve">
|
||||
<value>Primary?</value>
|
||||
</data>
|
||||
<data name="GroupMember.HelpText" xml:space="preserve">
|
||||
<value>Indicates if the current site is a member of the selected group</value>
|
||||
<data name="Primary.HelpText" xml:space="preserve">
|
||||
<value>Indicates if the selected site is the primary member of the site group</value>
|
||||
</data>
|
||||
<data name="GroupName.Text" xml:space="preserve">
|
||||
<value>Name:</value>
|
||||
@@ -516,18 +516,6 @@
|
||||
<data name="GroupName.HelpText" xml:space="preserve">
|
||||
<value>Name of the site group</value>
|
||||
</data>
|
||||
<data name="Synchronization.Text" xml:space="preserve">
|
||||
<value>Synchronization?</value>
|
||||
</data>
|
||||
<data name="Synchronization.HelpText" xml:space="preserve">
|
||||
<value>Specifies if the group supports content synchronization between the primary site and other sites in the group</value>
|
||||
</data>
|
||||
<data name="Localization.Text" xml:space="preserve">
|
||||
<value>Localization?</value>
|
||||
</data>
|
||||
<data name="Localization.HelpText" xml:space="preserve">
|
||||
<value>Specifies if the content of the sites in the group are localized</value>
|
||||
</data>
|
||||
<data name="Primary" xml:space="preserve">
|
||||
<value>Primary</value>
|
||||
</data>
|
||||
@@ -540,11 +528,11 @@
|
||||
<data name="Update" xml:space="preserve">
|
||||
<value>Update</value>
|
||||
</data>
|
||||
<data name="DeleteSiteGroup.Header" xml:space="preserve">
|
||||
<value>Delete Site Group</value>
|
||||
<data name="DeleteSiteGroupMember.Header" xml:space="preserve">
|
||||
<value>Delete Site Group Member</value>
|
||||
</data>
|
||||
<data name="Confirm.SiteGroup.Delete" xml:space="preserve">
|
||||
<value>Are You Sure You Wish To Delete {0}?</value>
|
||||
<data name="Confirm.SiteGroupMember.Delete" xml:space="preserve">
|
||||
<value>Are You Sure You Wish To Delete This Member From The Site Group?</value>
|
||||
</data>
|
||||
<data name="Message.Required.GroupName" xml:space="preserve">
|
||||
<value>Group Name Is Required</value>
|
||||
@@ -559,21 +547,27 @@
|
||||
<value>Specifies if site administrators should be notified of any synchronization activity</value>
|
||||
</data>
|
||||
<data name="Site.Text" xml:space="preserve">
|
||||
<value>Site:</value>
|
||||
<value>Members:</value>
|
||||
</data>
|
||||
<data name="Site.HelpText" xml:space="preserve">
|
||||
<value>The sites in this tenant (database)</value>
|
||||
<value>The sites which are members of this site group</value>
|
||||
</data>
|
||||
<data name="Synchronized.Text" xml:space="preserve">
|
||||
<value>Synchronized:</value>
|
||||
</data>
|
||||
<data name="GroupType.Text" xml:space="preserve">
|
||||
<value>Type:</value>
|
||||
</data>
|
||||
<data name="GroupType.HelpText" xml:space="preserve">
|
||||
<value>The site group type (ie. synchronization, localization)</value>
|
||||
</data>
|
||||
<data name="Synchronized.HelpText" xml:space="preserve">
|
||||
<value>The date/time of the last synchronization for the site</value>
|
||||
</data>
|
||||
<data name="Synchronize.Text" xml:space="preserve">
|
||||
<value>Synchronize?</value>
|
||||
<data name="Synchronization" xml:space="preserve">
|
||||
<value>Synchronization</value>
|
||||
</data>
|
||||
<data name="Synchronize.HelpText" xml:space="preserve">
|
||||
<value>Specifies the synchronization approach between the primary site and the selected site</value>
|
||||
<data name="Localization" xml:space="preserve">
|
||||
<value>Localization</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,94 +0,0 @@
|
||||
using Oqtane.Models;
|
||||
using System.Threading.Tasks;
|
||||
using System.Net.Http;
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Documentation;
|
||||
using Oqtane.Shared;
|
||||
using System.Linq;
|
||||
|
||||
namespace Oqtane.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Service to manage <see cref="Role"/>s on a <see cref="Site"/>
|
||||
/// </summary>
|
||||
public interface ISiteGroupDefinitionService
|
||||
{
|
||||
/// <summary>
|
||||
/// Get all <see cref="SiteGroupDefinition"/>s
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<SiteGroupDefinition>> GetSiteGroupDefinitionsAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Get all <see cref="SiteGroupDefinition"/>s
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<SiteGroupDefinition>> GetSiteGroupDefinitionsAsync(int primarySiteId);
|
||||
|
||||
/// <summary>
|
||||
/// Get one specific <see cref="SiteGroupDefinition"/>
|
||||
/// </summary>
|
||||
/// <param name="siteGroupDefinitionId">ID-reference of a <see cref="SiteGroupDefinition"/></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupDefinition> GetSiteGroupDefinitionAsync(int siteGroupDefinitionId);
|
||||
|
||||
/// <summary>
|
||||
/// Add / save a new <see cref="SiteGroupDefinition"/> to the database.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupDefinition> AddSiteGroupDefinitionAsync(SiteGroupDefinition siteGroupDefinition);
|
||||
|
||||
/// <summary>
|
||||
/// Update a <see cref="SiteGroupDefinition"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupDefinition> UpdateSiteGroupDefinitionAsync(SiteGroupDefinition siteGroupDefinition);
|
||||
|
||||
/// <summary>
|
||||
/// Delete a <see cref="SiteGroupDefinition"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroupDefinitionId">ID-reference of a <see cref="SiteGroupDefinition"/></param>
|
||||
/// <returns></returns>
|
||||
Task DeleteSiteGroupDefinitionAsync(int siteGroupDefinitionId);
|
||||
}
|
||||
|
||||
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
||||
public class SiteGroupDefinitionService : ServiceBase, ISiteGroupDefinitionService
|
||||
{
|
||||
public SiteGroupDefinitionService(HttpClient http, SiteState siteState) : base(http, siteState) { }
|
||||
|
||||
private string Apiurl => CreateApiUrl("SiteGroupDefinition");
|
||||
|
||||
public async Task<List<SiteGroupDefinition>> GetSiteGroupDefinitionsAsync()
|
||||
{
|
||||
return await GetSiteGroupDefinitionsAsync(-1);
|
||||
}
|
||||
|
||||
public async Task<List<SiteGroupDefinition>> GetSiteGroupDefinitionsAsync(int primarySiteId)
|
||||
{
|
||||
return await GetJsonAsync<List<SiteGroupDefinition>>($"{Apiurl}?siteid={primarySiteId}", Enumerable.Empty<SiteGroupDefinition>().ToList());
|
||||
}
|
||||
|
||||
public async Task<SiteGroupDefinition> GetSiteGroupDefinitionAsync(int siteGroupDefinitionId)
|
||||
{
|
||||
return await GetJsonAsync<SiteGroupDefinition>($"{Apiurl}/{siteGroupDefinitionId}");
|
||||
}
|
||||
|
||||
public async Task<SiteGroupDefinition> AddSiteGroupDefinitionAsync(SiteGroupDefinition siteGroupDefinition)
|
||||
{
|
||||
return await PostJsonAsync<SiteGroupDefinition>(Apiurl, siteGroupDefinition);
|
||||
}
|
||||
|
||||
public async Task<SiteGroupDefinition> UpdateSiteGroupDefinitionAsync(SiteGroupDefinition siteGroupDefinition)
|
||||
{
|
||||
return await PutJsonAsync<SiteGroupDefinition>($"{Apiurl}/{siteGroupDefinition.SiteGroupDefinitionId}", siteGroupDefinition);
|
||||
}
|
||||
|
||||
public async Task DeleteSiteGroupDefinitionAsync(int siteGroupDefinitionId)
|
||||
{
|
||||
await DeleteAsync($"{Apiurl}/{siteGroupDefinitionId}");
|
||||
}
|
||||
}
|
||||
}
|
||||
104
Oqtane.Client/Services/SiteGroupMemberService.cs
Normal file
104
Oqtane.Client/Services/SiteGroupMemberService.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using Oqtane.Models;
|
||||
using System.Threading.Tasks;
|
||||
using System.Net.Http;
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Documentation;
|
||||
using Oqtane.Shared;
|
||||
using System.Linq;
|
||||
|
||||
namespace Oqtane.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Service to manage <see cref="Role"/>s on a <see cref="Site"/>
|
||||
/// </summary>
|
||||
public interface ISiteGroupMemberService
|
||||
{
|
||||
/// <summary>
|
||||
/// Get all <see cref="SiteGroupMember"/>s
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<SiteGroupMember>> GetSiteGroupMembersAsync(int siteId, int siteGroupId);
|
||||
|
||||
/// <summary>
|
||||
/// Get one specific <see cref="SiteGroupMember"/>
|
||||
/// </summary>
|
||||
/// <param name="siteGroupMemberId">ID-reference of a <see cref="SiteGroupMember"/></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupMember> GetSiteGroupMemberAsync(int siteGroupMemberId);
|
||||
|
||||
/// <summary>
|
||||
/// Get one specific <see cref="SiteGroupMember"/>
|
||||
/// </summary>
|
||||
/// <param name="siteId">ID-reference of a <see cref="Site"/></param>
|
||||
/// <param name="siteGroupId">ID-reference of a <see cref="SiteGroup"/></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupMember> GetSiteGroupMemberAsync(int siteId, int siteGroupId);
|
||||
|
||||
/// <summary>
|
||||
/// Add / save a new <see cref="SiteGroupMember"/> to the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroupMember"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupMember> AddSiteGroupMemberAsync(SiteGroupMember siteGroupMember);
|
||||
|
||||
/// <summary>
|
||||
/// Update a <see cref="SiteGroupMember"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroupMember"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroupMember> UpdateSiteGroupMemberAsync(SiteGroupMember siteGroupMember);
|
||||
|
||||
/// <summary>
|
||||
/// Delete a <see cref="SiteGroupMember"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroupMemberId">ID-reference of a <see cref="SiteGroupMember"/></param>
|
||||
/// <returns></returns>
|
||||
Task DeleteSiteGroupMemberAsync(int siteGroupMemberId);
|
||||
}
|
||||
|
||||
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
||||
public class SiteGroupMemberService : ServiceBase, ISiteGroupMemberService
|
||||
{
|
||||
public SiteGroupMemberService(HttpClient http, SiteState siteState) : base(http, siteState) { }
|
||||
|
||||
private string Apiurl => CreateApiUrl("SiteGroupMember");
|
||||
|
||||
public async Task<List<SiteGroupMember>> GetSiteGroupMembersAsync(int siteId, int siteGroupId)
|
||||
{
|
||||
return await GetJsonAsync<List<SiteGroupMember>>($"{Apiurl}?siteid={siteId}&groupid={siteGroupId}", Enumerable.Empty<SiteGroupMember>().ToList());
|
||||
}
|
||||
|
||||
public async Task<SiteGroupMember> GetSiteGroupMemberAsync(int siteGroupMemberId)
|
||||
{
|
||||
return await GetJsonAsync<SiteGroupMember>($"{Apiurl}/{siteGroupMemberId}");
|
||||
}
|
||||
|
||||
public async Task<SiteGroupMember> GetSiteGroupMemberAsync(int siteId, int siteGroupId)
|
||||
{
|
||||
var siteGroupMembers = await GetSiteGroupMembersAsync(siteId, siteGroupId);
|
||||
if (siteGroupMembers != null && siteGroupMembers.Count > 0)
|
||||
{
|
||||
return siteGroupMembers[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<SiteGroupMember> AddSiteGroupMemberAsync(SiteGroupMember siteGroupMember)
|
||||
{
|
||||
return await PostJsonAsync<SiteGroupMember>(Apiurl, siteGroupMember);
|
||||
}
|
||||
|
||||
public async Task<SiteGroupMember> UpdateSiteGroupMemberAsync(SiteGroupMember siteGroupMember)
|
||||
{
|
||||
return await PutJsonAsync<SiteGroupMember>($"{Apiurl}/{siteGroupMember.SiteGroupId}", siteGroupMember);
|
||||
}
|
||||
|
||||
public async Task DeleteSiteGroupMemberAsync(int siteGroupMemberId)
|
||||
{
|
||||
await DeleteAsync($"{Apiurl}/{siteGroupMemberId}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,43 +17,41 @@ namespace Oqtane.Services
|
||||
/// Get all <see cref="SiteGroup"/>s
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<SiteGroup>> GetSiteGroupsAsync(int siteId, int siteGroupDefinitionId);
|
||||
Task<List<SiteGroup>> GetSiteGroupsAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Get all <see cref="SiteGroup"/>s
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<SiteGroup>> GetSiteGroupsAsync(int primarySiteId);
|
||||
|
||||
/// <summary>
|
||||
/// Get one specific <see cref="SiteGroup"/>
|
||||
/// </summary>
|
||||
/// <param name="siteSiteGroupDefinitionId">ID-reference of a <see cref="SiteGroup"/></param>
|
||||
/// <param name="siteGroupId">ID-reference of a <see cref="SiteGroup"/></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroup> GetSiteGroupAsync(int siteSiteGroupDefinitionId);
|
||||
|
||||
/// <summary>
|
||||
/// Get one specific <see cref="SiteGroup"/>
|
||||
/// </summary>
|
||||
/// <param name="siteId">ID-reference of a <see cref="Site"/></param>
|
||||
/// <param name="siteGroupDefinitionId">ID-reference of a <see cref="SiteGroupDefinition"/></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroup> GetSiteGroupAsync(int siteId, int siteGroupDefinitionId);
|
||||
Task<SiteGroup> GetSiteGroupAsync(int siteGroupId);
|
||||
|
||||
/// <summary>
|
||||
/// Add / save a new <see cref="SiteGroup"/> to the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroup"></param>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroup> AddSiteGroupAsync(SiteGroup siteGroup);
|
||||
|
||||
/// <summary>
|
||||
/// Update a <see cref="SiteGroup"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="siteGroup"></param>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
Task<SiteGroup> UpdateSiteGroupAsync(SiteGroup siteGroup);
|
||||
|
||||
/// <summary>
|
||||
/// Delete a <see cref="SiteGroup"/> in the database.
|
||||
/// </summary>
|
||||
/// <param name="siteSiteGroupDefinitionId">ID-reference of a <see cref="SiteGroup"/></param>
|
||||
/// <param name="siteGroupId">ID-reference of a <see cref="SiteGroup"/></param>
|
||||
/// <returns></returns>
|
||||
Task DeleteSiteGroupAsync(int siteSiteGroupDefinitionId);
|
||||
Task DeleteSiteGroupAsync(int siteGroupId);
|
||||
}
|
||||
|
||||
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
||||
@@ -63,27 +61,19 @@ namespace Oqtane.Services
|
||||
|
||||
private string Apiurl => CreateApiUrl("SiteGroup");
|
||||
|
||||
public async Task<List<SiteGroup>> GetSiteGroupsAsync(int siteId, int siteGroupDefinitionId)
|
||||
public async Task<List<SiteGroup>> GetSiteGroupsAsync()
|
||||
{
|
||||
return await GetJsonAsync<List<SiteGroup>>($"{Apiurl}?siteid={siteId}&groupid={siteGroupDefinitionId}", Enumerable.Empty<SiteGroup>().ToList());
|
||||
return await GetSiteGroupsAsync(-1);
|
||||
}
|
||||
|
||||
public async Task<SiteGroup> GetSiteGroupAsync(int siteSiteGroupDefinitionId)
|
||||
public async Task<List<SiteGroup>> GetSiteGroupsAsync(int primarySiteId)
|
||||
{
|
||||
return await GetJsonAsync<SiteGroup>($"{Apiurl}/{siteSiteGroupDefinitionId}");
|
||||
return await GetJsonAsync<List<SiteGroup>>($"{Apiurl}?siteid={primarySiteId}", Enumerable.Empty<SiteGroup>().ToList());
|
||||
}
|
||||
|
||||
public async Task<SiteGroup> GetSiteGroupAsync(int siteId, int siteGroupDefinitionId)
|
||||
public async Task<SiteGroup> GetSiteGroupAsync(int siteGroupId)
|
||||
{
|
||||
var siteGroups = await GetSiteGroupsAsync(siteId, siteGroupDefinitionId);
|
||||
if (siteGroups != null && siteGroups.Count > 0)
|
||||
{
|
||||
return siteGroups[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return await GetJsonAsync<SiteGroup>($"{Apiurl}/{siteGroupId}");
|
||||
}
|
||||
|
||||
public async Task<SiteGroup> AddSiteGroupAsync(SiteGroup siteGroup)
|
||||
@@ -93,12 +83,12 @@ namespace Oqtane.Services
|
||||
|
||||
public async Task<SiteGroup> UpdateSiteGroupAsync(SiteGroup siteGroup)
|
||||
{
|
||||
return await PutJsonAsync<SiteGroup>($"{Apiurl}/{siteGroup.SiteGroupDefinitionId}", siteGroup);
|
||||
return await PutJsonAsync<SiteGroup>($"{Apiurl}/{siteGroup.SiteGroupId}", siteGroup);
|
||||
}
|
||||
|
||||
public async Task DeleteSiteGroupAsync(int siteSiteGroupDefinitionId)
|
||||
public async Task DeleteSiteGroupAsync(int siteGroupId)
|
||||
{
|
||||
await DeleteAsync($"{Apiurl}/{siteSiteGroupDefinitionId}");
|
||||
await DeleteAsync($"{Apiurl}/{siteGroupId}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
@inject ILogService logger
|
||||
@inject ISettingService SettingService
|
||||
@inject IJSRuntime jsRuntime
|
||||
@inject ISiteGroupDefinitionService SiteGroupDefinitionService
|
||||
@inject ISiteGroupService SiteGroupService
|
||||
@inject IServiceProvider ServiceProvider
|
||||
@inject ILogService LoggingService
|
||||
@inject IStringLocalizer<ControlPanelInteractive> Localizer
|
||||
@@ -35,7 +35,7 @@
|
||||
<button type="button" data-bs-dismiss="offcanvas" class="btn btn-primary col-12" @onclick=@(async () => Navigate("Admin"))>@Localizer["AdminDash"]</button>
|
||||
</div>
|
||||
</div>
|
||||
@if (_siteGroupDefinitions.Any(item => item.Synchronization))
|
||||
@if (_siteGroups.Any(item => item.Type == SiteGroupTypes.Synchronization))
|
||||
{
|
||||
<button type="button" class="btn btn-success col-12 mt-1" @onclick="SynchronizeSite">@Localizer["Synchronize"]</button>
|
||||
}
|
||||
@@ -262,7 +262,7 @@
|
||||
private List<Page> _pages = new List<Page>();
|
||||
private List<Module> _modules = new List<Module>();
|
||||
private List<ThemeControl> _containers = new List<ThemeControl>();
|
||||
private List<SiteGroupDefinition> _siteGroupDefinitions = new List<SiteGroupDefinition>();
|
||||
private List<SiteGroup> _siteGroups = new List<SiteGroup>();
|
||||
|
||||
private string _category = "Common";
|
||||
private string _pane = "";
|
||||
@@ -293,7 +293,7 @@
|
||||
_allModuleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Page.SiteId);
|
||||
_moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList();
|
||||
_categories = _allModuleDefinitions.SelectMany(m => m.Categories.Split(',', StringSplitOptions.RemoveEmptyEntries)).Distinct().Where(item => item != "Headless").ToList();
|
||||
_siteGroupDefinitions = await SiteGroupDefinitionService.GetSiteGroupDefinitionsAsync(PageState.Site.SiteId);
|
||||
_siteGroups = await SiteGroupService.GetSiteGroupsAsync(PageState.Site.SiteId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,10 +641,10 @@
|
||||
|
||||
private async Task SynchronizeSite()
|
||||
{
|
||||
foreach (var group in _siteGroupDefinitions.Where(item => item.Synchronization))
|
||||
foreach (var group in _siteGroups.Where(item => item.Type == SiteGroupTypes.Synchronization))
|
||||
{
|
||||
group.Synchronize = true;
|
||||
await SiteGroupDefinitionService.UpdateSiteGroupDefinitionAsync(group);
|
||||
await SiteGroupService.UpdateSiteGroupAsync(group);
|
||||
}
|
||||
NavigationManager.NavigateTo(Utilities.NavigateUrl(PageState.Alias.Path, PageState.Page.Path, ""), true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user