Orchard/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs

69 lines
2.9 KiB
C#
Raw Normal View History

using System;
using System.Web.Mvc;
using Orchard.Comments.Models;
using Orchard.Comments.Services;
using Orchard.Comments.ViewModels;
using Orchard.ContentManagement;
using Orchard.Localization;
using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace Orchard.Comments.Controllers {
public class CommentController : Controller {
public IOrchardServices Services { get; set; }
private readonly ICommentService _commentService;
private readonly INotifier _notifier;
public CommentController(IOrchardServices services, ICommentService commentService, INotifier notifier) {
Services = services;
_commentService = commentService;
_notifier = notifier;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
[HttpPost]
public ActionResult Create(string returnUrl) {
if (!Services.Authorizer.Authorize(Permissions.AddComment, T("Couldn't add comment")))
return !String.IsNullOrEmpty(returnUrl)
? Redirect(returnUrl)
: Redirect("~/");
var viewModel = new CommentsCreateViewModel();
try {
// UpdateModel(viewModel);
if(!TryUpdateModel(viewModel)) {
if (Request.Form["Name"].IsNullOrEmptyTrimmed()) {
_notifier.Error(T("You must provide a Name in order to comment"));
}
return Redirect(returnUrl);
}
var context = new CreateCommentContext {
Author = viewModel.Name,
CommentText = viewModel.CommentText,
Email = viewModel.Email,
SiteName = viewModel.SiteName,
CommentedOn = viewModel.CommentedOn
};
CommentPart commentPart = _commentService.CreateComment(context, Services.WorkContext.CurrentSite.As<CommentSettingsPart>().Record.ModerateComments);
Comment -> CommentPart; HasComments -> CommentsPart; HasCommentsContainer -> CommentsContainerPart - updating part names to conform to a <name>Part convention --HG-- branch : dev rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/HasCommentsContainerDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/HasCommentsDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/HasCommentsHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainer.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettings.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainer.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsContainerPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasComments.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Modules/Orchard.Comments/Views/DisplayTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Comments.Comments.ascx
2010-07-23 05:08:31 +08:00
if (commentPart.Record.Status == CommentStatus.Pending)
Services.Notifier.Information(T("Your comment will appear after the site administrator approves it."));
return !String.IsNullOrEmpty(returnUrl)
? Redirect(returnUrl)
: Redirect("~/");
}
catch (Exception exception) {
_notifier.Error(T("Creating Comment failed: " + exception.Message));
// return View(viewModel);
return Redirect(returnUrl);
}
}
}
}