diff --git a/rhodecode/apps/home/views.py b/rhodecode/apps/home/views.py
--- a/rhodecode/apps/home/views.py
+++ b/rhodecode/apps/home/views.py
@@ -29,7 +29,7 @@ from rhodecode.lib import helpers as h
from rhodecode.lib.auth import (
LoginRequired, NotAnonymous, HasRepoGroupPermissionAnyDecorator)
from rhodecode.lib.index import searcher_from_config
-from rhodecode.lib.utils2 import safe_unicode, str2bool
+from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
from rhodecode.lib.ext_json import json
from rhodecode.model.db import (
func, or_, in_filter_generator, Repository, RepoGroup, User, UserGroup)
@@ -326,6 +326,20 @@ class HomeView(BaseAppView):
'url': h.route_path(
'search', _query={'q': query})
})
+ repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
+ if repo_group_id:
+ repo_group = RepoGroup.get(repo_group_id)
+ composed_hint = '{}/{}'.format(repo_group.group_name, query)
+ show_hint = not query.startswith(repo_group.group_name)
+ if repo_group and show_hint:
+ hint = u'Group search: `{}`'.format(composed_hint)
+ res.append({
+ 'id': -1,
+ 'value': composed_hint,
+ 'value_display': hint,
+ 'type': 'hint',
+ 'url': ""
+ })
repo_groups = self._get_repo_group_list(query)
for serialized_repo_group in repo_groups:
diff --git a/rhodecode/templates/base/base.mako b/rhodecode/templates/base/base.mako
--- a/rhodecode/templates/base/base.mako
+++ b/rhodecode/templates/base/base.mako
@@ -523,7 +523,10 @@ commit:efced4, to search for commits
var icon = '';
- if (searchType === 'search') {
+ if (searchType === 'hint') {
+ icon += ' ';
+ }
+ else if (searchType === 'search') {
icon += ' ';
}
else if (searchType === 'repo') {
@@ -561,7 +564,12 @@ commit:efced4, to search for commits
};
var handleSelect = function(element, suggestion) {
- window.location = suggestion['url'];
+ if (suggestion.type === "hint") {
+ // we skip action
+ $('#main_filter').focus();
+ } else {
+ window.location = suggestion['url'];
+ }
};
var autocompleteMainFilterResult = function (suggestion, originalQuery, queryLowerCase) {
if (queryLowerCase.split(':').length === 2) {
@@ -572,6 +580,7 @@ commit:efced4, to search for commits
$('#main_filter').autocomplete({
serviceUrl: pyroutes.url('goto_switcher_data'),
+ params: {"repo_group_id": templateContext.repo_group_id},
minChars:2,
maxHeight:400,
deferRequestBy: 300, //miliseconds
diff --git a/rhodecode/templates/base/root.mako b/rhodecode/templates/base/root.mako
--- a/rhodecode/templates/base/root.mako
+++ b/rhodecode/templates/base/root.mako
@@ -8,6 +8,9 @@ if hasattr(c, 'rhodecode_db_repo'):
c.template_context['repo_type'] = c.rhodecode_db_repo.repo_type
c.template_context['repo_landing_commit'] = c.rhodecode_db_repo.landing_rev[1]
+if getattr(c, 'repo_group', None):
+ c.template_context['repo_group_id'] = c.repo_group.group_id
+
if getattr(c, 'rhodecode_user', None) and c.rhodecode_user.user_id:
c.template_context['rhodecode_user']['username'] = c.rhodecode_user.username
c.template_context['rhodecode_user']['email'] = c.rhodecode_user.email