Ejemplo n.º 1
0
        // Customizes the display row for each comment.
        protected void CommentsCreated(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var feedbackItem = (FeedbackItem)e.Item.DataItem;
                _comment = new CommentViewModel(feedbackItem, SubtextContext);
                if (feedbackItem != null)
                {
                    var title = (Literal)(e.Item.FindControl("Title"));
                    if (title != null)
                    {
                        // we should probably change skin format to dynamically wire up to
                        // skin located title and permalinks at some point
                        title.Text = string.Format(CultureInfo.InvariantCulture, "{2} {0}{1}",
                                                   Anchor(feedbackItem.Id),
                                                   feedbackItem.Title,
                                                   Link(feedbackItem.Title, Url.FeedbackUrl(feedbackItem)));
                    }

                    //Shows the name of the commenter with a link if provided.
                    var namelink = (HyperLink)e.Item.FindControl("NameLink");
                    if (namelink != null)
                    {
                        if (feedbackItem.SourceUrl != null)
                        {
                            namelink.NavigateUrl = feedbackItem.SourceUrl.ToString();
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.SourceUrl.ToString());
                        }

                        if (feedbackItem.FeedbackType == FeedbackType.Comment)
                        {
                            namelink.Text = feedbackItem.Author;
                            ControlHelper.SetTitleIfNone(namelink, feedbackItem.Author);
                        }
                        else if (feedbackItem.FeedbackType == FeedbackType.PingTrack)
                        {
                            namelink.Text = !String.IsNullOrEmpty(feedbackItem.Author)
                                                ? feedbackItem.Author
                                                : "Pingback/TrackBack";
                            ControlHelper.SetTitleIfNone(namelink, "PingBack/TrackBack");
                        }

                        if (feedbackItem.IsBlogAuthor)
                        {
                            HtmlHelper.AppendCssClass(namelink, "author");
                        }
                    }

                    var postDate = (Literal)(e.Item.FindControl("PostDate"));
                    if (postDate != null)
                    {
                        var dateCreated = feedbackItem.DateCreated;

                        postDate.Text = dateCreated.ToShortDateString() + " " +
                                        dateCreated.ToShortTimeString();
                    }

                    var post = e.Item.FindControl("PostText") as Literal;
                    if (post != null)
                    {
                        if (!String.IsNullOrEmpty(feedbackItem.Body))
                        {
                            post.Text = feedbackItem.Body;
                            if (feedbackItem.Body.Length == 0 && feedbackItem.FeedbackType == FeedbackType.PingTrack)
                            {
                                post.Text = "Pingback / Trackback";
                            }
                        }
                    }

                    if (_gravatarService.Enabled)
                    {
                        var gravatarImage = e.Item.FindControl("GravatarImg") as Image;
                        if (gravatarImage != null)
                        {
                            string ip;
                            if (feedbackItem.IpAddress != null)
                            {
                                ip = feedbackItem.IpAddress.ToString();
                            }
                            else
                            {
                                ip = string.Format("{0} {1}", DateTime.UtcNow.Millisecond, DateTime.UtcNow.Second);
                            }

                            string gravatarUrl = gravatarUrl = _gravatarService.GenerateUrl(feedbackItem.Email);
                            gravatarImage.Attributes.Remove("PlaceHolderImage");
                            gravatarImage.ImageUrl = gravatarUrl;
                            gravatarImage.Visible = true;
                        }
                    }

                    if (Request.IsAuthenticated && User.IsAdministrator())
                    {
                        var editCommentTextLink = (HyperLink)(e.Item.FindControl("EditCommentTextLink"));
                        if (editCommentTextLink != null)
                        {
                            editCommentTextLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentTextLink.Text))
                            {
                                editCommentTextLink.Text = "Edit Comment " +
                                                           feedbackItem.Id.ToString(CultureInfo.InstalledUICulture);
                            }
                            ControlHelper.SetTitleIfNone(editCommentTextLink, "Click to edit this entry.");
                        }
                        var editCommentImgLink = (HyperLink)(e.Item.FindControl("EditCommentImgLink"));
                        if (editCommentImgLink != null)
                        {
                            editCommentImgLink.NavigateUrl = AdminUrl.FeedbackEdit(feedbackItem.Id);
                            if (String.IsNullOrEmpty(editCommentImgLink.ImageUrl))
                            {
                                editCommentImgLink.ImageUrl = Url.EditIconUrl();
                            }
                            ControlHelper.SetTitleIfNone(editCommentImgLink,
                                                         "Click to edit comment " +
                                                         feedbackItem.Id.ToString(CultureInfo.InstalledUICulture));
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public string EditUrl(CommentViewModel feedback)
        {
            string url = AdminUrl.FeedbackEdit(feedback.Id);

            return VirtualPathUtility.ToAbsolute(StringHelper.LeftBefore(url, "?")) + "?" +
                   url.RightAfter("?");
        }