public bool TryConvertModel(IndexViewModel model, out SyndicationFeed syndicationFeed)
        {
            syndicationFeed = new SyndicationFeed(
                model.SiteName,
                model.SiteName,
                new Uri(_urlResolver.Home()),
                "AllPostsFeed",
                new DateTimeOffset(DateTime.Now))
            {
                Description = new TextSyndicationContent(model.SiteName)
            };

            List <SyndicationItem> feedItems = new List <SyndicationItem>();

            model.Posts.Each(post =>
            {
                var feedItem = new SyndicationItem(
                    post.Title,
                    post.Body,
                    new Uri(_urlResolver.PublishedPost(post).ToFullUrl()),
                    new Uri(_urlResolver.PublishedPost(post).ToFullUrl()).ToString(),
                    new DateTimeOffset(post.Published));

                feedItem.Authors.Add(new SyndicationPerson(post.User.Email, post.User.DisplayName, post.User.Url));
                post.Tags.Each(tag => feedItem.Categories.Add(new SyndicationCategory(tag.Name)));
                feedItems.Add(feedItem);
            });
            syndicationFeed.Items = feedItems.AsEnumerable();

            return(true);
        }
Exemplo n.º 2
0
        public BlogPostViewModel Comment(BlogPostCommentViewModel inModel)
        {
            var badRedirectResult = new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PageNotFound())
            };

            // Trying to reduce spam comments
            if (!string.IsNullOrEmpty(inModel.OptionalUrl) && (
                    inModel.OptionalUrl.Contains("geocities.com") ||
                    inModel.OptionalUrl.Contains("tripod.com")))
            {
                return(badRedirectResult);
            }

            if (inModel.Slug.IsEmpty())
            {
                return(badRedirectResult);
            }

            var post = _repository.Query(new PostBySlug(inModel.Slug)).SingleOrDefault();

            if (post == null)
            {
                return(badRedirectResult);
            }

            var postDisplay = new PostDisplay(post);

            if (inModel.ValidationResults.GetInvalidFields().Count() > 0)
            {
                var bblo = new BlogPostViewModel
                {
                    Post    = postDisplay,
                    Comment = new CommentFormDisplay(new Comment
                    {
                        Body           = inModel.Body,
                        UserSubscribed = inModel.Subscribed,
                        User           = new User
                        {
                            DisplayName     = inModel.DisplayName,
                            Email           = inModel.Email,
                            Url             = inModel.OptionalUrl,
                            TwitterUserName = inModel.OptionalTwitterUserName,
                        },
                    }, postDisplay),
                    SiteName = "{0} - {1}".ToFormat(inModel.SiteName, postDisplay.Title),
                    //ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay) + "#leave_comment"),
                };
                bblo.Comment.ValidationResults.CloneFrom(inModel.ValidationResults);
                return(bblo);
            }

            var user = _userService.AddOrUpdateUser(inModel.Email, HttpUtility.HtmlEncode(inModel.DisplayName), HttpUtility.HtmlEncode(inModel.OptionalUrl), HttpUtility.HtmlEncode(inModel.OptionalTwitterUserName));

            _blogPostCommentService.AddCommentToBlogPost(HttpUtility.HtmlEncode(inModel.Body), inModel.Subscribed, user, post, inModel.OptionalTwitterUserName);

            return(new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay))
            });
        }
Exemplo n.º 3
0
        private mwPost Convert(Post post)
        {
            var mwpost = new mwPost
            {
                dateCreated = post.Published.Value,
                description = post.Body,
                title       = post.Title,
                postid      = post.ID.ToString(),
                link        = _urlResolver.PublishedPost(new PostDisplay(post)),
                permalink   = _urlResolver.PublishedPost(new PostDisplay(post)),
                userid      = post.User.ID.ToString()
            };
            List <string> categories = new List <string>();

            post.GetTags().Each(tag => categories.Add(tag.Name));
            mwpost.categories = categories.ToArray();
            return(mwpost);
        }
Exemplo n.º 4
0
        public BlogPostViewModel Comment(BlogPostCommentViewModel inModel)
        {
            var badRedirectResult = new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PageNotFoundUrl())
            };

            if (inModel.Slug.IsEmpty())
            {
                return(badRedirectResult);
            }

            var post = _repository.Query(new PostBySlug(inModel.Slug)).SingleOrDefault();

            if (post == null)
            {
                return(badRedirectResult);
            }

            var result = new BlogPostViewModel();

            valid_comment_submission(inModel, result);

            if (result.InvalidFields.Count > 0)
            {
                result.ResultOverride = new RedirectResult(_resolver.PublishedPost(new PostDisplay(post)));
                return(result);
            }

            var user = _userService.AddOrUpdateUser(inModel.UserEmail, inModel.UserDisplayName, inModel.UserUrl);

            _blogPostCommentService.AddCommentToBlogPost(inModel.Body, inModel.UserSubscribed, user, post);

            var postDisplay = new PostDisplay(post);

            result.ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay));

            return(result);
        }
Exemplo n.º 5
0
        public bool SendCommentPostedReply(Post post, string twitterUserName, string displayName)
        {
            var pageUrl   = _tinyUrlService.Tinyfy(_urlResolver.PublishedPost(new PostDisplay(post)));
            var pageTitle = post.Title;

            if (pageTitle.Length > 50)
            {
                pageTitle = pageTitle.Substring(0, 47) + "...";
            }

            var message = "New comment from {0} in {1} - {2}".ToFormat(displayName, pageTitle, pageUrl);

            List <string> twitterUserNames = post.GetComments()
                                             .Where(comment => (!string.IsNullOrEmpty(comment.TwitterUserName) && comment.TwitterUserName != twitterUserName))
                                             .Select(x => x.TwitterUserName)
                                             .ToList();

            twitterUserNames.Add(post.User.TwitterUserName);

            twitterUserNames.Distinct().Each(userName =>
                                             _twitterClient.SendReply(_siteConfiguration.TwitterUserName, _siteConfiguration.TwitterPassword, userName, message));

            return(true);
        }