示例#1
0
        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
            })));
        }
示例#2
0
        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)
                       ));
        }
示例#3
0
 public EditTheme(Theme tm)
 {
     InitializeComponent();
     DataContext = new EditThemeViewModel(tm);
 }