From bcf60a04dd12e89ad8984f165abae7a010383e9c Mon Sep 17 00:00:00 2001 From: loudej Date: Thu, 26 Nov 2009 03:00:12 +0000 Subject: [PATCH] Updating sandbox sample --HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4042288 --- src/Orchard.Tests/Models/ContentQueryTests.cs | 5 +- .../Controllers/ContentController.cs | 16 +++-- .../ViewModels/ContentIndexViewModel.cs | 2 +- .../Orchard.DevTools/Views/Content/Index.aspx | 6 +- .../Controllers/PageController.cs | 56 +++++++++++++---- .../ViewModels/PageCreateViewModel.cs | 3 +- .../ViewModels/PageEditViewModel.cs | 3 +- .../ViewModels/PageIndexViewModel.cs | 2 +- .../ViewModels/PageShowViewModel.cs | 3 +- .../Orchard.Sandbox/Views/Page/Create.aspx | 1 + .../Orchard.Sandbox/Views/Page/Edit.aspx | 7 ++- .../Orchard.Sandbox/Views/Page/Index.aspx | 60 +++++++++---------- .../Orchard.Sandbox/Views/Page/Show.aspx | 1 + src/Orchard.Web/Views/Shared/Messages.ascx | 4 +- 14 files changed, 102 insertions(+), 67 deletions(-) diff --git a/src/Orchard.Tests/Models/ContentQueryTests.cs b/src/Orchard.Tests/Models/ContentQueryTests.cs index 77e9eb3ac..cfcaa8bbd 100644 --- a/src/Orchard.Tests/Models/ContentQueryTests.cs +++ b/src/Orchard.Tests/Models/ContentQueryTests.cs @@ -155,7 +155,10 @@ namespace Orchard.Tests.Models { _manager.Create("gamma", init => { init.Record.Frap = "three"; }); _manager.Create("gamma", init => { init.Record.Frap = "four"; }); _session.Flush(); - var twoOrFour = _manager.Query().Where(x => x.Frap == "one" || x.Frap == "four").List(); + + var twoOrFour = _manager.Query() + .Where(x => x.Frap == "one" || x.Frap == "four") + .List(); Assert.That(twoOrFour.Count(), Is.EqualTo(2)); Assert.That(twoOrFour.Count(x => x.Has()), Is.EqualTo(2)); diff --git a/src/Orchard.Web/Packages/Orchard.DevTools/Controllers/ContentController.cs b/src/Orchard.Web/Packages/Orchard.DevTools/Controllers/ContentController.cs index b0bea4e25..78367b7a6 100644 --- a/src/Orchard.Web/Packages/Orchard.DevTools/Controllers/ContentController.cs +++ b/src/Orchard.Web/Packages/Orchard.DevTools/Controllers/ContentController.cs @@ -9,10 +9,8 @@ using Orchard.DevTools.ViewModels; using Orchard.Models; using Orchard.Models.Records; -namespace Orchard.DevTools.Controllers -{ - public class ContentController : Controller - { +namespace Orchard.DevTools.Controllers { + public class ContentController : Controller { private readonly IRepository _contentItemRepository; private readonly IRepository _contentTypeRepository; private readonly IContentManager _contentManager; @@ -28,15 +26,15 @@ namespace Orchard.DevTools.Controllers public ActionResult Index() { return View(new ContentIndexViewModel { - Items = _contentItemRepository.Table.ToList(), + Items = _contentManager.Query().OrderBy(x => x.Id).List(), Types = _contentTypeRepository.Table.ToList() }); } public ActionResult Details(int id) { var model = new ContentDetailsViewModel { - Item = _contentManager.Get(id) - }; + Item = _contentManager.Get(id) + }; model.PartTypes = model.Item.ContentItem.Parts .Select(x => x.GetType()) .SelectMany(x => AllTypes(x)) @@ -49,11 +47,11 @@ namespace Orchard.DevTools.Controllers static IEnumerable AllTypes(Type type) { var scan = type; - while(scan != null && scan != typeof(Object) && scan != typeof(ContentPart)) { + while (scan != null && scan != typeof(Object) && scan != typeof(ContentPart)) { yield return scan; scan = scan.BaseType; } - foreach(var itf in type.GetInterfaces()) { + foreach (var itf in type.GetInterfaces()) { yield return itf; } } diff --git a/src/Orchard.Web/Packages/Orchard.DevTools/ViewModels/ContentIndexViewModel.cs b/src/Orchard.Web/Packages/Orchard.DevTools/ViewModels/ContentIndexViewModel.cs index 7b70c7aec..21b00d4b2 100644 --- a/src/Orchard.Web/Packages/Orchard.DevTools/ViewModels/ContentIndexViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.DevTools/ViewModels/ContentIndexViewModel.cs @@ -9,6 +9,6 @@ using Orchard.Mvc.ViewModels; namespace Orchard.DevTools.ViewModels { public class ContentIndexViewModel : BaseViewModel { public IEnumerable Types { get; set; } - public IEnumerable Items { get; set; } + public IEnumerable Items { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.DevTools/Views/Content/Index.aspx b/src/Orchard.Web/Packages/Orchard.DevTools/Views/Content/Index.aspx index 4904ac12e..a778aa3a1 100644 --- a/src/Orchard.Web/Packages/Orchard.DevTools/Views/Content/Index.aspx +++ b/src/Orchard.Web/Packages/Orchard.DevTools/Views/Content/Index.aspx @@ -25,14 +25,16 @@

Content Types

    <%foreach(var item in Model.Types.OrderBy(x=>x.Name)){%> -
  • <%=Html.Encode(item.Name) %>
  • +
  • <%=Html.Encode(item.Name) %>
  • <%}%>

Content Items

    <%foreach(var item in Model.Items.OrderBy(x=>x.Id)){%> -
  • <%=Html.ActionLink(item.Id+": "+item.ContentType.Name, "details", "content", new{item.Id},new{}) %>
  • +
  • <%=Html.ActionLink(item.Id+": "+item.ContentType, "details", "content", new{item.Id},new{}) %> +<%=Html.ItemDisplayLink("view", item) %> + <%=Html.ItemEditLink("edit", item) %>
  • <%}%>
diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs index 42479d4e0..bbe2e725f 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs @@ -3,28 +3,35 @@ using System.Linq; using System.Web.Mvc; using Orchard.Core.Common.Models; using Orchard.Data; +using Orchard.Localization; using Orchard.Models; using Orchard.Models.Driver; using Orchard.Sandbox.Models; using Orchard.Sandbox.ViewModels; +using Orchard.Security; using Orchard.Settings; +using Orchard.UI.Notify; -namespace Orchard.Sandbox.Controllers -{ +namespace Orchard.Sandbox.Controllers { public class PageController : Controller, IUpdateModel { - private readonly IRepository _pageRepository; private readonly IContentManager _contentManager; + private readonly INotifier _notifier; - public PageController(IRepository pageRepository, IContentManager contentManager) { - _pageRepository = pageRepository; + public PageController(IContentManager contentManager, INotifier notifier) { _contentManager = contentManager; + _notifier = notifier; } - public ActionResult Index() - { - var pages = _pageRepository.Fetch(x => true, o => o.Asc(x => x.Name)); + public ISite CurrentSite { get; set; } + public IUser CurrentUser { get; set; } + public Localizer T { get; set; } + + + public ActionResult Index() { var model = new PageIndexViewModel { - Pages = pages.Select(x => _contentManager.Get(x.Id)).ToList() + Pages = _contentManager.Query() + .OrderBy(x => x.Name) + .List() }; return View(model); } @@ -38,13 +45,24 @@ namespace Orchard.Sandbox.Controllers } public ActionResult Create() { + var settings = CurrentSite.Get>(); + if (settings.Record.AllowAnonymousEdits == false && CurrentUser == null) { + _notifier.Error(T("Anonymous users can not create pages")); + return RedirectToAction("index"); + } + return View(new PageCreateViewModel()); } - public ISite CurrentSite { get; set; } [HttpPost] public ActionResult Create(PageCreateViewModel model) { + var settings = CurrentSite.Get>(); + if (settings.Record.AllowAnonymousEdits == false && CurrentUser == null) { + _notifier.Error(T("Anonymous users can not create pages")); + return RedirectToAction("index"); + } + var page = _contentManager.Create("sandboxpage", item => { item.Record.Name = model.Name; }); @@ -53,15 +71,27 @@ namespace Orchard.Sandbox.Controllers public ActionResult Edit(int id) { - var model = new PageEditViewModel {Page = _contentManager.Get(id)}; - model.Editors = _contentManager.GetEditors(model.Page.ContentItem); + var settings = CurrentSite.Get>(); + if (settings.Record.AllowAnonymousEdits == false && CurrentUser == null) { + _notifier.Error(T("Anonymous users can not edit pages")); + return RedirectToAction("show", new{id}); + } + + var model = new PageEditViewModel { Page = _contentManager.Get(id) }; + model.Editors = _contentManager.GetEditors(model.Page); return View(model); } [HttpPost] public ActionResult Edit(int id, FormCollection input) { + var settings = CurrentSite.Get>(); + if (settings.Record.AllowAnonymousEdits == false && CurrentUser == null) { + _notifier.Error(T("Anonymous users can not edit pages")); + return RedirectToAction("show", new { id }); + } + var model = new PageEditViewModel { Page = _contentManager.Get(id) }; - model.Editors = _contentManager.UpdateEditors(model.Page.ContentItem, this); + model.Editors = _contentManager.UpdateEditors(model.Page, this); if (!TryUpdateModel(model, input.ToValueProvider())) return View(model); diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageCreateViewModel.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageCreateViewModel.cs index 584c8a1d5..f75526599 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageCreateViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageCreateViewModel.cs @@ -2,10 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using Orchard.Mvc.ViewModels; using Orchard.Sandbox.Models; namespace Orchard.Sandbox.ViewModels { - public class PageCreateViewModel { + public class PageCreateViewModel : BaseViewModel { public string Name { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageEditViewModel.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageEditViewModel.cs index f1049fa26..260c36963 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageEditViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageEditViewModel.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; +using Orchard.Mvc.ViewModels; using Orchard.Sandbox.Models; using Orchard.UI.Models; namespace Orchard.Sandbox.ViewModels { - public class PageEditViewModel { + public class PageEditViewModel : BaseViewModel { public SandboxPage Page { get; set; } public IEnumerable Editors { get; set; } } diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageIndexViewModel.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageIndexViewModel.cs index 9e3189aac..9c6792cbc 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageIndexViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageIndexViewModel.cs @@ -4,6 +4,6 @@ using Orchard.Sandbox.Models; namespace Orchard.Sandbox.ViewModels { public class PageIndexViewModel : BaseViewModel { - public IList Pages { get; set; } + public IEnumerable Pages { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageShowViewModel.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageShowViewModel.cs index 69c5c20a3..f6774c73e 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageShowViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/ViewModels/PageShowViewModel.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; +using Orchard.Mvc.ViewModels; using Orchard.Sandbox.Models; using Orchard.UI.Models; namespace Orchard.Sandbox.ViewModels { - public class PageShowViewModel { + public class PageShowViewModel : BaseViewModel { public SandboxPage Page { get; set; } public IEnumerable Displays { get; set; } } diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Create.aspx b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Create.aspx index ebbb5f0ff..1ef085476 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Create.aspx +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Create.aspx @@ -19,6 +19,7 @@ <% Html.Include("Navigation"); %>
+ <% Html.RenderPartial("Messages", Model.Messages); %>

Create Page

<%using (Html.BeginForm()) { %> diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Edit.aspx b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Edit.aspx index 8e366049d..eff76094e 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Edit.aspx +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Edit.aspx @@ -19,15 +19,16 @@ <% Html.Include("Navigation"); %>
+ <% Html.RenderPartial("Messages", Model.Messages); %>

Edit Page

<%using (Html.BeginForm()) { %>
  • <%=Html.LabelFor(x => x.Page.Record.Name)%><%=Html.EditorFor(x => x.Page.Record.Name)%>
  • - <%foreach (var x in Model.Editors) { %> - <%=Html.EditorFor(m=>x.Model, x.TemplateName, x.Prefix) %> - <%} %> + <%foreach (var x in Model.Editors) { %> + <%=Html.EditorFor(m=>x.Model, x.TemplateName, x.Prefix) %> + <%} %>
diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Index.aspx b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Index.aspx index 6c2f93012..aca77fd48 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Index.aspx +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Index.aspx @@ -1,43 +1,39 @@ <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> -<%@ Import Namespace="Orchard.Sandbox.ViewModels"%> -<%@ Import Namespace="Orchard.Mvc.Html"%> +<%@ Import Namespace="Orchard.Sandbox.ViewModels" %> +<%@ Import Namespace="Orchard.Mvc.Html" %> - TwoColumns " rel="stylesheet" type="text/css" /> - - - -
- - -
-

Sandbox Pages

-
    -
  • <%=Html.ActionLink("Create new page", "create") %>
  • -<%foreach(var item in Model.Pages.OrderBy(x=>x.Record.Name)){%> -
  • <%=Html.ActionLink(item.Record.Name??"(no name)", "show", new { item.ContentItem.Id }, new{})%>
  • -<%}%> -
- -
- - -
+ +
+ +
+ <% Html.RenderPartial("Messages", Model.Messages); %> +

+ Sandbox Pages

+
    +
  • + <%=Html.ActionLink("Create new page", "create") %>
  • + <%foreach (var item in Model.Pages.OrderBy(x => x.Record.Name)) {%> +
  • + <%=Html.ActionLink(item.Record.Name??"(no name)", "show", new { item.ContentItem.Id }, new{})%>
  • + <%}%> +
+
+ +
- - diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Show.aspx b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Show.aspx index 99619549f..5e4340a03 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Show.aspx +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Views/Page/Show.aspx @@ -19,6 +19,7 @@ <% Html.Include("Navigation"); %>
+ <% Html.RenderPartial("Messages", Model.Messages); %>

<%=Html.Encode(Model.Page.Record.Name) %>

diff --git a/src/Orchard.Web/Views/Shared/Messages.ascx b/src/Orchard.Web/Views/Shared/Messages.ascx index 7d684faf9..87120fde8 100644 --- a/src/Orchard.Web/Views/Shared/Messages.ascx +++ b/src/Orchard.Web/Views/Shared/Messages.ascx @@ -12,6 +12,6 @@ string CssClassName(NotifyType type) { return "validation-summary-errors"; } -<% foreach (var item in Model) { %> +<%if (Model != null){ foreach (var item in Model) { %>
<%=Html.Encode(item.Message) %>
-<% } %> +<% }} %>