diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbminilistview.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbminilistview.directive.js
index ce14aaedc5..1cf934b78c 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbminilistview.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbminilistview.directive.js
@@ -8,7 +8,7 @@
scope.search = "";
scope.miniListViews = [];
scope.breadcrumb = [];
-
+
var miniListViewsHistory = [];
var goingForward = true;
var skipAnimation = true;
@@ -60,9 +60,13 @@
entityResource.getPagedChildren(miniListView.node.id, scope.entityType, miniListView.pagination)
.then(function (data) {
+
// update children
miniListView.children = data.items;
_.each(miniListView.children, function(c) {
+ // child allowed by default
+ c.allowed = true;
+
// convert legacy icon for node
if(c.icon) {
c.icon = iconHelper.convertFromLegacyIcon(c.icon);
@@ -74,6 +78,17 @@
c.published = c.metaData.IsPublished;
}
}
+
+ // filter items if there is a filter and it's not advanced
+ // ** ignores advanced filter at the moment
+ if (scope.entityTypeFilter && !scope.entityTypeFilter.filterAdvanced) {
+ var a = scope.entityTypeFilter.filter.toLowerCase().replace(/\s/g, '').split(',');
+ var found = a.indexOf(c.metaData.ContentTypeAlias.toLowerCase()) >= 0;
+
+ if (!scope.entityTypeFilter.filterExclude && !found || scope.entityTypeFilter.filterExclude && found) {
+ c.allowed = false;
+ }
+ }
});
// update pagination
miniListView.pagination.totalItems = data.totalItems;
@@ -89,7 +104,7 @@
};
scope.selectNode = function(node) {
- if(scope.onSelect) {
+ if (scope.onSelect && node.allowed) {
scope.onSelect({'node': node});
}
};
@@ -202,7 +217,8 @@
entityType: "@",
startNodeId: "=",
onSelect: "&",
- onClose: "&"
+ onClose: "&",
+ entityTypeFilter: "="
},
link: link
};
diff --git a/src/Umbraco.Web.UI.Client/src/less/listview.less b/src/Umbraco.Web.UI.Client/src/less/listview.less
index d2393efb11..284de6e844 100644
--- a/src/Umbraco.Web.UI.Client/src/less/listview.less
+++ b/src/Umbraco.Web.UI.Client/src/less/listview.less
@@ -157,6 +157,10 @@
/* TEMP */
+.umb-minilistview {
+ .umb-table-row.not-allowed { opacity: 0.6; cursor: not-allowed; }
+}
+
.umb-listview .table-striped tbody td {
position: relative
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
index 215b363eb6..e0b5689b72 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js
@@ -83,11 +83,11 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
//if a alternative startnode is used, we need to check if it is a container
if ($scope.enableSearh && dialogOptions.startNodeId && dialogOptions.startNodeId !== -1 && dialogOptions.startNodeId !== "-1") {
entityResource.getById(dialogOptions.startNodeId, $scope.entityType).then(function(node) {
- if (node.metaData.IsContainer) {
- openMiniListView(node);
- }
- initTree();
- });
+ if (node.metaData.IsContainer) {
+ openMiniListView(node);
+ }
+ initTree();
+ });
}
else {
initTree();
@@ -120,6 +120,12 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
dialogOptions.filter = angular.fromJson(dialogOptions.filter);
}
}
+
+ $scope.filter = {
+ filterAdvanced: dialogOptions.filterAdvanced,
+ filterExclude: dialogOptions.filterExclude,
+ filter: dialogOptions.filterTypes
+ };
}
function initTree() {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
index ab5e61339f..a3a5fd6107 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html
@@ -22,7 +22,7 @@