From 1a5996274d7ffd3c4584107a8b6f9bc18a8a50f4 Mon Sep 17 00:00:00 2001 From: skewed Date: Sun, 17 Jan 2010 09:14:45 +0000 Subject: [PATCH] Wrapping up the current state of slug generation for Pages --HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4045559 --- .../Settings/Controllers/AdminController.cs | 2 +- .../Controllers/BlogController.cs | 2 +- .../Controllers/BlogPostAdminController.cs | 2 +- .../Orchard.Blogs/Models/BlogHandler.cs | 2 +- .../Orchard.Blogs/Models/BlogPostHandler.cs | 3 +- .../Controllers/AdminController.cs | 49 ++++++++----------- .../Orchard.Pages/Models/PageHandler.cs | 12 ++--- src/Orchard/Mvc/Html/HtmlHelperExtensions.cs | 2 +- src/Orchard/Mvc/Html/LayoutExtensions.cs | 2 +- .../Mvc/Html/MvcFormAntiForgeryPost.cs | 2 +- 10 files changed, 35 insertions(+), 43 deletions(-) diff --git a/src/Orchard.Web/Core/Settings/Controllers/AdminController.cs b/src/Orchard.Web/Core/Settings/Controllers/AdminController.cs index e26c4b760..755c53806 100644 --- a/src/Orchard.Web/Core/Settings/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Settings/Controllers/AdminController.cs @@ -23,7 +23,7 @@ namespace Orchard.Core.Settings.Controllers { public Localizer T { get; set; } public ActionResult Index(string tabName) { - var model = new Orchard.Core.Settings.ViewModels.SettingsIndexViewModel { + var model = new SettingsIndexViewModel { Site = _siteService.GetSiteSettings().As() }; model.ViewModel = _modelManager.BuildEditorModel(model.Site); diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogController.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogController.cs index 611ab61d8..d4cc630f5 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogController.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogController.cs @@ -13,7 +13,7 @@ namespace Orchard.Blogs.Controllers { private readonly IOrchardServices _services; private readonly IBlogService _blogService; - public BlogController(IOrchardServices services, ISessionLocator sessionLocator, IAuthorizer authorizer, INotifier notifier, IBlogService blogService) { + public BlogController(IOrchardServices services, IBlogService blogService) { _services = services; _blogService = blogService; } diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostAdminController.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostAdminController.cs index 135ecf0ca..d4cd14691 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostAdminController.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostAdminController.cs @@ -74,7 +74,6 @@ namespace Orchard.Blogs.Controllers { } } - //TODO: (erikpo) Evaluate if publish options should be moved into create or out of create to keep it clean model.BlogPost = _services.ContentManager.UpdateEditorModel(_services.ContentManager.New("blogpost"), this); model.BlogPost.Item.Blog = blog; if (!publishNow && publishDate != null) @@ -86,6 +85,7 @@ namespace Orchard.Blogs.Controllers { return View(model); } + //TODO: (erikpo) Evaluate if publish options should be moved into create or out of create to keep it clean _services.ContentManager.Create(model.BlogPost.Item.ContentItem, publishNow ? VersionOptions.Published : VersionOptions.Draft); //TEMP: (erikpo) ensure information has committed for this record diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogHandler.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogHandler.cs index a47594ca1..5e639f61a 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogHandler.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogHandler.cs @@ -24,7 +24,7 @@ namespace Orchard.Blogs.Models { blog.Slug = routableService.GenerateUniqueSlug(slug, blogService.Get().Where( - b => b.Slug.StartsWith(slug)).Select( + b => b.Slug.StartsWith(slug) && b.Id != blog.Id).Select( b => b.Slug)); }); } diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostHandler.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostHandler.cs index d81ab1e16..8af2c4355 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostHandler.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostHandler.cs @@ -26,9 +26,10 @@ namespace Orchard.Blogs.Models { blogPost.Slug = routableService.GenerateUniqueSlug(slug, blogPostService.Get(blogPost.Blog, VersionOptions.Published).Where( - bp => bp.Slug.StartsWith(slug)).Select( + bp => bp.Slug.StartsWith(slug) && bp.Id != blogPost.Id).Select( bp => bp.Slug)); }); + OnCreated((context, bp) => bp.Blog.PostCount++); OnRemoved((context, bp) => bp.Blog.PostCount--); diff --git a/src/Orchard.Web/Packages/Orchard.Pages/Controllers/AdminController.cs b/src/Orchard.Web/Packages/Orchard.Pages/Controllers/AdminController.cs index 8c1bfa0fa..2aed4339d 100644 --- a/src/Orchard.Web/Packages/Orchard.Pages/Controllers/AdminController.cs +++ b/src/Orchard.Web/Packages/Orchard.Pages/Controllers/AdminController.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web.Mvc; -using Orchard.Data; using Orchard.Localization; using Orchard.ContentManagement; using Orchard.Mvc.Results; @@ -15,23 +14,15 @@ using Orchard.UI.Notify; namespace Orchard.Pages.Controllers { [ValidateInput(false)] public class AdminController : Controller, IUpdateModel { - private readonly ISessionLocator _sessionLocator; + private readonly IOrchardServices _services; private readonly IPageService _pageService; - private readonly ISlugConstraint _slugConstraint; - public AdminController( - IOrchardServices services, - ISessionLocator sessionLocator, - IPageService pageService, - ISlugConstraint slugConstraint) { - Services = services; - _sessionLocator = sessionLocator; + public AdminController(IOrchardServices services, IPageService pageService) { + _services = services; _pageService = pageService; - _slugConstraint = slugConstraint; T = NullLocalizer.Instance; } - public IOrchardServices Services { get; set; } private Localizer T { get; set; } public ActionResult List(PagesOptions options) { @@ -67,7 +58,7 @@ namespace Orchard.Pages.Controllers { case PagesBulkAction.None: break; case PagesBulkAction.PublishNow: - if (!Services.Authorizer.Authorize(Permissions.PublishPages, T("Couldn't publish page"))) + if (!_services.Authorizer.Authorize(Permissions.PublishPages, T("Couldn't publish page"))) return new HttpUnauthorizedResult(); foreach (PageEntry entry in checkedEntries) { @@ -76,7 +67,7 @@ namespace Orchard.Pages.Controllers { } break; case PagesBulkAction.Unpublish: - if (!Services.Authorizer.Authorize(Permissions.UnpublishPages, T("Couldn't unpublish page"))) + if (!_services.Authorizer.Authorize(Permissions.UnpublishPages, T("Couldn't unpublish page"))) return new HttpUnauthorizedResult(); foreach (PageEntry entry in checkedEntries) { var page = _pageService.GetLatest(entry.PageId); @@ -84,7 +75,7 @@ namespace Orchard.Pages.Controllers { } break; case PagesBulkAction.Delete: - if (!Services.Authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page"))) + if (!_services.Authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page"))) return new HttpUnauthorizedResult(); foreach (PageEntry entry in checkedEntries) { @@ -108,10 +99,10 @@ namespace Orchard.Pages.Controllers { } public ActionResult Create() { - if (!Services.Authorizer.Authorize(Permissions.CreatePages, T("Not allowed to create a page"))) + if (!_services.Authorizer.Authorize(Permissions.CreatePages, T("Not allowed to create a page"))) return new HttpUnauthorizedResult(); - var page = Services.ContentManager.BuildEditorModel(Services.ContentManager.New("page")); + var page = _services.ContentManager.BuildEditorModel(_services.ContentManager.New("page")); var model = new PageCreateViewModel { Page = page @@ -122,7 +113,7 @@ namespace Orchard.Pages.Controllers { [HttpPost, ActionName("Create")] public ActionResult CreatePOST(PageCreateViewModel model) { - if (!Services.Authorizer.Authorize(Permissions.CreatePages, T("Couldn't create page"))) + if (!_services.Authorizer.Authorize(Permissions.CreatePages, T("Couldn't create page"))) return new HttpUnauthorizedResult(); //TODO: (erikpo) Move this duplicate code somewhere else @@ -137,22 +128,22 @@ namespace Orchard.Pages.Controllers { } } - model.Page = Services.ContentManager.UpdateEditorModel(Services.ContentManager.New("page"), this); + model.Page = _services.ContentManager.UpdateEditorModel(_services.ContentManager.New("page"), this); if (!publishNow && publishDate != null) model.Page.Item.Published = publishDate.Value; if (!ModelState.IsValid) { - Services.TransactionManager.Cancel(); + _services.TransactionManager.Cancel(); return View(model); } - Services.ContentManager.Create(model.Page.Item.ContentItem, publishNow ? VersionOptions.Published : VersionOptions.Draft); + _services.ContentManager.Create(model.Page.Item.ContentItem, publishNow ? VersionOptions.Published : VersionOptions.Draft); return RedirectToAction("List"); } public ActionResult Edit(string pageSlug) { - if (!Services.Authorizer.Authorize(Permissions.ModifyPages, T("Couldn't edit page"))) + if (!_services.Authorizer.Authorize(Permissions.ModifyPages, T("Couldn't edit page"))) return new HttpUnauthorizedResult(); Page page = _pageService.GetLatest(pageSlug); @@ -161,7 +152,7 @@ namespace Orchard.Pages.Controllers { return new NotFoundResult(); var model = new PageEditViewModel { - Page = Services.ContentManager.BuildEditorModel(page) + Page = _services.ContentManager.BuildEditorModel(page) }; return View(model); @@ -169,7 +160,7 @@ namespace Orchard.Pages.Controllers { [HttpPost, ActionName("Edit")] public ActionResult EditPOST(string pageSlug) { - if (!Services.Authorizer.Authorize(Permissions.ModifyPages, T("Couldn't edit page"))) + if (!_services.Authorizer.Authorize(Permissions.ModifyPages, T("Couldn't edit page"))) return new HttpUnauthorizedResult(); Page page = _pageService.GetPageOrDraft(pageSlug); @@ -198,25 +189,25 @@ namespace Orchard.Pages.Controllers { _pageService.Unpublish(page); var model = new PageEditViewModel { - Page = Services.ContentManager.UpdateEditorModel(page, this) + Page = _services.ContentManager.UpdateEditorModel(page, this) }; TryUpdateModel(model); if (!ModelState.IsValid) { - Services.TransactionManager.Cancel(); + _services.TransactionManager.Cancel(); return View(model); } - Services.Notifier.Information(T("Page information updated.")); + _services.Notifier.Information(T("Page information updated.")); return RedirectToAction("List"); } [HttpPost] public ActionResult Delete(string pageSlug) { - if (!Services.Authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page"))) + if (!_services.Authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page"))) return new HttpUnauthorizedResult(); Page page = _pageService.Get(pageSlug); @@ -226,7 +217,7 @@ namespace Orchard.Pages.Controllers { _pageService.Delete(page); - Services.Notifier.Information(T("Page was successfully deleted")); + _services.Notifier.Information(T("Page was successfully deleted")); return RedirectToAction("List"); } diff --git a/src/Orchard.Web/Packages/Orchard.Pages/Models/PageHandler.cs b/src/Orchard.Web/Packages/Orchard.Pages/Models/PageHandler.cs index fce30418b..ff7927afd 100644 --- a/src/Orchard.Web/Packages/Orchard.Pages/Models/PageHandler.cs +++ b/src/Orchard.Web/Packages/Orchard.Pages/Models/PageHandler.cs @@ -20,15 +20,15 @@ namespace Orchard.Pages.Models { Filters.Add(new ActivatingFilter(PageDriver.ContentType.Name)); Filters.Add(new StorageFilter(commonRepository)); - OnCreating((context, blog) => + OnCreating((context, page) => { - string slug = !string.IsNullOrEmpty(blog.Slug) - ? blog.Slug - : routableService.Slugify(blog.Title); + string slug = !string.IsNullOrEmpty(page.Slug) + ? page.Slug + : routableService.Slugify(page.Title); - blog.Slug = routableService.GenerateUniqueSlug(slug, + page.Slug = routableService.GenerateUniqueSlug(slug, pageService.Get(PageStatus.Published).Where( - p => p.Slug.StartsWith(slug)).Select( + p => p.Slug.StartsWith(slug) && p.Id != page.Id).Select( p => p.Slug)); }); } diff --git a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs index 14ddc2406..321ef92e8 100644 --- a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs +++ b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs @@ -231,7 +231,7 @@ namespace Orchard.Mvc.Html { tagBuilder.MergeAttribute("action", formAction); tagBuilder.MergeAttribute("method", HtmlHelper.GetFormMethodString(formMethod), true); - htmlHelper.ViewContext.HttpContext.Response.Output.Write(tagBuilder.ToString(TagRenderMode.StartTag)); + htmlHelper.ViewContext.Writer.Write(tagBuilder.ToString(TagRenderMode.StartTag)); return new MvcFormAntiForgeryPost(htmlHelper); } diff --git a/src/Orchard/Mvc/Html/LayoutExtensions.cs b/src/Orchard/Mvc/Html/LayoutExtensions.cs index d9541a885..fb0fc8d01 100644 --- a/src/Orchard/Mvc/Html/LayoutExtensions.cs +++ b/src/Orchard/Mvc/Html/LayoutExtensions.cs @@ -13,7 +13,7 @@ namespace Orchard.Mvc.Html { public static class LayoutExtensions { public static void RenderBody(this HtmlHelper html) { LayoutViewContext layoutViewContext = LayoutViewContext.From(html.ViewContext); - html.ViewContext.HttpContext.Response.Output.Write(layoutViewContext.BodyContent); + html.ViewContext.Writer.Write(layoutViewContext.BodyContent); } public static MvcHtmlString Body(this HtmlHelper html) { diff --git a/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs b/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs index bcc26fa91..1c99c4bda 100644 --- a/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs +++ b/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs @@ -10,7 +10,7 @@ namespace Orchard.Mvc.Html { } protected override void Dispose(bool disposing) { - _htmlHelper.ViewContext.HttpContext.Response.Output.Write(_htmlHelper.AntiForgeryTokenOrchard()); + _htmlHelper.ViewContext.Writer.Write(_htmlHelper.AntiForgeryTokenOrchard()); base.Dispose(disposing); }