public string EditUrl(CommentViewModel feedback) { string url = AdminUrl.FeedbackEdit(feedback.Id); return(VirtualPathUtility.ToAbsolute(StringHelper.LeftBefore(url, "?")) + "?" + url.RightAfter("?")); }
// 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) { postDate.Text = feedbackItem.DateCreated.ToShortDateString() + " " + feedbackItem.DateCreated.ToShortTimeString(); } var post = e.Item.FindControl("PostText") as Literal; if (post != null) { if (feedbackItem.Body.Length > 0) { 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) { //This allows per-skin configuration of the default gravatar image. string defaultGravatarImage = gravatarImage.Attributes["PlaceHolderImage"]; string ip; if (feedbackItem.IpAddress != null) { ip = feedbackItem.IpAddress.ToString(); } else { ip = string.Format("{0} {1}", DateTime.Now.Millisecond, DateTime.Now.Second); } //This allows a host-wide setting of the default gravatar image. string gravatarUrl = null; if (!String.IsNullOrEmpty(feedbackItem.Email)) { if (!String.IsNullOrEmpty(defaultGravatarImage)) { string host = Request.Url.Host; string scheme = Request.Url.Scheme; string port = Request.Url.Port == 80 ? string.Empty : string.Format(":{0}", Request.Url.Port); string defaultImagePath = HttpHelper.ExpandTildePath(defaultGravatarImage); defaultGravatarImage = string.Format(CultureInfo.InvariantCulture, "{0}://{1}{2}{3}", scheme, host, port, defaultImagePath); defaultGravatarImage = HttpUtility.UrlEncode(defaultGravatarImage); } gravatarUrl = _gravatarService.GenerateUrl(feedbackItem.Email, defaultGravatarImage); } if (!String.IsNullOrEmpty(gravatarUrl)) { gravatarImage.Attributes.Remove("PlaceHolderImage"); if (gravatarUrl.Length != 0) { gravatarImage.ImageUrl = gravatarUrl; gravatarImage.Visible = true; } } else { string identiconUrl = Url.IdenticonUrl(IdenticonUtil.Code(ip)); gravatarImage.ImageUrl = identiconUrl; gravatarImage.Visible = true; } } } if (Request.IsAuthenticated && SecurityHelper.IsAdmin) { 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)); } } } } }
// 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)); } } } } }