diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..4ed68f60 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +Oqtane.Server/wwwroot/Modules/Templates/External/Package/*.sh eol=lf +Oqtane.Server/wwwroot/Themes/Templates/External/Package/*.sh eol=lf \ No newline at end of file diff --git a/Oqtane.Client/Modules/Admin/Logs/Detail.razor b/Oqtane.Client/Modules/Admin/Logs/Detail.razor index 29ac0f0d..fd980bce 100644 --- a/Oqtane.Client/Modules/Admin/Logs/Detail.razor +++ b/Oqtane.Client/Modules/Admin/Logs/Detail.razor @@ -37,7 +37,7 @@
- +
diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index 5832f45d..c91be528 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -137,7 +137,7 @@
- @foreach (var theme in _themes) { @@ -246,7 +246,7 @@ if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin) || (_parent != null && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, _parent.PermissionList))) { _themetype = PageState.Site.DefaultThemeType; - _themes = ThemeService.GetThemeControls(PageState.Site.Themes, _themetype); + _themes = ThemeService.GetThemeControls(PageState.Site.Themes); _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); _containertype = PageState.Site.DefaultContainerType; _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); @@ -301,6 +301,19 @@ } } + private void ThemeChanged(ChangeEventArgs e) + { + _themetype = (string)e.Value; + if (ThemeService.GetTheme(PageState.Site.Themes, _themetype)?.ThemeName != ThemeService.GetTheme(PageState.Site.Themes, PageState.Site.DefaultThemeType)?.ThemeName) + { + AddModuleMessage(Localizer["ThemeChanged.Message"], MessageType.Warning); + _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); + _containertype = _containers.First().TypeName; + ThemeSettings(); + StateHasChanged(); + } + } + private void ThemeSettings() { _themeSettingsType = null; diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 50aebf5d..bd55624a 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -148,7 +148,7 @@
- @foreach (var theme in _themes) { @@ -359,7 +359,7 @@ { _themetype = PageState.Site.DefaultThemeType; } - _themes = ThemeService.GetThemeControls(PageState.Site.Themes, _themetype); + _themes = ThemeService.GetThemeControls(PageState.Site.Themes); _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); _containertype = _page.DefaultContainerType; if (string.IsNullOrEmpty(_containertype)) @@ -401,25 +401,6 @@ } } - private async Task DeleteModule(Module module) - { - try - { - PageModule pagemodule = await PageModuleService.GetPageModuleAsync(_page.PageId, module.ModuleId); - pagemodule.IsDeleted = true; - await PageModuleService.UpdatePageModuleAsync(pagemodule); - await logger.LogInformation(LogFunction.Update,"Module Deleted {Title}", module.Title); - _pageModules.RemoveAll(item => item.PageModuleId == pagemodule.PageModuleId); - StateHasChanged(); - NavigationManager.NavigateTo(NavigationManager.Uri + "&tab=PageModules"); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Deleting Module {Title} {Error}", module.Title, ex.Message); - AddModuleMessage(Localizer["Error.Module.Delete"], MessageType.Error); - } - } - private async void ParentChanged(ChangeEventArgs e) { try @@ -463,6 +444,19 @@ } } + private void ThemeChanged(ChangeEventArgs e) + { + _themetype = (string)e.Value; + if (ThemeService.GetTheme(PageState.Site.Themes, _themetype)?.ThemeName != ThemeService.GetTheme(PageState.Site.Themes, PageState.Site.DefaultThemeType)?.ThemeName) + { + AddModuleMessage(Localizer["ThemeChanged.Message"], MessageType.Warning); + _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); + _containertype = _containers.First().TypeName; + ThemeSettings(); + StateHasChanged(); + } + } + private void ThemeSettings() { _themeSettingsType = null; @@ -646,4 +640,24 @@ NavigationManager.NavigateTo(NavigateUrl()); } } + + private async Task DeleteModule(Module module) + { + try + { + PageModule pagemodule = await PageModuleService.GetPageModuleAsync(_page.PageId, module.ModuleId); + pagemodule.IsDeleted = true; + await PageModuleService.UpdatePageModuleAsync(pagemodule); + await logger.LogInformation(LogFunction.Update, "Module Deleted {Title}", module.Title); + _pageModules.RemoveAll(item => item.PageModuleId == pagemodule.PageModuleId); + StateHasChanged(); + NavigationManager.NavigateTo(NavigationManager.Uri + "&tab=PageModules"); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Deleting Module {Title} {Error}", module.Title, ex.Message); + AddModuleMessage(Localizer["Error.Module.Delete"], MessageType.Error); + } + } + } diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index 371a2525..009fc4b4 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -288,12 +288,13 @@ else if (_themetype != "-") { _containers = ThemeService.GetContainerControls(_themeList, _themetype); - } + _containertype = _containers.First().TypeName; + } else { _containers = new List(); - } - _containertype = "-"; + _containertype = "-"; + } _admincontainertype = ""; StateHasChanged(); } diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 2b293e2d..dac92dbe 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -35,9 +35,9 @@ else       - @SharedLocalizer["Username"] - @SharedLocalizer["Name"] - @Localizer["LastLoginOn"] + @Localizer["Username"] + @Localizer["Name"] + @Localizer["LastLoginOn"] @@ -413,6 +413,9 @@ else private string _lifetime; private string _token; + private bool isSortedAscending; + private string activeSortColumn; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; protected override async Task OnInitializedAsync() @@ -654,4 +657,43 @@ else _togglesecret = SharedLocalizer["ShowPassword"]; } } + + private void SortTable(string columnName) + { + if (columnName != activeSortColumn) + { + users = users.OrderBy(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + isSortedAscending = true; + activeSortColumn = columnName; + } + else + { + if (isSortedAscending) + { + users = users.OrderByDescending(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + } + else + { + users = users.OrderBy(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + } + + isSortedAscending = !isSortedAscending; + } + } + + private string SetSortIcon(string columnName) + { + if (activeSortColumn != columnName) + { + return "app-fas pe-3 "; + } + if (isSortedAscending) + { + return "app-fas oi oi-sort-ascending"; + } + else + { + return "app-fas oi oi-sort-descending"; + } + } } diff --git a/Oqtane.Client/Resources/Modules/Admin/Logs/Detail.resx b/Oqtane.Client/Resources/Modules/Admin/Logs/Detail.resx index 062d8a27..e7734cb0 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Logs/Detail.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Logs/Detail.resx @@ -1,4 +1,4 @@ - +