/// <summary> /// Deletes a news comment /// </summary> /// <param name="newsComment">News comment</param> public virtual void DeleteNewsComment(NewsComment newsComment) { if (newsComment == null) throw new ArgumentNullException("newsComment"); _newsCommentRepository.Delete(newsComment); }
public ActionResult CommentDelete(NewsComment model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews)) return AccessDeniedView(); var newsItem = _newsService.GetNewsById(model.NewsItemId); var comment = newsItem.NewsComments.FirstOrDefault(x => x.Id == model.Id); if (comment == null) throw new ArgumentException("No comment found with the specified id"); //var newsItem = _newsService.GetNewsById(comment.NewsItemId); //_newsService.(comment); newsItem.NewsComments.Remove(comment); //update totals newsItem.CommentCount = newsItem.NewsComments.Count; _newsService.UpdateNews(newsItem); return new NullJsonResult(); }
/// <summary> /// Sends a news comment notification message to a store owner /// </summary> /// <param name="newsComment">News comment</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual int SendNewsCommentNotificationMessage(NewsComment newsComment, int languageId) { if (newsComment == null) throw new ArgumentNullException("newsComment"); languageId = EnsureLanguageIsActive(languageId); var messageTemplate = GetLocalizedActiveMessageTemplate("News.NewsComment", languageId); if (messageTemplate == null) return 0; var newsCommentTokens = GenerateTokens(newsComment); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, newsCommentTokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, newsCommentTokens, toEmail, toName); }
private IList<Token> GenerateTokens(NewsComment newsComment) { var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens); _messageTokenProvider.AddNewsCommentTokens(tokens, newsComment); return tokens; }
public ActionResult NewsCommentAdd(int newsItemId, NewsItemModel model, bool captchaValid) { if (!_newsSettings.Enabled) return RedirectToRoute("HomePage"); var newsItem = _newsService.GetNewsById(newsItemId); if (newsItem == null || !newsItem.Published || !newsItem.AllowComments) return RedirectToRoute("HomePage"); //validate CAPTCHA if (_captchaSettings.Enabled && _captchaSettings.ShowOnNewsCommentPage && !captchaValid) { ModelState.AddModelError("", _localizationService.GetResource("Common.WrongCaptcha")); } if (_workContext.CurrentCustomer.IsGuest() && !_newsSettings.AllowNotRegisteredUsersToLeaveComments) { ModelState.AddModelError("", _localizationService.GetResource("News.Comments.OnlyRegisteredUsersLeaveComments")); } if (ModelState.IsValid) { var comment = new NewsComment() { NewsItemId = newsItem.Id, CustomerId = _workContext.CurrentCustomer.Id, CommentTitle = model.AddNewComment.CommentTitle, CommentText = model.AddNewComment.CommentText, CreatedOnUtc = DateTime.UtcNow, }; newsItem.NewsComments.Add(comment); //update totals newsItem.CommentCount = newsItem.NewsComments.Count; _newsService.UpdateNews(newsItem); //notify a store owner; if (_newsSettings.NotifyAboutNewNewsComments) _workflowMessageService.SendNewsCommentNotificationMessage(comment, _localizationSettings.DefaultAdminLanguageId); //activity log _customerActivityService.InsertActivity("PublicStore.AddNewsComment", _localizationService.GetResource("ActivityLog.PublicStore.AddNewsComment")); //The text boxes should be cleared after a comment has been posted //That' why we reload the page TempData["nop.news.addcomment.result"] = _localizationService.GetResource("News.Comments.SuccessfullyAdded"); return RedirectToRoute("NewsItem", new {SeName = newsItem.GetSeName(newsItem.LanguageId, ensureTwoPublishedLanguages: false) }); } //If we got this far, something failed, redisplay form PrepareNewsItemModel(model, newsItem, true); return View(model); }
/// <summary> /// Sends a news comment notification message to a store owner /// </summary> /// <param name="newsComment">News comment</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual int SendNewsCommentNotificationMessage(NewsComment newsComment, int languageId) { if (newsComment == null) throw new ArgumentNullException("newsComment"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetActiveMessageTemplate("News.NewsComment", store.Id); if (messageTemplate == null) return 0; //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount); _messageTokenProvider.AddNewsCommentTokens(tokens, newsComment); _messageTokenProvider.AddCustomerTokens(tokens, newsComment.Customer); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
public virtual void AddNewsCommentTokens(IList<Token> tokens, NewsComment newsComment) { tokens.Add(new Token("NewsComment.NewsTitle", newsComment.NewsItem.Title)); //event notification _eventPublisher.EntityTokensAdded(newsComment, tokens); }
public ActionResult NewsCommentAdd(int newsItemId, NewsItemModel model) { if (!_newsSettings.Enabled) return RedirectToAction("Index", "Home"); var newsItem = _newsService.GetNewsById(newsItemId); if (newsItem == null || !newsItem.Published || !newsItem.AllowComments) return RedirectToAction("Index", "Home"); if (_workContext.CurrentCustomer.IsGuest() && !_newsSettings.AllowNotRegisteredUsersToLeaveComments) { ModelState.AddModelError("", _localizationService.GetResource("News.Comments.OnlyRegisteredUsersLeaveComments")); } if (ModelState.IsValid) { var comment = new NewsComment() { NewsItemId = newsItem.Id, CustomerId = _workContext.CurrentCustomer.Id, IpAddress = _webHelper.GetCurrentIpAddress(), CommentTitle = model.AddNewComment.CommentTitle, CommentText = model.AddNewComment.CommentText, IsApproved = true, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, }; _customerContentService.InsertCustomerContent(comment); //notify store owner if (_newsSettings.NotifyAboutNewNewsComments) _workflowMessageService.SendNewsCommentNotificationMessage(comment, _localizationSettings.DefaultAdminLanguageId); //The text boxes should be cleared after a comment has been posted //That' why we reload the page TempData["nop.news.addcomment.result"] = _localizationService.GetResource("News.Comments.SuccessfullyAdded"); return RedirectToRoute("NewsItem", new { newsItemId = newsItem.Id, SeName = newsItem.GetSeName() }); } //If we got this far, something failed, redisplay form PrepareNewsItemModel(model, newsItem, true); return View(model); }
public virtual void AddNewsCommentTokens(IList<Token> tokens, NewsComment newsComment) { tokens.Add(new Token("NewsComment.NewsTitle", newsComment.NewsItem.Title)); }
public virtual void AddNewsCommentTokens(IList<Token> tokens, NewsComment newsComment) { var newsitem = EngineContext.Current.Resolve<INewsService>().GetNewsById(newsComment.NewsItemId); tokens.Add(new Token("NewsComment.NewsTitle", newsitem.Title)); //event notification _eventPublisher.EntityTokensAdded(newsComment, tokens); }