sforkowany z mirror/friendica
				
			rework autocomplete: some cleanup and docu
							rodzic
							
								
									39a849c113
								
							
						
					
					
						commit
						d0ade828c0
					
				|  | @ -1,13 +1,15 @@ | ||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @file include/acl_selectors.php | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
| require_once("include/contact_selectors.php"); | require_once("include/contact_selectors.php"); | ||||||
| require_once("include/contact_widgets.php"); | require_once("include/contact_widgets.php"); | ||||||
|  | require_once("include/dir_fns.php"); | ||||||
| require_once("include/features.php"); | require_once("include/features.php"); | ||||||
| require_once("mod/proxy.php"); | require_once("mod/proxy.php"); | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * |  | ||||||
|  */ |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @package acl_selectors |  * @package acl_selectors | ||||||
|  | @ -653,7 +655,12 @@ function acl_lookup(&$a, $out_type = 'json') { | ||||||
| 
 | 
 | ||||||
| 	killme(); | 	killme(); | ||||||
| } | } | ||||||
| 
 | /** | ||||||
|  |  * @brief Searching for global contacts for autocompletion | ||||||
|  |  *  | ||||||
|  |  * @param App $a | ||||||
|  |  * @return type | ||||||
|  |  */ | ||||||
| function navbar_complete(&$a) { | function navbar_complete(&$a) { | ||||||
| 
 | 
 | ||||||
| //	logger('navbar_complete');
 | //	logger('navbar_complete');
 | ||||||
|  | @ -662,42 +669,26 @@ function navbar_complete(&$a) { | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	$local = get_config('system','poco_local_search'); | 	// check if searching in the local global contact table is enabled
 | ||||||
| 	$local = true; | 	$localsearch = get_config('system','poco_local_search'); | ||||||
| 
 | 
 | ||||||
| 	$search = $prefix.notags(trim($_REQUEST['search'])); | 	$search = $prefix.notags(trim($_REQUEST['search'])); | ||||||
|  | 
 | ||||||
|  | 	// don't search if search term has less than 2 characters
 | ||||||
| 	if(! $search || mb_strlen($search) < 2) | 	if(! $search || mb_strlen($search) < 2) | ||||||
| 		return array(); | 		return array(); | ||||||
| 
 | 
 | ||||||
| 	$star = false; |  | ||||||
| 	$address = false; |  | ||||||
| 
 |  | ||||||
| 	if(substr($search,0,1) === '@') | 	if(substr($search,0,1) === '@') | ||||||
| 		$search = substr($search,1); | 		$search = substr($search,1); | ||||||
| 
 | 
 | ||||||
| 	if(substr($search,0,1) === '*') { | 	if($localsearch) { | ||||||
| 		$star = true; | 		$x = dirsearch_global_by_name($search); | ||||||
| 		$search = substr($search,1); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if(strpos($search,'@') !== false) { |  | ||||||
| 		$address = true; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if($local) { |  | ||||||
| 		require_once("include/dir_fns.php"); |  | ||||||
| 		$x = dirsearch_autocomplete($search); |  | ||||||
| 		return $x; | 		return $x; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if(! $local) { | 	if(! $localsearch) { | ||||||
| 		require_once("include/dir_fns.php"); |  | ||||||
| 		$url = $directory['url'] . '/dirsearch'; |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| 		$p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : ''); | 		$p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : ''); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 		$x = z_fetch_url(get_server().'/lsearch?f=' . $p .  '&search=' . urlencode($search)); | 		$x = z_fetch_url(get_server().'/lsearch?f=' . $p .  '&search=' . urlencode($search)); | ||||||
| 		if($x['success']) { | 		if($x['success']) { | ||||||
| 			$t = 0; | 			$t = 0; | ||||||
|  |  | ||||||
|  | @ -1,11 +1,20 @@ | ||||||
| <?php | <?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) { | 	if($search) { | ||||||
| 
 | 		// check supported networks
 | ||||||
| 		if (get_config('system','diaspora_enabled')) | 		if (get_config('system','diaspora_enabled')) | ||||||
| 			$diaspora = NETWORK_DIASPORA; | 			$diaspora = NETWORK_DIASPORA; | ||||||
| 		else | 		else | ||||||
|  | @ -16,7 +25,8 @@ function dirsearch_autocomplete($search) { | ||||||
| 		else | 		else | ||||||
| 			$ostatus = NETWORK_DFRN; | 			$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` | 					FROM `gcontact` | ||||||
| 					LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl` | 					LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl` | ||||||
| 						AND `contact`.`uid` = %d AND NOT `contact`.`blocked` | 						AND `contact`.`uid` = %d AND NOT `contact`.`blocked` | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| 
 | 
 | ||||||
| function nav(&$a) { | function nav(&$a) { | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * | 	 * | ||||||
| 	 * Build page header and site navigation bars | 	 * Build page header and site navigation bars | ||||||
| 	 * | 	 * | ||||||
|  | @ -11,23 +11,17 @@ function nav(&$a) { | ||||||
| 	if(!(x($a->page,'nav'))) | 	if(!(x($a->page,'nav'))) | ||||||
| 		$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 | 	 * 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>' ; | 	$a->page['nav'] .= '<div id="panel" style="display: none;"></div>' ; | ||||||
| 
 | 
 | ||||||
| 	$nav_info = nav_info($a); | 	$nav_info = nav_info($a); | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * Build the page | 	 * Build the page | ||||||
| 	 */ | 	 */ | ||||||
| 
 | 
 | ||||||
|  | @ -42,7 +36,8 @@ EOT; | ||||||
| 		'$userinfo' => $nav_info['userinfo'], | 		'$userinfo' => $nav_info['userinfo'], | ||||||
| 		'$sel' =>  $a->nav_sel, | 		'$sel' =>  $a->nav_sel, | ||||||
| 		'$apps' => $a->apps, | 		'$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']); | 	call_hooks('page_header', $a->page['nav']); | ||||||
|  | @ -53,7 +48,7 @@ function nav_info(&$a) { | ||||||
| 
 | 
 | ||||||
| 	$ssl_state = ((local_user()) ? true : false); | 	$ssl_state = ((local_user()) ? true : false); | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * | 	 * | ||||||
| 	 * Our network is distributed, and as you visit friends some of the | 	 * 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. | 	 * 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 links: array of array('href', 'text', 'extra css classes', 'title')
 | ||||||
| 	$nav = Array(); | 	$nav = Array(); | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * Display login or logout | 	 * Display login or logout | ||||||
| 	 */ | 	 */ | ||||||
| 
 | 
 | ||||||
|  | @ -100,7 +95,7 @@ function nav_info(&$a) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * "Home" should also take you home from an authenticated remote profile connection | 	 * "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')); | 	$nav['about'] = Array('friendica', t('Information'), "", t('Information about this friendica instance')); | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * | 	 * | ||||||
| 	 * The following nav links are only show to logged in users | 	 * 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')); | 		$nav['contacts'] = array('contacts', t('Contacts'),"", t('Manage/edit friends and contacts')); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * Admin page | 	 * Admin page | ||||||
| 	 */ | 	 */ | ||||||
| 	 if (is_site_admin()){ | 	 if (is_site_admin()){ | ||||||
|  | @ -206,7 +201,7 @@ function nav_info(&$a) { | ||||||
| 	 $nav['navigation'] = array('navigation/', t('Navigation'), "", t('Site map')); | 	 $nav['navigation'] = array('navigation/', t('Navigation'), "", t('Site map')); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	/** | 	/* | ||||||
| 	 * | 	 * | ||||||
| 	 * Provide a banner/logo/whatever | 	 * Provide a banner/logo/whatever | ||||||
| 	 * | 	 * | ||||||
|  | @ -229,7 +224,7 @@ function nav_info(&$a) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* | /** | ||||||
|  * Set a menu item in navbar as selected |  * Set a menu item in navbar as selected | ||||||
|  * |  * | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | @ -184,7 +184,6 @@ key { display: inline; background-color: #eee; color: #666; padding:0.2em; font- | ||||||
| .notify-unseen { background-color: #cceeFF; } | .notify-unseen { background-color: #cceeFF; } | ||||||
| 
 | 
 | ||||||
| /* autocomplete popup */ | /* autocomplete popup */ | ||||||
| 
 |  | ||||||
| ul.acpopup { | ul.acpopup { | ||||||
|   list-style: none; |   list-style: none; | ||||||
|   float: left; |   float: left; | ||||||
|  | @ -194,7 +193,6 @@ ul.acpopup { | ||||||
| } | } | ||||||
| nav .acpopup { | nav .acpopup { | ||||||
|   width: 290px; |   width: 290px; | ||||||
|   margin-left: -35px; |  | ||||||
|   max-height: 450px; |   max-height: 450px; | ||||||
|   max-width: 300px; |   max-width: 300px; | ||||||
|   overflow-y: auto; |   overflow-y: auto; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| $(document).ready(function() { | $(document).ready(function() { | ||||||
| 	$("#recip").name_autocomplete(baseurl + '/acl', '', false, function(data) { | 	$("#recip").name_autocomplete(baseurl + '/acl', 'm', false, function(data) { | ||||||
| 		$("#recip-complete").val(data.id); | 		$("#recip-complete").val(data.id); | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ nav a { | ||||||
|   color: #737373; |   color: #737373; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| nav #search-box #search-text { | nav #nav-search-box #nav-search-text { | ||||||
|   border-radius: 5px; |   border-radius: 5px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,6 +7,6 @@ nav ul li .menu-popup { | ||||||
|   right: 0px; |   right: 0px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| nav #search-box #search-text { | nav #nav-search-box #nav-search-text { | ||||||
|   width: 100px; |   width: 100px; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -159,7 +159,7 @@ section { | ||||||
|   top: 44px; |   top: 44px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| nav #search-box #search-text { | nav #nav-search-box #nav-search-text { | ||||||
|   background-color: initial; |   background-color: initial; | ||||||
|   border-style: solid; |   border-style: solid; | ||||||
|   border-width: 1px; |   border-width: 1px; | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ nav .nav-notify { | ||||||
|   padding: 1px 3px; |   padding: 1px 3px; | ||||||
|   border-radius: 5px 5px 5px 5px; |   border-radius: 5px 5px 5px 5px; | ||||||
| } | } | ||||||
| // ----- | 
 | ||||||
| nav .nav-menu-icon .nav-notify { | nav .nav-menu-icon .nav-notify { | ||||||
|   top: 0px; |   top: 0px; | ||||||
| } | } | ||||||
|  | @ -146,7 +146,7 @@ section { | ||||||
|   top: 44px; |   top: 44px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| nav #search-box #search-text { | nav #nav-search-box #nav-search-text { | ||||||
|   background-color: initial; |   background-color: initial; | ||||||
|   border-style: solid; |   border-style: solid; | ||||||
|   border-width: 1px; |   border-width: 1px; | ||||||
|  |  | ||||||
|  | @ -642,7 +642,7 @@ nav ul li .menu-popup { | ||||||
|   right: auto; |   right: auto; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| nav #search-box #search-text { | nav #nav-search-box #nav-search-text { | ||||||
|   /*background-image:  url('icons/lupe.png'); |   /*background-image:  url('icons/lupe.png'); | ||||||
|   background-repeat:no-repeat; */ |   background-repeat:no-repeat; */ | ||||||
|   padding-left:0px; |   padding-left:0px; | ||||||
|  | @ -912,6 +912,10 @@ acpopup-mce { | ||||||
|   color: #2d2d2d; |   color: #2d2d2d; | ||||||
|   max-height: 150px; |   max-height: 150px; | ||||||
| } | } | ||||||
|  | nav .acpopup { | ||||||
|  |   top: 31px !important; | ||||||
|  |   margin-left: -23px | ||||||
|  | } | ||||||
| .acpopupitem { | .acpopupitem { | ||||||
|   color: #2d2d2d; |   color: #2d2d2d; | ||||||
|   padding: 4px; |   padding: 4px; | ||||||
|  |  | ||||||
|  | @ -80,9 +80,9 @@ | ||||||
| 		{{/if}} | 		{{/if}} | ||||||
| 
 | 
 | ||||||
| 		{{if $nav.search}} | 		{{if $nav.search}} | ||||||
| 			<li role="search" id="search-box"> | 			<li role="search" id="nav-search-box"> | ||||||
| 				<form method="get" action="{{$nav.search.0}}"> | 				<form method="get" action="{{$nav.search.0}}"> | ||||||
| 					<input accesskey="s" id="search-text" class="nav-menu-search" type="text" value="" name="search"> | 					<input accesskey="s" id="nav-search-text" class="nav-menu-search" type="text" value="" name="search" placeholder=" {{$search_hint}}"> | ||||||
| 					<select name="search-option"> | 					<select name="search-option"> | ||||||
| 						<option value="fulltext">{{$nav.searchoption.0}}</option> | 						<option value="fulltext">{{$nav.searchoption.0}}</option> | ||||||
| 						<option value="tags">{{$nav.searchoption.1}}</option> | 						<option value="tags">{{$nav.searchoption.1}}</option> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,6 @@ | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | $(document).ready(function() { | ||||||
|  | 	$("#nav-search-text").search_autocomplete(baseurl + '/acl'); | ||||||
|  | }); | ||||||
|  | </script> | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 rabuzarus
						rabuzarus