From 972f9b35469de1093964dc548876bdca7ad7dcfd Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2017 10:43:10 +0100 Subject: [PATCH 01/10] implement mini list view for content move dialog --- .../views/content/content.move.controller.js | 71 ++++++++----------- .../src/views/content/move.html | 54 ++++++++------ 2 files changed, 65 insertions(+), 60 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.move.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.move.controller.js index c6de405ff6..ce81a60a38 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.move.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.move.controller.js @@ -20,53 +20,29 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.MoveController", var node = dialogOptions.currentNode; function nodeSelectHandler(ev, args) { - args.event.preventDefault(); - args.event.stopPropagation(); - if (args.node.metaData.listViewNode) { - //check if list view 'search' node was selected + if(args && args.event) { + args.event.preventDefault(); + args.event.stopPropagation(); + } - $scope.searchInfo.showSearch = true; - $scope.searchInfo.searchFromId = args.node.metaData.listViewNode.id; - $scope.searchInfo.searchFromName = args.node.metaData.listViewNode.name; - } - else { - eventsService.emit("editors.content.moveController.select", args); + eventsService.emit("editors.content.moveController.select", args); - if ($scope.target) { - //un-select if there's a current one selected - $scope.target.selected = false; - } + if ($scope.target) { + //un-select if there's a current one selected + $scope.target.selected = false; + } + + $scope.target = args.node; + $scope.target.selected = true; - $scope.target = args.node; - $scope.target.selected = true; - } } function nodeExpandedHandler(ev, args) { - if (angular.isArray(args.children)) { - - //iterate children - _.each(args.children, function (child) { - //check if any of the items are list views, if so we need to add a custom - // child: A node to activate the search - if (child.metaData.isContainer) { - child.hasChildren = true; - child.children = [ - { - level: child.level + 1, - hasChildren: false, - name: searchText, - metaData: { - listViewNode: child, - }, - cssClass: "icon umb-tree-icon sprTree icon-search", - cssClasses: ["not-published"] - } - ]; - } - }); - } + // open mini list view for list views + if (args.node.metaData.isContainer) { + openMiniListView(args.node); + } } $scope.hideSearch = function () { @@ -136,4 +112,19 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.MoveController", $scope.dialogTreeEventHandler.unbind("treeNodeSelect", nodeSelectHandler); $scope.dialogTreeEventHandler.unbind("treeNodeExpanded", nodeExpandedHandler); }); + + // Mini list view + $scope.selectListViewNode = function (node) { + node.selected = node.selected === true ? false : true; + nodeSelectHandler({}, { node: node }); + }; + + $scope.closeMiniListView = function () { + $scope.miniListView = undefined; + }; + + function openMiniListView(node) { + $scope.miniListView = node; + } + }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/content/move.html b/src/Umbraco.Web.UI.Client/src/views/content/move.html index 6bf3ca817a..7bf54828cd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/move.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/move.html @@ -24,31 +24,45 @@
- - +
+ + -
+
- - + + -
- - +
+ + +
+ + +
From 0a56f46b12f9f4a9fbae41f987ec31eb5d2cfc60 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2017 10:44:55 +0100 Subject: [PATCH 02/10] Implement mini list view for content copy dialog --- .../views/content/content.copy.controller.js | 70 ++++++++----------- .../src/views/content/copy.html | 55 +++++++++------ 2 files changed, 64 insertions(+), 61 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js index 9fb6e60c66..9940aebe64 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js @@ -22,54 +22,29 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.CopyController", var node = dialogOptions.currentNode; function nodeSelectHandler(ev, args) { - args.event.preventDefault(); - args.event.stopPropagation(); - if (args.node.metaData.listViewNode) { - //check if list view 'search' node was selected + if(args && args.event) { + args.event.preventDefault(); + args.event.stopPropagation(); + } - $scope.searchInfo.showSearch = true; - $scope.searchInfo.searchFromId = args.node.metaData.listViewNode.id; - $scope.searchInfo.searchFromName = args.node.metaData.listViewNode.name; - } - else { - eventsService.emit("editors.content.copyController.select", args); + eventsService.emit("editors.content.copyController.select", args); - if ($scope.target) { - //un-select if there's a current one selected - $scope.target.selected = false; - } + if ($scope.target) { + //un-select if there's a current one selected + $scope.target.selected = false; + } - $scope.target = args.node; - $scope.target.selected = true; - } + $scope.target = args.node; + $scope.target.selected = true; } function nodeExpandedHandler(ev, args) { - if (angular.isArray(args.children)) { - - //iterate children - _.each(args.children, function (child) { - //check if any of the items are list views, if so we need to add a custom - // child: A node to activate the search - if (child.metaData.isContainer) { - child.hasChildren = true; - child.children = [ - { - level: child.level + 1, - hasChildren: false, - name: searchText, - metaData: { - listViewNode: child, - }, - cssClass: "icon umb-tree-icon sprTree icon-search", - cssClasses: ["not-published"] - } - ]; - } - }); - } + // open mini list view for list views + if (args.node.metaData.isContainer) { + openMiniListView(args.node); + } } $scope.hideSearch = function () { @@ -136,4 +111,19 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.CopyController", $scope.dialogTreeEventHandler.unbind("treeNodeSelect", nodeSelectHandler); $scope.dialogTreeEventHandler.unbind("treeNodeExpanded", nodeExpandedHandler); }); + + // Mini list view + $scope.selectListViewNode = function (node) { + node.selected = node.selected === true ? false : true; + nodeSelectHandler({}, { node: node }); + }; + + $scope.closeMiniListView = function () { + $scope.miniListView = undefined; + }; + + function openMiniListView(node) { + $scope.miniListView = node; + } + }); diff --git a/src/Umbraco.Web.UI.Client/src/views/content/copy.html b/src/Umbraco.Web.UI.Client/src/views/content/copy.html index 371e156513..eca7a60a44 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/copy.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/copy.html @@ -25,36 +25,49 @@
- - +
+ + -
+
- - + + -
- - +
+ + +
+ + + - From df9d09725be61bd16a09367b982899903cc8667f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2017 11:25:00 +0100 Subject: [PATCH 03/10] add entity helper so we don't have to hard code these values all over the place --- .../common/services/entityhelper.service.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/common/services/entityhelper.service.js diff --git a/src/Umbraco.Web.UI.Client/src/common/services/entityhelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/entityhelper.service.js new file mode 100644 index 0000000000..cb87787654 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/services/entityhelper.service.js @@ -0,0 +1,29 @@ +(function() { + 'use strict'; + + function entityHelper() { + + function getEntityTypeFromSection(section) { + if (section === "member") { + return "Member"; + } + else if (section === "media") { + return "Media"; + } else { + return "Document"; + } + } + + //////////// + + var service = { + getEntityTypeFromSection: getEntityTypeFromSection + }; + + return service; + + } + + angular.module('umbraco.services').factory('entityHelper', entityHelper); + +})(); From d2164bc94db24cad00c7fa422ac1e1214a1f401e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2017 11:26:08 +0100 Subject: [PATCH 04/10] Implement mini list view for generic copy overlay --- .../common/overlays/copy/copy.controller.js | 76 ++++++++----------- .../src/views/common/overlays/copy/copy.html | 65 +++++++++------- 2 files changed, 72 insertions(+), 69 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.controller.js index 5d3ea998d9..df6b51bea0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.controller.js @@ -1,7 +1,7 @@ (function() { "use strict"; - function CopyOverlay($scope, localizationService, eventsService) { + function CopyOverlay($scope, localizationService, eventsService, entityHelper) { var vm = this; @@ -32,54 +32,30 @@ selectedSearchResults: [] }; + // get entity type based on the section + $scope.entityType = entityHelper.getEntityTypeFromSection(dialogOptions.section); + function nodeSelectHandler(ev, args) { - args.event.preventDefault(); - args.event.stopPropagation(); - - if (args.node.metaData.listViewNode) { - //check if list view 'search' node was selected - - vm.searchInfo.showSearch = true; - vm.searchInfo.searchFromId = args.node.metaData.listViewNode.id; - vm.searchInfo.searchFromName = args.node.metaData.listViewNode.name; - } - else { - //eventsService.emit("editors.content.copyController.select", args); - - if ($scope.model.target) { - //un-select if there's a current one selected - $scope.model.target.selected = false; - } - - $scope.model.target = args.node; - $scope.model.target.selected = true; + if(args && args.event) { + args.event.preventDefault(); + args.event.stopPropagation(); } + //eventsService.emit("editors.content.copyController.select", args); + + if ($scope.model.target) { + //un-select if there's a current one selected + $scope.model.target.selected = false; + } + + $scope.model.target = args.node; + $scope.model.target.selected = true; } function nodeExpandedHandler(ev, args) { - if (angular.isArray(args.children)) { - - //iterate children - _.each(args.children, function (child) { - //check if any of the items are list views, if so we need to add a custom - // child: A node to activate the search - if (child.metaData.isContainer) { - child.hasChildren = true; - child.children = [ - { - level: child.level + 1, - hasChildren: false, - name: searchText, - metaData: { - listViewNode: child, - }, - cssClass: "icon umb-tree-icon sprTree icon-search", - cssClasses: ["not-published"] - } - ]; - } - }); + // open mini list view for list views + if (args.node.metaData.isContainer) { + openMiniListView(args.node); } } @@ -110,6 +86,20 @@ $scope.dialogTreeEventHandler.unbind("treeNodeExpanded", nodeExpandedHandler); }); + // Mini list view + $scope.selectListViewNode = function (node) { + node.selected = node.selected === true ? false : true; + nodeSelectHandler({}, { node: node }); + }; + + $scope.closeMiniListView = function () { + $scope.miniListView = undefined; + }; + + function openMiniListView(node) { + $scope.miniListView = node; + } + } diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.html index c0e22c4d27..aeafaec04b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/copy/copy.html @@ -1,34 +1,47 @@
-
- - -
+
+
+ + +
-
- - -
+
+ + +
+ +
+ + +
-
- -
+ +
+ + +
From 7461e7c55b2c64e71cd2fbea6e6f12237db9567b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2017 11:36:51 +0100 Subject: [PATCH 08/10] align styling of error and success messages for content (move/copy) and media (move) --- .../src/views/content/copy.html | 32 ++++++++++--------- .../src/views/content/move.html | 26 ++++++++------- .../src/views/media/move.html | 28 ++++++++-------- 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/content/copy.html b/src/Umbraco.Web.UI.Client/src/views/content/copy.html index eca7a60a44..c19ec72dbd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/copy.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/copy.html @@ -1,6 +1,22 @@
-
+
+ +
+
+
{{error.errorMsg}}
+
{{error.data.message}}
+
+
+ +
+
+ {{currentNode.name}} was copied to + {{target.name}} +
+ +
+

Choose where to copy {{currentNode.name}} to in the tree structure below

@@ -9,20 +25,6 @@
-
-
{{error.errorMsg}}
-

{{error.data.message}}

-
- -
-

- {{currentNode.name}} was copied to - {{target.name}} -

- - -
-
diff --git a/src/Umbraco.Web.UI.Client/src/views/content/move.html b/src/Umbraco.Web.UI.Client/src/views/content/move.html index 7bf54828cd..964e4d548c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/move.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/move.html @@ -1,7 +1,21 @@
-
+
+
+
+
{{error.errorMsg}}
+
{{error.data.message}}
+
+
+ +
+
+ {{currentNode.name}} was moved underneath {{target.name}} +
+ +
+

Choose where to move {{currentNode.name}} @@ -12,16 +26,6 @@

-
-
{{error.errorMsg}}
-

{{error.data.message}}

-
- -
-
{{currentNode.name}} was moved underneath {{target.name}}
- -
-
diff --git a/src/Umbraco.Web.UI.Client/src/views/media/move.html b/src/Umbraco.Web.UI.Client/src/views/media/move.html index 971ac0c024..2a56e3de3c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/media/move.html +++ b/src/Umbraco.Web.UI.Client/src/views/media/move.html @@ -1,25 +1,27 @@
-
+
+
+
+
{{error.errorMsg}}
+
{{error.data.message}}
+
+
+ +
+
+ {{currentNode.name}} was moved underneath {{target.name}} +
+ +
+

Choose where to move {{currentNode.name}} to in the tree structure below

-
-

{{error.errorMsg}}

-

{{error.data.Message}}

-
- -
-

{{currentNode.name}} was moved underneath - {{target.name}}

- - -
-
From 4a32cddf088dab7ab57cc3dfecd66ebd321f1ea0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2017 11:37:13 +0100 Subject: [PATCH 09/10] make tree search box full width --- .../src/views/components/tree/umb-tree-search-box.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-box.html b/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-box.html index fde38dcb62..6bb2d120c8 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-box.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-box.html @@ -3,7 +3,7 @@

From ac75d8148db6a35e7b98c788a2d7bf2dfa4bf68f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2017 11:46:51 +0100 Subject: [PATCH 10/10] fix color on tree header checkmark --- .../src/common/directives/components/tree/umbtree.directive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js index 7a74716ea1..18080dbc38 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/tree/umbtree.directive.js @@ -305,7 +305,7 @@ function umbTreeDirective($compile, $log, $q, $rootScope, treeService, notificat scope.selectEnabledNodeClass = function (node) { return node ? node.selected ? - 'icon umb-tree-icon sprTree icon-check blue temporary' : + 'icon umb-tree-icon sprTree icon-check green temporary' : '' : ''; };