public ActionResult BlogCommentAdd(int blogPostId, BlogPostModel model) { if (!_blogSettings.Enabled) return RedirectToAction("Index", "Home"); var blogPost = _blogService.GetBlogPostById(blogPostId); if (blogPost == null || !blogPost.AllowComments) return RedirectToAction("Index", "Home"); if (ModelState.IsValid) { if (_workContext.CurrentCustomer.IsGuest() && !_blogSettings.AllowNotRegisteredUsersToLeaveComments) { ModelState.AddModelError("", _localizationService.GetResource("Blog.Comments.OnlyRegisteredUsersLeaveComments")); } else { var comment = new BlogComment() { BlogPostId = blogPost.Id, CustomerId = _workContext.CurrentCustomer.Id, IpAddress = _webHelper.GetCurrentIpAddress(), CommentText = model.AddNewComment.CommentText, IsApproved = true, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, }; _customerContentService.InsertCustomerContent(comment); //notify store owner if (_blogSettings.NotifyAboutNewBlogComments) _workflowMessageService.SendBlogCommentNotificationMessage(comment, _localizationSettings.DefaultAdminLanguageId); //The text boxes should be cleared after a comment has been posted //That' why we reload the page TempData["nop.blog.addcomment.result"] = _localizationService.GetResource("Blog.Comments.SuccessfullyAdded"); return RedirectToRoute("BlogPost", new { blogPostId = blogPost.Id, SeName = blogPost.GetSeName() }); } } //If we got this far, something failed, redisplay form PrepareBlogPostModel(model, blogPost, true); return View(model); }
protected void PrepareBlogPostModel(BlogPostModel model, BlogPost blogPost, bool prepareComments) { if (blogPost == null) throw new ArgumentNullException("blogPost"); if (model == null) throw new ArgumentNullException("model"); model.Id = blogPost.Id; model.SeName = blogPost.GetSeName(blogPost.LanguageId, ensureTwoPublishedLanguages: false); model.Title = blogPost.Title; model.Body = blogPost.Body; model.AllowComments = blogPost.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(blogPost.CreatedOnUtc, DateTimeKind.Utc); model.Tags = blogPost.ParseTags().ToList(); model.NumberOfComments = blogPost.ApprovedCommentCount; model.AddNewComment.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnBlogCommentPage; if (prepareComments) { var blogComments = blogPost.BlogComments.Where(pr => pr.IsApproved).OrderBy(pr => pr.CreatedOnUtc); foreach (var bc in blogComments) { var commentModel = new BlogCommentModel() { Id = bc.Id, CustomerId = bc.CustomerId, CustomerName = bc.Customer.FormatUserName(), CommentText = bc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(bc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && bc.Customer != null && !bc.Customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { commentModel.CustomerAvatarUrl = _pictureService.GetPictureUrl( bc.Customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, _customerSettings.DefaultAvatarEnabled, defaultPictureType: PictureType.Avatar); } model.Comments.Add(commentModel); } } }
protected BlogPostListModel PrepareBlogPostListModel(BlogPagingFilteringModel command) { if (command == null) throw new ArgumentNullException("command"); var model = new BlogPostListModel(); model.PagingFilteringContext.Tag = command.Tag; model.PagingFilteringContext.Month = command.Month; model.WorkingLanguageId = _workContext.WorkingLanguage.Id; if (command.PageSize <= 0) command.PageSize = _blogSettings.PostsPageSize; if (command.PageNumber <= 0) command.PageNumber = 1; DateTime? dateFrom = command.GetFromMonth(); DateTime? dateTo = command.GetToMonth(); IPagedList<BlogPost> blogPosts; if (String.IsNullOrEmpty(command.Tag)) { blogPosts = _blogService.GetAllBlogPosts(_workContext.WorkingLanguage.Id, dateFrom, dateTo, command.PageNumber - 1, command.PageSize); } else { blogPosts = _blogService.GetAllBlogPostsByTag(_workContext.WorkingLanguage.Id, command.Tag, command.PageNumber - 1, command.PageSize); } model.PagingFilteringContext.LoadPagedList(blogPosts); model.BlogPosts = blogPosts .Select(x => { var blogPostModel = new BlogPostModel(); PrepareBlogPostModel(blogPostModel, x, false); return blogPostModel; }) .ToList(); return model; }
public ActionResult BlogPost(int blogPostId) { if (!_blogSettings.Enabled) return RedirectToRoute("HomePage"); var blogPost = _blogService.GetBlogPostById(blogPostId); if (blogPost == null || (blogPost.StartDateUtc.HasValue && blogPost.StartDateUtc.Value >= DateTime.UtcNow) || (blogPost.EndDateUtc.HasValue && blogPost.EndDateUtc.Value <= DateTime.UtcNow)) return RedirectToRoute("HomePage"); var model = new BlogPostModel(); PrepareBlogPostModel(model, blogPost, true); return View(model); }
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, IpAddress = _webHelper.GetCurrentIpAddress(), CommentText = model.AddNewComment.CommentText, IsApproved = true, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, }; _customerContentService.InsertCustomerContent(comment); //update totals _blogService.UpdateCommentTotals(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["nop.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); }
public ActionResult BlogPost(int blogPostId) { if (!_blogSettings.Enabled) return RedirectToRoute("HomePage"); var blogPost = _blogService.GetBlogPostById(blogPostId); if (blogPost == null || (blogPost.StartDateUtc.HasValue && blogPost.StartDateUtc.Value >= DateTime.UtcNow) || (blogPost.EndDateUtc.HasValue && blogPost.EndDateUtc.Value <= DateTime.UtcNow)) return RedirectToRoute("HomePage"); //Store mapping if (!_storeMappingService.Authorize(blogPost)) return InvokeHttp404(); var model = new BlogPostModel(); PrepareBlogPostModel(model, blogPost, true); //display "edit" (manage) link if (_permissionService.Authorize(StandardPermissionProvider.AccessAdminPanel) && _permissionService.Authorize(StandardPermissionProvider.ManageBlog)) DisplayEditLink(Url.Action("Edit", "Blog", new { id = blogPost.Id, area = "Admin" })); return View(model); }
private void PrepareBlogPostModel(BlogPostModel model, BlogPost blogPost, bool prepareComments) { if (blogPost == null) throw new ArgumentNullException("blogPost"); if (model == null) throw new ArgumentNullException("model"); model.Id = blogPost.Id; model.SeName = blogPost.GetSeName(); model.Title = blogPost.Title; model.Body = blogPost.Body; model.AllowComments = blogPost.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(blogPost.CreatedOnUtc, DateTimeKind.Utc); model.Tags = blogPost.ParseTags().ToList(); model.NumberOfComments = blogPost.BlogComments.Count; if (prepareComments) { var blogComments = blogPost.BlogComments.Where(pr => pr.IsApproved).OrderBy(pr => pr.CreatedOnUtc); foreach (var bc in blogComments) { var commentModel = new BlogCommentModel() { Id = bc.Id, CustomerId = bc.CustomerId, CustomerName = bc.Customer.FormatUserName(), CommentText = bc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(bc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && bc.Customer != null && !bc.Customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { var customer = bc.Customer; string avatarUrl = _pictureService.GetPictureUrl(customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, false); if (String.IsNullOrEmpty(avatarUrl) && _customerSettings.DefaultAvatarEnabled) avatarUrl = _pictureService.GetDefaultPictureUrl(_mediaSettings.AvatarPictureSize, PictureType.Avatar); commentModel.CustomerAvatarUrl = avatarUrl; } model.Comments.Add(commentModel); } } }
public ActionResult List(BlogPagingFilteringModel command) { if (!_blogSettings.Enabled) return RedirectToAction("Index", "Home"); var model = new BlogPostListModel(); model.PagingFilteringContext.Tag = command.Tag; model.PagingFilteringContext.Month = command.Month; model.WorkingLanguageId = _workContext.WorkingLanguage.Id; if (command.PageSize <= 0) command.PageSize = _blogSettings.PostsPageSize; if (command.PageNumber <= 0) command.PageNumber = 1; DateTime? dateFrom = command.GetFromMonth(); DateTime? dateTo = command.GetToMonth(); IList<BlogPost> blogPosts; if (String.IsNullOrEmpty(command.Tag)) { blogPosts = _blogService.GetAllBlogPosts(_workContext.WorkingLanguage.Id, dateFrom, dateTo, command.PageNumber - 1, command.PageSize); model.PagingFilteringContext.LoadPagedList(blogPosts as IPagedList<BlogPost>); } else { blogPosts = _blogService.GetAllBlogPostsByTag(_workContext.WorkingLanguage.Id, command.Tag); } model.BlogPosts = blogPosts .Select(x => { var blogPostModel = new BlogPostModel(); PrepareBlogPostModel(blogPostModel, x, false); return blogPostModel; }) .ToList(); return View(model); }
public ActionResult BlogPost(int blogPostId) { if (!_blogSettings.Enabled) return RedirectToAction("Index", "Home"); var blogPost = _blogService.GetBlogPostById(blogPostId); if (blogPost == null) return RedirectToAction("Index", "Home"); var model = new BlogPostModel(); PrepareBlogPostModel(model, blogPost, true); return View(model); }
protected virtual void PrepareBlogPostModel(BlogPostModel model, BlogPost blogPost, bool prepareComments) { if (blogPost == null) throw new ArgumentNullException("blogPost"); if (model == null) throw new ArgumentNullException("model"); model.Id = blogPost.Id; model.MetaTitle = blogPost.MetaTitle; model.MetaDescription = blogPost.MetaDescription; model.MetaKeywords = blogPost.MetaKeywords; model.SeName = blogPost.GetSeName(blogPost.LanguageId, ensureTwoPublishedLanguages: false); model.Title = blogPost.Title; model.Body = blogPost.Body; model.BodyOverview = blogPost.BodyOverview; model.AllowComments = blogPost.AllowComments; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(blogPost.StartDateUtc ?? blogPost.CreatedOnUtc, DateTimeKind.Utc); model.Tags = blogPost.ParseTags().ToList(); model.NumberOfComments = blogPost.CommentCount; model.AddNewComment.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnBlogCommentPage; if (prepareComments) { var blogComments = _blogService.GetBlogCommentsByBlogPostId(blogPost.Id); foreach (var bc in blogComments) { var customer = EngineContext.Current.Resolve<ICustomerService>().GetCustomerById(bc.CustomerId); var commentModel = new BlogCommentModel { Id = bc.Id, CustomerId = bc.CustomerId, CustomerName = customer.FormatUserName(), CommentText = bc.CommentText, CreatedOn = _dateTimeHelper.ConvertToUserTime(bc.CreatedOnUtc, DateTimeKind.Utc), AllowViewingProfiles = _customerSettings.AllowViewingProfiles && customer != null && !customer.IsGuest(), }; if (_customerSettings.AllowCustomersToUploadAvatars) { commentModel.CustomerAvatarUrl = _pictureService.GetPictureUrl( customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId), _mediaSettings.AvatarPictureSize, _customerSettings.DefaultAvatarEnabled, defaultPictureType: PictureType.Avatar); } model.Comments.Add(commentModel); } } }