Improve search box
- Use new saved search module - Use dynamic search option loop - Use "q" instead of "search" for search query string parameter
This commit is contained in:
parent
cdefa7f32a
commit
22598fc7e8
6 changed files with 48 additions and 51 deletions
|
@ -19,7 +19,7 @@ use Friendica\Module\BaseSearchModule;
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
|
|
||||||
function search_init(App $a) {
|
function search_init(App $a) {
|
||||||
$search = (!empty($_GET['search']) ? Strings::escapeTags(trim(rawurldecode($_GET['search']))) : '');
|
$search = (!empty($_GET['q']) ? Strings::escapeTags(trim(rawurldecode($_GET['q']))) : '');
|
||||||
|
|
||||||
if (local_user()) {
|
if (local_user()) {
|
||||||
/// @todo Check if there is a case at all that "aside" is prefilled here
|
/// @todo Check if there is a case at all that "aside" is prefilled here
|
||||||
|
@ -69,7 +69,7 @@ function search_content(App $a) {
|
||||||
|
|
||||||
Nav::setSelected('search');
|
Nav::setSelected('search');
|
||||||
|
|
||||||
$search = (!empty($_REQUEST['search']) ? Strings::escapeTags(trim(rawurldecode($_REQUEST['search']))) : '');
|
$search = (!empty($_REQUEST['q']) ? Strings::escapeTags(trim(rawurldecode($_REQUEST['q']))) : '');
|
||||||
|
|
||||||
$tag = false;
|
$tag = false;
|
||||||
if (!empty($_GET['tag'])) {
|
if (!empty($_GET['tag'])) {
|
||||||
|
@ -82,7 +82,7 @@ function search_content(App $a) {
|
||||||
'name' => "search-header",
|
'name' => "search-header",
|
||||||
'$title' => L10n::t("Search"),
|
'$title' => L10n::t("Search"),
|
||||||
'$title_size' => 3,
|
'$title_size' => 3,
|
||||||
'$content' => HTML::search($search,'search-box','search', false)
|
'$content' => HTML::search($search,'search-box',false)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (strpos($search,'#') === 0) {
|
if (strpos($search,'#') === 0) {
|
||||||
|
|
|
@ -893,9 +893,9 @@ class HTML
|
||||||
* @param bool $aside Display the search widgit aside.
|
* @param bool $aside Display the search widgit aside.
|
||||||
*
|
*
|
||||||
* @return string Formatted HTML.
|
* @return string Formatted HTML.
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function search($s, $id = 'search-box', $url = 'search', $aside = true)
|
public static function search($s, $id = 'search-box', $aside = true)
|
||||||
{
|
{
|
||||||
$mode = 'text';
|
$mode = 'text';
|
||||||
|
|
||||||
|
@ -906,23 +906,24 @@ class HTML
|
||||||
|
|
||||||
$values = [
|
$values = [
|
||||||
'$s' => $s,
|
'$s' => $s,
|
||||||
|
'$q' => urlencode($s),
|
||||||
'$id' => $id,
|
'$id' => $id,
|
||||||
'$action_url' => $url,
|
|
||||||
'$search_label' => L10n::t('Search'),
|
'$search_label' => L10n::t('Search'),
|
||||||
'$save_label' => $save_label,
|
'$save_label' => $save_label,
|
||||||
'$savedsearch' => 'savedsearch',
|
|
||||||
'$search_hint' => L10n::t('@name, !forum, #tags, content'),
|
'$search_hint' => L10n::t('@name, !forum, #tags, content'),
|
||||||
'$mode' => $mode
|
'$mode' => $mode,
|
||||||
|
'$return_url' => urlencode('search?q=' . $s),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!$aside) {
|
if (!$aside) {
|
||||||
$values['$searchoption'] = [
|
$values['$search_options'] = [
|
||||||
L10n::t("Full Text"),
|
'fulltext' => L10n::t('Full Text'),
|
||||||
L10n::t("Tags"),
|
'tags' => L10n::t('Tags'),
|
||||||
L10n::t("Contacts")];
|
'contacts' => L10n::t('Contacts')
|
||||||
|
];
|
||||||
|
|
||||||
if (Config::get('system', 'poco_local_search')) {
|
if (Config::get('system', 'poco_local_search')) {
|
||||||
$values['$searchoption'][] = L10n::t("Forums");
|
$values['$searchoption']['forums'] = L10n::t('Forums');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
<div id="{{$id}}" class="input-group">
|
<div id="{{$id}}" class="input-group">
|
||||||
<form action="{{$action_url}}" method="get" >
|
<form action="search" method="get">
|
||||||
{{strip}}
|
{{strip}}
|
||||||
<input type="text" name="search" id="search-text" placeholder="{{$search_label}}" value="{{$s}}" />
|
<input type="text" name="q" id="search-text" placeholder="{{$search_label}}" value="{{$s}}">
|
||||||
{{if $searchoption}}
|
{{if $search_options}}
|
||||||
<select name="search-option" id="search-options">
|
<select name="search-option" id="search-options">
|
||||||
<option value="fulltext">{{$searchoption.0}}</option>
|
{{foreach $search_options as $value => $label}}
|
||||||
<option value="tags">{{$searchoption.1}}</option>
|
<option value="{{$value}}">{{$label}}</option>
|
||||||
<option value="contacts">{{$searchoption.2}}</option>
|
{{/foreach}}
|
||||||
{{if $searchoption.3}}<option value="forums">{{$searchoption.3}}</option>{{/if}}
|
|
||||||
</select>
|
</select>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<input type="submit" name="submit" id="search-submit" value="{{$search_label}}"/>
|
<input type="submit" name="submit" id="search-submit" value="{{$search_label}}"/>
|
||||||
{{if $savedsearch}}
|
{{if $s}}
|
||||||
<input type="submit" name="save" id="search-save" value="{{$save_label}}" />
|
<a href="search/saved/add/{{$q}}?return_url={{$return_url}}">{{$save_label}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/strip}}
|
{{/strip}}
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -265,7 +265,7 @@
|
||||||
<form class="navbar-form" role="search" method="get" action="{{$nav.search.0}}">
|
<form class="navbar-form" role="search" method="get" action="{{$nav.search.0}}">
|
||||||
<!-- <img class="hidden-xs" src="{{$nav.userinfo.icon}}" alt="{{$nav.userinfo.name}}" style="max-width:33px; max-height:33px; min-width:33px; min-height:33px; width:33px; height:33px;"> -->
|
<!-- <img class="hidden-xs" src="{{$nav.userinfo.icon}}" alt="{{$nav.userinfo.name}}" style="max-width:33px; max-height:33px; min-width:33px; min-height:33px; width:33px; height:33px;"> -->
|
||||||
<div class="form-group form-group-search">
|
<div class="form-group form-group-search">
|
||||||
<input id="nav-search-input-field-mobile" class="form-control form-search" type="text" name="search" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$nav.search.1}}">
|
<input id="nav-search-input-field-mobile" class="form-control form-search" type="text" name="q" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$nav.search.1}}">
|
||||||
<button class="btn btn-default btn-sm form-button-search" type="submit">{{$nav.search.1}}</button>
|
<button class="btn btn-default btn-sm form-button-search" type="submit">{{$nav.search.1}}</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -4,34 +4,32 @@ Some parts of this template will be moved by js to other places (see theme.js) -
|
||||||
|
|
||||||
<div id="{{$id}}" {{* class="input-group" *}}>
|
<div id="{{$id}}" {{* class="input-group" *}}>
|
||||||
<div id="search-wrapper">
|
<div id="search-wrapper">
|
||||||
<form action="{{$action_url}}" method="get" >
|
<form action="search" method="get">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-2"></div>
|
<div class="col-md-2"></div>
|
||||||
<div class="col-md-8 ">
|
<div class="col-md-8 ">
|
||||||
|
|
||||||
<div class="form-group form-group-search">
|
<div class="form-group form-group-search">
|
||||||
<input type="text" name="search" id="search-text" class="search-input form-control form-search" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$search_label}}" value="{{$s}}" />
|
<input type="text" name="q" id="search-text" class="search-input form-control form-search" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$search_label}}" value="{{$s}}" />
|
||||||
<button id="search-submit" class="btn btn-default btn-sm form-button-search" type="submit">{{$search_label}}</button>
|
<button id="search-submit" class="btn btn-default btn-sm form-button-search" type="submit">{{$search_label}}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4"></div>
|
<div class="col-md-4"></div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
{{* The button to save searches *}}
|
{{* The button to save searches *}}
|
||||||
{{if $savedsearch}}
|
{{if $s}}
|
||||||
<button class="btn btn-primary btn-small pull-right" type="submit" name="save" value="{{$save_label}}">{{$save_label}}</button>
|
<a href="search/saved/add/{{$q}}?return_url={{$return_url}}" class="btn btn-primary btn-small pull-right">{{$save_label}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{* The select popup menu to select what kind of results the user would like to search for *}}
|
{{* The select popup menu to select what kind of results the user would like to search for *}}
|
||||||
{{if $searchoption}}
|
{{if $search_options}}
|
||||||
<div class="col-md-6 pull-right">
|
<div class="col-md-6 pull-right">
|
||||||
<div class="form-group field select">
|
<div class="form-group field select">
|
||||||
<select name="search-option" id="search-options" class="form-control form-control-sm">
|
<select name="search-option" id="search-options" class="form-control form-control-sm">
|
||||||
<option value="fulltext">{{$searchoption.0}}</option>
|
{{foreach $search_options as $value => $label}}
|
||||||
<option value="tags">{{$searchoption.1}}</option>
|
<option value="{{$value}}">{{$label}}</option>
|
||||||
<option value="contacts">{{$searchoption.2}}</option>
|
{{/foreach}}
|
||||||
{{if $searchoption.3}}<option value="forums">{{$searchoption.3}}</option>{{/if}}
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
@ -47,10 +45,10 @@ Some parts of this template will be moved by js to other places (see theme.js) -
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if $savedsearch}}
|
{{if $s}}
|
||||||
<form id="search-save-form" action="{{$action_url}}" method="get" >
|
<form id="search-save-form" action="search/saved/add/{{$q}}" method="get">
|
||||||
<input type="hidden" name="search" value="{{$s}}" />
|
<input type="hidden" name="return_url" value="{{$return_url}}">
|
||||||
<button class="btn btn-sm btn-main pull-right" type="submit" name="save" id="search-save" title="{{$save_label}}" aria-label="{{$save_label}}" value="{{$save_label}}" data-toggle="tooltip">
|
<button class="btn btn-sm btn-main pull-right" type="submit" id="search-save" title="{{$save_label}}" aria-label="{{$save_label}}" value="{{$save_label}}" data-toggle="tooltip">
|
||||||
{{if $mode == "tag"}}
|
{{if $mode == "tag"}}
|
||||||
<i class="fa fa-plus fa-2x" aria-hidden="true"></i>
|
<i class="fa fa-plus fa-2x" aria-hidden="true"></i>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
{{if $nav.search}}
|
{{if $nav.search}}
|
||||||
<li role="search" id="nav-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="nav-search-text" class="nav-menu-search" type="text" value="" name="search" placeholder=" {{$search_hint}}">
|
<input accesskey="s" id="nav-search-text" class="nav-menu-search" type="text" value="" name="q" 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>
|
||||||
|
|
Loading…
Reference in a new issue