public ActionResult Edit(string subName, StylesEditModel model, bool shouldSave, bool shouldPreview) { var sub = _subDao.GetSubByName(subName); if (sub == null) { throw new NotFoundException(); } model.Sub = sub; model.StyledEnabledForUser = _userContext.CurrentUser.EnableStyles; if (!ModelState.IsValid) { return(View(model)); } if (!_permissionDao.CanUserManageSubStyles(_userContext.CurrentUser, sub.Id)) { throw new UnauthorizedException(); } if (shouldSave) { var response = _commandBus.Send <EditSubStylesCommand, EditSubStylesCommandResponse>(new EditSubStylesCommand { EditedByUserId = _userContext.CurrentUser.Id, SubId = sub.Id, CssType = model.CssType, Embedded = model.Embedded, ExternalCss = model.ExternalCss, GitHubCssProjectName = model.GitHubCssProjectName, GitHubCssProjectTag = model.GitHubCssProjectTag, GitHubLessProjectName = model.GitHubLessProjectName, GitHubLessProjectTag = model.GitHubLessProjectTag }); if (string.IsNullOrEmpty(response.Error)) { AddSuccessMessage("The styles have succesfully been updated."); CancelPreview(sub.Name, string.Empty); // this will clearly any preview session that may be going on } else { AddErrorMessage(response.Error); } } else if (shouldPreview) { HttpContext.Session.Set("preview-" + sub.Name.ToLower(), _mapper.Map <StylesEditModel, StylesPreviewModel>(model)); Response.Cookies.Append("preview-" + sub.Name.ToLower(), string.Empty); } return(View(model)); }
public ActionResult Edit(string subName) { var sub = _subDao.GetSubByName(subName); if (sub == null) { throw new NotFoundException(); } if (!_permissionDao.CanUserManageSubStyles(_userContext.CurrentUser, sub.Id)) { throw new UnauthorizedException(); } var model = new StylesEditModel(); model.Sub = sub; model.StyledEnabledForUser = _userContext.CurrentUser.EnableStyles; if (Request.Cookies.ContainsKey("preview-" + sub.Name.ToLower())) { var preview = HttpContext.Session.Get <StylesPreviewModel>("preview-" + sub.Name.ToLower()); if (preview != null) { _mapper.Map(preview, model); return(View(model)); } } var styles = _subStylesDao.GetStylesForSub(sub.Id); if (styles == null) { styles = new SubCss(); styles.CssType = CssType.None; } _mapper.Map(styles, model); return(View(model)); }