diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.sort.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.sort.controller.js
new file mode 100644
index 0000000000..7f980cae1a
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/content/content.sort.controller.js
@@ -0,0 +1,78 @@
+(function () {
+ "use strict";
+
+ function ContentSortController($scope, $timeout) {
+
+ var vm = this;
+
+ vm.loading = false;
+ vm.nodes = [];
+ vm.saveButtonState = "init";
+ vm.sortableOptions = {
+ distance: 10,
+ tolerance: "pointer",
+ opacity: 0.7,
+ scroll: true,
+ cursor: "move",
+ helper: fixSortableHelper
+ };
+
+ vm.save = save;
+
+
+ function activate() {
+
+ vm.loading = true;
+
+ // fake loading
+ $timeout(function () {
+
+ vm.loading = false;
+
+ vm.nodes = [
+ {
+ "name": "Node 1",
+ "creationDate": "date",
+ "sortOrder": 0
+ },
+ {
+ "name": "Node 2",
+ "creationDate": "date",
+ "sortOrder": 1
+ },
+ {
+ "name": "Node 3",
+ "creationDate": "date",
+ "sortOrder": 2
+ }
+ ];
+
+ }, 1000);
+ }
+
+ function save() {
+
+ console.log(vm.nodes);
+ vm.saveButtonState = "busy";
+
+ // fake loading
+ $timeout(function () {
+ vm.saveButtonState = "success";
+ }, 1000);
+
+ }
+
+ function fixSortableHelper(e, ui) {
+ // keep the correct width of each table cell when sorting
+ ui.children().each(function () {
+ $(this).width($(this).width());
+ });
+ return ui;
+ }
+
+ activate();
+
+ }
+
+ angular.module("umbraco").controller("Umbraco.Editors.Content.SortController", ContentSortController);
+})();
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/views/content/sort.html b/src/Umbraco.Web.UI.Client/src/views/content/sort.html
new file mode 100644
index 0000000000..f680d64560
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/content/sort.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+
+
+
+
+ | {{ node.name }} |
+ {{ node.creationDate }} |
+ {{ node.sortOrder }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Umbraco.Web/Trees/ContentTreeController.cs b/src/Umbraco.Web/Trees/ContentTreeController.cs
index d416a2ee0f..e80867aadf 100644
--- a/src/Umbraco.Web/Trees/ContentTreeController.cs
+++ b/src/Umbraco.Web/Trees/ContentTreeController.cs
@@ -117,7 +117,7 @@ namespace Umbraco.Web.Trees
//these two are the standard items
menu.Items.Add(Services.TextService.Localize("actions", ActionNew.Instance.Alias));
- menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias), true).ConvertLegacyMenuItem(null, "content", "content");
+ menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias), true);
//filter the standard items
FilterUserAllowedMenuItems(menu, nodeActions);
@@ -228,7 +228,7 @@ namespace Umbraco.Web.Trees
AddActionNode(item, menu);
AddActionNode(item, menu, convert: true);
- AddActionNode(item, menu, true, true);
+ AddActionNode(item, menu, true);
AddActionNode(item, menu, convert: true);
AddActionNode(item, menu, convert: true);
diff --git a/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs b/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs
index 410c74c0dc..9aec48825d 100644
--- a/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs
+++ b/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs
@@ -216,12 +216,6 @@ namespace Umbraco.Web.Trees
new LegacyUrlAction(
"createFolder.aspx?nodeId=" + nodeId + "&nodeType=" + nodeType + "&nodeName=" + nodeName + "&rnd=" + DateTime.UtcNow.Ticks,
Current.Services.TextService.Localize("actions/create")));
- case "UmbClientMgr.appActions().actionSort()":
- return Attempt.Succeed(
- new LegacyUrlAction(
- "dialogs/sort.aspx?id=" + nodeId + "&nodeType=" + nodeType + "&app=" + currentSection + "&rnd=" + DateTime.UtcNow.Ticks,
- Current.Services.TextService.Localize("actions/sort")));
-
case "UmbClientMgr.appActions().actionProtect()":
return Attempt.Succeed(
new LegacyUrlAction(
diff --git a/src/Umbraco.Web/Trees/MediaTreeController.cs b/src/Umbraco.Web/Trees/MediaTreeController.cs
index 4c3453e5de..53f1b0a97e 100644
--- a/src/Umbraco.Web/Trees/MediaTreeController.cs
+++ b/src/Umbraco.Web/Trees/MediaTreeController.cs
@@ -96,7 +96,7 @@ namespace Umbraco.Web.Trees
// root actions
menu.Items.Add(Services.TextService.Localize("actions", ActionNew.Instance.Alias));
- menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias), true).ConvertLegacyMenuItem(null, "media", "media");
+ menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias), true);
menu.Items.Add(Services.TextService.Localize("actions", ActionRefresh.Instance.Alias), true);
return menu;
}
@@ -125,7 +125,7 @@ namespace Umbraco.Web.Trees
menu.Items.Add(Services.TextService.Localize("actions", ActionNew.Instance.Alias));
menu.Items.Add(Services.TextService.Localize("actions", ActionMove.Instance.Alias));
menu.Items.Add(Services.TextService.Localize("actions", ActionDelete.Instance.Alias));
- menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias)).ConvertLegacyMenuItem(item, "media", "media");
+ menu.Items.Add(Services.TextService.Localize("actions", ActionSort.Instance.Alias));
menu.Items.Add(Services.TextService.Localize("actions", ActionRefresh.Instance.Alias), true);
//if the media item is in the recycle bin, don't have a default menu, just show the regular menu
diff --git a/src/Umbraco.Web/_Legacy/Actions/ActionSort.cs b/src/Umbraco.Web/_Legacy/Actions/ActionSort.cs
index cd118a523c..b813dcbc8c 100644
--- a/src/Umbraco.Web/_Legacy/Actions/ActionSort.cs
+++ b/src/Umbraco.Web/_Legacy/Actions/ActionSort.cs
@@ -36,7 +36,7 @@ namespace Umbraco.Web._Legacy.Actions
{
get
{
- return string.Format("{0}.actionSort()", ClientTools.Scripts.GetAppActions);
+ return null;
}
}