diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js
index e7189cf780..708919f569 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbtree.directive.js
@@ -10,14 +10,17 @@ angular.module("umbraco.directives")
section: '@',
showoptions: '@',
showheader: '@',
- cachekey: '@'
+ cachekey: '@',
+ callback: '='
},
compile: function (element, attrs) {
//config
var hideheader = (attrs.showheader === 'false') ? true : false;
var hideoptions = (attrs.showoptions === 'false') ? "hide-options" : "";
+
+
var template = '
' +
'- ';
@@ -27,7 +30,7 @@ angular.module("umbraco.directives")
'';
}
template += '' +
'
' +
'
';
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js
index 6326b43674..01365245ac 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js
@@ -7,6 +7,7 @@ angular.module("umbraco.directives")
scope: {
section: '@',
cachekey: '@',
+ callback: '=',
node:'='
},
@@ -21,9 +22,16 @@ angular.module("umbraco.directives")
'',
link: function (scope, element, attrs) {
-
+
+ function emitEvent(eventName, args){
+
+ if(scope.callback){
+ $(scope.callback).trigger(eventName,args);
+ }
+ }
+
scope.options = function(e, n, ev){
- scope.$emit("treeOptionsClick", {element: e, node: n, event: ev});
+ emitEvent("treeOptionsClick", {element: e, node: n, event: ev});
};
/**
@@ -38,32 +46,39 @@ angular.module("umbraco.directives")
* @param n {object} The tree node object associated with the click
*/
scope.select = function(e,n,ev){
- scope.$emit("treeNodeSelect", { element: e, node: n, event: ev });
+ emitEvent("treeNodeSelect", { element: e, node: n, event: ev });
};
scope.load = function (arrow, node) {
if (node.expanded){
+ emitEvent("treeNodeCollapsing", { element: arrow, node: node});
+
node.expanded = false;
node.children = [];
-
}else {
+ emitEvent("treeNodeExpanding", { element: arrow, node: node});
+
node.loading = true;
treeService.getChildren( { node: node, section: scope.section } )
.then(function (data) {
+
+ emitEvent("treeNodeLoaded", { element: arrow, node: node, children: data});
+
node.loading = false;
- // $(arrow).parent().remove(loader);
-
node.children = data;
node.expanded = true;
+
+ emitEvent("treeNodeExpanded", { element: arrow, node: node, children: data});
+
}, function (reason) {
- // $(arrow).parent().remove(loader);
+
+ emitEvent("treeNodeLoadError", { element: arrow, node: node, error: reason});
+
node.loading = false;
notificationsService.error(reason);
-
- //alert(reason);
return;
});
}
@@ -73,7 +88,7 @@ angular.module("umbraco.directives")
return { 'padding-left': (node.level * 20) + "px" };
};
- var template = '';
+ var template = '';
var newElement = angular.element(template);
$compile(newElement)(scope);
element.append(newElement);
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.controller.js
index 9cba113871..19582a99f5 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.controller.js
@@ -1,8 +1,9 @@
//used for the media picker dialog
-angular.module("umbraco").controller("Umbraco.Dialogs.ContentPickerController",
+angular.module("umbraco").controller("Umbraco.Dialogs.ContentPickerController",
function ($scope) {
-
- $scope.$on("treeNodeSelect", function(event, args){
+ $scope.treeCallback = $({});
+
+ $scope.treeCallback.bind("treeNodeSelect", function(event, args){
args.event.preventDefault();
args.event.stopPropagation();
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.html
index bdabdf6fb3..0425f7f14d 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/contentpicker.html
@@ -13,7 +13,8 @@
section="content"
cachekey="pickerDialog"
showheader="false"
- showoptions="false">
+ showoptions="false"
+ callback="treeCallback">
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js
index 57cb562a5b..3021d61519 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js
@@ -20,9 +20,12 @@ function NavigationController($scope, $location, navigationService, historyServi
$scope.hideDialog = navigationService.hideDialog;
$scope.hideNavigation = navigationService.hideNavigation;
$scope.ui = navigationService.ui;
+ //tree event handler everyone can subscribe to
+ $scope.ui.tree = $({});
$scope.selectedId = navigationService.currentId;
$scope.sections = navigationService.sections;
+
sectionResource.getSections()
.then(function(result) {
@@ -32,19 +35,17 @@ function NavigationController($scope, $location, navigationService, historyServi
alert(reason);
});
- //events
//this reacts to the options item in the tree
- $scope.$on("treeOptionsClick", function (ev, args) {
+ $scope.ui.tree.bind("treeOptionsClick", function (ev, args) {
$scope.currentNode = args.node;
args.scope = $scope;
navigationService.showMenu(ev, args);
});
-
//this reacts to tree items themselves being clicked
//the tree directive should not contain any handling, simply just bubble events
- $scope.$on("treeNodeSelect", function (ev, args) {
+ $scope.ui.tree.bind("treeNodeSelect", function(ev, args){
var n = args.node;
diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html
index f6bdec4787..11910cfbfa 100644
--- a/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html
+++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html
@@ -65,7 +65,7 @@
-
+