]> source.dussan.org Git - nextcloud-server.git/commitdiff
make filter work on server-side
authorArthur Schiwon <blizzz@owncloud.com>
Wed, 2 Apr 2014 19:48:35 +0000 (21:48 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Mon, 2 Jun 2014 10:53:55 +0000 (12:53 +0200)
settings/ajax/userlist.php
settings/js/users/filter.js [new file with mode: 0644]
settings/js/users/users.js
settings/users.php

index 7ca1d535a4603e9354777dc009d5c133989a8521..32237d60b6e8b66507b9fd933030ec999ddb80d3 100644 (file)
@@ -37,13 +37,18 @@ if (isset($_GET['gid']) && !empty($_GET['gid'])) {
 } else {
        $gid = false;
 }
+if (isset($_GET['pattern']) && !empty($_GET['pattern'])) {
+       $pattern = $_GET['pattern'];
+} else {
+       $pattern = '';
+}
 $users = array();
 $userManager = \OC_User::getManager();
 if (OC_User::isAdminUser(OC_User::getUser())) {
        if($gid !== false) {
-               $batch = OC_Group::displayNamesInGroup($gid, '', $limit, $offset);
+               $batch = OC_Group::displayNamesInGroup($gid, $pattern, $limit, $offset);
        } else {
-               $batch = OC_User::getDisplayNames('', $limit, $offset);
+               $batch = OC_User::getDisplayNames($pattern, $limit, $offset);
        }
        foreach ($batch as $uid => $displayname) {
                $user = $userManager->get($uid);
@@ -65,7 +70,7 @@ if (OC_User::isAdminUser(OC_User::getUser())) {
                //don't you try to investigate loops you must not know about
                $groups = array();
        }
-       $batch = OC_Group::usersInGroups($groups, '', $limit, $offset);
+       $batch = OC_Group::usersInGroups($groups, $pattern, $limit, $offset);
        foreach ($batch as $uid) {
                $user = $userManager->get($uid);
                $users[] = array(
diff --git a/settings/js/users/filter.js b/settings/js/users/filter.js
new file mode 100644 (file)
index 0000000..134ca47
--- /dev/null
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2014, Arthur Schiwon <blizzz@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * @brief foobar
+ * @param jQuery input element that works as the user text input field
+ */
+function UserManagementFilter(filterInput, userList) {
+       this.filterInput = filterInput;
+       this.userList = userList;
+       this.thread = undefined;
+
+       this.init();
+}
+
+UserManagementFilter.prototype.init = function() {
+       umf = this;
+       this.filterInput.keyup(function() {
+               clearTimeout(umf.thread);
+               umf.thread = setTimeout(
+                       function() {
+                               umf.run();
+                       },
+                       300
+               );
+       });
+}
+
+UserManagementFilter.prototype.run = function() {
+       this.userList.empty();
+       this.userList.update();
+}
+
+UserManagementFilter.prototype.getPattern = function() {
+       return this.filterInput.val();
+}
\ No newline at end of file
index f5c3b1decc542e791168b90cd1ab03ef76dbae3a..92ce8277baffae6d7df92ccc33f0557339f32856 100644 (file)
@@ -219,7 +219,8 @@ var UserList = {
                        gid = '';
                }
                UserList.currentGid = gid;
-               var query = $.param({ offset: UserList.offset, limit: UserList.usersToLoad, gid: gid });
+               pattern = filter.getPattern();
+               var query = $.param({ offset: UserList.offset, limit: UserList.usersToLoad, gid: gid, pattern: pattern });
                $.get(OC.generateUrl('/settings/ajax/userlist') + '?' + query, function (result) {
                        var loadedUsers = 0;
                        var trs = [];
@@ -538,16 +539,5 @@ $(document).ready(function () {
                );
        });
        // Implements User Search
-       $('#usersearchform input').keyup(function() {
-               var inputVal = $(this).val(), regex = new RegExp(inputVal, "i");;
-               $('table tbody tr td.name').each(function (key,element) {
-                       if (regex.test($(element).text())) {
-                               $(element).parent().show();
-                       } else {
-                               $(element).parent().hide();
-                       }
-               });
-       });
-
-
+       filter = new UserManagementFilter($('#usersearchform input'), UserList);
 });
index c0c1adc74c7dc069811fa2e49816b15accf9cec8..d6e270bbc3246b2e871547c75b09133b7d9c0b74 100644 (file)
@@ -9,6 +9,7 @@ OC_Util::checkSubAdminUser();
 
 // We have some javascript foo!
 OC_Util::addScript('settings', 'users/deleteHandler');
+OC_Util::addScript('settings', 'users/filter');
 OC_Util::addScript( 'settings', 'users/users' );
 OC_Util::addScript( 'settings', 'users/groups' );
 OC_Util::addScript( 'core', 'multiselect' );