search.mako
152 lines
| 4.7 KiB
| application/x-mako
|
MakoHtmlLexer
r1282 | ## -*- coding: utf-8 -*- | |||
<%inherit file="/base/base.mako"/> | ||||
<%def name="title()"> | ||||
%if c.repo_name: | ||||
${_('Search inside repository %(repo_name)s') % {'repo_name': c.repo_name}} | ||||
%else: | ||||
${_('Search inside all accessible repositories')} | ||||
%endif | ||||
%if c.rhodecode_name: | ||||
· ${h.branding(c.rhodecode_name)} | ||||
%endif | ||||
</%def> | ||||
<%def name="breadcrumbs_links()"> | ||||
%if c.repo_name: | ||||
${_('Search inside repository %(repo_name)s') % {'repo_name': c.repo_name}} | ||||
%else: | ||||
${_('Search inside all accessible repositories')} | ||||
%endif | ||||
r3319 | ||||
r1282 | </%def> | |||
<%def name="menu_bar_nav()"> | ||||
%if c.repo_name: | ||||
${self.menu_items(active='repositories')} | ||||
%else: | ||||
${self.menu_items(active='search')} | ||||
%endif | ||||
</%def> | ||||
<%def name="menu_bar_subnav()"> | ||||
%if c.repo_name: | ||||
${self.repo_menu(active='options')} | ||||
%endif | ||||
</%def> | ||||
<%def name="main()"> | ||||
<div class="box"> | ||||
%if c.repo_name: | ||||
<!-- box / title --> | ||||
<div class="title"> | ||||
${self.repo_page_title(c.rhodecode_db_repo)} | ||||
</div> | ||||
r1685 | ${h.form(h.route_path('search_repo',repo_name=c.repo_name),method='get')} | |||
r1282 | %else: | |||
<!-- box / title --> | ||||
<div class="title"> | ||||
${self.breadcrumbs()} | ||||
<ul class="links"> </ul> | ||||
</div> | ||||
<!-- end box / title --> | ||||
r1685 | ${h.form(h.route_path('search'), method='get')} | |||
r1282 | %endif | |||
<div class="form search-form"> | ||||
<div class="fields"> | ||||
r3164 | ${h.text('q', c.cur_query, placeholder="Enter query...")} | |||
r1282 | ||||
r3319 | ${h.select('type',c.search_type,[('content',_('Files')), ('path',_('File path')),('commit',_('Commits'))],id='id_search_type')} | |||
${h.hidden('max_lines', '10')} | ||||
r1282 | <input type="submit" value="${_('Search')}" class="btn"/> | |||
<br/> | ||||
r1684 | ||||
r1282 | <div class="search-feedback-items"> | |||
% for error in c.errors: | ||||
<span class="error-message"> | ||||
% for k,v in error.asdict().items(): | ||||
${k} - ${v} | ||||
% endfor | ||||
</span> | ||||
% endfor | ||||
r1684 | <div class="field"> | |||
r3319 | <p class="filterexample" style="position: inherit" onclick="$('#search-help').toggle()">${_('Query Langague examples')}</p> | |||
<pre id="search-help" style="display: none">\ | ||||
% if c.searcher.name == 'whoosh': | ||||
Example filter terms for `Whoosh` search: | ||||
query lang: <a href="${c.searcher.query_lang_doc}">Whoosh Query Language</a> | ||||
Whoosh has limited query capabilities. For advanced search use ElasticSearch 6 from RhodeCode EE edition. | ||||
Generate wildcards using '*' character: | ||||
"repo_name:vcs*" - search everything starting with 'vcs' | ||||
"repo_name:*vcs*" - search for repository containing 'vcs' | ||||
Optional AND / OR operators in queries | ||||
"repo_name:vcs OR repo_name:test" | ||||
"owner:test AND repo_name:test*" AND extension:py | ||||
Move advanced search is available via ElasticSearch6 backend in EE edition. | ||||
% elif c.searcher.name == 'elasticsearch' and c.searcher.es_version == '2': | ||||
Example filter terms for `ElasticSearch-${c.searcher.es_version}`search: | ||||
ElasticSearch-2 has limited query capabilities. For advanced search use ElasticSearch 6 from RhodeCode EE edition. | ||||
search type: content (File Content) | ||||
indexed fields: content | ||||
# search for `fix` string in all files | ||||
fix | ||||
search type: commit (Commit message) | ||||
indexed fields: message | ||||
search type: path (File name) | ||||
indexed fields: path | ||||
% else: | ||||
Example filter terms for `ElasticSearch-${c.searcher.es_version}`search: | ||||
query lang: <a href="${c.searcher.query_lang_doc}">ES 6 Query Language</a> | ||||
The reserved characters needed espace by `\`: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ / | ||||
% for handler in c.searcher.get_handlers().values(): | ||||
search type: ${handler.search_type_label} | ||||
*indexed fields*: ${', '.join( [('\n ' if x[0]%4==0 else '')+x[1] for x in enumerate(handler.es_6_field_names)])} | ||||
% for entry in handler.es_6_example_queries: | ||||
${entry.rstrip()} | ||||
% endfor | ||||
% endfor | ||||
% endif | ||||
</pre> | ||||
r1684 | </div> | |||
r1282 | <div class="field">${c.runtime}</div> | |||
</div> | ||||
</div> | ||||
</div> | ||||
r1684 | ||||
r1282 | ${h.end_form()} | |||
<div class="search"> | ||||
% if c.search_type == 'content': | ||||
<%include file='search_content.mako'/> | ||||
% elif c.search_type == 'path': | ||||
<%include file='search_path.mako'/> | ||||
% elif c.search_type == 'commit': | ||||
<%include file='search_commit.mako'/> | ||||
% elif c.search_type == 'repository': | ||||
<%include file='search_repository.mako'/> | ||||
% endif | ||||
</div> | ||||
</div> | ||||
<script> | ||||
$(document).ready(function(){ | ||||
r3319 | $('#q').autoGrowInput(); | |||
r1282 | $("#id_search_type").select2({ | |||
'containerCssClass': "drop-menu", | ||||
'dropdownCssClass': "drop-menu-dropdown", | ||||
'dropdownAutoWidth': true, | ||||
'minimumResultsForSearch': -1 | ||||
}); | ||||
}) | ||||
</script> | ||||
</%def> | ||||