/Presentation/Nop.Web/Administration/Controllers/NewsController.cs
C# | 264 lines | 218 code | 41 blank | 5 comment | 19 complexity | 64a13298613d09313f7752ddcbad592e MD5 | raw file
Possible License(s): CC-BY-SA-3.0, LGPL-2.1, GPL-2.0
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using Nop.Admin.Models.News;
- using Nop.Core.Domain.News;
- using Nop.Services.Customers;
- using Nop.Services.Helpers;
- using Nop.Services.Localization;
- using Nop.Services.News;
- using Nop.Web.Framework;
- using Nop.Web.Framework.Controllers;
- using Telerik.Web.Mvc;
- using Nop.Services.Security;
- using Nop.Core.Domain.Common;
-
- namespace Nop.Admin.Controllers
- {
- [AdminAuthorize]
- public class NewsController : BaseNopController
- {
- #region Fields
-
- private readonly INewsService _newsService;
- private readonly ILanguageService _languageService;
- private readonly IDateTimeHelper _dateTimeHelper;
- private readonly ICustomerContentService _customerContentService;
- private readonly ILocalizationService _localizationService;
- private readonly IPermissionService _permissionService;
- private readonly AdminAreaSettings _adminAreaSettings;
-
- #endregion
-
- #region Constructors
-
- public NewsController(INewsService newsService, ILanguageService languageService,
- IDateTimeHelper dateTimeHelper, ICustomerContentService customerContentService,
- ILocalizationService localizationService, IPermissionService permissionService,
- AdminAreaSettings adminAreaSettings)
- {
- this._newsService = newsService;
- this._languageService = languageService;
- this._dateTimeHelper = dateTimeHelper;
- this._customerContentService = customerContentService;
- this._localizationService = localizationService;
- this._permissionService = permissionService;
- this._adminAreaSettings = adminAreaSettings;
- }
-
- #endregion
-
- #region News items
-
- public ActionResult Index()
- {
- return RedirectToAction("List");
- }
-
- public ActionResult List()
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var news = _newsService.GetAllNews(0, null, null, 0, _adminAreaSettings.GridPageSize, true);
- var gridModel = new GridModel<NewsItemModel>
- {
- Data = news.Select(x =>
- {
- var m = x.ToModel();
- m.CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc);
- m.LanguageName = x.Language.Name;
- m.Comments = x.NewsComments.Count;
- return m;
- }),
- Total = news.TotalCount
- };
- return View(gridModel);
- }
-
- [HttpPost, GridAction(EnableCustomBinding = true)]
- public ActionResult List(GridCommand command)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var news = _newsService.GetAllNews(0, null, null, command.Page - 1, command.PageSize, true);
- var gridModel = new GridModel<NewsItemModel>
- {
- Data = news.Select(x =>
- {
- var m = x.ToModel();
- m.CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc);
- m.LanguageName = x.Language.Name;
- m.Comments = x.NewsComments.Count;
- return m;
- }),
- Total = news.TotalCount
- };
- return new JsonResult
- {
- Data = gridModel
- };
- }
-
- public ActionResult Create()
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- ViewBag.AllLanguages = _languageService.GetAllLanguages(true);
- var model = new NewsItemModel();
- //default values
- model.Published = true;
- model.AllowComments = true;
- return View(model);
- }
-
- [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
- public ActionResult Create(NewsItemModel model, bool continueEditing)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- if (ModelState.IsValid)
- {
- var newsItem = model.ToEntity();
- newsItem.CreatedOnUtc = DateTime.UtcNow;
- _newsService.InsertNews(newsItem);
-
- SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.News.NewsItems.Added"));
- return continueEditing ? RedirectToAction("Edit", new { id = newsItem.Id }) : RedirectToAction("List");
- }
-
- //If we got this far, something failed, redisplay form
- ViewBag.AllLanguages = _languageService.GetAllLanguages(true);
- return View(model);
- }
-
- public ActionResult Edit(int id)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var newsItem = _newsService.GetNewsById(id);
- if (newsItem == null)
- throw new ArgumentException("No news item found with the specified id", "id");
-
- ViewBag.AllLanguages = _languageService.GetAllLanguages(true);
- var model = newsItem.ToModel();
- return View(model);
- }
-
- [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
- public ActionResult Edit(NewsItemModel model, bool continueEditing)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var newsItem = _newsService.GetNewsById(model.Id);
- if (newsItem == null)
- throw new ArgumentException("No news item found with the specified id");
-
- if (ModelState.IsValid)
- {
- newsItem = model.ToEntity(newsItem);
- _newsService.UpdateNews(newsItem);
-
- SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.News.NewsItems.Updated"));
- return continueEditing ? RedirectToAction("Edit", new { id = newsItem.Id }) : RedirectToAction("List");
- }
-
- //If we got this far, something failed, redisplay form
- ViewBag.AllLanguages = _languageService.GetAllLanguages(true);
- return View(model);
- }
-
- [HttpPost, ActionName("Delete")]
- public ActionResult DeleteConfirmed(int id)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var newsItem = _newsService.GetNewsById(id);
- if (newsItem == null)
- throw new ArgumentException("No news item found with the specified id", "id");
- _newsService.DeleteNews(newsItem);
-
- SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.News.NewsItems.Deleted"));
- return RedirectToAction("List");
- }
-
- #endregion
-
- #region Comments
-
- public ActionResult Comments(int? filterByNewsItemId)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- ViewBag.FilterByNewsItemId = filterByNewsItemId;
- var model = new GridModel<NewsCommentModel>();
- return View(model);
- }
-
- [HttpPost, GridAction(EnableCustomBinding = true)]
- public ActionResult Comments(int? filterByNewsItemId, GridCommand command)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- IList<NewsComment> comments;
- if (filterByNewsItemId.HasValue)
- {
- //filter comments by news item
- var newsItem = _newsService.GetNewsById(filterByNewsItemId.Value);
- comments = newsItem.NewsComments.OrderBy(bc => bc.CreatedOnUtc).ToList();
- }
- else
- {
- //load all news comments
- comments = _customerContentService.GetAllCustomerContent<NewsComment>(0, null);
- }
-
- var gridModel = new GridModel<NewsCommentModel>
- {
- Data = comments.PagedForCommand(command).Select(newsComment =>
- {
- var commentModel = new NewsCommentModel();
- commentModel.Id = newsComment.Id;
- commentModel.NewsItemId = newsComment.NewsItemId;
- commentModel.NewsItemTitle = newsComment.NewsItem.Title;
- commentModel.CustomerId = newsComment.CustomerId;
- commentModel.IpAddress = newsComment.IpAddress;
- commentModel.CreatedOn = _dateTimeHelper.ConvertToUserTime(newsComment.CreatedOnUtc, DateTimeKind.Utc);
- commentModel.CommentTitle = newsComment.CommentTitle;
- commentModel.CommentText = Core.Html.HtmlHelper.FormatText(newsComment.CommentText, false, true, false, false, false, false);
- return commentModel;
- }),
- Total = comments.Count,
- };
- return new JsonResult
- {
- Data = gridModel
- };
- }
-
- [GridAction(EnableCustomBinding = true)]
- public ActionResult CommentDelete(int? filterByNewsItemId, int id, GridCommand command)
- {
- if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
- return AccessDeniedView();
-
- var comment = _customerContentService.GetCustomerContentById(id);
- _customerContentService.DeleteCustomerContent(comment);
-
- return Comments(filterByNewsItemId, command);
- }
-
-
- #endregion
- }
- }