protected void Page_Load(object sender, EventArgs e) { _settings = ForumManager.GetSettings(SettingsID); _forumManager = _settings.ForumManager; PostPageSize = string.IsNullOrEmpty(Request["size"]) ? 20 : Convert.ToInt32(Request["size"]); if (Topic == null) Response.Redirect(_settings.StartPageAbsolutePath); if ((new Thread { ID = Topic.ThreadID }).Visible == false) Response.Redirect(_settings.StartPageAbsolutePath); int currentPageNumber = 0; if (!String.IsNullOrEmpty(Request["p"])) { try { currentPageNumber = Convert.ToInt32(Request["p"]); } catch { currentPageNumber = 0; } } if (currentPageNumber <= 0) currentPageNumber = 1; int postCountInTopic; var posts = ForumDataProvider.GetPosts(TenantProvider.CurrentTenantID, Topic.ID, currentPageNumber, PostPageSize, out postCountInTopic); var postId = 0; if (!string.IsNullOrEmpty(Request["post"])) { try { postId = Convert.ToInt32(Request["post"]); } catch { postId = 0; } } if (postId != 0) { var allposts = ForumDataProvider.GetPostIDs(TenantProvider.CurrentTenantID, Topic.ID); var idx = -1; for (var j = 0; j < allposts.Count; j++) { if (allposts[j] != postId) continue; idx = j; break; } if (idx != -1) { var page = idx / 20 + 1; Response.Redirect("posts.aspx?t=" + Topic.ID + "&size=20&p=" + page + "#" + postId); } } PostPagesCount = postCountInTopic; var pageSize = PostPageSize; var pageNavigator = new PageNavigator { PageUrl = string.Format( CultureInfo.CurrentCulture, "{0}?&t={1}&size={2}", VirtualPathUtility.ToAbsolute("~/products/community/modules/forum/posts.aspx"), Topic.ID, pageSize ), //_settings.LinkProvider.PostList(Topic.ID), CurrentPageNumber = currentPageNumber, EntryCountOnPage = pageSize, VisiblePageCount = 5, EntryCount = postCountInTopic }; bottomPageNavigatorHolder.Controls.Add(pageNavigator); var i = 0; foreach (var post in posts) { var postControl = (PostControl) LoadControl(_settings.UserControlsVirtualPath + "/PostControl.ascx"); postControl.Post = post; postControl.IsEven = (i%2==0); postControl.SettingsID = SettingsID; postControl.CurrentPageNumber = currentPageNumber; postControl.PostsCount = Topic.PostCount; postListHolder.Controls.Add(postControl); i++; } ForumDataProvider.SetTopicVisit(Topic); InitScripts(); if (Topic.Type != TopicType.Poll) return; var q = ForumDataProvider.GetPollByID(TenantProvider.CurrentTenantID, Topic.QuestionID); if (q == null) return; var isVote = ForumDataProvider.IsUserVote(TenantProvider.CurrentTenantID, q.ID, SecurityContext.CurrentAccount.ID); var pollForm = new PollForm { VoteHandlerType = typeof (PollVoteHandler), Answered = isVote || Topic.Closed || !_forumManager.ValidateAccessSecurityAction(ForumAction.PollVote, q), Name = q.Name, PollID = q.ID.ToString(), Singleton = (q.Type == QuestionType.OneAnswer), AdditionalParams = _settings.ID.ToString() + "," + q.ID.ToString() }; foreach (var variant in q.AnswerVariants) { pollForm.AnswerVariants.Add(new PollForm.AnswerViarint { ID = variant.ID.ToString(), Name = variant.Name, VoteCount = variant.AnswerCount }); } pollHolder.Controls.Add(new Literal {Text = "<div style='position:relative; padding-left:20px; margin-bottom:15px;'>"}); pollHolder.Controls.Add(pollForm); pollHolder.Controls.Add(new Literal {Text = "</div>"}); }
public override void DataBind() { base.DataBind(); if (Feed == null) return; newsText.Text = HtmlUtility.GetFull(Feed.Text, CommunityProduct.ID); Date.Text = Feed.Date.Ago(); EditorButtons.Visible = CommunitySecurity.CheckPermissions(Feed, NewsConst.Action_Edit); if (EditorButtons.Visible) { EditorButtons.Text = string.Format(CultureInfo.CurrentCulture, "{0}{1}", string.Format(CultureInfo.CurrentCulture, "<li><a class=\"dropdown-item\" href=\"{0}?docID={1}{3}\">{2}</a></li>", GetEditUrl(), Feed.Id, NewsResource.EditButton, UserIdAttribute), string.Format(CultureInfo.CurrentCulture, "<li><a class=\"dropdown-item\" href=\"javascript:;\" onclick=\"javascript:if(window.confirm('{0}'))FeedView.Remove('{1}',callbackRemove);\">{2}</a></li>", NewsResource.ConfirmRemoveMessage, Feed.Id, NewsResource.DeleteButton)); } profileLink.Text = CoreContext.UserManager.GetUsers(new Guid(Feed.Creator)).RenderCustomProfileLink(CommunityProduct.ID, "", "linkMedium"); if (Feed is FeedPoll) { var poll = (FeedPoll)Feed; var isMakeVote = TenantUtil.DateTimeNow() <= poll.EndDate && !poll.IsUserVote(SecurityContext.CurrentAccount.ID.ToString()); var pollForm = new PollForm { VoteHandlerType = typeof(PollVoteHandler), Answered = !isMakeVote, Name = poll.Caption, PollID = poll.Id.ToString(CultureInfo.CurrentCulture), Singleton = (poll.PollType == FeedPollType.SimpleAnswer), AdditionalParams = poll.Id.ToString(CultureInfo.CurrentCulture) }; foreach (var variant in poll.Variants) { pollForm.AnswerVariants.Add(new PollForm.AnswerViarint() { ID = variant.ID.ToString(CultureInfo.CurrentCulture), Name = variant.Name, VoteCount = poll.GetVariantVoteCount(variant.ID) }); } pollHolder.Controls.Add(pollForm); } else { pollHolder.Visible = false; newsText.Visible = true; } }