updated modules for input requirements
This commit is contained in:
		| @ -8,52 +8,53 @@ | ||||
|  | ||||
| @if (_folders != null) | ||||
| { | ||||
| <div class="container"> | ||||
|     <div class="row mb-1 align-items-center"> | ||||
|         <Label Class="col-sm-3" For="parent" HelpText="Select the parent folder" ResourceKey="Parent">Parent: </Label> | ||||
|         <div class="col-sm-9"> | ||||
|             <select id="parent" class="form-select" @bind="@_parentId"> | ||||
| <form @ref="form" class="@(validated ? "was-validated" : "needs-validation")" novalidate> | ||||
|     <div class="container"> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="parent" HelpText="Select the parent folder" ResourceKey="Parent">Parent: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <select id="parent" class="form-select" @bind="@_parentId" required> | ||||
|                     @if (PageState.QueryString.ContainsKey("id")) | ||||
|                     { | ||||
|                         <option value="-1"><@Localizer["NoParent"]></option> | ||||
|                     } | ||||
|                     @foreach (Folder folder in _folders) | ||||
|                     { | ||||
|                         <option value="@(folder.FolderId)">@(new string('-', folder.Level * 2))@(folder.Name)</option> | ||||
|                     } | ||||
|                 </select> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="name" HelpText="Enter the folder name" ResourceKey="Name">Name: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="name" class="form-control" @bind="@_name" maxlength="256" required /> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="type" HelpText="Select the folder type. Private folders are only accessible by authorized users. Public folders can be accessed by all users" ResourceKey="Name">Type: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 @if (PageState.QueryString.ContainsKey("id")) | ||||
|                 { | ||||
|                     <option value="-1"><@Localizer["NoParent"]></option> | ||||
|                     <input id="type" class="form-control" readonly @bind="@_type" /> | ||||
|                 } | ||||
|                 @foreach (Folder folder in _folders) | ||||
|                 else | ||||
|                 { | ||||
|                     <option value="@(folder.FolderId)">@(new string('-', folder.Level * 2))@(folder.Name)</option> | ||||
|                     <select id="type" class="form-select" @bind="@_type" required> | ||||
|                         <option value="@FolderTypes.Private">@Localizer[FolderTypes.Private]</option> | ||||
|                         <option value="@FolderTypes.Public">@Localizer[FolderTypes.Public]</option> | ||||
|                     </select> | ||||
|                 } | ||||
|             </select> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|     <div class="row mb-1 align-items-center"> | ||||
|         <Label Class="col-sm-3" For="name" HelpText="Enter the folder name" ResourceKey="Name">Name: </Label> | ||||
|         <div class="col-sm-9"> | ||||
|             <input id="name" class="form-control" @bind="@_name" /> | ||||
|         </div> | ||||
|     </div> | ||||
|     <div class="row mb-1 align-items-center"> | ||||
|         <Label Class="col-sm-3" For="type" HelpText="Select the folder type. Private folders are only accessible by authorized users. Public folders can be accessed by all users" ResourceKey="Name">Type: </Label> | ||||
|         <div class="col-sm-9"> | ||||
|             @if (PageState.QueryString.ContainsKey("id")) | ||||
|             { | ||||
|                 <input id="type" class="form-control" readonly @bind="@_type" /> | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 <select id="type" class="form-select" @bind="@_type"> | ||||
|                     <option value="@FolderTypes.Private">@Localizer[FolderTypes.Private]</option> | ||||
|                     <option value="@FolderTypes.Public">@Localizer[FolderTypes.Public]</option> | ||||
|                 </select> | ||||
|             } | ||||
|         </div> | ||||
|     </div> | ||||
|     <div class="row mb-1 align-items-center"> | ||||
|         <div class="col-sm-12"> | ||||
|             <Label Class="col-sm-3" For="permissions" HelpText="Select the permissions you want for the folder" ResourceKey="Permissions">Permissions: </Label> | ||||
|             <PermissionGrid EntityName="@EntityNames.Folder" PermissionNames="@(PermissionNames.Browse + "," + PermissionNames.View + "," + PermissionNames.Edit)" Permissions="@_permissions" @ref="_permissionGrid" /> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <div class="col-sm-12"> | ||||
|                 <Label Class="col-sm-3" For="permissions" HelpText="Select the permissions you want for the folder" ResourceKey="Permissions">Permissions: </Label> | ||||
|                 <PermissionGrid EntityName="@EntityNames.Folder" PermissionNames="@(PermissionNames.Browse + "," + PermissionNames.View + "," + PermissionNames.Edit)" Permissions="@_permissions" @ref="_permissionGrid" /> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | ||||
|     @if (!_isSystem) | ||||
|     { | ||||
| @ -72,170 +73,182 @@ | ||||
|     { | ||||
|         <AuditInfo CreatedBy="@_createdBy" CreatedOn="@_createdOn" ModifiedBy="@_modifiedBy" ModifiedOn="@_modifiedOn"></AuditInfo> | ||||
|     } | ||||
| </form> | ||||
| } | ||||
|  | ||||
| @code { | ||||
|     private List<Folder> _folders; | ||||
|     private int _folderId = -1; | ||||
|     private int _parentId = -1; | ||||
|     private string _name; | ||||
|     private string _type = FolderTypes.Private; | ||||
|     private bool _isSystem; | ||||
|     private string _permissions = string.Empty; | ||||
|     private string _createdBy; | ||||
|     private DateTime _createdOn; | ||||
|     private string _modifiedBy; | ||||
|     private DateTime _modifiedOn; | ||||
|     @code { | ||||
|         private ElementReference form; | ||||
|         private bool validated = false; | ||||
|         private List<Folder> _folders; | ||||
|         private int _folderId = -1; | ||||
|         private int _parentId = -1; | ||||
|         private string _name; | ||||
|         private string _type = FolderTypes.Private; | ||||
|         private bool _isSystem; | ||||
|         private string _permissions = string.Empty; | ||||
|         private string _createdBy; | ||||
|         private DateTime _createdOn; | ||||
|         private string _modifiedBy; | ||||
|         private DateTime _modifiedOn; | ||||
|  | ||||
| #pragma warning disable 649 | ||||
|     private PermissionGrid _permissionGrid; | ||||
|         private PermissionGrid _permissionGrid; | ||||
| #pragma warning restore 649 | ||||
|  | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; | ||||
|         public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; | ||||
|  | ||||
|     public override string Title => "Folder Management"; | ||||
|         public override string Title => "Folder Management"; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         protected override async Task OnInitializedAsync() | ||||
|         { | ||||
|             _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); | ||||
|  | ||||
|             if (PageState.QueryString.ContainsKey("id")) | ||||
|             try | ||||
|             { | ||||
|                 _folderId = Int32.Parse(PageState.QueryString["id"]); | ||||
|                 Folder folder = await FolderService.GetFolderAsync(_folderId); | ||||
|                 if (folder != null) | ||||
|                 _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); | ||||
|  | ||||
|                 if (PageState.QueryString.ContainsKey("id")) | ||||
|                 { | ||||
|                     _parentId = folder.ParentId ?? -1; | ||||
|                     _name = folder.Name; | ||||
|                     _type = folder.Type; | ||||
|                     _isSystem = folder.IsSystem; | ||||
|                     _permissions = folder.Permissions; | ||||
|                     _createdBy = folder.CreatedBy; | ||||
|                     _createdOn = folder.CreatedOn; | ||||
|                     _modifiedBy = folder.ModifiedBy; | ||||
|                     _modifiedOn = folder.ModifiedOn; | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _parentId = _folders[0].FolderId; | ||||
|                 _permissions = string.Empty; | ||||
|             } | ||||
|         } | ||||
|         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() | ||||
|     { | ||||
|         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(); | ||||
|             } | ||||
|  | ||||
|             folder.SiteId = PageState.Site.SiteId; | ||||
|  | ||||
|             if (_parentId == -1) | ||||
|             { | ||||
|                 folder.ParentId = null; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 folder.ParentId = _parentId; | ||||
|             } | ||||
|  | ||||
|             folder.Name = _name; | ||||
|             folder.Type = _type; | ||||
|             folder.IsSystem = _isSystem; | ||||
|             folder.Permissions = _permissionGrid.GetPermissions(); | ||||
|  | ||||
|             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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     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()); | ||||
|                     _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; | ||||
|                         _isSystem = folder.IsSystem; | ||||
|                         _permissions = folder.Permissions; | ||||
|                         _createdBy = folder.CreatedBy; | ||||
|                         _createdOn = folder.CreatedOn; | ||||
|                         _modifiedBy = folder.ModifiedBy; | ||||
|                         _modifiedOn = folder.ModifiedOn; | ||||
|                     } | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning); | ||||
|                     _parentId = _folders[0].FolderId; | ||||
|                     _permissions = string.Empty; | ||||
|                 } | ||||
|             } | ||||
|             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(); | ||||
|                     } | ||||
|  | ||||
|                     folder.SiteId = PageState.Site.SiteId; | ||||
|  | ||||
|                     if (_parentId == -1) | ||||
|                     { | ||||
|                         folder.ParentId = null; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         folder.ParentId = _parentId; | ||||
|                     } | ||||
|  | ||||
|                     folder.Name = _name; | ||||
|                     folder.Type = _type; | ||||
|                     folder.IsSystem = _isSystem; | ||||
|                     folder.Permissions = _permissionGrid.GetPermissions(); | ||||
|  | ||||
|                     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(Localizer["Message.Folder.Subfolders.InvalidDelete"], MessageType.Warning); | ||||
|                 AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|  | ||||
|         private async Task DeleteFolder() | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Deleting Folder {Folder} {Error}", _folderId, ex.Message); | ||||
|             AddModuleMessage(Localizer["Error.Folder.Delete"], MessageType.Error); | ||||
|             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); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Grayson Walker
					Grayson Walker