changeset 5243:790f01320369

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.
author Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
date Mon, 29 Jun 2015 17:42:39 +0200
parents a5b32cea5c03
children df3079729bd9
files kallithea/controllers/admin/repos.py kallithea/public/js/base.js kallithea/templates/admin/repos/repo_edit_settings.html
diffstat 3 files changed, 23 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/admin/repos.py	Tue Jun 30 17:53:40 2015 +0200
+++ b/kallithea/controllers/admin/repos.py	Mon Jun 29 17:42:39 2015 +0200
@@ -370,6 +370,8 @@
 
         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'),
--- a/kallithea/public/js/base.js	Tue Jun 30 17:53:40 2015 +0200
+++ b/kallithea/public/js/base.js	Mon Jun 29 17:42:39 2015 +0200
@@ -1242,24 +1242,34 @@
     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 @@
         }
     };
     membersAC.itemSelectEvent.subscribe(itemSelectHandler);
-    if(ownerAC.itemSelectEvent){
-        ownerAC.itemSelectEvent.subscribe(itemSelectHandler);
-    }
 }
 
 var MentionsAutoComplete = function (divid, cont, users_list) {
--- a/kallithea/templates/admin/repos/repo_edit_settings.html	Tue Jun 30 17:53:40 2015 +0200
+++ b/kallithea/templates/admin/repos/repo_edit_settings.html	Mon Jun 29 17:42:39 2015 +0200
@@ -162,5 +162,8 @@
             'dropdownAutoWidth': true
         });
 
+        // autocomplete
+        var _USERS_AC_DATA = ${c.users_array|n};
+        SimpleUserAutoComplete('user', 'owner_container', _USERS_AC_DATA);
     });
 </script>