]> source.dussan.org Git - nextcloud-server.git/commitdiff
Revisions from review.
authorringmaster <epithet@gmail.com>
Tue, 6 May 2014 14:52:14 +0000 (10:52 -0400)
committerArthur Schiwon <blizzz@owncloud.com>
Mon, 2 Jun 2014 10:53:58 +0000 (12:53 +0200)
* Explicit toString()-based getters for uid and displayname data.
* Restored user check for group multiselect in new user creation form.
* Removed jQuery colon expr for uid.

settings/js/users/users.js

index f40854cf6374c47429fb2efc6874316961a566a5..cd81a4b7718f9ac2a5ee3eefc6daa372962f8726 100644 (file)
@@ -101,7 +101,7 @@ var UserList = {
                }
 
                $quotaSelect.on('change', function () {
-                       var uid = $(this).closest('tr').data('uid');
+                       var uid = UserList.getUID(this);
                        var quota = $(this).val();
                        setQuota(uid, quota, function(returnedQuota){
                                if (quota !== returnedQuota) {
@@ -222,16 +222,27 @@ var UserList = {
                UserList.checkUsersToLoad();
        },
        hide: function(uid) {
-               $('tr:data(' + uid + ')').hide();
+               UserList.getRow(uid).hide();
        },
        show: function(uid) {
-               $('tr:data(' + uid + ')').show();
+               UserList.getRow(uid).show();
        },
        remove: function(uid) {
-               $('tr:data(' + uid + ')').remove();
+               UserList.getRow(uid).remove();
        },
        has: function(uid) {
-               return $('tr:data(' + uid + ')').length > 0;
+               return UserList.getRow(uid).length > 0;
+       },
+       getRow: function(uid) {
+               return $userListBody.find('tr').filter(function(){
+                       return UserList.getUID(this) === uid;
+               });
+       },
+       getUID: function(element) {
+               return ($(element).closest('tr').data('uid') || '').toString();
+       },
+       getDisplayName: function(element) {
+               return ($(element).closest('tr').data('displayname') || '').toString();
        },
        initDeleteHandling: function() {
                //set up handler
@@ -248,7 +259,7 @@ var UserList = {
                //when to mark user for delete
                $userListBody.on('click', '.delete', function () {
                        // Call function for handling delete/undo
-                       var uid = $(this).closest('tr').data('uid');
+                       var uid = UserList.getUID(this);
                        UserDeleteHandler.mark(uid);
                });
 
@@ -280,7 +291,7 @@ var UserList = {
                                        //because it is backend-dependent. For correct retrieval,
                                        //always the limit(requested amount of users) needs to be added.
                                        $.each(result.data, function (index, user) {
-                                               if($('tr:data(' + user.name + ')').length > 0) {
+                                               if(UserList.has(user.name)) {
                                                        return true;
                                                }
                                                var $tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, user.storageLocation, user.lastLogin, false);
@@ -311,38 +322,41 @@ var UserList = {
        applyGroupSelect: function (element) {
                var checked = [];
                var $element = $(element);
-               var user = $element.data('username');
+               var user = UserList.getUID($element);
 
                if ($element.data('user-groups')) {
                        checked = $element.data('user-groups');
                }
-               var checkHandler = function (group) {
-                       if (user === OC.currentUser && group === 'admin') {
-                               return false;
-                       }
-                       if (!oc_isadmin && checked.length === 1 && checked[0] === group) {
-                               return false;
-                       }
-                       $.post(
-                               OC.filePath('settings', 'ajax', 'togglegroups.php'),
-                               {
-                                       username: user,
-                                       group: group
-                               },
-                               function (response) {
-                                       if (response.status === 'success') {
-                                               GroupList.update();
-                                               if (UserList.availableGroups.indexOf(response.data.groupname) === -1 &&
-                                                       response.data.action === 'add'
-                                               ) {
-                                                       UserList.availableGroups.push(response.data.groupname);
+               var checkHandler = null;
+               if(user) { // Only if in a user row, and not the #newusergroups select
+                       checkHandler = function (group) {
+                               if (user === OC.currentUser && group === 'admin') {
+                                       return false;
+                               }
+                               if (!oc_isadmin && checked.length === 1 && checked[0] === group) {
+                                       return false;
+                               }
+                               $.post(
+                                       OC.filePath('settings', 'ajax', 'togglegroups.php'),
+                                       {
+                                               username: user,
+                                               group: group
+                                       },
+                                       function (response) {
+                                               if (response.status === 'success') {
+                                                       GroupList.update();
+                                                       if (UserList.availableGroups.indexOf(response.data.groupname) === -1 &&
+                                                               response.data.action === 'add'
+                                                       ) {
+                                                               UserList.availableGroups.push(response.data.groupname);
+                                                       }
+                                               }
+                                               if (response.data.message) {
+                                                       OC.Notification.show(response.data.message);
                                                }
                                        }
-                                       if (response.data.message) {
-                                               OC.Notification.show(response.data.message);
-                                       }
-                               }
-                       );
+                               );
+                       }
                };
                var addGroup = function (select, group) {
                        $('select[multiple]').each(function (index, element) {
@@ -374,7 +388,7 @@ var UserList = {
        applySubadminSelect: function (element) {
                var checked = [];
                var $element = $(element);
-               var user = $element.data('username');
+               var user = UserList.getUID($element);
 
                if ($element.data('subadmin')) {
                        checked = $element.data('subadmin');
@@ -411,7 +425,7 @@ var UserList = {
                });
        },
 
-       _onScroll: function(e) {
+       _onScroll: function() {
                if (!!UserList.noMoreEntries) {
                        return;
                }
@@ -437,12 +451,6 @@ $(document).ready(function () {
        $userList = $('#userlist');
        $userListBody = $userList.find('tbody');
 
-       // This adds a custom :data(value) jQuery selector, to select elements having data-uid="value":
-       jQuery.expr[':'].uid = function(elem, index, match) {
-               // if the requested value's set, compare it, otherwise return whether the element has the uid data element
-               return match[3] ? jQuery(elem).data('uid') === match[3] : !!jQuery(elem).data('uid');
-       };
-
        UserList.initDeleteHandling();
 
        // Implements User Search
@@ -470,8 +478,7 @@ $(document).ready(function () {
                event.stopPropagation();
 
                var $td = $(this).closest('td');
-               var $tr = $td.closest('tr');
-               var uid = $tr.data('uid');
+               var uid = UserList.getUID($td);
                var $input = $('<input type="password">');
                $td.find('img').hide();
                $td.children('span').replaceWith($input);
@@ -509,8 +516,8 @@ $(document).ready(function () {
                event.stopPropagation();
                var $td = $(this).closest('td');
                var $tr = $td.closest('tr');
-               var uid = $tr.data('uid');
-               var displayName = escapeHTML($tr.data('displayname'));
+               var uid = UserList.getUID($td);
+               var displayName = escapeHTML(UserList.getDisplayName($td));
                var $input = $('<input type="text" value="' + displayName + '">');
                $td.find('img').hide();
                $td.children('span').replaceWith($input);
@@ -545,8 +552,8 @@ $(document).ready(function () {
 
        $('#default_quota, .quota-user').singleSelect().on('change', function () {
                var $select = $(this);
-               var uid = $select.closest('tr').data('uid');
-               var quota = $(this).val();
+               var uid = UserList.getUID($select);
+               var quota = $select.val();
                setQuota(uid, quota, function(returnedQuota){
                        if (quota !== returnedQuota) {
                                $select.find(':selected').text(returnedQuota);