rework autocomplete: some cleanup and docu

This commit is contained in:
rabuzarus 2016-01-24 19:56:23 +01:00 committed by Roland Haeder
parent 7ee0bca2bb
commit 586b251539
No known key found for this signature in database
GPG key ID: B72F8185C6C7BD78
13 changed files with 111 additions and 107 deletions

View file

@ -1,13 +1,15 @@
<?php
/**
* @file include/acl_selectors.php
*/
require_once("include/contact_selectors.php");
require_once("include/contact_widgets.php");
require_once("include/dir_fns.php");
require_once("include/features.php");
require_once("mod/proxy.php");
/**
*
*/
/**
* @package acl_selectors
@ -653,7 +655,12 @@ function acl_lookup(&$a, $out_type = 'json') {
killme();
}
/**
* @brief Searching for global contacts for autocompletion
*
* @param App $a
* @return type
*/
function navbar_complete(&$a) {
// logger('navbar_complete');
@ -662,41 +669,25 @@ function navbar_complete(&$a) {
return;
}
$local = get_config('system','poco_local_search');
$local = true;
// check if searching in the local global contact table is enabled
$localsearch = get_config('system','poco_local_search');
$search = $prefix.notags(trim($_REQUEST['search']));
// don't search if search term has less than 2 characters
if(! $search || mb_strlen($search) < 2)
return array();
$star = false;
$address = false;
if(substr($search,0,1) === '@')
$search = substr($search,1);
if(substr($search,0,1) === '*') {
$star = true;
$search = substr($search,1);
}
if(strpos($search,'@') !== false) {
$address = true;
}
if($local) {
require_once("include/dir_fns.php");
$x = dirsearch_autocomplete($search);
if($localsearch) {
$x = dirsearch_global_by_name($search);
return $x;
}
if(! $local) {
require_once("include/dir_fns.php");
$url = $directory['url'] . '/dirsearch';
if(! $localsearch) {
$p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : '');
$x = z_fetch_url(get_server().'/lsearch?f=' . $p . '&search=' . urlencode($search));
if($x['success']) {

View file

@ -1,11 +1,20 @@
<?php
/**
* @file include/dir_fns.php
* @brief Functions for directory
*/
function dirsearch_autocomplete($search) {
/**
* @brief Search global contact table by nick or name
* *
* @param string $search
* @return array
*/
function dirsearch_global_by_name($search) {
if($search) {
// check supported networks
if (get_config('system','diaspora_enabled'))
$diaspora = NETWORK_DIASPORA;
else
@ -16,7 +25,8 @@ function dirsearch_autocomplete($search) {
else
$ostatus = NETWORK_DFRN;
$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`, `gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
$results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
`gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
FROM `gcontact`
LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
AND `contact`.`uid` = %d AND NOT `contact`.`blocked`

View file

@ -2,7 +2,7 @@
function nav(&$a) {
/**
/*
*
* Build page header and site navigation bars
*
@ -11,23 +11,17 @@ function nav(&$a) {
if(!(x($a->page,'nav')))
$a->page['nav'] = '';
$base = z_root();
/**
$a->page['htmlhead'] .= replace_macros(get_markup_template('nav_head.tpl'), array());
/*
* Placeholder div for popup panel
*/
$a->page['htmlhead'] .= <<< EOT
<script>$(document).ready(function() {
$("#search-text").search_autocomplete('$base/acl');
});
</script>
EOT;
$a->page['nav'] .= '<div id="panel" style="display: none;"></div>' ;
$nav_info = nav_info($a);
/**
/*
* Build the page
*/
@ -37,12 +31,13 @@ EOT;
'$baseurl' => $a->get_baseurl(),
'$sitelocation' => $nav_info['sitelocation'],
'$nav' => $nav_info['nav'],
'$banner' => $nav_info['banner'],
'$banner' => $nav_info['banner'],
'$emptynotifications' => t('Nothing new here'),
'$userinfo' => $nav_info['userinfo'],
'$sel' => $a->nav_sel,
'$sel' => $a->nav_sel,
'$apps' => $a->apps,
'$clear_notifs' => t('Clear notifications')
'$clear_notifs' => t('Clear notifications'),
'$search_hint' => t('@name, !forum, #tags, content')
));
call_hooks('page_header', $a->page['nav']);
@ -53,7 +48,7 @@ function nav_info(&$a) {
$ssl_state = ((local_user()) ? true : false);
/**
/*
*
* Our network is distributed, and as you visit friends some of the
* sites look exactly the same - it isn't always easy to know where you are.
@ -69,7 +64,7 @@ function nav_info(&$a) {
// nav links: array of array('href', 'text', 'extra css classes', 'title')
$nav = Array();
/**
/*
* Display login or logout
*/
@ -100,7 +95,7 @@ function nav_info(&$a) {
}
/**
/*
* "Home" should also take you home from an authenticated remote profile connection
*/
@ -151,7 +146,7 @@ function nav_info(&$a) {
$nav['about'] = Array('friendica', t('Information'), "", t('Information about this friendica instance'));
/**
/*
*
* The following nav links are only show to logged in users
*
@ -195,7 +190,7 @@ function nav_info(&$a) {
$nav['contacts'] = array('contacts', t('Contacts'),"", t('Manage/edit friends and contacts'));
}
/**
/*
* Admin page
*/
if (is_site_admin()){
@ -206,7 +201,7 @@ function nav_info(&$a) {
$nav['navigation'] = array('navigation/', t('Navigation'), "", t('Site map'));
/**
/*
*
* Provide a banner/logo/whatever
*
@ -229,26 +224,26 @@ function nav_info(&$a) {
}
/*
/**
* Set a menu item in navbar as selected
*
*/
function nav_set_selected($item){
$a = get_app();
$a->nav_sel = array(
$a->nav_sel = array(
'community' => null,
'network' => null,
'home' => null,
'profiles' => null,
'network' => null,
'home' => null,
'profiles' => null,
'introductions' => null,
'notifications' => null,
'messages' => null,
'directory' => null,
'settings' => null,
'contacts' => null,
'manage' => null,
'events' => null,
'register' => null,
'messages' => null,
'directory' => null,
'settings' => null,
'contacts' => null,
'manage' => null,
'events' => null,
'register' => null,
);
$a->nav_sel[$item] = 'selected';
}