Exemplo n.º 1
0
        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()));
        }
Exemplo n.º 2
0
        public ActionResult InstallSave(Plugin pluginInput)
        {
            pluginService.Save(pluginInput);

            OxiteApplication.Load(ControllerContext.HttpContext);

            return(Redirect(Url.Plugins()));
        }
Exemplo n.º 3
0
        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())));
        }
Exemplo n.º 4
0
        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())));
        }
Exemplo n.º 5
0
        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())));
        }
Exemplo n.º 6
0
        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
            });
        }
Exemplo n.º 7
0
        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
            });
        }