diff --git a/.hgsubstate b/.hgsubstate
index d1fbf570d..2500c517b 100644
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -1,5 +1,5 @@
ec573e5476f7e8a5a61593d6393e9985e9484fcc src/Orchard.Web/Modules/Orchard.Forms
-431490c4617992f03bcd1c150828a0ea35934d23 src/Orchard.Web/Modules/Orchard.Projections
-01b83c05050bb731d9f69256bbe8884d458ea1c9 src/Orchard.Web/Modules/Orchard.Rules
+541c387200e9354aa5d53b4cf8819349dd60d0d9 src/Orchard.Web/Modules/Orchard.Projections
+1146de194cce920d47c00eced57f44bf6f135ad6 src/Orchard.Web/Modules/Orchard.Rules
65057c6a5cd71f7994ba9bcbeece50dbb737620e src/Orchard.Web/Modules/Orchard.TaskLease
c2e3c396c1fc6c60b131bfc9f83564c6f8d18e58 src/Orchard.Web/Modules/Orchard.Tokens
diff --git a/src/Orchard.Web/Core/Contents/Views/Content.SummaryAdmin.cshtml b/src/Orchard.Web/Core/Contents/Views/Content.SummaryAdmin.cshtml
index a76fbfe77..3e77d7210 100644
--- a/src/Orchard.Web/Core/Contents/Views/Content.SummaryAdmin.cshtml
+++ b/src/Orchard.Web/Core/Contents/Views/Content.SummaryAdmin.cshtml
@@ -18,7 +18,7 @@
@Display(Model.Actions)
@Html.ItemEditLink(T("Edit").Text, contentItem) @T(" | ")
- @Html.Link(T("Delete").Text, Url.Action("Remove", "Admin", new { area = "Contents", id = contentItem.Id, returnUrl }), new { itemprop = "RemoveUrl UnsafeUrl" })
+ @Html.Link(T("Delete").Text, Url.ItemRemoveUrl(contentItem, new { returnUrl }), new { itemprop = "RemoveUrl UnsafeUrl" })
@if (Model.Content != null) {
@Display(Model.Content)
diff --git a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
index a6996aeef..cd24a218d 100644
--- a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
@@ -109,7 +109,7 @@ namespace Orchard.Core.Navigation.Controllers {
return RedirectToAction("Index");
}
- [ValidateAntiForgeryTokenOrchard]
+ [HttpPost]
public ActionResult Delete(int id) {
if (!_services.Authorizer.Authorize(Permissions.ManageMainMenu, T("Couldn't manage the main menu")))
return new HttpUnauthorizedResult();
diff --git a/src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml b/src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml
index 855edb6e4..83c531456 100644
--- a/src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml
+++ b/src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml
@@ -29,7 +29,7 @@
|
|
@if (!menuPartEntry.IsMenuItem) { } else {} |
- @T("Delete") |
+ @Html.ActionLink(T("Delete").Text, "Delete", new { id = menuPartEntry.MenuItemId }, new { @class="remove", itemprop="RemoveUrl UnsafeUrl" }) |
++menuPartEntryIndex;
}
diff --git a/src/Orchard.Web/Core/Shapes/Scripts/base.js b/src/Orchard.Web/Core/Shapes/Scripts/base.js
index a52bb0e86..d94688056 100644
--- a/src/Orchard.Web/Core/Shapes/Scripts/base.js
+++ b/src/Orchard.Web/Core/Shapes/Scripts/base.js
@@ -208,7 +208,14 @@
}
form.css({ "position": "absolute", "left": "-9999em" });
$("body").append(form);
- _this.click(function () { form.submit(); return false; });
+ _this.click(function () {
+ if (_this.filter("[itemprop~='RemoveUrl']").length == 1) {
+ if (!confirm(confirmRemoveMessage)) {
+ return false;
+ }
+ }
+ form.submit();
+ });
});
});
})(jQuery);
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs
index 026cdac90..e13f75479 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs
@@ -63,6 +63,7 @@ namespace Orchard.Packaging.Controllers {
});
}
+ [HttpPost]
public ActionResult Remove(int id) {
if (_shellSettings.Name != ShellSettings.DefaultName || !Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to remove sources")))
return new HttpUnauthorizedResult();
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Sources.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Sources.cshtml
index 3d38b03be..24c9cfc01 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Sources.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Sources.cshtml
@@ -6,7 +6,7 @@
@Html.ActionLink(T("Add Feed").Text, "AddSource", new { }, new { @class = "button primaryAction" })
-
+@using (Html.BeginFormAntiForgeryPost()) {
\ No newline at end of file
+
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js b/src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js
index 280cc6d0c..d08d93ea2 100644
--- a/src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js
+++ b/src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js
@@ -61,4 +61,13 @@
$(".bulk-actions-auto select").change(function () {
$(this).closest("form").find(".apply-bulk-actions-auto:first").click();
});
+
+ $("[itemprop~='RemoveUrl']").on("click", function (event) {
+ // don't show the confirm dialog if the link is also UnsafeUrl, as it will already be handled in base.js
+ if ($(this).filter("[itemprop~='UnsafeUrl']").length == 1) {
+ return false;
+ }
+
+ return confirm(confirmRemoveMessage);
+ });
})(jQuery);
\ No newline at end of file
diff --git a/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml b/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml
index f129c1827..b9df1a943 100644
--- a/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml
+++ b/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml
@@ -92,4 +92,12 @@
+}
+
+@using (Script.Foot()) {
+
}
\ No newline at end of file
diff --git a/src/Orchard/Mvc/Html/ContentItemExtensions.cs b/src/Orchard/Mvc/Html/ContentItemExtensions.cs
index de99d7165..f5cf8ca04 100644
--- a/src/Orchard/Mvc/Html/ContentItemExtensions.cs
+++ b/src/Orchard/Mvc/Html/ContentItemExtensions.cs
@@ -13,6 +13,9 @@ namespace Orchard.Mvc.Html {
return MvcHtmlString.Create(html.Encode(metadata.DisplayText));
}
+ public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content) {
+ return ItemDisplayLink(html, null, content);
+ }
public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
@@ -25,8 +28,39 @@ namespace Orchard.Mvc.Html {
metadata.DisplayRouteValues);
}
- public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content) {
- return ItemDisplayLink(html, null, content);
+ public static string ItemDisplayUrl(this UrlHelper urlHelper, IContent content) {
+ var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
+ if (metadata.DisplayRouteValues == null)
+ return null;
+
+ return urlHelper.Action(
+ Convert.ToString(metadata.DisplayRouteValues["action"]),
+ metadata.DisplayRouteValues);
+ }
+
+ public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, IContent content) {
+ return ItemRemoveLink(html, null, content, null);
+ }
+
+ public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) {
+ var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
+ if (metadata.RemoveRouteValues == null)
+ return null;
+
+ return html.ActionLink(
+ NonNullOrEmpty(linkText, metadata.DisplayText, "remove"),
+ Convert.ToString(metadata.RemoveRouteValues["action"]),
+ metadata.RemoveRouteValues.Merge(additionalRouteValues));
+ }
+
+ public static string ItemRemoveUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues) {
+ var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
+ if (metadata.RemoveRouteValues == null)
+ return null;
+
+ return urlHelper.Action(
+ Convert.ToString(metadata.RemoveRouteValues["action"]),
+ metadata.RemoveRouteValues.Merge(additionalRouteValues));
}
public static MvcHtmlString ItemEditLinkWithReturnUrl(this HtmlHelper html, string linkText, IContent content) {
@@ -67,16 +101,6 @@ namespace Orchard.Mvc.Html {
metadata.AdminRouteValues.Merge(additionalRouteValues));
}
- public static string ItemDisplayUrl(this UrlHelper urlHelper, IContent content) {
- var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
- if (metadata.DisplayRouteValues == null)
- return null;
-
- return urlHelper.Action(
- Convert.ToString(metadata.DisplayRouteValues["action"]),
- metadata.DisplayRouteValues);
- }
-
public static string ItemEditUrl(this UrlHelper urlHelper, IContent content) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.DisplayRouteValues == null)