/// <summary> /// Deletes a blog comment /// </summary> /// <param name="blogComment">Blog comment</param> public virtual void DeleteBlogComment(BlogComment blogComment) { if (blogComment == null) throw new ArgumentNullException("blogComment"); _blogCommentRepository.Delete(blogComment); }
public ActionResult BlogCommentAdd(int blogPostId, BlogPostModel model, bool captchaValid) { if (!_blogSettings.Enabled) return RedirectToRoute("HomePage"); var blogPost = _blogService.GetBlogPostById(blogPostId); if (blogPost == null || !blogPost.AllowComments) return RedirectToRoute("HomePage"); if (_workContext.CurrentCustomer.IsGuest() && !_blogSettings.AllowNotRegisteredUsersToLeaveComments) { ModelState.AddModelError("", _localizationService.GetResource("Blog.Comments.OnlyRegisteredUsersLeaveComments")); } //validate CAPTCHA if (_captchaSettings.Enabled && _captchaSettings.ShowOnBlogCommentPage && !captchaValid) { ModelState.AddModelError("", _localizationService.GetResource("Common.WrongCaptcha")); } if (ModelState.IsValid) { var comment = new BlogComment() { BlogPostId = blogPost.Id, CustomerId = _workContext.CurrentCustomer.Id, CommentText = model.AddNewComment.CommentText, CreatedOnUtc = DateTime.UtcNow, }; blogPost.BlogComments.Add(comment); //update totals blogPost.CommentCount = blogPost.BlogComments.Count; _blogService.UpdateBlogPost(blogPost); //notify a store owner if (_blogSettings.NotifyAboutNewBlogComments) _workflowMessageService.SendBlogCommentNotificationMessage(comment, _localizationSettings.DefaultAdminLanguageId); //activity log _customerActivityService.InsertActivity("PublicStore.AddBlogComment", _localizationService.GetResource("ActivityLog.PublicStore.AddBlogComment")); //The text boxes should be cleared after a comment has been posted //That' why we reload the page TempData["Nas.blog.addcomment.result"] = _localizationService.GetResource("Blog.Comments.SuccessfullyAdded"); return RedirectToRoute("BlogPost", new { SeName = blogPost.GetSeName(blogPost.LanguageId, ensureTwoPublishedLanguages: false) }); } //If we got this far, something failed, redisplay form PrepareBlogPostModel(model, blogPost, true); return View(model); }
/// <summary> /// Sends a blog comment notification message to a store owner /// </summary> /// <param name="blogComment">Blog comment</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual int SendBlogCommentNotificationMessage(BlogComment blogComment, int languageId) { if (blogComment == null) throw new ArgumentNullException("blogComment"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetLocalizedActiveMessageTemplate("Blog.BlogComment", languageId, store.Id); if (messageTemplate == null) return 0; //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store); _messageTokenProvider.AddBlogCommentTokens(tokens, blogComment); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
public virtual void AddBlogCommentTokens(IList<Token> tokens, BlogComment blogComment) { tokens.Add(new Token("BlogComment.BlogPostTitle", blogComment.BlogPost.Title)); //event notification _eventPublisher.EntityTokensAdded(blogComment, tokens); }