memberpicker search updates
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = [];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
<div class="umb-panel-body with-footer">
|
||||
<!-- Search results -->
|
||||
<div id="search-results" class="umb-pane" ng-show="showSearch">
|
||||
<div id="search-results" ng-show="showSearch">
|
||||
<ul class="umb-tree">
|
||||
<li class="root">
|
||||
<ul class="umb-search-group" ng-repeat="resultGroup in results">
|
||||
@@ -22,7 +22,10 @@
|
||||
<a ng-class="{first:$first}" ng-href="#/{{resultGroup.editor}}{{result.id}}">
|
||||
<i
|
||||
class="icon umb-tree-icon sprTree {{resultGroup.icon}}"></i>
|
||||
{{result.name}}
|
||||
{{result.title}}
|
||||
<small class="search-subtitle" ng-show="result.subTitle">
|
||||
{{result.subTitle}}
|
||||
</small>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
@@ -33,7 +36,6 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-pane" ng-hide="showSearch">
|
||||
|
||||
<umb-tree
|
||||
section="member"
|
||||
treealias="member"
|
||||
@@ -47,7 +49,7 @@
|
||||
|
||||
<div class="umb-panel-footer" ng-show="multipicker">
|
||||
<div class="umb-el-wrap umb-panel-buttons">
|
||||
<div class="btn-toolbar umb-btn-toolbar">
|
||||
<div class="btn-toolbar umb-btn-toolbar pull-right">
|
||||
<input type="button" ng-click="submit(dialogData)" class="btn btn-primary" value="select" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div id="leftcolumn" ng-controller="Umbraco.NavigationController"
|
||||
ng-mouseleave="nav.leaveTree($event)" ng-mouseenter="nav.enterTree($event)" >
|
||||
ng-mouseleave="nav.leaveTree($event)" ng-mouseenter="nav.enterTree($event)">
|
||||
|
||||
<umb-sections sections="sections" current-section="currentSection"></umb-sections>
|
||||
|
||||
@@ -38,9 +38,12 @@
|
||||
<li ng-repeat="result in resultGroup.matches">
|
||||
<div style="padding-left: 20px">
|
||||
<a ng-class="{'first':$first}" ng-href="#/{{resultGroup.editor}}{{result.id}}">
|
||||
<i
|
||||
class="icon umb-tree-icon sprTree {{resultGroup.icon}}"></i>
|
||||
{{result.name}}
|
||||
|
||||
<i class="icon umb-tree-icon sprTree {{resultGroup.icon}}" style="height: 100%"></i>
|
||||
{{result.title}}
|
||||
<small class="search-subtitle" ng-show="result.subTitle">
|
||||
{{result.subTitle}}
|
||||
</small>
|
||||
</a>
|
||||
|
||||
<a href ng-click="searchShowMenu($event, {node: result})" class="umb-options"><i></i><i></i><i></i></a>
|
||||
@@ -79,5 +82,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -34,7 +34,7 @@ namespace Umbraco.Web.Editors
|
||||
public class EntityController : UmbracoAuthorizedJsonController
|
||||
{
|
||||
[HttpGet]
|
||||
public IEnumerable<EntityBasic> 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<EntityBasic> 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<EntityBasic> GetResultForChildren(int id, UmbracoEntityTypes entityType)
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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']);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user