Merge pull request #4198 from zyhfish/task/fix-issue-4030
Fix #4030: add copy module option for add existing module function.
This commit is contained in:
commit
a2fb728d3b
|
@ -154,7 +154,7 @@
|
|||
<value>Not Authorized</value>
|
||||
</data>
|
||||
<data name="Message.Require.ModuleSelect" xml:space="preserve">
|
||||
<value>You Must Select A Module</value>
|
||||
<value>You Must Select A Module.</value>
|
||||
</data>
|
||||
<data name="Module.Manage" xml:space="preserve">
|
||||
<value>Module Management:</value>
|
||||
|
@ -162,6 +162,15 @@
|
|||
<data name="Module.Select" xml:space="preserve">
|
||||
<value>Select Module</value>
|
||||
</data>
|
||||
<data name="CopyMode.Select" xml:space="preserve">
|
||||
<value>Select Copy Mode</value>
|
||||
</data>
|
||||
<data name="CopyMode.Sync" xml:space="preserve">
|
||||
<value>Sync</value>
|
||||
</data>
|
||||
<data name="CopyMode.Copy" xml:space="preserve">
|
||||
<value>Copy</value>
|
||||
</data>
|
||||
<data name="Page.Manage" xml:space="preserve">
|
||||
<value>Page Management:</value>
|
||||
</data>
|
||||
|
@ -198,4 +207,13 @@
|
|||
<data name="LocationTop" xml:space="preserve">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="Message.Require.ModuleAndCopyModeSelect" xml:space="preserve">
|
||||
<value>You Must Select A Module And The Copy Mode.</value>
|
||||
</data>
|
||||
<data name="Message.Module.NotPortable" xml:space="preserve">
|
||||
<value>The Module's Content Will Not Be Synchronized.</value>
|
||||
</data>
|
||||
<data name="Module.CopyExisting" xml:space="preserve">
|
||||
<value>Copy Existing Module</value>
|
||||
</data>
|
||||
</root>
|
|
@ -15,6 +15,7 @@
|
|||
@inject ILogService LoggingService
|
||||
@inject IStringLocalizer<ControlPanelInteractive> Localizer
|
||||
@inject IStringLocalizer<SharedResources> SharedLocalizer
|
||||
@inject IServiceProvider ServiceProvider
|
||||
|
||||
<button type="button" class="btn @ButtonClass ms-1" data-bs-toggle="offcanvas" data-bs-target="#offcanvasControlPanel" aria-controls="offcanvasControlPanel" @onclick="ClearMessage">
|
||||
<span class="oi oi-cog"></span>
|
||||
|
@ -97,7 +98,8 @@
|
|||
<option value="new">@Localizer["Module.AddNew"]</option>
|
||||
@if (PageState.Page.UserId == null)
|
||||
{
|
||||
<option value="existing">@Localizer["Module.AddExisting"]</option>
|
||||
<option value="existing.add">@Localizer["Module.AddExisting"]</option>
|
||||
<option value="existing.copy">@Localizer["Module.CopyExisting"]</option>
|
||||
}
|
||||
</select>
|
||||
@if (_moduleType == "new")
|
||||
|
@ -148,13 +150,14 @@
|
|||
<option value="@p.PageId">@p.Name</option>
|
||||
}
|
||||
</select>
|
||||
<select class="form-select mt-1" @bind="@_moduleId">
|
||||
<select class="form-select mt-1" @bind="@_moduleId" @bind:after="() => ModuleIdChanged()">
|
||||
<option value="-"><@Localizer["Module.Select"]></option>
|
||||
@foreach (Module module in _modules)
|
||||
{
|
||||
<option value="@module.ModuleId">@module.Title</option>
|
||||
}
|
||||
</select>
|
||||
@((MarkupString)_copyModuleMessage)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -267,6 +270,7 @@
|
|||
protected int _location { get; private set; } = int.MaxValue;
|
||||
protected string _visibility { get; private set; } = "view";
|
||||
protected string _message { get; private set; } = "";
|
||||
protected string _copyModuleMessage { get; private set; } = "";
|
||||
|
||||
private string settingCategory = "CP-category";
|
||||
private string settingPane = "CP-pane";
|
||||
|
@ -351,12 +355,26 @@
|
|||
StateHasChanged();
|
||||
}
|
||||
|
||||
private void ModuleIdChanged()
|
||||
{
|
||||
_copyModuleMessage = string.Empty;
|
||||
if(_moduleId != "-")
|
||||
{
|
||||
var module = _modules.FirstOrDefault(item => item.ModuleId == int.Parse(_moduleId));
|
||||
if (module != null && !module.ModuleDefinition.IsPortable)
|
||||
{
|
||||
_copyModuleMessage = $"<div class=\"alert alert-warning mt-2 text-center\" role=\"alert\">{Localizer["Message.Module.NotPortable"]}</div>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task AddModule()
|
||||
{
|
||||
if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList))
|
||||
{
|
||||
if ((_moduleType == "new" && _moduleDefinitionName != "-") || (_moduleType != "new" && _moduleId != "-"))
|
||||
{
|
||||
var newModuleId = _moduleId != "-" ? int.Parse(_moduleId) : 0;
|
||||
if (_moduleType == "new")
|
||||
{
|
||||
Module module = new Module();
|
||||
|
@ -364,33 +382,37 @@
|
|||
module.PageId = PageState.Page.PageId;
|
||||
module.ModuleDefinitionName = _moduleDefinitionName;
|
||||
module.AllPages = false;
|
||||
|
||||
var permissions = new List<Permission>();
|
||||
if (_visibility == "view")
|
||||
{
|
||||
// set module view permissions to page view permissions
|
||||
permissions = SetPermissions(permissions, module.SiteId, PermissionNames.View, PermissionNames.View);
|
||||
}
|
||||
else
|
||||
{
|
||||
// set module view permissions to page edit permissions
|
||||
permissions = SetPermissions(permissions, module.SiteId, PermissionNames.View, PermissionNames.Edit);
|
||||
}
|
||||
// set module edit permissions to page edit permissions
|
||||
permissions = SetPermissions(permissions, module.SiteId, PermissionNames.Edit, PermissionNames.Edit);
|
||||
module.PermissionList = permissions;
|
||||
module.PermissionList = GenerateDefaultPermissions(module.SiteId);
|
||||
|
||||
module = await ModuleService.AddModuleAsync(module);
|
||||
_moduleId = module.ModuleId.ToString();
|
||||
newModuleId = module.ModuleId;
|
||||
}
|
||||
else if (_moduleType == "exsiting.copy")
|
||||
{
|
||||
var module = await ModuleService.GetModuleAsync(int.Parse(_moduleId));
|
||||
module.ModuleId = 0;
|
||||
module.SiteId = PageState.Site.SiteId;
|
||||
module.PageId = PageState.Page.PageId;
|
||||
module.AllPages = false;
|
||||
module.PermissionList = GenerateDefaultPermissions(module.SiteId);
|
||||
|
||||
module = await ModuleService.AddModuleAsync(module);
|
||||
var moduleContent = await ModuleService.ExportModuleAsync(int.Parse(_moduleId), PageState.Page.PageId);
|
||||
if (!string.IsNullOrEmpty(moduleContent))
|
||||
{
|
||||
await ModuleService.ImportModuleAsync(module.ModuleId, PageState.Page.PageId, moduleContent);
|
||||
}
|
||||
|
||||
newModuleId = module.ModuleId;
|
||||
}
|
||||
|
||||
var pageModule = new PageModule
|
||||
{
|
||||
PageId = PageState.Page.PageId,
|
||||
ModuleId = int.Parse(_moduleId),
|
||||
ModuleId = newModuleId,
|
||||
Title = _title
|
||||
};
|
||||
if (pageModule.Title == "")
|
||||
if (string.IsNullOrEmpty(pageModule.Title))
|
||||
{
|
||||
if (_moduleType == "new")
|
||||
{
|
||||
|
@ -430,6 +452,25 @@
|
|||
}
|
||||
}
|
||||
|
||||
private List<Permission> GenerateDefaultPermissions(int siteId)
|
||||
{
|
||||
var permissions = new List<Permission>();
|
||||
if (_visibility == "view")
|
||||
{
|
||||
// set module view permissions to page view permissions
|
||||
permissions = SetPermissions(permissions, siteId, PermissionNames.View, PermissionNames.View);
|
||||
}
|
||||
else
|
||||
{
|
||||
// set module view permissions to page edit permissions
|
||||
permissions = SetPermissions(permissions, siteId, PermissionNames.View, PermissionNames.Edit);
|
||||
}
|
||||
// set module edit permissions to page edit permissions
|
||||
permissions = SetPermissions(permissions, siteId, PermissionNames.Edit, PermissionNames.Edit);
|
||||
|
||||
return permissions;
|
||||
}
|
||||
|
||||
private List<Permission> SetPermissions(List<Permission> permissions, int siteId, string modulePermission, string pagePermission)
|
||||
{
|
||||
foreach (var permission in PageState.Page.PermissionList.Where(item => item.PermissionName == pagePermission))
|
||||
|
|
Loading…
Reference in New Issue
Block a user