From 468238e4d2cc39ddb1e15622fe4aaf01861dc2b2 Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 24 Sep 2013 09:39:55 +0200 Subject: [PATCH] more work on the sorting, almost works on tables now too --- .../directives/editors/umbsort.directive.js | 42 +++++++++++-------- .../src/less/dragdrop.less | 9 ++-- .../views/content/content.sort.controller.js | 8 ++++ .../src/views/content/sort.html | 17 +++++++- 4 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsort.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsort.directive.js index 73bfc5bd3b..d6f645a4b0 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsort.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsort.directive.js @@ -33,6 +33,11 @@ angular.module("umbraco.directives") scope.opts.nested= cfg.nested || true, scope.opts.drop= cfg.drop || true, scope.opts.drag= cfg.drag || true, + scope.opts.clone = cfg.clone || "
  • "; + scope.opts.mode = cfg.mode || "list"; + + scope.opts.itemSelectorFull = $.trim(scope.opts.itemPath + " " + scope.opts.itemSelector); + /* scope.opts.isValidTarget = function(item, container) { if(container.el.is(".umb-" + scope.opts.group + "-container")){ @@ -46,25 +51,30 @@ angular.module("umbraco.directives") element.addClass("umb-" + cfg.group + "-container"); scope.opts.onDrag = function (item, position) { - item.css({ - left: position.left - adjustment.left, - top: position.top - adjustment.top - }); + if(scope.opts.mode === "list"){ + item.css({ + left: position.left - adjustment.left, + top: position.top - adjustment.top + }); + } }; scope.opts.onDrop = function (item, targetContainer, _super) { - var clonedItem = $('
  • ').css({height: 0}); - item.after(clonedItem); - clonedItem.animate({'height': item.height()}); - item.animate(clonedItem.position(), function () { - clonedItem.detach(); - _super(item); - }); + if(scope.opts.mode === "list"){ + //list mode + var clonedItem = $(scope.opts.clone).css({height: 0}); + item.after(clonedItem); + clonedItem.animate({'height': item.height()}); + + item.animate(clonedItem.position(), function () { + clonedItem.detach(); + _super(item); + }); + } - - var children = $("li", targetContainer.el); + var children = $(scope.opts.itemSelectorFull, targetContainer.el); var targetIndex = children.index(item); var targetScope = $(targetContainer.el[0]).scope(); @@ -110,10 +120,6 @@ angular.module("umbraco.directives") umbSortContextInternal.sourceScope.opts.onReleaseHandler.call(this, item, _args); } } - - - - }; scope.changeIndex = function(from, to){ @@ -138,7 +144,7 @@ angular.module("umbraco.directives") }; scope.opts.onDragStart = function (item, container, _super) { - var children = $("li", container.el); + var children = $(scope.opts.itemSelectorFull, container.el); var offset = item.offset(); umbSortContextInternal.sourceIndex = children.index(item); diff --git a/src/Umbraco.Web.UI.Client/src/less/dragdrop.less b/src/Umbraco.Web.UI.Client/src/less/dragdrop.less index afae4d4da3..61ea911956 100644 --- a/src/Umbraco.Web.UI.Client/src/less/dragdrop.less +++ b/src/Umbraco.Web.UI.Client/src/less/dragdrop.less @@ -9,21 +9,22 @@ body.dragging, body.dragging * { } .umb-sort li{ - display: block; + display: block; margin: 5px; padding: 5px; border: 1px solid #CCC; background: @grayLighter; } -.umb-sort li.placeholder { +.umb-sort .placeholder { position: relative; margin: 0; padding: 0; border: none; } -.umb-sort li.placeholder:before { - position: absolute; + +.umb-sort .placeholder:before { + position: absolute; content: ""; width: 0; height: 0; 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 index d40c97f599..7c92367b46 100644 --- 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 @@ -21,7 +21,15 @@ function ContentSortController($scope, contentResource, treeService) { $scope.sortOptions ={ group: "pages", + containerSelector: 'table', + itemPath: '> tbody', + itemSelector: 'tr', + placeholder: '', + clone: "", + mode: "table", onSortHandler: function(item, args){ + + args.scope.changeIndex(args.oldIndex, args.newIndex); } }; diff --git a/src/Umbraco.Web.UI.Client/src/views/content/sort.html b/src/Umbraco.Web.UI.Client/src/views/content/sort.html index c86851929a..5538c14f21 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/sort.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/sort.html @@ -1,11 +1,26 @@
    + + + + + + + + + + + +
    Name
    {{page.name}}
    + {{ pagesToSort | json}}