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;
+
\ 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