public virtual async Task <EditForumPostModel> PrepareEditForumPost(Forum forum, ForumTopic forumTopic, string quote) { var model = new EditForumPostModel { Id = "", ForumTopicId = forumTopic.Id, IsEdit = false, ForumEditor = _forumSettings.ForumEditor, ForumName = forum.Name, ForumTopicSubject = forumTopic.Subject, ForumTopicSeName = forumTopic.GetSeName(), IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer), Subscribed = false, }; //subscription if (model.IsCustomerAllowedToSubscribe) { var forumSubscription = (await _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, "", forumTopic.Id, 0, 1)).FirstOrDefault(); model.Subscribed = forumSubscription != null; } // Insert the quoted text string text = string.Empty; if (!String.IsNullOrEmpty(quote)) { var quotePost = await _forumService.GetPostById(quote); if (quotePost != null && quotePost.TopicId == forumTopic.Id) { var quotePostText = quotePost.Text; var customer = await _serviceProvider.GetRequiredService <ICustomerService>().GetCustomerById(quotePost.CustomerId); switch (_forumSettings.ForumEditor) { case EditorType.SimpleTextBox: text = String.Format("{0}:\n{1}\n", customer.FormatUserName(_customerSettings.CustomerNameFormat), quotePostText); break; case EditorType.BBCodeEditor: text = String.Format("[quote={0}]{1}[/quote]", customer.FormatUserName(_customerSettings.CustomerNameFormat), BBCodeHelper.RemoveQuotes(quotePostText)); break; } model.Text = text; } } return(model); }
/// <summary> /// Prepare the forum post create model /// </summary> /// <param name="forumTopic">Forum topic</param> /// <param name="quote">Identifier of the quoted post; pass null to load the empty text</param> /// <param name="excludeProperties">Whether to exclude populating of model properties from the entity</param> /// <returns>Edit forum post model</returns> public virtual EditForumPostModel PreparePostCreateModel(ForumTopic forumTopic, int?quote, bool excludeProperties) { if (forumTopic == null) { throw new ArgumentNullException(nameof(forumTopic)); } var forum = forumTopic.Forum; if (forum == null) { throw new ArgumentException("forum cannot be loaded"); } var model = new EditForumPostModel { ForumTopicId = forumTopic.Id, IsEdit = false, ForumEditor = _forumSettings.ForumEditor, ForumName = forum.Name, ForumTopicSubject = forumTopic.Subject, ForumTopicSeName = forumTopic.GetSeName(), IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer) }; if (!excludeProperties) { //subscription if (model.IsCustomerAllowedToSubscribe) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault(); model.Subscribed = forumSubscription != null; } // Insert the quoted text var text = string.Empty; if (quote.HasValue) { var quotePost = _forumService.GetPostById(quote.Value); if (quotePost != null && quotePost.TopicId == forumTopic.Id) { var quotePostText = quotePost.Text; switch (_forumSettings.ForumEditor) { case EditorType.SimpleTextBox: text = $"{quotePost.Customer.FormatUserName()}:\n{quotePostText}\n"; break; case EditorType.BBCodeEditor: text = $"[quote={quotePost.Customer.FormatUserName()}]{BBCodeHelper.RemoveQuotes(quotePostText)}[/quote]"; break; } model.Text = text; } } } return(model); }
/// <summary> /// Prepare the forum post create model /// </summary> /// <param name="forumTopic">Forum topic</param> /// <param name="quote">Identifier of the quoted post; pass null to load the empty text</param> /// <param name="excludeProperties">Whether to exclude populating of model properties from the entity</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the edit forum post model /// </returns> public virtual async Task <EditForumPostModel> PreparePostCreateModelAsync(ForumTopic forumTopic, int?quote, bool excludeProperties) { if (forumTopic == null) { throw new ArgumentNullException(nameof(forumTopic)); } var forum = await _forumService.GetForumByIdAsync(forumTopic.ForumId); if (forum == null) { throw new ArgumentException("forum cannot be loaded"); } var model = new EditForumPostModel { ForumTopicId = forumTopic.Id, IsEdit = false, ForumEditor = _forumSettings.ForumEditor, ForumName = forum.Name, ForumTopicSubject = forumTopic.Subject, ForumTopicSeName = await _forumService.GetTopicSeNameAsync(forumTopic), IsCustomerAllowedToSubscribe = await _forumService.IsCustomerAllowedToSubscribeAsync(await _workContext.GetCurrentCustomerAsync()), DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnForum }; if (!excludeProperties) { //subscription if (model.IsCustomerAllowedToSubscribe) { var forumSubscription = (await _forumService.GetAllSubscriptionsAsync((await _workContext.GetCurrentCustomerAsync()).Id, 0, forumTopic.Id, 0, 1)).FirstOrDefault(); model.Subscribed = forumSubscription != null; } // Insert the quoted text var text = string.Empty; if (quote.HasValue) { var quotePost = await _forumService.GetPostByIdAsync(quote.Value); if (quotePost != null && quotePost.TopicId == forumTopic.Id) { var customer = await _customerService.GetCustomerByIdAsync(quotePost.CustomerId); var quotePostText = quotePost.Text; switch (_forumSettings.ForumEditor) { case EditorType.SimpleTextBox: text = $"{await _customerService.FormatUsernameAsync(customer)}:\n{quotePostText}\n"; break; case EditorType.BBCodeEditor: text = $"[quote={await _customerService.FormatUsernameAsync(customer)}]{BBCodeHelper.RemoveQuotes(quotePostText)}[/quote]"; break; } model.Text = text; } } } return(model); }
private void BindData() { pnlError.Visible = false; txtTopicBodySimple.Visible = false; txtTopicBodyBBCode.Visible = false; txtTopicBodyHtml.Visible = false; switch (this.ForumService.ForumEditor) { case EditorTypeEnum.SimpleTextBox: { txtTopicBodySimple.Visible = true; rfvTopicBody.ControlToValidate = "txtTopicBodySimple"; } break; case EditorTypeEnum.BBCodeEditor: { txtTopicBodyBBCode.Visible = true; rfvTopicBody.ControlToValidate = "txtTopicBodyBBCode"; } break; case EditorTypeEnum.HtmlEditor: { txtTopicBodyHtml.Visible = true; rfvTopicBody.Enabled = false; } break; default: break; } if (this.AddTopic) { #region Adding topic var forum = this.ForumService.GetForumById(this.ForumId); if (forum == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (NopContext.Current.User == null && this.ForumService.AllowGuestsToCreateTopics) { this.CustomerService.CreateAnonymousUser(); } if (!this.ForumService.IsUserAllowedToCreateTopic(NopContext.Current.User, forum)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } lblTitle.Text = GetLocaleResourceString("Forum.NewTopic"); phForumName.Visible = true; lblForumName.Text = Server.HtmlEncode(forum.Name); txtTopicTitle.Visible = true; txtTopicTitle.Text = string.Empty; lblTopicTitle.Visible = false; lblTopicTitle.Text = string.Empty; ctrlForumBreadcrumb.ForumId = forum.ForumId; ctrlForumBreadcrumb.BindData(); phPriority.Visible = this.ForumService.IsUserAllowedToSetTopicPriority(NopContext.Current.User); phSubscribe.Visible = this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User); #endregion } else if (this.EditTopic) { #region Editing topic var forumTopic = this.ForumService.GetTopicById(this.ForumTopicId); if (forumTopic == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToEditTopic(NopContext.Current.User, forumTopic)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } var forum = forumTopic.Forum; if (forum == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } lblTitle.Text = GetLocaleResourceString("Forum.EditTopic"); phForumName.Visible = true; lblForumName.Text = Server.HtmlEncode(forum.Name); txtTopicTitle.Visible = true; txtTopicTitle.Text = forumTopic.Subject; lblTopicTitle.Visible = false; lblTopicTitle.Text = string.Empty; ctrlForumBreadcrumb.ForumTopicId = forumTopic.ForumTopicId; ctrlForumBreadcrumb.BindData(); CommonHelper.SelectListItem(this.ddlPriority, forumTopic.TopicTypeId); var firstPost = forumTopic.FirstPost; if (firstPost != null) { switch (this.ForumService.ForumEditor) { case EditorTypeEnum.SimpleTextBox: { txtTopicBodySimple.Text = firstPost.Text; } break; case EditorTypeEnum.BBCodeEditor: { txtTopicBodyBBCode.Text = firstPost.Text; } break; case EditorTypeEnum.HtmlEditor: { txtTopicBodyHtml.Value = firstPost.Text; } break; default: break; } } phPriority.Visible = this.ForumService.IsUserAllowedToSetTopicPriority(NopContext.Current.User); //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { phSubscribe.Visible = true; var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, 0, 1).FirstOrDefault(); cbSubscribe.Checked = forumSubscription != null; } else { phSubscribe.Visible = false; } #endregion } else if (this.AddPost) { #region Adding post var forumTopic = this.ForumService.GetTopicById(this.ForumTopicId); if (forumTopic == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (NopContext.Current.User == null && this.ForumService.AllowGuestsToCreatePosts) { this.CustomerService.CreateAnonymousUser(); } if (!this.ForumService.IsUserAllowedToCreatePost(NopContext.Current.User, forumTopic)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } ctrlForumBreadcrumb.ForumTopicId = forumTopic.ForumTopicId; ctrlForumBreadcrumb.BindData(); lblTitle.Text = GetLocaleResourceString("Forum.NewPost"); phForumName.Visible = false; lblForumName.Text = string.Empty; txtTopicTitle.Visible = false; txtTopicTitle.Text = string.Empty; lblTopicTitle.Visible = true; lblTopicTitle.Text = Server.HtmlEncode(forumTopic.Subject); var quotePost = this.ForumService.GetPostById(QuotePostId); if (quotePost != null && quotePost.TopicId == forumTopic.ForumTopicId) { switch (this.ForumService.ForumEditor) { case EditorTypeEnum.SimpleTextBox: txtTopicBodySimple.Text = String.Format("{0}:\n{1}\n", quotePost.User.FormatUserName(), quotePost.Text); break; case EditorTypeEnum.BBCodeEditor: txtTopicBodyBBCode.Text = String.Format("[quote={0}]{1}[/quote]", quotePost.User.FormatUserName(), BBCodeHelper.RemoveQuotes(quotePost.Text)); break; case EditorTypeEnum.HtmlEditor: txtTopicBodyHtml.Value = String.Format("<b>{0}:</b><p style=\"padding: 5px 5px 5px 5px; border: dashed 1px black; background-color: #ffffff;\">{1}</p>", quotePost.User.FormatUserName(), quotePost.Text); break; } } phPriority.Visible = false; //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { phSubscribe.Visible = true; var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, 0, 1).FirstOrDefault(); cbSubscribe.Checked = forumSubscription != null; } else { phSubscribe.Visible = false; } #endregion } else if (this.EditPost) { #region Editing post var forumPost = this.ForumService.GetPostById(this.ForumPostId); if (forumPost == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToEditPost(NopContext.Current.User, forumPost)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } var forumTopic = forumPost.Topic; if (forumTopic == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } lblTitle.Text = GetLocaleResourceString("Forum.EditPost"); phForumName.Visible = false; lblForumName.Text = string.Empty; txtTopicTitle.Visible = false; txtTopicTitle.Text = string.Empty; lblTopicTitle.Visible = true; lblTopicTitle.Text = Server.HtmlEncode(forumTopic.Subject); ctrlForumBreadcrumb.ForumTopicId = forumTopic.ForumTopicId; ctrlForumBreadcrumb.BindData(); switch (this.ForumService.ForumEditor) { case EditorTypeEnum.SimpleTextBox: { txtTopicBodySimple.Text = forumPost.Text; } break; case EditorTypeEnum.BBCodeEditor: { txtTopicBodyBBCode.Text = forumPost.Text; } break; case EditorTypeEnum.HtmlEditor: { txtTopicBodyHtml.Value = forumPost.Text; } break; default: break; } phPriority.Visible = false; //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { phSubscribe.Visible = true; var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, 0, 1).FirstOrDefault(); cbSubscribe.Checked = forumSubscription != null; } else { phSubscribe.Visible = false; } #endregion } else { Response.Redirect(SEOHelper.GetForumMainUrl()); } }
public async Task <EditForumPostModel> Handle(GetEditForumPost request, CancellationToken cancellationToken) { var model = new EditForumPostModel { Id = "", ForumTopicId = request.ForumTopic.Id, IsEdit = false, ForumEditor = _forumSettings.ForumEditor, ForumName = request.Forum.Name, ForumTopicSubject = request.ForumTopic.Subject, ForumTopicSeName = request.ForumTopic.GetSeName(), IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(request.Customer), Subscribed = false, }; //subscription if (model.IsCustomerAllowedToSubscribe) { var forumSubscription = (await _forumService.GetAllSubscriptions(request.Customer.Id, "", request.ForumTopic.Id, 0, 1)).FirstOrDefault(); model.Subscribed = forumSubscription != null; } // Insert the quoted text string text = string.Empty; if (!String.IsNullOrEmpty(request.Quote)) { var quotePost = await _forumService.GetPostById(request.Quote); if (quotePost != null && quotePost.TopicId == request.ForumTopic.Id) { var quotePostText = quotePost.Text; var customer = await _customerService.GetCustomerById(quotePost.CustomerId); switch (_forumSettings.ForumEditor) { case EditorType.SimpleTextBox: text = String.Format("{0}:\n{1}\n", customer.FormatUserName(_customerSettings.CustomerNameFormat), quotePostText); break; case EditorType.BBCodeEditor: text = String.Format("[quote={0}]{1}[/quote]", customer.FormatUserName(_customerSettings.CustomerNameFormat), BBCodeHelper.RemoveQuotes(quotePostText)); break; } model.Text = text; } } return(model); }