]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix retrieval of users with multiple backends
authorArthur Schiwon <blizzz@owncloud.com>
Tue, 30 Apr 2013 17:51:28 +0000 (19:51 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Tue, 30 Apr 2013 17:51:28 +0000 (19:51 +0200)
settings/ajax/userlist.php
settings/js/users.js

index 87b42395749c74398b78cd12db4caf40023b13b0..4abf54b8987e36ed2b598d3afa1c2a0044137ec6 100644 (file)
@@ -27,9 +27,14 @@ if (isset($_GET['offset'])) {
 } else {
        $offset = 0;
 }
+if (isset($_GET['limit'])) {
+       $limit = $_GET['limit'];
+} else {
+       $limit = 10;
+}
 $users = array();
 if (OC_User::isAdminUser(OC_User::getUser())) {
-       $batch = OC_User::getDisplayNames('', 10, $offset);
+       $batch = OC_User::getDisplayNames('', $limit, $offset);
        foreach ($batch as $user => $displayname) {
                $users[] = array(
                        'name' => $user,
@@ -40,7 +45,7 @@ if (OC_User::isAdminUser(OC_User::getUser())) {
        }
 } else {
        $groups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser());
-       $batch = OC_Group::usersInGroups($groups, '', 10, $offset);
+       $batch = OC_Group::usersInGroups($groups, '', $limit, $offset);
        foreach ($batch as $user) {
                $users[] = array(
                        'name' => $user,
index 5f9710053c93da5abdec0fd3cadc7c262e9bd9a0..a33fcea32234817b3abf1ee287df942b5cf51393 100644 (file)
@@ -19,6 +19,10 @@ function setQuota (uid, quota, ready) {
 var UserList = {
        useUndo: true,
        availableGroups: [],
+       offset: 30, //The first 30 users are there. No prob, if less in total.
+                               //hardcoded in settings/users.php
+
+       usersToLoad: 10, //So many users will be loaded when user scrolls down
 
        /**
         * @brief Initiate user deletion process in UI
@@ -192,14 +196,17 @@ var UserList = {
                        return;
                }
                UserList.updating = true;
-               $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function (result) {
+               $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset, limit: UserList.usersToLoad }), function (result) {
                        if (result.status === 'success') {
+                               //The offset does not mirror the amount of users available,
+                               //because it is backend-dependent. For correct retrieval,
+                               //always the limit(requested amount of users) needs to be added.
+                               UserList.offset += UserList.usersToLoad;
                                $.each(result.data, function (index, user) {
                                        if($('tr[data-uid="' + user.name + '"]').length > 0) {
                                                return true;
                                        }
                                        var tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, false);
-                                       UserList.offset++;
                                        if (index == 9) {
                                                $(tr).bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
                                                        $(this).unbind(event);
@@ -315,7 +322,6 @@ $(document).ready(function () {
 
        UserList.doSort();
        UserList.availableGroups = $('#content table').attr('data-groups').split(', ');
-       UserList.offset = $('tbody tr').length;
        $('tbody tr:last').bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
                OC.Router.registerLoadedCallback(function () {
                        UserList.update();