Gets search searching on the member picker - but the member picker doesn't really work, not sure what the UI is supposed to be doing. FIxing some closure issues with the other pickers.

This commit is contained in:
Shannon
2013-10-29 15:01:46 +11:00
parent 8588cbb836
commit 3d44c78585
3 changed files with 94 additions and 63 deletions

View File

@@ -1,56 +1,88 @@
//used for the member picker dialog
angular.module("umbraco").controller("Umbraco.Dialogs.MemberPickerController",
function ($scope, eventsService, searchService, $log) {
var dialogOptions = $scope.$parent.dialogOptions;
$scope.dialogTreeEventHandler = $({});
$scope.results = [];
function($scope, eventsService, searchService, $log) {
var dialogOptions = $scope.$parent.dialogOptions;
$scope.dialogTreeEventHandler = $({});
$scope.results = [];
$scope.performSearch = function(){
if($scope.term){
if($scope.oldTerm !== $scope.term){
$scope.results = [];
searchService.searchMembers({ term: $scope.term }).then(function(data) {
$scope.results = data;
});
$scope.showSearch = true;
$scope.oldTerm = $scope.term;
}
}else{
$scope.oldTerm = "";
$scope.showSearch = false;
$scope.results = [];
}
};
/** Method used for selecting a node */
function select(text, id, entity) {
$scope.showSearch = false;
$scope.results = [];
$scope.term = "";
$scope.oldTerm = undefined;
$scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args){
args.event.preventDefault();
args.event.stopPropagation();
if (dialogOptions.multiPicker) {
$scope.select(id);
}
else {
//if an entity has been passed in, use it
if (entity) {
$scope.submit(entity);
}
else {
//otherwise we have to get it from the server
entityResource.getById(id, "Member").then(function (ent) {
$scope.submit(ent);
});
}
}
}
if (args.node.nodeType === "member-folder") {
return;
}
eventsService.publish("Umbraco.Dialogs.MemberPickerController.Select", args).then(function(args){
if(dialogOptions && dialogOptions.multipicker){
var c = $(args.event.target.parentElement);
if(!args.node.selected){
args.node.selected = true;
c.find("i.umb-tree-icon").hide()
.after("<i class='icon umb-tree-icon sprTree icon-check blue temporary'></i>");
}else{
args.node.selected = false;
c.find(".temporary").remove();
c.find("i.umb-tree-icon").show();
}
$scope.select(args.node);
$scope.performSearch = function() {
if ($scope.term) {
if ($scope.oldTerm !== $scope.term) {
$scope.results = [];
searchService.searchMembers({ term: $scope.term }).then(function(data) {
$scope.results = data;
});
$scope.showSearch = true;
$scope.oldTerm = $scope.term;
}
}
else {
$scope.oldTerm = "";
$scope.showSearch = false;
$scope.results = [];
}
};
}else{
$scope.submit(args.node);
}
});
/** method to select a search result */
$scope.selectResult = function(result) {
//since result = an entity, we'll pass it in so we don't have to go back to the server
select(result.name, result.id, result);
};
});
});
$scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args) {
args.event.preventDefault();
args.event.stopPropagation();
if (args.node.nodeType === "member-folder") {
return;
}
eventsService.publish("Umbraco.Dialogs.MemberPickerController.Select", args).then(function(a) {
//This is a tree node, so we don't have an entity to pass in, it will need to be looked up
//from the server in this method.
select(a.node.name, a.node.id);
if (dialogOptions && dialogOptions.multipicker) {
var c = $(a.event.target.parentElement);
if (!a.node.selected) {
a.node.selected = true;
c.find("i.umb-tree-icon").hide()
.after("<i class='icon umb-tree-icon sprTree icon-check blue temporary'></i>");
}
else {
a.node.selected = false;
c.find(".temporary").remove();
c.find("i.umb-tree-icon").show();
}
}
});
});
});

View File

@@ -19,7 +19,7 @@
<ul class="umb-search-group" >
<li ng-repeat="result in results">
<div style="padding-left: 20px">
<a ng-class="{first:$first}" ng-href="#/{{result.editorPath}}">
<a ng-class="{first:$first}" ng-click="selectResult(result)">
<i
class="icon umb-tree-icon sprTree {{result.icon}}"></i>
{{result.name}}

View File

@@ -12,21 +12,11 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController",
$scope.entityType = "Document";
$scope.results = [];
if (dialogOptions.section === "member") {
$scope.searcher = searchService.searchMembers;
$scope.entityType = "Member";
}
else if (dialogOptions.section === "media") {
$scope.searcher = searchService.searchMedia;
$scope.entityType = "Media";
}
/** Method used for selecting a node */
/** Method used for selecting a node */
function select(text, id, entity) {
//if we get the root, we just return a constructed entity, no need for server data
if (id < 0) {
if (id < 0) {
if ($scope.multiPicker) {
$scope.select(id);
}
@@ -45,7 +35,7 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController",
$scope.results = [];
$scope.term = "";
$scope.oldTerm = undefined;
if ($scope.multiPicker) {
$scope.select(id);
}
@@ -59,11 +49,20 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController",
entityResource.getById(id, $scope.entityType).then(function (ent) {
$scope.submit(ent);
});
}
}
}
}
}
if (dialogOptions.section === "member") {
$scope.searcher = searchService.searchMembers;
$scope.entityType = "Member";
}
else if (dialogOptions.section === "media") {
$scope.searcher = searchService.searchMedia;
$scope.entityType = "Media";
}
$scope.multiSubmit = function (result) {
entityResource.getByIds(result, $scope.entityType).then(function (ents) {
$scope.submit(ents);