refactor #4198 - copy existing module

This commit is contained in:
sbwalker 2024-04-29 14:58:30 -04:00
parent a2fb728d3b
commit 2e7c3167f5
3 changed files with 22 additions and 42 deletions

View File

@ -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</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,15 +162,6 @@
<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>
@ -207,13 +198,7 @@
<data name="LocationTop" xml:space="preserve"> <data name="LocationTop" xml:space="preserve">
<value>Top</value> <value>Top</value>
</data> </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"> <data name="Module.CopyExisting" xml:space="preserve">
<value>Copy Existing Module</value> <value>Copy Existing Module</value>
</data> </data>
</root> </root>

View File

@ -94,12 +94,12 @@
<div class="row"> <div class="row">
<div class="col text-center"> <div class="col text-center">
<label for="Module" class="control-label">@Localizer["Module.Manage"]</label> <label for="Module" class="control-label">@Localizer["Module.Manage"]</label>
<select class="form-select" @bind="@_moduleType"> <select class="form-select" @onchange="(e => ModuleTypeChanged(e))">
<option value="new">@Localizer["Module.AddNew"]</option> <option value="new">@Localizer["Module.AddNew"]</option>
@if (PageState.Page.UserId == null) @if (PageState.Page.UserId == null)
{ {
<option value="existing.add">@Localizer["Module.AddExisting"]</option> <option value="add">@Localizer["Module.AddExisting"]</option>
<option value="existing.copy">@Localizer["Module.CopyExisting"]</option> <option value="copy">@Localizer["Module.CopyExisting"]</option>
} }
</select> </select>
@if (_moduleType == "new") @if (_moduleType == "new")
@ -143,21 +143,20 @@
} }
else else
{ {
<select class="form-select mt-1" @onchange="(e => PageChanged(e))"> <select class="form-select mt-1" value="@_pageId" @onchange="(e => PageChanged(e))">
<option value="-">&lt;@Localizer["Page.Select"]&gt;</option> <option value="-">&lt;@Localizer["Page.Select"]&gt;</option>
@foreach (Page p in _pages) @foreach (Page p in _pages)
{ {
<option value="@p.PageId">@p.Name</option> <option value="@p.PageId">@p.Name</option>
} }
</select> </select>
<select class="form-select mt-1" @bind="@_moduleId" @bind:after="() => ModuleIdChanged()"> <select class="form-select mt-1" @bind="@_moduleId">
<option value="-">&lt;@Localizer["Module.Select"]&gt;</option> <option value="-">&lt;@Localizer["Module.Select"]&gt;</option>
@foreach (Module module in _modules) @foreach (Module module in _modules)
{ {
<option value="@module.ModuleId">@module.Title</option> <option value="@module.ModuleId">@module.Title</option>
} }
</select> </select>
@((MarkupString)_copyModuleMessage)
} }
</div> </div>
</div> </div>
@ -270,7 +269,6 @@
protected int _location { get; private set; } = int.MaxValue; protected int _location { get; private set; } = int.MaxValue;
protected string _visibility { get; private set; } = "view"; protected string _visibility { get; private set; } = "view";
protected string _message { get; private set; } = ""; protected string _message { get; private set; } = "";
protected string _copyModuleMessage { get; private set; } = "";
private string settingCategory = "CP-category"; private string settingCategory = "CP-category";
private string settingPane = "CP-pane"; private string settingPane = "CP-pane";
@ -341,6 +339,13 @@
StateHasChanged(); StateHasChanged();
} }
private void ModuleTypeChanged(ChangeEventArgs e)
{
_moduleType = (string)e.Value;
_pageId = "-";
_moduleId = "-";
}
private void PageChanged(ChangeEventArgs e) private void PageChanged(ChangeEventArgs e)
{ {
_pageId = (string)e.Value; _pageId = (string)e.Value;
@ -348,26 +353,14 @@
{ {
_modules = PageState.Modules _modules = PageState.Modules
.Where(module => module.PageId == int.Parse(_pageId) && .Where(module => module.PageId == int.Parse(_pageId) &&
UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.PermissionList)) UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.PermissionList) &&
(_moduleType == "add" || module.ModuleDefinition.IsPortable))
.ToList(); .ToList();
} }
_moduleId = "-"; _moduleId = "-";
StateHasChanged(); 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() private async Task AddModule()
{ {
if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList))
@ -387,7 +380,7 @@
module = await ModuleService.AddModuleAsync(module); module = await ModuleService.AddModuleAsync(module);
newModuleId = module.ModuleId; newModuleId = module.ModuleId;
} }
else if (_moduleType == "exsiting.copy") else if (_moduleType == "copy")
{ {
var module = await ModuleService.GetModuleAsync(int.Parse(_moduleId)); var module = await ModuleService.GetModuleAsync(int.Parse(_moduleId));
module.ModuleId = 0; module.ModuleId = 0;

View File

@ -7,6 +7,7 @@ using Oqtane.Repository;
using Oqtane.Shared; using Oqtane.Shared;
using Oqtane.Migrations.Framework; using Oqtane.Migrations.Framework;
using Oqtane.Documentation; using Oqtane.Documentation;
using System.Linq;
// ReSharper disable ConvertToUsingDeclaration // ReSharper disable ConvertToUsingDeclaration
@ -29,10 +30,11 @@ namespace Oqtane.Modules.HtmlText.Manager
public string ExportModule(Module module) public string ExportModule(Module module)
{ {
string content = ""; string content = "";
var htmlText = _htmlText.GetHtmlText(module.ModuleId); var htmltexts = _htmlText.GetHtmlTexts(module.ModuleId);
if (htmlText != null) if (htmltexts != null && htmltexts.Any())
{ {
content = WebUtility.HtmlEncode(htmlText.Content); var htmltext = htmltexts.OrderByDescending(item => item.CreatedOn).First();
content = WebUtility.HtmlEncode(htmltext.Content);
} }
return content; return content;
} }