From 487d5633660f61f357d320809a6d5d5f48b3a599 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sun, 27 Apr 2014 15:13:05 +0200 Subject: [PATCH] add people in thread in autocomplete (issue #936) issues: tested only in quattro theme contacts in thread will appear twice in autocomplete popup --- include/acl_selectors.php | 41 ++++++++++++++++++++++++++++++++++++++- js/fk.autocomplete.js | 12 ++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index ee74ccc16a..90c9a35d4f 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -382,7 +382,7 @@ function acl_lookup(&$a, $out_type = 'json') { $count = (x($_REQUEST,'count')?$_REQUEST['count']:100); $search = (x($_REQUEST,'search')?$_REQUEST['search']:""); $type = (x($_REQUEST,'type')?$_REQUEST['type']:""); - + $conv_id = (x($_REQUEST,'conversation')?$_REQUEST['conversation']:null); // For use with jquery.autocomplete for private mail completion @@ -450,6 +450,7 @@ function acl_lookup(&$a, $out_type = 'json') { $contact_count = 0; } + $tot = $group_count+$contact_count; $groups = array(); @@ -553,6 +554,44 @@ function acl_lookup(&$a, $out_type = 'json') { $items = array_merge($groups, $contacts); + if ($conv_id) { + /* if $conv_id is set, get unknow contacts in thread */ + $unknow_contacts=array(); + $r = q("select + `author-avatar`,`author-name`,`author-link` + from item where parent=%d + and ( + `author-name` LIKE '%%%s%%' OR + `author-link` LIKE '%%%s%%' + )", + intval($conv_id), + dbesc($search), + dbesc($search) + ); + if (is_array($r) && count($r)){ + foreach($r as $row) { + // nickname.. + $up = parse_url($row['author-link']); + $nick = explode("/",$up['path']); + $nick = $nick[count($nick)-1]; + $nick .= "@".$up['host']; + // /nickname + $unknow_contacts[] = array( + "type" => "c", + "photo" => $row['author-avatar'], + "name" => $row['author-name'], + "id" => '', + "network" => "unknown", + "link" => $row['author-link'], + "nick" => $nick, + "forum" => false + ); + } + } + + $items = array_merge($items, $unknow_contacts); + $tot += count($unknow_contacts); + } if($out_type === 'html') { $o = array( diff --git a/js/fk.autocomplete.js b/js/fk.autocomplete.js index 2334bb4a2c..cf6fd25cbc 100644 --- a/js/fk.autocomplete.js +++ b/js/fk.autocomplete.js @@ -14,6 +14,11 @@ function ACPopup(elm,backend_url){ this.kp_timer = false; this.url = backend_url; + this.conversation_id = null; + var conv_id = this.element.id.match(/\d+$/); + if (conv_id) this.conversation_id = conv_id[0]; + console.log("ACPopup elm id",this.element.id,"conversation",this.conversation_id); + var w = 530; var h = 130; @@ -67,6 +72,7 @@ ACPopup.prototype._search = function(){ count:100, search:this.searchText, type:'c', + conversation: this.conversation_id, } $.ajax({ @@ -79,8 +85,10 @@ ACPopup.prototype._search = function(){ if (data.tot>0){ that.cont.show(); $(data.items).each(function(){ - html = "{1} ({2})".format(this.photo, this.name, this.nick) - that.add(html, this.nick.replace(' ','') + '+' + this.id + ' - ' + this.link); + var html = "{1} ({2})".format(this.photo, this.name, this.nick); + var nick = this.nick.replace(' ',''); + if (this.id!=='') nick += '+' + this.id; + that.add(html, nick + ' - ' + this.link); }); } else { that.cont.hide();