public virtual object ItemSave(Area areaInput) { ValidationStateDictionary validationState; if (areaInput.ID == Guid.Empty) { Area area; areaService.AddArea(areaInput, out validationState, out area); //TODO: (erikpo) Get rid of HasMultipleAreas and make it a calculated field so the following isn't necessary Site siteToEdit = siteService.GetSite(site.Name); siteToEdit.HasMultipleAreas = true; siteService.EditSite(siteToEdit, out validationState); if (validationState.IsValid) { OxiteApplication.Load(ControllerContext.HttpContext); } } else { areaService.EditArea(areaInput, out validationState); } if (!validationState.IsValid) { ModelState.AddModelErrors(validationState); return(ItemEdit(areaInput)); } return(Redirect(Url.Admin())); }
public ActionResult InstallSave(Plugin pluginInput) { pluginService.Save(pluginInput); OxiteApplication.Load(ControllerContext.HttpContext); return(Redirect(Url.Plugins())); }
public object ItemSave(Blog blog, BlogInput blogInput) { //TODO: (erikpo) Check permissions ValidationStateDictionary validationState; if (blog == null) { ModelResult <Blog> results = blogService.AddBlog(blogInput); validationState = results.ValidationState; if (results.IsValid) { ////TODO: (erikpo) Get rid of HasMultipleBlogs and make it a calculated field so the following isn't necessary //Site siteToEdit = siteService.GetSite(site.Name); //siteToEdit.HasMultipleBlogs = true; //siteService.EditSite(siteToEdit, out validationState); if (validationState.IsValid) { OxiteApplication.Load(ControllerContext.HttpContext); } } } else { ModelResult <Blog> results = blogService.EditBlog(blog, blogInput); validationState = results.ValidationState; } if (!validationState.IsValid) { ModelState.AddModelErrors(validationState); return(ItemEdit(blog)); } return(Redirect(Url.AppPath(Url.Admin()))); }
public virtual object SaveItem(Site siteInput, User userInput, FormCollection form) { ValidationStateDictionary validationState; if (siteInput.ID == Guid.Empty && userInput != null) { //TODO: (erikpo) This seems lame, but I need to do validation ahead of time. Fix this. IUnityContainer container = (IUnityContainer)HttpContext.Application["container"]; IValidator <Site> siteValidator = container.Resolve <IValidator <Site> >(); IValidator <User> userValidator = container.Resolve <IValidator <User> >(); validationState = new ValidationStateDictionary(); validationState.Add(typeof(Site), siteValidator.Validate(siteInput)); validationState.Add(typeof(User), userValidator.Validate(userInput)); if (string.IsNullOrEmpty(form["userEmail"])) { validationState[typeof(User)].Errors.Add("Email", form["userEmail"], "You must specify an Admin email address."); } if (string.IsNullOrEmpty(form["userPassword"])) { validationState[typeof(User)].Errors.Add("Password", form["userPassword"], "You must specify an Admin password."); } if (string.IsNullOrEmpty(form["userPasswordConfirm"])) { validationState[typeof(User)].Errors.Add("PasswordConfirm", form["userPasswordConfirm"], "You must confirm the Admin password."); } if (validationState.IsValid && form["userPassword"] != form["userPasswordConfirm"]) { validationState[typeof(User)].Errors.Add("PasswordMismatch", form["userPasswordConfirm"], "Admin passwords do not match."); } if (validationState.IsValid) { Site site; siteService.AddSite(siteInput, out validationState, out site); Language language = new Language { Name = "en", DisplayName = "English" }; languageService.AddLanguage(language); userService.EnsureAnonymousUser(language); User user; userInput.Status = (byte)EntityState.Normal; userInput.LanguageDefault = language; userService.AddUser(userInput, out validationState, out user); Area area = new Area { CommentingDisabled = false, Name = "Blog", DisplayName = site.DisplayName, Description = site.Description }; areaService.AddArea(area, site, out validationState, out area); } } else { siteService.EditSite(siteInput, out validationState); } if (!validationState.IsValid) { ModelState.AddModelErrors(validationState); return(Item()); } OxiteApplication.Load(ControllerContext.HttpContext); return(Redirect(Url.AppPath(Url.ManageSite()))); }
public virtual object SaveItem(Site siteInput, UserInputAdd userInput) { ValidationStateDictionary validationState; if (siteInput.ID == Guid.Empty && userInput != null) { //TODO: (erikpo) This is lame. Add a SiteInput class and a SiteInputValidator class and move the following validation code into it. IUnityContainer container = (IUnityContainer)HttpContext.Application["container"]; IValidator <Site> siteValidator = container.Resolve <IValidator <Site> >(); validationState = new ValidationStateDictionary(); validationState.Add(typeof(Site), siteValidator.Validate(siteInput)); if (validationState.IsValid) { Site site; siteService.AddSite(siteInput, out validationState, out site); Language language = new Language { Name = "en", DisplayName = "English" }; languageService.AddLanguage(language); userService.EnsureAnonymousUser(); //UserAuthenticated user; //userInput.Status = (byte)EntityState.Normal; //userInput.LanguageDefault = language; //userService.AddUser(userInput, out validationState, out user); if (validationState.IsValid) { //Blog blog = new Blog //{ // CommentingDisabled = false, // Name = "Blog", // DisplayName = site.DisplayName, // Description = site.Description //}; //blogService.AddBlog(blog, site, out validationState, out blog); } } } else { siteService.EditSite(siteInput, out validationState); } if (!validationState.IsValid) { ModelState.AddModelErrors(validationState); return(Item()); } OxiteApplication.Load(ControllerContext.HttpContext); return(Redirect(Url.AppPath(Url.ManageSite()))); }
public virtual OxiteViewModel ImportSave(Blog blog, string slugPattern) { if (blog == null) { return(null); } ValidationStateDictionary validationState = new ValidationStateDictionary(); XmlTextReader reader = null; bool modifiedSite = false; try { reader = new XmlTextReader(Request.Files[0].InputStream); BlogMLBlog blogMLBlog = BlogMLSerializer.Deserialize(reader); Language language = languageService.GetLanguage(context.Site.LanguageDefault); BlogInputForImport blogInput = new BlogInputForImport(blogMLBlog.SubTitle, blogMLBlog.SubTitle, blogMLBlog.DateCreated); ModelResult <Blog> results = blogService.EditBlog(blog, blogInput); if (!results.IsValid) { ModelState.AddModelErrors(results.ValidationState); return(Import(blog)); } if (!context.Site.HasMultipleBlogs) { Site site = siteService.GetSite(); site.DisplayName = blog.DisplayName; site.Description = blog.Description; siteService.EditSite(site, out validationState); if (!validationState.IsValid) { throw new Exception(); } modifiedSite = true; } postService.RemoveAll(blog); foreach (BlogMLPost blogMLPost in blogMLBlog.Posts) { if (string.IsNullOrEmpty(blogMLPost.Title) || string.IsNullOrEmpty(blogMLPost.Content.Text)) { continue; } PostInputForImport postInput = blogMLPost.ToImportPostInput(blogMLBlog, context.Site.CommentingDisabled | blog.CommentingDisabled, slugPattern, blogMLPost.Approved ? EntityState.Normal : EntityState.PendingApproval, context.User.Cast <User>()); ModelResult <Post> addPostResults = postService.AddPost(blog, postInput); if (!addPostResults.IsValid) { ModelState.AddModelErrors(addPostResults.ValidationState); return(Import(blog)); } foreach (BlogMLComment blogMLComment in blogMLPost.Comments) { CommentInputForImport commentInput = blogMLComment.ToImportCommentInput(blogMLBlog, context.User.Cast <User>(), language); ModelResult <PostComment> addCommentResults = commentService.AddComment(addPostResults.Item, commentInput); if (!addCommentResults.IsValid) { ModelState.AddModelErrors(addCommentResults.ValidationState); return(Import(blog)); } } } } catch (Exception ex) { ModelState.AddModelErrors(validationState); if (!string.IsNullOrEmpty(ex.Message)) { ModelState.AddModelError("ModelName", ex); } return(Import(blog)); } finally { if (reader != null) { reader.Close(); } } if (modifiedSite) { OxiteApplication.Load(ControllerContext.HttpContext); } return(new OxiteViewModel { Container = blog }); }
public virtual OxiteModel BlogMLSave(Area areaInput, string slugPattern, User currentUser) { //TODO: (erikpo) Change this to be user selectable in the multiple blogs case if the user is a site owner Area area = areaService.GetArea("Blog"); if (area == null) { return(null); } ValidationStateDictionary validationState = new ValidationStateDictionary(); XmlTextReader reader = null; bool modifiedSite = false; try { reader = new XmlTextReader(Request.Files[0].InputStream); BlogMLBlog blog = BlogMLSerializer.Deserialize(reader); Language language = languageService.GetLanguage(site.LanguageDefault); area.Description = blog.SubTitle; area.DisplayName = blog.Title; area.Created = blog.DateCreated; areaService.EditArea(area, out validationState); if (!site.HasMultipleAreas) { site.DisplayName = area.DisplayName; site.Description = area.Description; siteService.EditSite(site, out validationState); if (!validationState.IsValid) { throw new Exception(); } modifiedSite = true; } postService.RemoveAll(area); foreach (BlogMLPost blogMLPost in blog.Posts) { if (string.IsNullOrEmpty(blogMLPost.Title) || string.IsNullOrEmpty(blogMLPost.Content.Text)) { continue; } Post post = blogMLPost.ToPost(blog, currentUser, slugPattern); postService.AddPost(post, currentUser, false, out validationState, out post); if (!validationState.IsValid) { throw new Exception(); } foreach (BlogMLComment blogMLComment in blogMLPost.Comments) { Comment comment = blogMLComment.ToComment(blog, currentUser, language); postService.ValidateComment(comment, out validationState); if (validationState.IsValid) { postService.AddCommentWithoutMessages(area, post, comment, comment.Creator, false, out validationState, out comment); if (!validationState.IsValid) { throw new Exception(); } } } } } catch (Exception ex) { ModelState.AddModelErrors(validationState); if (!string.IsNullOrEmpty(ex.Message)) { ModelState.AddModelError("ModelName", ex); } return(BlogML(areaInput)); } finally { if (reader != null) { reader.Close(); } } if (modifiedSite) { OxiteApplication.Load(ControllerContext.HttpContext); } return(new OxiteModel { Container = area }); }