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