# HG changeset patch # User Thomas De Schampheleire # Date 2015-06-29 17:42:39 # Node ID 790f013203694c2d6b1ea774710672d5de1654d9 # Parent a5b32cea5c03b72f9de441189a87249192c94d5f autocomplete: fix completion of repository owner The owner field of a repository setting was supposed to be autocompletable, but never really did (at least not in Kallithea, probably it once did in Rhodecode). Instead of making yet another 'OwnerAutoComplete', make a generic SimpleUserAutoComplete that can be reused in other places that only need completion of a text input field. diff --git a/kallithea/controllers/admin/repos.py b/kallithea/controllers/admin/repos.py --- a/kallithea/controllers/admin/repos.py +++ b/kallithea/controllers/admin/repos.py @@ -370,6 +370,8 @@ class ReposController(BaseRepoController c.repo_fields = RepositoryField.query()\ .filter(RepositoryField.repository == c.repo_info).all() + repo_model = RepoModel() + c.users_array = repo_model.get_users_js() c.active = 'settings' return htmlfill.render( render('admin/repos/repo_edit.html'), diff --git a/kallithea/public/js/base.js b/kallithea/public/js/base.js --- a/kallithea/public/js/base.js +++ b/kallithea/public/js/base.js @@ -1242,24 +1242,34 @@ var autocompleteCreate = function (input return autocomplete; } -var _MembersAutoComplete = function (divid, cont, users_list, groups_list) { +var SimpleUserAutoComplete = function (divid, cont, users_list) { var matchUsers = function (sQuery) { return autocompleteMatchUsers(sQuery, users_list); } - var matchGroups = function (sQuery) { - return autocompleteMatchGroups(sQuery, groups_list); - } + + var userAC = autocompleteCreate(divid, cont, matchUsers); + + // Handler for selection of an entry + var itemSelectHandler = function (sType, aArgs) { + var myAC = aArgs[0]; // reference back to the AC instance + var elLI = aArgs[1]; // reference to the selected LI element + var oData = aArgs[2]; // object literal of selected item's result data + myAC.getInputEl().value = oData.nname; + }; + userAC.itemSelectEvent.subscribe(itemSelectHandler); +} + +var _MembersAutoComplete = function (divid, cont, users_list, groups_list) { + var matchAll = function (sQuery) { - var u = matchUsers(sQuery); - var g = matchGroups(sQuery); + var u = autocompleteMatchUsers(sQuery, users_list); + var g = autocompleteMatchGroups(sQuery, groups_list); return u.concat(g); }; var membersAC = autocompleteCreate(divid, cont, matchAll); - var ownerAC = autocompleteCreate("user", "owner_container", matchUsers); - // Handler for selection of an entry var itemSelectHandler = function (sType, aArgs) { var nextId = divid.split('perm_new_member_name_')[1]; @@ -1278,9 +1288,6 @@ var _MembersAutoComplete = function (div } }; membersAC.itemSelectEvent.subscribe(itemSelectHandler); - if(ownerAC.itemSelectEvent){ - ownerAC.itemSelectEvent.subscribe(itemSelectHandler); - } } var MentionsAutoComplete = function (divid, cont, users_list) { diff --git a/kallithea/templates/admin/repos/repo_edit_settings.html b/kallithea/templates/admin/repos/repo_edit_settings.html --- a/kallithea/templates/admin/repos/repo_edit_settings.html +++ b/kallithea/templates/admin/repos/repo_edit_settings.html @@ -162,5 +162,8 @@ ${h.form(url('repo', repo_name=c.repo_in 'dropdownAutoWidth': true }); + // autocomplete + var _USERS_AC_DATA = ${c.users_array|n}; + SimpleUserAutoComplete('user', 'owner_container', _USERS_AC_DATA); });