]> source.dussan.org Git - nextcloud-server.git/commitdiff
load groups when clicking on them
authorArthur Schiwon <blizzz@owncloud.com>
Wed, 19 Feb 2014 10:40:07 +0000 (11:40 +0100)
committerArthur Schiwon <blizzz@owncloud.com>
Mon, 2 Jun 2014 10:53:52 +0000 (12:53 +0200)
settings/ajax/userlist.php
settings/js/users/groups.js
settings/js/users/users.js

index b1c26429534f6ea5b2008de622e0e31b37517d43..7ca1d535a4603e9354777dc009d5c133989a8521 100644 (file)
@@ -32,10 +32,19 @@ if (isset($_GET['limit'])) {
 } else {
        $limit = 10;
 }
+if (isset($_GET['gid']) && !empty($_GET['gid'])) {
+       $gid = $_GET['gid'];
+} else {
+       $gid = false;
+}
 $users = array();
 $userManager = \OC_User::getManager();
 if (OC_User::isAdminUser(OC_User::getUser())) {
-       $batch = OC_User::getDisplayNames('', $limit, $offset);
+       if($gid !== false) {
+               $batch = OC_Group::displayNamesInGroup($gid, '', $limit, $offset);
+       } else {
+               $batch = OC_User::getDisplayNames('', $limit, $offset);
+       }
        foreach ($batch as $uid => $displayname) {
                $user = $userManager->get($uid);
                $users[] = array(
@@ -50,6 +59,12 @@ if (OC_User::isAdminUser(OC_User::getUser())) {
        }
 } else {
        $groups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser());
+       if($gid !== false && in_array($gid, $groups)) {
+               $groups = array($gid);
+       } elseif($gid !== false) {
+               //don't you try to investigate loops you must not know about
+               $groups = array();
+       }
        $batch = OC_Group::usersInGroups($groups, '', $limit, $offset);
        foreach ($batch as $uid) {
                $user = $userManager->get($uid);
index 5e9f5582b5a76b8bd88067e770583e55e2b83cf5..f6124eaa795e550ef4afeeb04606050b15cac116 100644 (file)
                OC.Notification.showHtml(t('settings', 'deleted') + ' ' + escapeHTML(gid) + '<span class="undo">' + t('settings', 'undo') + '</span>');
        },
 
+       showGroup: function (gid) {
+               UserList.empty();
+               UserList.update(gid);
+       },
+
        finishDelete: function (ready) {
                if (!GroupList.deleteCanceled && GroupList.deleteGid) {
                        $.ajax({
index 47fe5cc5a69599298fa8a92f6296354bba090531..3ef6706b98cde34d58c55ca1de40fc16d173f96b 100644 (file)
@@ -139,7 +139,13 @@ var UserList = {
                }
                tr.find('td.lastLogin').text(lastLogin);
                $(tr).appendTo('tbody');
-
+               if(UserList.isEmpty === true) {
+                       //when the list was emptied, one row was left, necessary to keep
+                       //add working and the layout unbroken. We need to remove this item
+                       tr.show();
+                       $('tbody tr').first().remove();
+                       UserList.isEmpty = false;
+               }
                if (sort) {
                        UserList.doSort();
                }
@@ -215,16 +221,23 @@ var UserList = {
                        $('tbody').append(items);
                }
        },
-       update: function () {
+       empty: function() {
+               //one row needs to be kept, because it is cloned to add new rows
+               $('tbody tr:not(:first)').remove();
+               $('tbody tr').first().hide();
+               UserList.isEmpty = true;
+               UserList.offset = 0;
+       },
+       update: function (gid) {
                if (UserList.updating) {
                        return;
                }
                $('table+.loading').css('visibility', 'visible');
                UserList.updating = true;
-               var query = $.param({ offset: UserList.offset, limit: UserList.usersToLoad });
-               $.get(OC.generateUrl('/settings/ajax/userlist') + '?' + query, function (result) {
-                       var loadedUsers = 0;
-                       var trs = [];
+               if(gid === undefined) {
+                       gid = '';
+               }
+               $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset, limit: UserList.usersToLoad, gid: gid }), function (result) {
                        if (result.status === 'success') {
                                //The offset does not mirror the amount of users available,
                                //because it is backend-dependent. For correct retrieval,
@@ -485,6 +498,15 @@ $(document).ready(function () {
                });
        });
 
+       // click on group name
+       // FIXME: also triggered when clicking on "remove"
+       $('ul').on('click', 'li', function (event) {
+               var li = $(this);
+               var gid = $(li).attr('data-gid');
+               // Call function for handling delete/undo on Groups
+               GroupList.showGroup(gid);
+       });
+
        $('#newuser').submit(function (event) {
                event.preventDefault();
                var username = $('#newusername').val();