public void Should_have_error_when_text_is_null_or_empty() { var model = new EditForumTopicModel(); model.Text = null; _validator.ShouldHaveValidationErrorFor(x => x.Text, model); model.Text = ""; _validator.ShouldHaveValidationErrorFor(x => x.Text, model); }
public ActionResult TopicEdit(EditForumTopicModel model) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumTopic = _forumService.GetTopicById(model.Id); if (forumTopic == null) { return RedirectToRoute("Boards"); } var forum = forumTopic.Forum; if (forum == null) { return RedirectToRoute("Boards"); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToEditTopic(_workContext.CurrentCustomer, forumTopic)) { return new HttpUnauthorizedResult(); } string subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; string ipAddress = _webHelper.GetCurrentIpAddress(); DateTime nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType) Enum.ToObject(typeof (ForumTopicType), model.TopicTypeId); } //forum topic forumTopic.TopicTypeId = (int) topicType; forumTopic.Subject = subject; forumTopic.UpdatedOnUtc = nowUtc; _forumService.UpdateTopic(forumTopic); //forum post var firstPost = forumTopic.GetFirstPost(_forumService); if (firstPost != null) { firstPost.Text = text; firstPost.UpdatedOnUtc = nowUtc; _forumService.UpdatePost(firstPost); } else { //error (not possible) firstPost = new ForumPost() { TopicId = forumTopic.Id, CustomerId = forumTopic.CustomerId, Text = text, IPAddress = ipAddress, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(firstPost, false); } //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault (); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } // redirect to the topic page with the topic slug return RedirectToRoute("TopicSlug", new {id = forumTopic.Id, slug = forumTopic.GetSeName()}); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form model.TopicPriorities = ForumTopicTypesList(); model.IsEdit = true; model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); model.ForumId = forum.Id; model.ForumEditor = _forumSettings.ForumEditor; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); return View(model); }
public ActionResult TopicEdit(int id) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forumTopic = _forumService.GetTopicById(id); if (forumTopic == null) { return RedirectToRoute("Boards"); } if (!_forumService.IsCustomerAllowedToEditTopic(_workContext.CurrentCustomer, forumTopic)) { return new HttpUnauthorizedResult(); } var forum = forumTopic.Forum; if (forum == null) { return RedirectToRoute("Boards"); } var model = new EditForumTopicModel(); model.IsEdit = true; model.TopicPriorities = ForumTopicTypesList(); model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); var firstPost = forumTopic.GetFirstPost(_forumService); model.Text = firstPost.Text; model.Subject = forumTopic.Subject; model.TopicTypeId = forumTopic.TopicTypeId; model.Id = forumTopic.Id; model.ForumId = forum.Id; model.ForumEditor = _forumSettings.ForumEditor; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); //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 TopicCreate(EditForumTopicModel model) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forum = _forumService.GetForumById(model.ForumId); if (forum == null) { return RedirectToRoute("Boards"); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreateTopic(_workContext.CurrentCustomer, forum)) { return new HttpUnauthorizedResult(); } string subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; string ipAddress = _webHelper.GetCurrentIpAddress(); var nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType) Enum.ToObject(typeof (ForumTopicType), model.TopicTypeId); } //forum topic var forumTopic = new ForumTopic() { ForumId = forum.Id, CustomerId = _workContext.CurrentCustomer.Id, TopicTypeId = (int) topicType, Subject = subject, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertTopic(forumTopic, true); //forum post var forumPost = new ForumPost() { TopicId = forumTopic.Id, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(forumPost, false); //update forum topic forumTopic.NumPosts = 1; forumTopic.LastPostId = forumPost.Id; forumTopic.LastPostCustomerId = forumPost.CustomerId; forumTopic.LastPostTime = forumPost.CreatedOnUtc; forumTopic.UpdatedOnUtc = nowUtc; _forumService.UpdateTopic(forumTopic); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { if (model.Subscribed) { var forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } return RedirectToRoute("TopicSlug", new {id = forumTopic.Id, slug = forumTopic.GetSeName()}); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form model.TopicPriorities = ForumTopicTypesList(); model.IsEdit = false; model.ForumId = forum.Id; model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); model.Id = 0; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return View(model); }
public ActionResult TopicCreate(int id) { if (!_forumSettings.ForumsEnabled) { return RedirectToRoute("HomePage"); } var forum = _forumService.GetForumById(id); if (forum == null) { return RedirectToRoute("Boards"); } if (_forumService.IsCustomerAllowedToCreateTopic(_workContext.CurrentCustomer, forum) == false) { return new HttpUnauthorizedResult(); } var model = new EditForumTopicModel(); model.Id = 0; model.IsEdit = false; model.ForumId = forum.Id; model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); model.ForumEditor = _forumSettings.ForumEditor; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.TopicPriorities = ForumTopicTypesList(); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.Subscribed = false; return View(model); }
public void Should_not_have_error_when_text_is_specified() { var model = new EditForumTopicModel(); model.Text = "some comment"; _validator.ShouldNotHaveValidationErrorFor(x => x.Text, model); }