From 59f711f802b833d44eb1e042892e2fb1ed8f4e1f Mon Sep 17 00:00:00 2001 From: perploug Date: Thu, 10 Oct 2013 12:43:59 +0200 Subject: [PATCH] memberpicker search updates --- .../src/common/services/search.service.js | 10 +++++++- src/Umbraco.Web.UI.Client/src/less/tree.less | 6 +++++ .../common/dialogs/memberpicker.controller.js | 11 ++++++--- .../views/common/dialogs/memberpicker.html | 10 ++++---- .../src/views/directives/umb-navigation.html | 14 ++++++----- src/Umbraco.Web/Editors/EntityController.cs | 9 ++++--- src/Umbraco.Web/Trees/MemberTreeController.cs | 10 +++++--- src/Umbraco.Web/UI/JavaScript/JsInitialize.js | 4 +--- src/Umbraco.Web/UI/JavaScript/Main.js | 24 ++++++++++++------- 9 files changed, 66 insertions(+), 32 deletions(-) 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 741ce6bac5..336dc6bedf 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 @@ -1,5 +1,5 @@ angular.module('umbraco.services') -.factory('searchService', function ($q, $log, entityResource) { +.factory('searchService', function ($q, $log, entityResource, contentResource) { var m = {results: []}; var service = { results: m, @@ -10,6 +10,8 @@ angular.module('umbraco.services') _.each(data, function(el){ el.menuUrl = "UmbracoTrees/MemberTree/GetMenu?id=" + el.id + "&application=member"; el.metaData = {treeAlias: "member"}; + el.title = el.Fields.nodeName; + el.subTitle = el.Fields.email; }); args.results.push({ @@ -25,6 +27,11 @@ angular.module('umbraco.services') _.each(data, function(el){ el.menuUrl = "UmbracoTrees/ContentTree/GetMenu?id=" + el.id + "&application=content"; el.metaData = {treeAlias: "content"}; + el.title = el.Fields.nodeName; + + contentResource.getNiceUrl(el.Id).then(function(url){ + el.subTitle = url; + }); }); args.results.push({ @@ -40,6 +47,7 @@ angular.module('umbraco.services') _.each(data, function(el){ el.menuUrl = "UmbracoTrees/MediaTree/GetMenu?id=" + el.id + "&application=media"; el.metaData = {treeAlias: "media"}; + el.title = el.Fields.nodeName; }); args.results.push({ diff --git a/src/Umbraco.Web.UI.Client/src/less/tree.less b/src/Umbraco.Web.UI.Client/src/less/tree.less index f19cd2fc46..2aa2256860 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tree.less +++ b/src/Umbraco.Web.UI.Client/src/less/tree.less @@ -138,6 +138,12 @@ background: @grayLighter } +.umb-tree small.search-subtitle{ + color: @grayLight; + display: block; + padding-left: 35px; +} + a.umb-options { visibility: hidden; cursor: pointer; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js index 3d62f97e16..fa3b5212e4 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js @@ -7,12 +7,17 @@ angular.module("umbraco").controller("Umbraco.Dialogs.MemberPickerController", $scope.performSearch = function(){ if($scope.term){ - searchService.searchMembers({term: $scope.term, results: $scope.results}); - $scope.showSearch = true; + if($scope.oldTerm !== $scope.term){ + $scope.results = []; + searchService.searchMembers({term: $scope.term, results: $scope.results}); + $scope.showSearch = true; + $scope.oldTerm = $scope.term; + } }else{ + $scope.oldTerm = ""; $scope.showSearch = false; + $scope.results = []; } - }; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html index b0f78bee1b..f2d5b794a3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html @@ -13,7 +13,7 @@ \ No newline at end of file diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 8ac97bdf08..bc5c52acf1 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -34,7 +34,7 @@ namespace Umbraco.Web.Editors public class EntityController : UmbracoAuthorizedJsonController { [HttpGet] - public IEnumerable Search([FromUri] string query, UmbracoEntityTypes type) + public ISearchResults Search([FromUri] string query, UmbracoEntityTypes type) { if (string.IsNullOrEmpty(query)) return null; @@ -95,7 +95,7 @@ namespace Umbraco.Web.Editors return GetResultForAll(type, postFilter, postFilterParams); } - private IEnumerable ExamineSearch(string query, UmbracoEntityTypes entityType) + private ISearchResults ExamineSearch(string query, UmbracoEntityTypes entityType) { var searcher = Constants.Examine.InternalSearcher; var type = "content"; @@ -124,13 +124,16 @@ namespace Umbraco.Web.Editors var term = new[] { query.ToLower().Escape() }; var operation = criteria.GroupedOr(fields, term).Compile(); + return internalSearcher.Search(operation); + + /* var results = internalSearcher.Search(operation) .Select(x => int.Parse(x["id"])); //TODO: Just create a basic entity from the results!! why double handling and going to the database... this will be ultra slow. return GetResultForIds(results.ToArray(), entityType) - .WhereNotNull(); + .WhereNotNull();*/ } private IEnumerable GetResultForChildren(int id, UmbracoEntityTypes entityType) diff --git a/src/Umbraco.Web/Trees/MemberTreeController.cs b/src/Umbraco.Web/Trees/MemberTreeController.cs index 58aba7d3eb..d4cbb321af 100644 --- a/src/Umbraco.Web/Trees/MemberTreeController.cs +++ b/src/Umbraco.Web/Trees/MemberTreeController.cs @@ -30,12 +30,16 @@ namespace Umbraco.Web.Trees for (var i = 97; i < 123; i++) { var charString = ((char) i).ToString(CultureInfo.InvariantCulture); - nodes.Add(CreateTreeNode(charString, queryStrings, charString, "icon-folder-close", true)); + var folder = CreateTreeNode(charString, queryStrings, charString, "icon-folder-close", true); + folder.NodeType = "member-folder"; + nodes.Add(folder); } //list out 'Others' if the membership provider is umbraco if (Member.InUmbracoMemberMode()) { - nodes.Add(CreateTreeNode("others", queryStrings, "Others", "icon-folder-close", true)); + var folder = CreateTreeNode("others", queryStrings, "Others", "icon-folder-close", true); + folder.NodeType = "member-folder"; + nodes.Add(folder); } } else @@ -48,7 +52,7 @@ namespace Umbraco.Web.Trees //get the members from our member data layer nodes.AddRange( Member.getMemberFromFirstLetter(id.ToCharArray()[0]) - .Select(m => CreateTreeNode(m.UniqueId.ToString("N"), queryStrings, m.Text, "icon-user"))); + .Select(m => CreateTreeNode(m.UniqueId.ToString("N"), queryStrings, m.Text, "icon-user")); } else { diff --git a/src/Umbraco.Web/UI/JavaScript/JsInitialize.js b/src/Umbraco.Web/UI/JavaScript/JsInitialize.js index 42ed1c270e..f27e6cd876 100644 --- a/src/Umbraco.Web/UI/JavaScript/JsInitialize.js +++ b/src/Umbraco.Web/UI/JavaScript/JsInitialize.js @@ -1,5 +1,5 @@ [ - 'lib/jquery/jquery-2.0.3.min.js', + /* the jquery ui elements we need */ /* NOTE: I've opted not to use the full lib, just the parts we need to save on DL */ @@ -12,7 +12,6 @@ 'lib/jquery/jquery.ui.effect-highlight.min.js',*/ /* 1.1.5 */ - 'lib/angular/1.1.5/angular.min.js', 'lib/angular/1.1.5/angular-cookies.min.js', 'lib/angular/1.1.5/angular-mobile.min.js', 'lib/angular/1.1.5/angular-sanitize.min.js', @@ -38,7 +37,6 @@ 'lib/jquery/jquery.upload/js/jquery.fileupload-angular.js', 'lib/bootstrap/js/bootstrap.js', - 'lib/underscore/underscore.js', 'lib/umbraco/Extensions.js', 'lib/umbraco/NamespaceManager.js', diff --git a/src/Umbraco.Web/UI/JavaScript/Main.js b/src/Umbraco.Web/UI/JavaScript/Main.js index 98aa9b88b7..c346fedb51 100644 --- a/src/Umbraco.Web/UI/JavaScript/Main.js +++ b/src/Umbraco.Web/UI/JavaScript/Main.js @@ -1,15 +1,21 @@ yepnope({ - - load: "##JsInitialize##", - + load: [ + 'lib/jquery/jquery-2.0.3.min.js', + 'lib/angular/1.1.5/angular.min.js', + 'lib/underscore/underscore.js', + ], complete: function () { - - //we need to set the legacy UmbClientMgr path - UmbClientMgr.setUmbracoPath('"##UmbracoPath##"'); + yepnope({ + load: "##JsInitialize##", + complete: function () { - jQuery(document).ready(function () { - angular.bootstrap(document, ['umbraco']); + //we need to set the legacy UmbClientMgr path + UmbClientMgr.setUmbracoPath('"##UmbracoPath##"'); + + jQuery(document).ready(function () { + angular.bootstrap(document, ['umbraco']); + }); + } }); - } }); \ No newline at end of file