public void Should_have_error_when_text_is_null_or_empty() { var model = new EditForumPostModel(); model.Text = null; _validator.ShouldHaveValidationErrorFor(x => x.Text, model); model.Text = ""; _validator.ShouldHaveValidationErrorFor(x => x.Text, model); }
public ActionResult PostEdit(EditForumPostModel model) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumPost = _forumService.GetPostById(model.Id); if (forumPost == null) { return RedirectToRoute("Boards"); } if (!_forumService.IsCustomerAllowedToEditPost(_workContext.CurrentCustomer, forumPost)) { return new HttpUnauthorizedResult(); } var forumTopic = forumPost.ForumTopic; if (forumTopic == null) { return RedirectToRoute("Boards"); } var forum = forumTopic.Forum; if (forum == null) { return RedirectToRoute("Boards"); } if (ModelState.IsValid) { try { DateTime nowUtc = DateTime.UtcNow; var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } forumPost.UpdatedOnUtc = nowUtc; forumPost.Text = text; _forumService.UpdatePost(forumPost); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } int pageSize = 10; if (_forumSettings.PostsPageSize > 0) { pageSize = _forumSettings.PostsPageSize; } int pageIndex = (_forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = forumPost.ForumTopic.GetSeName(), page = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = forumPost.ForumTopic.GetSeName() }); } return Redirect(string.Format("{0}#{1}", url, forumPost.Id)); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form model.IsEdit = true; model.ForumName = forum.Name; model.ForumTopicId = forumTopic.Id; model.ForumTopicSubject = forumTopic.Subject; model.ForumTopicSeName = forumTopic.GetSeName(); model.Id = forumPost.Id; model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return View(model); }
public ActionResult PostEdit(int id) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumPost = _forumService.GetPostById(id); if (forumPost == null) { return RedirectToRoute("Boards"); } if (!_forumService.IsCustomerAllowedToEditPost(_workContext.CurrentCustomer, forumPost)) { return new HttpUnauthorizedResult(); } var forumTopic = forumPost.ForumTopic; if (forumTopic == null) { return RedirectToRoute("Boards"); } var forum = forumTopic.Forum; if (forum == null) { return RedirectToRoute("Boards"); } var model = new EditForumPostModel { Id = forumPost.Id, ForumTopicId = forumTopic.Id, IsEdit = true, ForumEditor = _forumSettings.ForumEditor, ForumName = forum.Name, ForumTopicSubject = forumTopic.Subject, ForumTopicSeName = forumTopic.GetSeName(), IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer), Subscribed = false, Text = forumPost.Text, }; //subscription if (model.IsCustomerAllowedToSubscribe) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault(); model.Subscribed = forumSubscription != null; } return View(model); }
public ActionResult PostCreate(int id, int? quote) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumTopic = _forumService.GetTopicById(id); if (forumTopic == null) { return RedirectToRoute("Boards"); } if (!_forumService.IsCustomerAllowedToCreatePost(_workContext.CurrentCustomer, forumTopic)) { return new HttpUnauthorizedResult(); } var forum = forumTopic.Forum; if (forum == null) { return RedirectToRoute("Boards"); } var model = new EditForumPostModel { Id = 0, 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 = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault(); model.Subscribed = forumSubscription != null; } // Insert the quoted text string 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 = String.Format("{0}:\n{1}\n", quotePost.Customer.FormatUserName(), quotePostText); break; case EditorType.BBCodeEditor: text = String.Format("[quote={0}]{1}[/quote]", quotePost.Customer.FormatUserName(), BBCodeHelper.RemoveQuotes(quotePostText)); break; } model.Text = text; } } return View(model); }
public ActionResult PostCreate(EditForumPostModel model) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumTopic = _forumService.GetTopicById(model.ForumTopicId); if (forumTopic == null) { return RedirectToRoute("Boards"); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreatePost(_workContext.CurrentCustomer, forumTopic)) return new HttpUnauthorizedResult(); var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) text = text.Substring(0, maxPostLength); string ipAddress = _webHelper.GetCurrentIpAddress(); DateTime nowUtc = DateTime.UtcNow; var forumPost = new ForumPost { TopicId = forumTopic.Id, ForumId = forumTopic.ForumId, ForumGroupId = forumTopic.ForumGroupId, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(forumPost, true); if (!_workContext.CurrentCustomer.IsHasForumPost) { _workContext.CurrentCustomer.IsHasForumPost = true; EngineContext.Current.Resolve<ICustomerService>().UpdateHasForumPost(_workContext.CurrentCustomer.Id); } //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } int pageSize =_forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; int pageIndex = (_forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; var _forumTopic = _forumService.GetTopicById(forumPost.TopicId); if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = _forumTopic.GetSeName(), page = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = _forumTopic.GetSeName() }); } return Redirect(string.Format("{0}#{1}", url, forumPost.Id)); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form var forum = _forumService.GetForumById(forumTopic.ForumId); if (forum == null) return RedirectToRoute("Boards"); model.IsEdit = false; model.ForumName = forum.Name; model.ForumTopicId = forumTopic.Id; model.ForumTopicSubject = forumTopic.Subject; model.ForumTopicSeName = forumTopic.GetSeName(); model.Id = 0; model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return View(model); }
public void Should_not_have_error_when_text_is_specified() { var model = new EditForumPostModel(); model.Text = "some comment"; _validator.ShouldNotHaveValidationErrorFor(x => x.Text, model); }