search.mako
240 lines
| 7.6 KiB
| application/x-mako
|
MakoHtmlLexer
r1282 | <%inherit file="/base/base.mako"/> | |||
<%def name="title()"> | ||||
%if c.repo_name: | ||||
r3442 | ${_('Search inside repository {repo_name}').format(repo_name=c.repo_name)} | |||
%elif c.repo_group_name: | ||||
${_('Search inside repository group {repo_group_name}').format(repo_group_name=c.repo_group_name)} | ||||
r1282 | %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: | ||||
r3442 | ${_('Search inside repository {repo_name}').format(repo_name=c.repo_name)} | |||
%elif c.repo_group_name: | ||||
${_('Search inside repository group {repo_group_name}').format(repo_group_name=c.repo_group_name)} | ||||
r1282 | %else: | |||
${_('Search inside all accessible repositories')} | ||||
%endif | ||||
r3319 | ||||
r1282 | </%def> | |||
<%def name="menu_bar_nav()"> | ||||
%if c.repo_name: | ||||
r3442 | ${self.menu_items(active='search')} | |||
%elif c.repo_group_name: | ||||
${self.menu_items(active='search')} | ||||
r1282 | %else: | |||
${self.menu_items(active='search')} | ||||
%endif | ||||
</%def> | ||||
<%def name="menu_bar_subnav()"> | ||||
%if c.repo_name: | ||||
r3783 | <% active_entry = {'content':'files', 'path':'files', 'commit':'commits'}.get(c.search_type, 'summary')%> | |||
${self.repo_menu(active=active_entry)} | ||||
r3442 | %elif c.repo_group_name: | |||
r3556 | ${self.repo_group_menu(active='home')} | |||
r1282 | %endif | |||
</%def> | ||||
r3467 | <%def name="repo_icon(db_repo)"> | |||
%if h.is_hg(db_repo): | ||||
<i class="icon-hg"></i> | ||||
%endif | ||||
%if h.is_git(db_repo): | ||||
<i class="icon-git"></i> | ||||
%endif | ||||
%if h.is_svn(db_repo): | ||||
<i class="icon-svn"></i> | ||||
%endif | ||||
</%def> | ||||
<%def name="repo_group_icon()"> | ||||
r3680 | <i class="icon-repo-group"></i> | |||
r3467 | </%def> | |||
r3963 | ||||
<%def name="field_sort(field_name)"> | ||||
<% | ||||
if c.sort.startswith('asc:'): | ||||
r4091 | return h.current_route_path(request, sort='desc:{}'.format(field_name)) | |||
r3963 | elif c.sort.startswith('desc:'): | |||
r4091 | return h.current_route_path(request, sort='asc:{}'.format(field_name)) | |||
r3963 | ||||
r4091 | return h.current_route_path(request, sort='asc:{}'.format(field_name)) | |||
r3963 | %> | |||
</%def> | ||||
r1282 | <%def name="main()"> | |||
<div class="box"> | ||||
%if c.repo_name: | ||||
<!-- box / title --> | ||||
r1685 | ${h.form(h.route_path('search_repo',repo_name=c.repo_name),method='get')} | |||
r3442 | %elif c.repo_group_name: | |||
<!-- box / title --> | ||||
${h.form(h.route_path('search_repo_group',repo_group_name=c.repo_group_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"> | ||||
r3442 | ||||
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')} | ||||
r3442 | ||||
r1282 | <input type="submit" value="${_('Search')}" class="btn"/> | |||
<br/> | ||||
r1684 | ||||
r3442 | <div class="search-tags"> | |||
r3446 | <span class="tag tag8"> | |||
%if c.repo_name: | ||||
r3467 | <a href="${h.route_path('search', _query={'q': c.cur_query, 'type': request.GET.get('type', 'content')})}">${_('Global Search')}</a> | |||
r3446 | %elif c.repo_group_name: | |||
r3467 | <a href="${h.route_path('search', _query={'q': c.cur_query, 'type': request.GET.get('type', 'content')})}">${_('Global Search')}</a> | |||
r3446 | % else: | |||
${_('Global Search')} | ||||
%endif | ||||
</span> | ||||
r3442 | %if c.repo_name: | |||
r3446 | » | |||
<span class="tag tag8"> | ||||
r3467 | ${repo_icon(c.rhodecode_db_repo)} | |||
r3442 | ${c.repo_name} | |||
</span> | ||||
%elif c.repo_group_name: | ||||
r3446 | » | |||
<span class="tag tag8"> | ||||
r3467 | ${repo_group_icon()} | |||
r3442 | ${c.repo_group_name} | |||
</span> | ||||
%endif | ||||
r3963 | % if c.sort_tag: | |||
<span class="tag tag8"> | ||||
% if c.sort_tag_dir == 'asc': | ||||
<i class="icon-angle-down"></i> | ||||
% elif c.sort_tag_dir == 'desc': | ||||
<i class="icon-angle-up"></i> | ||||
% endif | ||||
${_('sort')}:${c.sort_tag} | ||||
</span> | ||||
% endif | ||||
r3446 | ||||
r3442 | % for search_tag in c.search_tags: | |||
r3446 | <br/><span class="tag disabled" style="margin-top: 3px">${search_tag}</span> | |||
r3442 | % endfor | |||
</div> | ||||
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"> | |||
r3963 | <p class="filterexample" style="position: inherit" onclick="$('#search-help').toggle()">${_('Query Language examples')}</p> | |||
r3319 | <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(){ | ||||
$("#id_search_type").select2({ | ||||
'containerCssClass': "drop-menu", | ||||
'dropdownCssClass': "drop-menu-dropdown", | ||||
'dropdownAutoWidth': true, | ||||
'minimumResultsForSearch': -1 | ||||
}); | ||||
r3442 | ||||
$('#q').autoGrowInput({maxWidth: 920}); | ||||
setTimeout(function() { | ||||
$('#q').keyup() | ||||
}, 1); | ||||
r1282 | }) | |||
</script> | ||||
</%def> | ||||