diff --git a/src/Umbraco.Web.UI.Client/src/common/services/search.service.js b/src/Umbraco.Web.UI.Client/src/common/services/search.service.js index 6aa1ac5838..ab4bac2235 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/search.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/search.service.js @@ -26,7 +26,7 @@ angular.module('umbraco.services') function configureMemberResult(member) { member.menuUrl = umbRequestHelper.getApiUrl("memberTreeBaseUrl", "GetMenu", [{ id: member.id }, { application: 'member' }]); member.editorPath = "member/member/edit/" + (member.key ? member.key : member.id); - member.metaData = { treeAlias: "member" }; + angular.extend(member.metaData, { treeAlias: "member" }); member.subTitle = member.metaData.Email; } @@ -34,13 +34,13 @@ angular.module('umbraco.services') { media.menuUrl = umbRequestHelper.getApiUrl("mediaTreeBaseUrl", "GetMenu", [{ id: media.id }, { application: 'media' }]); media.editorPath = "media/media/edit/" + media.id; - media.metaData = { treeAlias: "media" }; + angular.extend(media.metaData, { treeAlias: "media" }); } function configureContentResult(content) { content.menuUrl = umbRequestHelper.getApiUrl("contentTreeBaseUrl", "GetMenu", [{ id: content.id }, { application: 'content' }]); content.editorPath = "content/content/edit/" + content.id; - content.metaData = { treeAlias: "content" }; + angular.extend(content.metaData, { treeAlias: "content" }); content.subTitle = content.metaData.Url; } @@ -165,8 +165,10 @@ angular.module('umbraco.services') }, + //TODO: This doesn't do anything! setCurrent: function(sectionAlias) { - currentSection = sectionAlias; + + var currentSection = sectionAlias; } }; }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js index bc461122be..ef64247613 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js @@ -132,9 +132,7 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", }); //check filter - if (dialogOptions.filter) { - performFiltering(args.children); - } + performFiltering(args.children); } } @@ -233,6 +231,10 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", function performFiltering(nodes) { + if (!dialogOptions.filter) { + return; + } + //remove any list view search nodes from being filtered since these are special nodes that always must // be allowed to be clicked on nodes = _.filter(nodes, function(n) { @@ -249,19 +251,25 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", angular.forEach(filtered, function (value, key) { value.filtered = true; if (dialogOptions.filterCssClass) { + if (!value.cssClasses) { + value.cssClasses = []; + } value.cssClasses.push(dialogOptions.filterCssClass); } }); } else { - var a = dialogOptions.filter.split(','); + var a = dialogOptions.filter.toLowerCase().split(','); angular.forEach(nodes, function (value, key) { - var found = a.indexOf(value.metaData.contentType) >= 0; + var found = a.indexOf(value.metaData.contentType.toLowerCase()) >= 0; if (!dialogOptions.filterExclude && !found || dialogOptions.filterExclude && found) { value.filtered = true; if (dialogOptions.filterCssClass) { + if (!value.cssClasses) { + value.cssClasses = []; + } value.cssClasses.push(dialogOptions.filterCssClass); } } @@ -277,6 +285,11 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", /** method to select a search result */ $scope.selectResult = function (evt, result) { + + if (result.filtered) { + return; + } + result.selected = result.selected === true ? false : true; //since result = an entity, we'll pass it in so we don't have to go back to the server @@ -381,15 +394,25 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", } $scope.onSearchResults = function(results) { + + //filter all items - this will mark an item as filtered + performFiltering(results); + + //now actually remove all filtered items so they are not even displayed + results = _.filter(results, function(item) { + return !item.filtered; + }); + $scope.searchInfo.results = results; + //sync with the curr selected results _.each($scope.searchInfo.results, function (result) { var exists = _.find($scope.dialogData.selection, function (selectedId) { return result.id == selectedId; }); if (exists) { result.selected = true; - } + } }); $scope.searchInfo.showSearch = true; diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 3d4c01eb26..aea70b5a82 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -459,7 +459,12 @@ namespace Umbraco.Web.Editors //add additional data foreach (var m in mapped) { - m.Icon = "icon-user"; + //if no icon could be mapped, it will be set to document, so change it to picture + if (m.Icon == "icon-document") + { + m.Icon = "icon-user"; + } + var searchResult = results.First(x => x.Id.ToInvariantString() == m.Id.ToString()); if (searchResult.Fields.ContainsKey("email") && searchResult.Fields["email"] != null) { @@ -488,7 +493,11 @@ namespace Umbraco.Web.Editors //add additional data foreach (var m in mapped) { - m.Icon = "icon-picture"; + //if no icon could be mapped, it will be set to document, so change it to picture + if (m.Icon == "icon-document") + { + m.Icon = "icon-picture"; + } } return mapped; } diff --git a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs index 51c87f8561..fb0a809c24 100644 --- a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs @@ -85,6 +85,11 @@ namespace Umbraco.Web.Models.Mapping } } basic.Path = result.Fields.ContainsKey("__Path") ? result.Fields["__Path"] : ""; + + if (result.Fields.ContainsKey(UmbracoContentIndexer.NodeTypeAliasFieldName)) + { + basic.AdditionalData.Add("contentType", result.Fields[UmbracoContentIndexer.NodeTypeAliasFieldName]); + } }); config.CreateMap>()