diff --git a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs index 98c949160..ff30279a6 100644 --- a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs @@ -260,7 +260,7 @@ namespace Orchard.Core.Contents.Controllers { } [HttpPost, ActionName("Edit")] - public ActionResult EditPOST(int id) { + public ActionResult EditPOST(int id, string returnUrl) { var contentItem = _contentManager.Get(id, VersionOptions.DraftRequired); if (contentItem == null) @@ -282,6 +282,10 @@ namespace Orchard.Core.Contents.Controllers { Services.Notifier.Information(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName) ? T("Your content has been saved.") : T("Your {0} has been saved.", contentItem.TypeDefinition.DisplayName)); + + if (!String.IsNullOrEmpty(returnUrl)) + return Redirect(returnUrl); + return RedirectToAction("Edit", new RouteValueDictionary { { "Id", contentItem.Id } }); } diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj index 37ab03bb7..37d2662bf 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj @@ -115,11 +115,13 @@ + + diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs index 0a52c4f72..414d858f8 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs @@ -4,8 +4,24 @@ using Orchard.Widgets.Models; namespace Orchard.Widgets { public class Shapes : IShapeTableProvider { + private readonly IOrchardServices _orchardServices; + + public Shapes(IOrchardServices orchardServices) { + _orchardServices = orchardServices; + } + public void Discover(ShapeTableBuilder builder) { builder.Describe("Items_Widget") + .Configure(descriptor => { + if (_orchardServices.Authorizer.Authorize(Permissions.ManageWidgets)) + descriptor.Wrappers.Add("Widget_Manage"); + else + descriptor.Wrappers.Add("Widget"); + }) + .OnCreated(created => { + var widget = created.Shape; + widget.Main.Add(created.New.PlaceChildContent(Source: widget)); + }) .OnDisplaying(displaying => { ContentItem contentItem = displaying.Shape.ContentItem; if (contentItem != null) { diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.Manage.cshtml b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.Manage.cshtml new file mode 100644 index 000000000..60d620f0d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.Manage.cshtml @@ -0,0 +1,5 @@ +@using Orchard.ContentManagement; +
+
@Html.ItemEditLinkWithReturnUrl(T("Edit").Text, (ContentItem)Model.ContentItem)
+@Display(Model.Main) +
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.cshtml b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.cshtml new file mode 100644 index 000000000..d2b414465 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Widget.cshtml @@ -0,0 +1 @@ +@Display(Model.Main) \ No newline at end of file