resolved #604 - added support for renaming files and moving to a different folder. Also added support for renaming folders and moving to a different parent folder.
This commit is contained in:
111
Oqtane.Client/Modules/Admin/Files/Details.razor
Normal file
111
Oqtane.Client/Modules/Admin/Files/Details.razor
Normal file
@ -0,0 +1,111 @@
|
||||
@namespace Oqtane.Modules.Admin.Files
|
||||
@inherits ModuleBase
|
||||
@inject IFileService FileService
|
||||
@inject IFolderService FolderService
|
||||
@inject NavigationManager NavigationManager
|
||||
|
||||
@if (_folders != null)
|
||||
{
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<td>
|
||||
<Label for="name" HelpText="The name of the file">Name: </Label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="name" class="form-control" @bind="@_name" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<Label For="parent" HelpText="The folder where the file is located">Folder: </Label>
|
||||
</td>
|
||||
<td>
|
||||
<select id="parent" class="form-control" @bind="@_folderId">
|
||||
@foreach (Folder folder in _folders)
|
||||
{
|
||||
<option value="@(folder.FolderId)">@(new string('-', folder.Level * 2))@(folder.Name)</option>
|
||||
}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<Label for="size" HelpText="The size of the file (in bytes)">Size: </Label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="size" class="form-control" @bind="@_size" readonly />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<button type="button" class="btn btn-success" @onclick="SaveFile">Save</button>
|
||||
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
||||
<br />
|
||||
<br />
|
||||
<AuditInfo CreatedBy="@_createdBy" CreatedOn="@_createdOn" ModifiedBy="@_modifiedBy" ModifiedOn="@_modifiedOn"></AuditInfo>
|
||||
}
|
||||
|
||||
@code {
|
||||
private int _fileId = -1;
|
||||
private string _name;
|
||||
private List<Folder> _folders;
|
||||
private int _folderId = -1;
|
||||
private int _size;
|
||||
private string _createdBy;
|
||||
private DateTime _createdOn;
|
||||
private string _modifiedBy;
|
||||
private DateTime _modifiedOn;
|
||||
|
||||
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
||||
|
||||
public override string Title => "File Management";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
_folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId);
|
||||
_fileId = Int32.Parse(PageState.QueryString["id"]);
|
||||
File file = await FileService.GetFileAsync(_fileId);
|
||||
if (file != null)
|
||||
{
|
||||
_name = file.Name;
|
||||
_folderId = file.FolderId;
|
||||
_size = file.Size;
|
||||
_createdBy = file.CreatedBy;
|
||||
_createdOn = file.CreatedOn;
|
||||
_modifiedBy = file.ModifiedBy;
|
||||
_modifiedOn = file.ModifiedOn;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await logger.LogError(ex, "Error Loading File {FileId} {Error}", _fileId, ex.Message);
|
||||
AddModuleMessage("Error Loading File", MessageType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SaveFile()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_name.IsPathOrFileValid())
|
||||
{
|
||||
File file = await FileService.GetFileAsync(_fileId);
|
||||
file.Name = _name;
|
||||
file.FolderId = _folderId;
|
||||
file = await FileService.UpdateFileAsync(file);
|
||||
await logger.LogInformation("File Saved {File}", file);
|
||||
NavigationManager.NavigateTo(NavigateUrl());
|
||||
}
|
||||
else
|
||||
{
|
||||
AddModuleMessage("File Name Not Valid", MessageType.Warning);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await logger.LogError(ex, "Error Saving File {FileId} {Error}", _fileId, ex.Message);
|
||||
AddModuleMessage("Error Saving File", MessageType.Error);
|
||||
}
|
||||
}
|
||||
}
|
@ -123,7 +123,7 @@
|
||||
AddModuleMessage("Folder Name Not Valid.", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
Folder folder;
|
||||
@ -174,7 +174,7 @@
|
||||
catch (Exception ex)
|
||||
{
|
||||
await logger.LogError(ex, "Error Saving Folder {FolderId} {Error}", _folderId, ex.Message);
|
||||
AddModuleMessage("Error Saving Module", MessageType.Error);
|
||||
AddModuleMessage("Error Saving Folder", MessageType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,9 +182,25 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
await FolderService.DeleteFolderAsync(_folderId);
|
||||
await logger.LogInformation("Folder Deleted {Folder}", _folderId);
|
||||
AddModuleMessage("Folder Deleted", MessageType.Success);
|
||||
bool isparent = false;
|
||||
foreach (Folder folder in _folders)
|
||||
{
|
||||
if (folder.ParentId == _folderId)
|
||||
{
|
||||
isparent = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isparent)
|
||||
{
|
||||
await FolderService.DeleteFolderAsync(_folderId);
|
||||
await logger.LogInformation("Folder Deleted {Folder}", _folderId);
|
||||
NavigationManager.NavigateTo(NavigateUrl());
|
||||
}
|
||||
else
|
||||
{
|
||||
AddModuleMessage("Folder Has Child Folders And Cannot Be Deleted", MessageType.Warning);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -28,6 +28,7 @@
|
||||
</table>
|
||||
<Pager Items="@_files">
|
||||
<Header>
|
||||
<th style="width: 1px;"> </th>
|
||||
<th style="width: 1px;"> </th>
|
||||
<th>Name</th>
|
||||
<th>Modified</th>
|
||||
@ -35,6 +36,7 @@
|
||||
<th>Size</th>
|
||||
</Header>
|
||||
<Row>
|
||||
<td><ActionLink Action="Details" Text="Edit" Parameters="@($"id=" + context.FileId.ToString())" /></td>
|
||||
<td><ActionDialog Header="Delete File" Message="@("Are You Sure You Wish To Delete " + context.Name + "?")" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteFile(context))" /></td>
|
||||
<td><a href="@(ContentUrl(context.FileId))" target="_new">@context.Name</a></td>
|
||||
<td>@context.ModifiedOn</td>
|
||||
|
Reference in New Issue
Block a user