public ActionResult NewPost(string blogId, string username, string password, IDictionary <string, object> post, bool publish)
        {
            if (string.IsNullOrEmpty(blogId))
            {
                throw new ArgumentException();
            }

            Blog blog = blogService.GetBlog(new BlogAddress(blogId));

            //TODO: (erikpo) Move into a model binder?
            PostInput postInput = new PostInput(blog.Name, post["title"] as string, post["description"] as string,
                                                post["mt_excerpt"] as string,
                                                (post["categories"] as object[]).OfType <string>() ??
                                                Enumerable.Empty <string>(),
                                                string.IsNullOrEmpty(post["mt_basename"] as string)
                                                    ? expressions.Slugify(post["title"] as string)
                                                    : post["mt_basename"] as string,
                                                publish ? DateTime.UtcNow : (DateTime?)null,
                                                blog.CommentingDisabled);

            ModelResult <Post> results = postService.AddPost(postInput, EntityState.Normal);

            if (results.IsValid)
            {
                return(new XmlRpcResult(results.Item.ID.ToString()));
            }

            return(new XmlRpcFaultResult(0, results.GetFirstException().Message));
        }
예제 #2
0
        public string NewPost(string blogId, string username, string password, Post post, bool publish)
        {
            Oxite.Model.User user = getUser(username, password);

            Oxite.Model.Area area = areaService.GetArea(new Guid(blogId));

            Oxite.Model.Post newPost = new Oxite.Model.Post
            {
                Title     = post.title,
                Body      = post.description,
                Created   = post.dateCreated == default(DateTime) ? DateTime.Now : post.dateCreated,
                Slug      = string.IsNullOrEmpty(post.mt_basename) ? expressions.Slugify(post.title) : post.mt_basename,
                BodyShort = post.mt_excerpt,
                Creator   = user,
                State     = Oxite.Model.EntityState.Normal
            };

            if (publish)
            {
                newPost.Published = DateTime.Now;
            }

            if (post.categories != null)
            {
                newPost.Tags = new List <Oxite.Model.Tag>(post.categories.Select(s => new Oxite.Model.Tag()
                {
                    Name = s
                }));
            }

            postService.AddPost(area, newPost);

            Oxite.Model.Post createdPost = postService.GetPost(area, newPost.Slug);
            return(createdPost.ID.ToString());
        }