public async Task <IActionResult> EditPost(EditThemeViewModel model) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditThemes)) { return(Unauthorized()); } var result = await _viewProvider.ProvideUpdateAsync(new ThemeAdmin(), this); if (!ModelState.IsValid) { // Add model state errors foreach (var modelState in ViewData.ModelState.Values) { foreach (var error in modelState.Errors) { _alerter.Danger(T[error.ErrorMessage]); } } // Return return(RedirectToAction(nameof(Index))); } // Get theme files for current theme and path var themeFile = _themeFileManager.GetFile(model.ThemeId, model.Path); if (themeFile == null) { return(NotFound()); } // Write file await _themeFileManager.SaveFileAsync(themeFile, model.FileContents); // Display Confirmation _alerter.Success(T["File Updated Successfully!"]); // Redirect back to topic return(Redirect(_contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Theming", ["controller"] = "Admin", ["action"] = "Edit", ["id"] = model.ThemeId, ["path"] = model.Path }))); }
public override async Task <IViewProviderResult> BuildEditAsync(ThemeAdmin model, IViewProviderContext updater) { // We are adding a new theme if (String.IsNullOrEmpty(model.ThemeId)) { var createViewModel = new CreateThemeViewModel() { AvailableThemes = GetAvailableThemes() }; return(Views( View <CreateThemeViewModel>("Admin.Create.Header", viewModel => createViewModel).Zone("header").Order(1), View <CreateThemeViewModel>("Admin.Create.Content", viewModel => createViewModel).Zone("content").Order(1), View <CreateThemeViewModel>("Admin.Create.Footer", viewModel => createViewModel).Zone("footer").Order(1) )); } var file = _siteThemeFileManager.GetFile(model.ThemeId, model.Path); // We are editing an existing theme var editViewModel = new EditThemeViewModel() { ThemeId = model.ThemeId, Path = model.Path, File = file, FileContents = await _siteThemeFileManager.ReadFileAsync(file), Files = !string.IsNullOrEmpty(model.Path) ? _siteThemeFileManager.GetFiles(model.ThemeId, model.Path) : _siteThemeFileManager.GetFiles(model.ThemeId) }; return(Views( View <EditThemeViewModel>("Admin.Edit.Header", viewModel => editViewModel).Zone("header").Order(1), View <EditThemeViewModel>("Admin.Edit.Content", viewModel => editViewModel).Zone("content").Order(1) )); }
public EditTheme(Theme tm) { InitializeComponent(); DataContext = new EditThemeViewModel(tm); }