public async Task <ActionResult> Add([Bind(nameof(NewThreadData.MessageText), nameof(NewThreadData.ThreadSubject), nameof(NewThreadData.IsSticky), nameof(NewThreadData.Subscribe))] NewThreadData newThreadData, string submitButton, int forumId = 0) { if (submitButton != "Post") { // apparently canceled if (forumId <= 0) { return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Index", "Forum", new { forumId = forumId })); } if (!ModelState.IsValid) { return(RedirectToAction("Index", "Home")); } var(userMayAddThread, forum, userMayAddStickThread) = await PerformAddThreadSecurityChecksAsync(forumId); if (!userMayAddThread) { return(RedirectToAction("Index", "Home")); } int newThreadId = 0; if (submitButton == "Post") { // allowed, proceed // parse message text to html var messageAsHtml = HnDGeneralUtils.TransformMarkdownToHtml(newThreadData.MessageText, ApplicationAdapter.GetEmojiFilenamesPerName(), ApplicationAdapter.GetSmileyMappings()); var(newThreadIdFromCall, newMessageId) = await ForumManager.CreateNewThreadInForumAsync(forumId, this.HttpContext.Session.GetUserID(), newThreadData.ThreadSubject, newThreadData.MessageText, messageAsHtml, userMayAddStickThread&& newThreadData.IsSticky, this.Request.Host.Host, forum.DefaultSupportQueueID, newThreadData.Subscribe); newThreadId = newThreadIdFromCall; ApplicationAdapter.InvalidateCachedNumberOfThreadsInSupportQueues(); if (this.HttpContext.Session.CheckIfNeedsAuditing(AuditActions.AuditNewThread)) { await SecurityManager.AuditNewThreadAsync(this.HttpContext.Session.GetUserID(), newThreadId); } _cache.Remove(CacheManager.ProduceCacheKey(CacheKeys.SingleForum, forumId)); } return(Redirect(this.Url.Action("Index", "Thread", new { threadId = newThreadId, pageNo = 1 }))); }
public async Task <ActionResult> Add(int forumId = 0) { var(userMayAddThread, forum, userMayAddStickyThread) = await PerformAddThreadSecurityChecksAsync(forumId); if (!userMayAddThread) { return(RedirectToAction("Index", "Home")); } var newThreadData = new NewThreadData() { CurrentUserID = this.HttpContext.Session.GetUserID(), ForumID = forumId, ForumName = forum.ForumName, SectionName = await _cache.GetSectionNameAsync(forum.SectionID), ThreadSubject = string.Empty, MessageText = string.Empty, UserCanAddStickyThread = userMayAddStickyThread, NewThreadWelcomeTextAsHTML = forum.NewThreadWelcomeTextAsHTML, Subscribe = this.HttpContext.Session.GetUserAutoSubscribeToThread(), }; return(View(newThreadData)); }