@namespace Oqtane.Modules.Admin.Files @inherits ModuleBase @inject IFolderService FolderService @inject IFileService FileService @inject NavigationManager NavigationManager @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @if (_folders != null) {
@if (PageState.QueryString.ContainsKey("id")) { } else { }
@if (PageState.QueryString.ContainsKey("id")) {
}

@if (!_isSystem) { @((MarkupString)" ") } @SharedLocalizer["Cancel"] @if (!_isSystem && PageState.QueryString.ContainsKey("id")) { @((MarkupString)" ") } } @code { private ElementReference form; private bool validated = false; private List _folders; private int _folderId = -1; private int _parentId = -1; private string _name; private string _type = FolderTypes.Private; private string _capacity = "0"; private string _cachecontrol = string.Empty; private string _imagesizes = string.Empty; private bool _isSystem; private List _permissions = null; private string _createdBy; private DateTime _createdOn; private string _modifiedBy; private DateTime _modifiedOn; #pragma warning disable 649 private PermissionGrid _permissionGrid; #pragma warning restore 649 public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; public override string Title => "Folder Management"; protected override async Task OnInitializedAsync() { try { _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); if (PageState.QueryString.ContainsKey("id")) { _folderId = Int32.Parse(PageState.QueryString["id"]); Folder folder = await FolderService.GetFolderAsync(_folderId); if (folder != null) { _parentId = folder.ParentId ?? -1; _name = folder.Name; _type = folder.Type; _capacity = folder.Capacity.ToString(); _cachecontrol = folder.CacheControl; _imagesizes = folder.ImageSizes; _isSystem = folder.IsSystem; _permissions = folder.PermissionList; _createdBy = folder.CreatedBy; _createdOn = folder.CreatedOn; _modifiedBy = folder.ModifiedBy; _modifiedOn = folder.ModifiedOn; } } else { _parentId = _folders[0].FolderId; } } catch (Exception ex) { await logger.LogError(ex, "Error Loading Folder {FolderId} {Error}", _folderId, ex.Message); AddModuleMessage(Localizer["Error.Folder.Load"], MessageType.Error); } } private async Task SaveFolder() { validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) { if (_name == string.Empty || _parentId == -1) { AddModuleMessage(Localizer["Message.Required.FolderParent"], MessageType.Warning); return; } if (!_name.IsPathOrFileValid()) { AddModuleMessage(Localizer["Message.Folder.InvalidName"], MessageType.Warning); return; } try { Folder folder; if (_folderId != -1) { folder = await FolderService.GetFolderAsync(_folderId); } else { folder = new Folder(); } if (_parentId == -1) { folder.ParentId = null; } else { folder.ParentId = _parentId; } // check for duplicate folder names if (_folders.Any(item => item.ParentId == folder.ParentId && item.Name == _name && item.FolderId != _folderId)) { AddModuleMessage(Localizer["Message.Folder.Duplicate"], MessageType.Warning); return; } folder.SiteId = PageState.Site.SiteId; folder.Name = _name; folder.Type = _type; folder.Capacity = int.Parse(_capacity); folder.CacheControl = _cachecontrol; folder.ImageSizes = _imagesizes; folder.IsSystem = _isSystem; folder.PermissionList = _permissionGrid.GetPermissionList(); if (_folderId != -1) { folder = await FolderService.UpdateFolderAsync(folder); } else { folder = await FolderService.AddFolderAsync(folder); } if (folder != null) { await FolderService.UpdateFolderOrderAsync(folder.SiteId, folder.FolderId, folder.ParentId); await logger.LogInformation("Folder Saved {Folder}", folder); NavigationManager.NavigateTo(NavigateUrl()); } else { AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); } } catch (Exception ex) { await logger.LogError(ex, "Error Saving Folder {FolderId} {Error}", _folderId, ex.Message); AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); } } else { AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } private async Task DeleteFolder() { try { bool isparent = false; foreach (Folder folder in _folders) { if (folder.ParentId == _folderId) { isparent = true; break; } } if (!isparent) { var files = await FileService.GetFilesAsync(_folderId); if (files.Count == 0) { await FolderService.DeleteFolderAsync(_folderId); await logger.LogInformation("Folder Deleted {Folder}", _folderId); NavigationManager.NavigateTo(NavigateUrl()); } else { AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning); } } else { AddModuleMessage(Localizer["Message.Folder.Subfolders.InvalidDelete"], MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Deleting Folder {Folder} {Error}", _folderId, ex.Message); AddModuleMessage(Localizer["Error.Folder.Delete"], MessageType.Error); } } }