Merge branch 'dev' into pager
This commit is contained in:
		| @ -90,116 +90,117 @@ | ||||
| </form> | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; | ||||
|     public override string Title => "Module Settings"; | ||||
| 	public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; | ||||
| 	public override string Title => "Module Settings"; | ||||
|  | ||||
|     private ElementReference form; | ||||
|     private bool validated = false; | ||||
|     private List<Theme> _themes; | ||||
|     private List<ThemeControl> _containers = new List<ThemeControl>(); | ||||
|     private string _title; | ||||
|     private string _containerType; | ||||
|     private string _allPages = "false"; | ||||
|     private string _permissionNames = ""; | ||||
|     private string _permissions = null; | ||||
|     private string _pageId; | ||||
|     private PermissionGrid _permissionGrid; | ||||
|     private Type _moduleSettingsType; | ||||
|     private object _moduleSettings; | ||||
|     private string _moduleSettingsTitle = "Module Settings"; | ||||
|     private RenderFragment ModuleSettingsComponent { get; set; } | ||||
|     private Type _containerSettingsType; | ||||
|     private object _containerSettings; | ||||
|     private RenderFragment ContainerSettingsComponent { get; set; } | ||||
|     private string createdby; | ||||
|     private DateTime createdon; | ||||
|     private string modifiedby; | ||||
|     private DateTime modifiedon; | ||||
| 	private ElementReference form; | ||||
| 	private bool validated = false; | ||||
| 	private List<Theme> _themes; | ||||
| 	private List<ThemeControl> _containers = new List<ThemeControl>(); | ||||
| 	private string _title; | ||||
| 	private string _containerType; | ||||
| 	private string _allPages = "false"; | ||||
| 	private string _permissionNames = ""; | ||||
| 	private string _permissions = null; | ||||
| 	private string _pageId; | ||||
| 	private PermissionGrid _permissionGrid; | ||||
| 	private Type _moduleSettingsType; | ||||
| 	private object _moduleSettings; | ||||
| 	private string _moduleSettingsTitle = "Module Settings"; | ||||
| 	private RenderFragment ModuleSettingsComponent { get; set; } | ||||
| 	private Type _containerSettingsType; | ||||
| 	private object _containerSettings; | ||||
| 	private RenderFragment ContainerSettingsComponent { get; set; } | ||||
| 	private string createdby; | ||||
| 	private DateTime createdon; | ||||
| 	private string modifiedby; | ||||
| 	private DateTime modifiedon; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         _title = ModuleState.Title; | ||||
|         _themes = await ThemeService.GetThemesAsync(); | ||||
|         _containers = ThemeService.GetContainerControls(_themes, PageState.Page.ThemeType); | ||||
|         _containerType = ModuleState.ContainerType; | ||||
|         _allPages = ModuleState.AllPages.ToString(); | ||||
|         _permissions = ModuleState.Permissions; | ||||
|         _permissionNames = ModuleState.ModuleDefinition.PermissionNames; | ||||
|         _pageId = ModuleState.PageId.ToString(); | ||||
|         createdby = ModuleState.CreatedBy; | ||||
|         createdon = ModuleState.CreatedOn; | ||||
|         modifiedby = ModuleState.ModifiedBy; | ||||
|         modifiedon = ModuleState.ModifiedOn; | ||||
| 	protected override async Task OnInitializedAsync() | ||||
| 	{ | ||||
| 		_title = ModuleState.Title; | ||||
| 		_themes = await ThemeService.GetThemesAsync(); | ||||
| 		_containers = ThemeService.GetContainerControls(_themes, PageState.Page.ThemeType); | ||||
| 		_containerType = ModuleState.ContainerType; | ||||
| 		_allPages = ModuleState.AllPages.ToString(); | ||||
| 		_permissions = ModuleState.Permissions; | ||||
| 		_permissionNames = ModuleState.ModuleDefinition.PermissionNames; | ||||
| 		_pageId = ModuleState.PageId.ToString(); | ||||
| 		createdby = ModuleState.CreatedBy; | ||||
| 		createdon = ModuleState.CreatedOn; | ||||
| 		modifiedby = ModuleState.ModifiedBy; | ||||
| 		modifiedon = ModuleState.ModifiedOn; | ||||
|  | ||||
|         if (!string.IsNullOrEmpty(ModuleState.ModuleDefinition.SettingsType)) | ||||
|         { | ||||
|             // module settings type explicitly declared in IModule interface | ||||
|             _moduleSettingsType = Type.GetType(ModuleState.ModuleDefinition.SettingsType); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             // legacy support - module settings type determined by convention ( ie. existence of a "Settings.razor" component in module ) | ||||
|             _moduleSettingsType = Type.GetType(ModuleState.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, PageState.Action), false, true); | ||||
|         } | ||||
|         if (_moduleSettingsType != null) | ||||
|         { | ||||
|             var moduleobject = Activator.CreateInstance(_moduleSettingsType) as IModuleControl; | ||||
|             if (!string.IsNullOrEmpty(moduleobject.Title)) | ||||
|             { | ||||
|                 _moduleSettingsTitle = moduleobject.Title; | ||||
|             } | ||||
| 		if (!string.IsNullOrEmpty(ModuleState.ModuleDefinition.SettingsType)) | ||||
| 		{ | ||||
| 		// module settings type explicitly declared in IModule interface | ||||
| 			_moduleSettingsType = Type.GetType(ModuleState.ModuleDefinition.SettingsType); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 		// legacy support - module settings type determined by convention ( ie. existence of a "Settings.razor" component in module ) | ||||
| 			_moduleSettingsType = Type.GetType(ModuleState.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, PageState.Action), false, true); | ||||
| 		} | ||||
| 		if (_moduleSettingsType != null) | ||||
| 		{ | ||||
| 			var moduleobject = Activator.CreateInstance(_moduleSettingsType) as IModuleControl; | ||||
| 			if (!string.IsNullOrEmpty(moduleobject.Title)) | ||||
| 			{ | ||||
| 				_moduleSettingsTitle = moduleobject.Title; | ||||
| 			} | ||||
|  | ||||
|             ModuleSettingsComponent = builder => | ||||
|             { | ||||
|                 builder.OpenComponent(0, _moduleSettingsType); | ||||
|                 builder.AddComponentReferenceCapture(1, inst => { _moduleSettings = Convert.ChangeType(inst, _moduleSettingsType); }); | ||||
|                 builder.CloseComponent(); | ||||
|             }; | ||||
|         } | ||||
| 			ModuleSettingsComponent = builder => | ||||
| 			{ | ||||
| 				builder.OpenComponent(0, _moduleSettingsType); | ||||
| 				builder.AddComponentReferenceCapture(1, inst => { _moduleSettings = Convert.ChangeType(inst, _moduleSettingsType); }); | ||||
| 				builder.CloseComponent(); | ||||
| 			}; | ||||
| 		} | ||||
|  | ||||
|         var theme = _themes.FirstOrDefault(item => item.Containers.Any(themecontrol => themecontrol.TypeName.Equals(_containerType))); | ||||
|         if (theme != null && !string.IsNullOrEmpty(theme.ContainerSettingsType)) | ||||
|         { | ||||
|             _containerSettingsType = Type.GetType(theme.ContainerSettingsType); | ||||
|             if (_containerSettingsType != null) | ||||
|             { | ||||
|                 ContainerSettingsComponent = builder => | ||||
|                 { | ||||
|                     builder.OpenComponent(0, _containerSettingsType); | ||||
|                     builder.AddComponentReferenceCapture(1, inst => { _containerSettings = Convert.ChangeType(inst, _containerSettingsType); }); | ||||
|                     builder.CloseComponent(); | ||||
|                 }; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 		var theme = _themes.FirstOrDefault(item => item.Containers.Any(themecontrol => themecontrol.TypeName.Equals(_containerType))); | ||||
| 		if (theme != null && !string.IsNullOrEmpty(theme.ContainerSettingsType)) | ||||
| 		{ | ||||
| 			_containerSettingsType = Type.GetType(theme.ContainerSettingsType); | ||||
| 			if (_containerSettingsType != null) | ||||
| 			{ | ||||
| 				ContainerSettingsComponent = builder => | ||||
| 				{ | ||||
| 					builder.OpenComponent(0, _containerSettingsType); | ||||
| 					builder.AddComponentReferenceCapture(1, inst => { _containerSettings = Convert.ChangeType(inst, _containerSettingsType); }); | ||||
| 					builder.CloseComponent(); | ||||
| 				}; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|     private async Task SaveModule() | ||||
|     { | ||||
|         validated = true; | ||||
|         var interop = new Interop(JSRuntime); | ||||
|         if (await interop.FormValid(form)) | ||||
|         { | ||||
|             if (!string.IsNullOrEmpty(_title)) | ||||
|             { | ||||
|                 var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); | ||||
|                 pagemodule.PageId = int.Parse(_pageId); | ||||
|                 pagemodule.Title = _title; | ||||
|                 pagemodule.ContainerType = (_containerType != "-") ? _containerType : string.Empty; | ||||
|                 if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Page.DefaultContainerType) | ||||
|                 { | ||||
|                     pagemodule.ContainerType = string.Empty; | ||||
|                 } | ||||
|                 if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Site.DefaultContainerType) | ||||
|                 { | ||||
|                     pagemodule.ContainerType = string.Empty; | ||||
|                 } | ||||
|                 await PageModuleService.UpdatePageModuleAsync(pagemodule); | ||||
|                 await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); | ||||
| 	private async Task SaveModule() | ||||
| 	{ | ||||
| 		validated = true; | ||||
| 		var interop = new Interop(JSRuntime); | ||||
| 		if (await interop.FormValid(form)) | ||||
| 		{ | ||||
| 			if (!string.IsNullOrEmpty(_title)) | ||||
| 			{ | ||||
| 				var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); | ||||
| 				pagemodule.PageId = int.Parse(_pageId); | ||||
| 				pagemodule.Title = _title; | ||||
| 				pagemodule.ContainerType = (_containerType != "-") ? _containerType : string.Empty; | ||||
| 				if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Page.DefaultContainerType) | ||||
| 				{ | ||||
| 					pagemodule.ContainerType = string.Empty; | ||||
| 				} | ||||
| 				if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Site.DefaultContainerType) | ||||
| 				{ | ||||
| 					pagemodule.ContainerType = string.Empty; | ||||
| 				} | ||||
| 				await PageModuleService.UpdatePageModuleAsync(pagemodule); | ||||
| 				await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); | ||||
|  | ||||
|                 var module = ModuleState; | ||||
|                 module.AllPages = bool.Parse(_allPages); | ||||
|                 module.Permissions = _permissionGrid.GetPermissions(); | ||||
|                 await ModuleService.UpdateModuleAsync(module); | ||||
| 				var module = ModuleState; | ||||
| 				module.AllPages = bool.Parse(_allPages); | ||||
| 				module.PageModuleId = ModuleState.PageModuleId; | ||||
| 				module.Permissions = _permissionGrid.GetPermissions(); | ||||
| 				await ModuleService.UpdateModuleAsync(module); | ||||
|  | ||||
|                 if (_moduleSettingsType != null) | ||||
|                 { | ||||
|  | ||||
| @ -59,7 +59,7 @@ else | ||||
|         if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) | ||||
|         { | ||||
|             _roles = await RoleService.GetRolesAsync(PageState.Site.SiteId, true); | ||||
|             _roles = _roles.Where(item => item.Name != RoleNames.Everyone).ToList(); | ||||
| 			_roles.RemoveAll(item => item.Name == RoleNames.Everyone || item.Name == RoleNames.Unauthenticated); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|  | ||||
| @ -88,15 +88,17 @@ else | ||||
|             userid = Int32.Parse(PageState.QueryString["id"]); | ||||
|             User user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
|             name = user.DisplayName; | ||||
|  | ||||
|             if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) | ||||
|             { | ||||
|                 roles = await RoleService.GetRolesAsync(PageState.Site.SiteId, true); | ||||
|                 roles = roles.Where(item => item.Name != RoleNames.Everyone).ToList(); | ||||
| 				roles.RemoveAll(item => item.Name == RoleNames.Everyone || item.Name == RoleNames.Unauthenticated); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 roles = await RoleService.GetRolesAsync(PageState.Site.SiteId); | ||||
|             } | ||||
|  | ||||
|             await GetUserRoles(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|  | ||||
| @ -86,279 +86,296 @@ | ||||
| } | ||||
|  | ||||
| @code { | ||||
|     private string _id; | ||||
|     private List<Folder> _folders; | ||||
|     private List<File> _files = new List<File>(); | ||||
|     private string _fileinputid = string.Empty; | ||||
|     private string _progressinfoid = string.Empty; | ||||
|     private string _progressbarid = string.Empty; | ||||
|     private string _filter = "*"; | ||||
|     private bool _haseditpermission = false; | ||||
|     private string _image = string.Empty; | ||||
|     private File _file = null; | ||||
|     private string _guid; | ||||
|     private string _message = string.Empty; | ||||
|     private MessageType _messagetype; | ||||
| 	private string _id; | ||||
| 	private List<Folder> _folders; | ||||
| 	private List<File> _files = new List<File>(); | ||||
| 	private string _fileinputid = string.Empty; | ||||
| 	private string _progressinfoid = string.Empty; | ||||
| 	private string _progressbarid = string.Empty; | ||||
| 	private string _filter = "*"; | ||||
| 	private bool _haseditpermission = false; | ||||
| 	private string _image = string.Empty; | ||||
| 	private File _file = null; | ||||
| 	private string _guid; | ||||
| 	private string _message = string.Empty; | ||||
| 	private MessageType _messagetype; | ||||
|  | ||||
|     [Parameter] | ||||
|     public string Id { get; set; } // optional - for setting the id of the FileManager component for accessibility | ||||
| 	[Parameter] | ||||
| 	public string Id { get; set; } // optional - for setting the id of the FileManager component for accessibility | ||||
|  | ||||
|     [Parameter] | ||||
|     public int FolderId { get; set; } = -1; // optional - for setting a specific default folder by folderid  | ||||
| 	[Parameter] | ||||
| 	public int FolderId { get; set; } = -1; // optional - for setting a specific default folder by folderid  | ||||
|  | ||||
|     [Parameter] | ||||
|     public string Folder { get; set; } = ""; // optional - for setting a specific default folder by folder path  | ||||
| 	[Parameter] | ||||
| 	public string Folder { get; set; } = ""; // optional - for setting a specific default folder by folder path  | ||||
|  | ||||
|     [Parameter] | ||||
|     public int FileId { get; set; } = -1; // optional - for selecting a specific file by default | ||||
| 	[Parameter] | ||||
| 	public int FileId { get; set; } = -1; // optional - for selecting a specific file by default | ||||
|  | ||||
|     [Parameter] | ||||
|     public string Filter { get; set; } // optional - comma delimited list of file types that can be selected or uploaded ie. "jpg,gif" | ||||
| 	[Parameter] | ||||
| 	public string Filter { get; set; } // optional - comma delimited list of file types that can be selected or uploaded ie. "jpg,gif" | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool ShowFiles { get; set; } = true; // optional - for indicating whether a list of files should be displayed - default is true | ||||
| 	[Parameter] | ||||
| 	public bool ShowFiles { get; set; } = true; // optional - for indicating whether a list of files should be displayed - default is true | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool ShowUpload { get; set; } = true; // optional - for indicating whether a Upload controls should be displayed - default is true | ||||
| 	[Parameter] | ||||
| 	public bool ShowUpload { get; set; } = true; // optional - for indicating whether a Upload controls should be displayed - default is true | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool ShowFolders { get; set; } = true; // optional - for indicating whether a list of folders should be displayed - default is true | ||||
| 	[Parameter] | ||||
| 	public bool ShowFolders { get; set; } = true; // optional - for indicating whether a list of folders should be displayed - default is true | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool ShowImage { get; set; } = true; // optional - for indicating whether an image thumbnail should be displayed - default is true | ||||
| 	[Parameter] | ||||
| 	public bool ShowImage { get; set; } = true; // optional - for indicating whether an image thumbnail should be displayed - default is true | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool ShowSuccess { get; set; } = false; // optional - for indicating whether a success message should be displayed upon successful upload - default is false | ||||
| 	[Parameter] | ||||
| 	public bool ShowSuccess { get; set; } = false; // optional - for indicating whether a success message should be displayed upon successful upload - default is false | ||||
|  | ||||
|     [Parameter] | ||||
|     public bool UploadMultiple { get; set; } = false; // optional - enable multiple file uploads - default false | ||||
| 	[Parameter] | ||||
| 	public bool UploadMultiple { get; set; } = false; // optional - enable multiple file uploads - default false | ||||
|  | ||||
|     [Parameter] | ||||
|     public EventCallback<int> OnUpload { get; set; } // optional - executes a method in the calling component when a file is uploaded | ||||
| 	[Parameter] | ||||
| 	public EventCallback<int> OnUpload { get; set; } // optional - executes a method in the calling component when a file is uploaded | ||||
|  | ||||
|     [Parameter] | ||||
|     public EventCallback<int> OnSelect { get; set; } // optional - executes a method in the calling component when a file is selected | ||||
| 	[Parameter] | ||||
| 	public EventCallback<int> OnSelect { get; set; } // optional - executes a method in the calling component when a file is selected | ||||
|  | ||||
|     [Parameter] | ||||
|     public EventCallback<int> OnDelete { get; set; } // optional - executes a method in the calling component when a file is deleted | ||||
| 	[Parameter] | ||||
| 	public EventCallback<int> OnDelete { get; set; } // optional - executes a method in the calling component when a file is deleted | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         if (!string.IsNullOrEmpty(Id)) | ||||
|         { | ||||
|             _id = Id; | ||||
|         } | ||||
| 	protected override async Task OnInitializedAsync() | ||||
| 	{ | ||||
| 		if (!string.IsNullOrEmpty(Id)) | ||||
| 		{ | ||||
| 			_id = Id; | ||||
| 		} | ||||
|  | ||||
|         // packages folder is a framework folder for uploading installable nuget packages | ||||
|         if (Folder == Constants.PackagesFolder) | ||||
|         { | ||||
|             ShowFiles = false; | ||||
|             ShowFolders = false; | ||||
|             Filter = "nupkg"; | ||||
|             ShowSuccess = true; | ||||
|         } | ||||
| 		// packages folder is a framework folder for uploading installable nuget packages | ||||
| 		if (Folder == Constants.PackagesFolder) | ||||
| 		{ | ||||
| 			ShowFiles = false; | ||||
| 			ShowFolders = false; | ||||
| 			Filter = "nupkg"; | ||||
| 			ShowSuccess = true; | ||||
| 		} | ||||
|  | ||||
|         if (!ShowFiles) | ||||
|         { | ||||
|             ShowImage = false; | ||||
|         } | ||||
| 		if (!ShowFiles) | ||||
| 		{ | ||||
| 			ShowImage = false; | ||||
| 		} | ||||
|  | ||||
|         _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); | ||||
| 		_folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); | ||||
|  | ||||
|         if (!string.IsNullOrEmpty(Folder) && Folder != Constants.PackagesFolder) | ||||
|         { | ||||
|             Folder folder = await FolderService.GetFolderAsync(ModuleState.SiteId, Folder); | ||||
|             if (folder != null) | ||||
|             { | ||||
|                 FolderId = folder.FolderId; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 FolderId = -1; | ||||
|                 _message = "Folder Path " + Folder + "Does Not Exist"; | ||||
|                 _messagetype = MessageType.Error; | ||||
|             } | ||||
|         } | ||||
| 		if (!string.IsNullOrEmpty(Folder) && Folder != Constants.PackagesFolder) | ||||
| 		{ | ||||
| 			Folder folder = await FolderService.GetFolderAsync(ModuleState.SiteId, Folder); | ||||
| 			if (folder != null) | ||||
| 			{ | ||||
| 				FolderId = folder.FolderId; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				FolderId = -1; | ||||
| 				_message = "Folder Path " + Folder + "Does Not Exist"; | ||||
| 				_messagetype = MessageType.Error; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|         if (FileId != -1) | ||||
|         { | ||||
|             File file = await FileService.GetFileAsync(FileId); | ||||
|             if (file != null) | ||||
|             { | ||||
|                 FolderId = file.FolderId; | ||||
|                 await OnSelect.InvokeAsync(FileId); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 FileId = -1; // file does not exist | ||||
|                 _message = "FileId " + FileId.ToString() + "Does Not Exist"; | ||||
|                 _messagetype = MessageType.Error; | ||||
|             } | ||||
|         } | ||||
| 		if (FileId != -1) | ||||
| 		{ | ||||
| 			File file = await FileService.GetFileAsync(FileId); | ||||
| 			if (file != null) | ||||
| 			{ | ||||
| 				FolderId = file.FolderId; | ||||
| 				await OnSelect.InvokeAsync(FileId); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				FileId = -1; // file does not exist | ||||
| 				_message = "FileId " + FileId.ToString() + "Does Not Exist"; | ||||
| 				_messagetype = MessageType.Error; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|         await SetImage(); | ||||
| 		await SetImage(); | ||||
|  | ||||
|         if (!string.IsNullOrEmpty(Filter)) | ||||
|         { | ||||
|             _filter = "." + Filter.Replace(",", ",."); | ||||
|         } | ||||
| 		if (!string.IsNullOrEmpty(Filter)) | ||||
| 		{ | ||||
| 			_filter = "." + Filter.Replace(",", ",."); | ||||
| 		} | ||||
|  | ||||
|         await GetFiles(); | ||||
| 		await GetFiles(); | ||||
|  | ||||
|         // create unique id for component | ||||
|         _guid = Guid.NewGuid().ToString("N"); | ||||
|         _fileinputid = _guid + "FileInput"; | ||||
|         _progressinfoid = _guid + "ProgressInfo"; | ||||
|         _progressbarid = _guid + "ProgressBar"; | ||||
|     } | ||||
| 		// create unique id for component | ||||
| 		_guid = Guid.NewGuid().ToString("N"); | ||||
| 		_fileinputid = _guid + "FileInput"; | ||||
| 		_progressinfoid = _guid + "ProgressInfo"; | ||||
| 		_progressbarid = _guid + "ProgressBar"; | ||||
| 	} | ||||
|  | ||||
|     private async Task GetFiles() | ||||
|     { | ||||
|         _haseditpermission = false; | ||||
|         if (Folder == Constants.PackagesFolder) | ||||
|         { | ||||
|             _haseditpermission = UserSecurity.IsAuthorized(PageState.User, RoleNames.Host); | ||||
|             _files = new List<File>(); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             Folder folder = _folders.FirstOrDefault(item => item.FolderId == FolderId); | ||||
|             if (folder != null) | ||||
|             { | ||||
|                 _haseditpermission = UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, folder.Permissions); | ||||
|                 _files = await FileService.GetFilesAsync(FolderId); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _haseditpermission = false; | ||||
|                 _files = new List<File>(); | ||||
|             } | ||||
|         } | ||||
|         if (_filter != "*") | ||||
|         { | ||||
|             List<File> filtered = new List<File>(); | ||||
|             foreach (File file in _files) | ||||
|             { | ||||
|                 if (_filter.ToUpper().IndexOf("." + file.Extension.ToUpper()) != -1) | ||||
|                 { | ||||
|                     filtered.Add(file); | ||||
|                 } | ||||
|             } | ||||
|             _files = filtered; | ||||
|         } | ||||
|     } | ||||
| 	private async Task GetFiles() | ||||
| 	{ | ||||
| 		_haseditpermission = false; | ||||
| 		if (Folder == Constants.PackagesFolder) | ||||
| 		{ | ||||
| 			_haseditpermission = UserSecurity.IsAuthorized(PageState.User, RoleNames.Host); | ||||
| 			_files = new List<File>(); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			Folder folder = _folders.FirstOrDefault(item => item.FolderId == FolderId); | ||||
| 			if (folder != null) | ||||
| 			{ | ||||
| 				_haseditpermission = UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, folder.Permissions); | ||||
| 				_files = await FileService.GetFilesAsync(FolderId); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				_haseditpermission = false; | ||||
| 				_files = new List<File>(); | ||||
| 			} | ||||
| 		} | ||||
| 		if (_filter != "*") | ||||
| 		{ | ||||
| 			List<File> filtered = new List<File>(); | ||||
| 			foreach (File file in _files) | ||||
| 			{ | ||||
| 				if (_filter.ToUpper().IndexOf("." + file.Extension.ToUpper()) != -1) | ||||
| 				{ | ||||
| 					filtered.Add(file); | ||||
| 				} | ||||
| 			} | ||||
| 			_files = filtered; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|     private async Task FolderChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         _message = string.Empty; | ||||
|         try | ||||
|         { | ||||
|             FolderId = int.Parse((string)e.Value); | ||||
|             await GetFiles(); | ||||
|             FileId = -1; | ||||
|             _file = null; | ||||
|             _image = string.Empty; | ||||
|             StateHasChanged(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); | ||||
|             _message = Localizer["Error.File.Load"]; | ||||
|             _messagetype = MessageType.Error; | ||||
|         } | ||||
|     } | ||||
| 	private async Task FolderChanged(ChangeEventArgs e) | ||||
| 	{ | ||||
| 		_message = string.Empty; | ||||
| 		try | ||||
| 		{ | ||||
| 			FolderId = int.Parse((string)e.Value); | ||||
| 			await GetFiles(); | ||||
| 			FileId = -1; | ||||
| 			_file = null; | ||||
| 			_image = string.Empty; | ||||
| 			StateHasChanged(); | ||||
| 		} | ||||
| 		catch (Exception ex) | ||||
| 		{ | ||||
| 			await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); | ||||
| 			_message = Localizer["Error.File.Load"]; | ||||
| 			_messagetype = MessageType.Error; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|     private async Task FileChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         _message = string.Empty; | ||||
|         FileId = int.Parse((string)e.Value); | ||||
|         if (FileId != -1) | ||||
|         { | ||||
|             await OnSelect.InvokeAsync(FileId); | ||||
|         } | ||||
| 	private async Task FileChanged(ChangeEventArgs e) | ||||
| 	{ | ||||
| 		_message = string.Empty; | ||||
| 		FileId = int.Parse((string)e.Value); | ||||
| 		if (FileId != -1) | ||||
| 		{ | ||||
| 			await OnSelect.InvokeAsync(FileId); | ||||
| 		} | ||||
|  | ||||
|         await SetImage(); | ||||
|         StateHasChanged(); | ||||
|     } | ||||
| 		await SetImage(); | ||||
| 		StateHasChanged(); | ||||
| 	} | ||||
|  | ||||
|     private async Task SetImage() | ||||
|     { | ||||
|         _image = string.Empty; | ||||
|         _file = null; | ||||
|         if (FileId != -1) | ||||
|         { | ||||
|             _file = await FileService.GetFileAsync(FileId); | ||||
|             if (_file != null && ShowImage && _file.ImageHeight != 0 && _file.ImageWidth != 0) | ||||
|             { | ||||
|                 var maxwidth = 200; | ||||
|                 var maxheight = 200; | ||||
| 	private async Task SetImage() | ||||
| 	{ | ||||
| 		_image = string.Empty; | ||||
| 		_file = null; | ||||
| 		if (FileId != -1) | ||||
| 		{ | ||||
| 			_file = await FileService.GetFileAsync(FileId); | ||||
| 			if (_file != null && ShowImage && _file.ImageHeight != 0 && _file.ImageWidth != 0) | ||||
| 			{ | ||||
| 				var maxwidth = 200; | ||||
| 				var maxheight = 200; | ||||
|  | ||||
|                 var ratioX = (double)maxwidth / (double)_file.ImageWidth; | ||||
|                 var ratioY = (double)maxheight / (double)_file.ImageHeight; | ||||
|                 var ratio = ratioX < ratioY ? ratioX : ratioY; | ||||
| 				var ratioX = (double)maxwidth / (double)_file.ImageWidth; | ||||
| 				var ratioY = (double)maxheight / (double)_file.ImageHeight; | ||||
| 				var ratio = ratioX < ratioY ? ratioX : ratioY; | ||||
|  | ||||
|                 _image = "<img src=\"" + _file.Url + "\" alt=\"" + _file.Name + | ||||
|                          "\" width=\"" + Convert.ToInt32(_file.ImageWidth * ratio).ToString() + | ||||
|                          "\" height=\"" + Convert.ToInt32(_file.ImageHeight * ratio).ToString() + "\" />"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 				_image = "<img src=\"" + _file.Url + "\" alt=\"" + _file.Name + | ||||
| 							"\" width=\"" + Convert.ToInt32(_file.ImageWidth * ratio).ToString() + | ||||
| 							"\" height=\"" + Convert.ToInt32(_file.ImageHeight * ratio).ToString() + "\" />"; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|     private async Task UploadFile() | ||||
|     { | ||||
|         _message = string.Empty; | ||||
|         var interop = new Interop(JSRuntime); | ||||
|         var upload = await interop.GetFiles(_fileinputid); | ||||
|         if (upload.Length > 0) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string result; | ||||
|                 if (Folder == Constants.PackagesFolder) | ||||
|                 { | ||||
|                     result = await FileService.UploadFilesAsync(Folder, upload, _guid); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     result = await FileService.UploadFilesAsync(FolderId, upload, _guid); | ||||
|                 } | ||||
| 	private async Task UploadFile() | ||||
| 	{ | ||||
| 		_message = string.Empty; | ||||
| 		var interop = new Interop(JSRuntime); | ||||
| 		var upload = await interop.GetFiles(_fileinputid); | ||||
| 		if (upload.Length > 0) | ||||
| 		{ | ||||
| 			string restricted = ""; | ||||
| 			foreach (var file in upload) | ||||
| 			{ | ||||
| 				var extension = (file.LastIndexOf(".") != -1) ? file.Substring(file.LastIndexOf(".") + 1) : ""; | ||||
| 				if (!Constants.UploadableFiles.Split(',').Contains(extension.ToLower())) | ||||
| 				{ | ||||
| 					restricted += (restricted == "" ? "" : ",") + extension; | ||||
| 				} | ||||
| 			} | ||||
| 			if (restricted == "") | ||||
| 			{ | ||||
| 				try | ||||
| 				{ | ||||
| 					string result; | ||||
| 					if (Folder == Constants.PackagesFolder) | ||||
| 					{ | ||||
| 						result = await FileService.UploadFilesAsync(Folder, upload, _guid); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						result = await FileService.UploadFilesAsync(FolderId, upload, _guid); | ||||
| 					} | ||||
|  | ||||
|                 if (result == string.Empty) | ||||
|                 { | ||||
|                     await logger.LogInformation("File Upload Succeeded {Files}", upload); | ||||
|                     if (ShowSuccess) | ||||
|                     { | ||||
|                         _message = Localizer["Success.File.Upload"]; | ||||
|                         _messagetype = MessageType.Success; | ||||
|                     } | ||||
| 					if (result == string.Empty) | ||||
| 					{ | ||||
| 						await logger.LogInformation("File Upload Succeeded {Files}", upload); | ||||
| 						if (ShowSuccess) | ||||
| 						{ | ||||
| 							_message = Localizer["Success.File.Upload"]; | ||||
| 							_messagetype = MessageType.Success; | ||||
| 						} | ||||
|  | ||||
|                     // set FileId to first file in upload collection | ||||
|                     await GetFiles(); | ||||
|                     var file = _files.Where(item => item.Name == upload[0]).FirstOrDefault(); | ||||
|                     if (file != null) | ||||
|                     { | ||||
|                         FileId = file.FileId; | ||||
|                         await SetImage(); | ||||
|                         await OnUpload.InvokeAsync(FileId); | ||||
|                     } | ||||
|                     StateHasChanged(); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     await logger.LogError("File Upload Failed For {Files}", result.Replace(",", ", ")); | ||||
| 						// set FileId to first file in upload collection | ||||
| 						await GetFiles(); | ||||
| 						var file = _files.Where(item => item.Name == upload[0]).FirstOrDefault(); | ||||
| 						if (file != null) | ||||
| 						{ | ||||
| 							FileId = file.FileId; | ||||
| 							await SetImage(); | ||||
| 							await OnUpload.InvokeAsync(FileId); | ||||
| 						} | ||||
| 						StateHasChanged(); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						await logger.LogError("File Upload Failed For {Files}", result.Replace(",", ", ")); | ||||
|  | ||||
|                     _message = Localizer["Error.File.Upload"]; | ||||
|                     _messagetype = MessageType.Error; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 await logger.LogError(ex, "File Upload Failed {Error}", ex.Message); | ||||
| 						_message = Localizer["Error.File.Upload"]; | ||||
| 						_messagetype = MessageType.Error; | ||||
| 					} | ||||
| 				} | ||||
| 				catch (Exception ex) | ||||
| 				{ | ||||
| 					await logger.LogError(ex, "File Upload Failed {Error}", ex.Message); | ||||
|  | ||||
|                 _message = Localizer["Error.File.Upload"]; | ||||
|                 _messagetype = MessageType.Error; | ||||
|             } | ||||
|         } | ||||
| 					_message = Localizer["Error.File.Upload"]; | ||||
| 					_messagetype = MessageType.Error; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				_message = string.Format(Localizer["Message.File.Restricted"], restricted); | ||||
| 				_messagetype = MessageType.Warning; | ||||
| 			} | ||||
| 		} | ||||
|         else | ||||
|         { | ||||
|             _message = Localizer["Message.File.NotSelected"]; | ||||
|  | ||||
| @ -127,11 +127,10 @@ | ||||
| 			_permissionnames = PermissionNames; | ||||
| 		} | ||||
|  | ||||
| 		_roles = await RoleService.GetRolesAsync(ModuleState.SiteId); | ||||
| 		_roles.Insert(0, new Role { Name = RoleNames.Everyone }); | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) | ||||
| 		_roles = await RoleService.GetRolesAsync(ModuleState.SiteId, true); | ||||
| 		if (!UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) | ||||
| 		{ | ||||
| 			_roles.Add(new Role { Name = RoleNames.Host }); | ||||
| 			_roles.RemoveAll(item => item.Name == RoleNames.Host); | ||||
| 		} | ||||
|  | ||||
| 		_permissions = new List<PermissionString>(); | ||||
| @ -254,6 +253,7 @@ | ||||
| 			permission = _permissions[i]; | ||||
| 			List<string> ids = permission.Permissions.Split(';', StringSplitOptions.RemoveEmptyEntries).ToList(); | ||||
| 			ids.Remove("!" + RoleNames.Everyone); // remove deny all users | ||||
| 			ids.Remove("!" + RoleNames.Unauthenticated); // remove deny unauthenticated | ||||
| 			ids.Remove("!" + RoleNames.Registered); // remove deny registered users | ||||
| 			if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) | ||||
| 			{ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Hisham Bin Ateya
					Hisham Bin Ateya