Fix #4030: add copy module option for add existing module function.
This commit is contained in:
@ -154,7 +154,7 @@
|
|||||||
<value>Not Authorized</value>
|
<value>Not Authorized</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Message.Require.ModuleSelect" xml:space="preserve">
|
<data name="Message.Require.ModuleSelect" xml:space="preserve">
|
||||||
<value>You Must Select A Module</value>
|
<value>You Must Select A Module And The Copy Mode.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Module.Manage" xml:space="preserve">
|
<data name="Module.Manage" xml:space="preserve">
|
||||||
<value>Module Management:</value>
|
<value>Module Management:</value>
|
||||||
@ -162,6 +162,15 @@
|
|||||||
<data name="Module.Select" xml:space="preserve">
|
<data name="Module.Select" xml:space="preserve">
|
||||||
<value>Select Module</value>
|
<value>Select Module</value>
|
||||||
</data>
|
</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">
|
<data name="Page.Manage" xml:space="preserve">
|
||||||
<value>Page Management:</value>
|
<value>Page Management:</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
@inject ILogService LoggingService
|
@inject ILogService LoggingService
|
||||||
@inject IStringLocalizer<ControlPanelInteractive> Localizer
|
@inject IStringLocalizer<ControlPanelInteractive> Localizer
|
||||||
@inject IStringLocalizer<SharedResources> SharedLocalizer
|
@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">
|
<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>
|
<span class="oi oi-cog"></span>
|
||||||
@ -155,6 +156,11 @@
|
|||||||
<option value="@module.ModuleId">@module.Title</option>
|
<option value="@module.ModuleId">@module.Title</option>
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
|
<select class="form-select mt-1" @bind="@_copyMode">
|
||||||
|
<option value="-"><@Localizer["CopyMode.Select"]></option>
|
||||||
|
<option value="sync"><@Localizer["CopyMode.Sync"]></option>
|
||||||
|
<option value="copy"><@Localizer["CopyMode.Copy"]></option>
|
||||||
|
</select>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -261,6 +267,7 @@
|
|||||||
protected string _moduleId { get; private set; } = "-";
|
protected string _moduleId { get; private set; } = "-";
|
||||||
protected string _moduleType { get; private set; } = "new";
|
protected string _moduleType { get; private set; } = "new";
|
||||||
protected string _moduleDefinitionName { get; private set; } = "-";
|
protected string _moduleDefinitionName { get; private set; } = "-";
|
||||||
|
protected string _copyMode { get; private set; } = "-";
|
||||||
|
|
||||||
protected string _title { get; private set; } = "";
|
protected string _title { get; private set; } = "";
|
||||||
protected string _containerType { get; private set; } = "";
|
protected string _containerType { get; private set; } = "";
|
||||||
@ -355,8 +362,9 @@
|
|||||||
{
|
{
|
||||||
if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList))
|
if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList))
|
||||||
{
|
{
|
||||||
if ((_moduleType == "new" && _moduleDefinitionName != "-") || (_moduleType != "new" && _moduleId != "-"))
|
if ((_moduleType == "new" && _moduleDefinitionName != "-") || (_moduleType != "new" && _moduleId != "-" && _copyMode != "-"))
|
||||||
{
|
{
|
||||||
|
var newModuleId = int.Parse(_moduleId);
|
||||||
if (_moduleType == "new")
|
if (_moduleType == "new")
|
||||||
{
|
{
|
||||||
Module module = new Module();
|
Module module = new Module();
|
||||||
@ -364,33 +372,37 @@
|
|||||||
module.PageId = PageState.Page.PageId;
|
module.PageId = PageState.Page.PageId;
|
||||||
module.ModuleDefinitionName = _moduleDefinitionName;
|
module.ModuleDefinitionName = _moduleDefinitionName;
|
||||||
module.AllPages = false;
|
module.AllPages = false;
|
||||||
|
module.PermissionList = GenerateDefaultPermissions(module.SiteId);
|
||||||
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 = await ModuleService.AddModuleAsync(module);
|
module = await ModuleService.AddModuleAsync(module);
|
||||||
_moduleId = module.ModuleId.ToString();
|
newModuleId = module.ModuleId;
|
||||||
|
}
|
||||||
|
else if(_copyMode == "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
|
var pageModule = new PageModule
|
||||||
{
|
{
|
||||||
PageId = PageState.Page.PageId,
|
PageId = PageState.Page.PageId,
|
||||||
ModuleId = int.Parse(_moduleId),
|
ModuleId = newModuleId,
|
||||||
Title = _title
|
Title = _title
|
||||||
};
|
};
|
||||||
if (pageModule.Title == "")
|
if (string.IsNullOrEmpty(pageModule.Title))
|
||||||
{
|
{
|
||||||
if (_moduleType == "new")
|
if (_moduleType == "new")
|
||||||
{
|
{
|
||||||
@ -430,6 +442,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)
|
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))
|
foreach (var permission in PageState.Page.PermissionList.Where(item => item.PermissionName == pagePermission))
|
||||||
|
Reference in New Issue
Block a user