From d13d1bac8c51bb20714d418b7ae646998ec91e6d Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 9 Apr 2009 16:02:58 -0700 Subject: [PATCH] Group filters and list of names. For each group, show all other managed groups. Also provide an edit all link. Show list of names up to 45 characters, with no truncation. --- lib/WebGUI/Account/FriendManager.pm | 32 ++++++++++++--- .../build/friendManager/friendManager.js | 40 ++++++++++--------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/lib/WebGUI/Account/FriendManager.pm b/lib/WebGUI/Account/FriendManager.pm index 0270dbc34..b44658d19 100644 --- a/lib/WebGUI/Account/FriendManager.pm +++ b/lib/WebGUI/Account/FriendManager.pm @@ -182,7 +182,7 @@ sub www_editFriends { $var->{formHeader} = WebGUI::Form::formHeader($session, { action => $self->getUrl('module=friendManager;do=editFriendsSave'), }) - . WebGUI::Form::hidden($session, { name => 'userId', value => $userId } ); + . WebGUI::Form::hidden($session, { name => 'userId', value => $user->userId } ); $var->{addUserForm} = WebGUI::Form::selectBox($session, { name => 'userToAdd', options => \%usersToAdd, @@ -269,14 +269,36 @@ sub www_getFriendsAsJson { return '{}'; } my @records = (); + my $groups = $session->setting->get('groupsToManageFriends'); + my @groupIds = split "\n", $groups; + @groupIds = grep { $_ ne $groupId } @groupIds; + my $groupNames = join "\n", + map { $_->name } + map { WebGUI::Group->new($session, $_) } + @groupIds; USER: foreach my $userId (@{ $group->getUsers} ) { my $user = WebGUI::User->new($session, $userId); next USER unless $user; - my $friendsCount = scalar @{ $user->friends->getUsers() }; + my $friendsList = $user->friends->getUserList(); + my $friendsCount = scalar keys %{ $friendsList }; + my $friends = ''; + NAME: foreach my $name ( values %{ $friendsList }) { + if (length $friends + length $name < 45) { + if ($friends) { + $friends .= ', '; + } + $friends .= $name; + } + else { + last NAME; + } + } push @records, { - userId => $userId, - username => $user->username, - friends => $friendsCount, + userId => $userId, + username => $user->username, + friendsCount => $friendsCount, + friends => $friends, + groups => $groupNames, }; } ##Sort by username to make the datatable happy diff --git a/www/extras/yui-webgui/build/friendManager/friendManager.js b/www/extras/yui-webgui/build/friendManager/friendManager.js index c318ac299..f439b51f7 100644 --- a/www/extras/yui-webgui/build/friendManager/friendManager.js +++ b/www/extras/yui-webgui/build/friendManager/friendManager.js @@ -40,9 +40,11 @@ WebGUI.FriendManager.responseSchema = { resultsList: 'records', fields: [ - { key: 'userId', parser: 'string' }, - { key: 'username', parser: 'string' }, - { key: 'friends', parser: 'number' }, + { key: 'userId', parser: 'string' }, + { key: 'username', parser: 'string' }, + { key: 'friendsCount', parser: 'number' }, + { key: 'friends', parser: 'string' }, + { key: 'groups', parser: 'string' }, ], metaFields: { totalRecords: "recordsReturned" // Access to value in the server response @@ -50,27 +52,29 @@ WebGUI.FriendManager.responseSchema }; WebGUI.FriendManager.formatUsername = function ( el, oRecord, oColumn, oData ) { -// var link = document.createElement('a'); -// var myId = YAHOO.util.Dom.generateId(); -// elCell.innerHTML = ''; -// var editButton = new YAHOO.widget.Button( myId, -// { -// type : "link", -// href : "?op=account;module=friendManager;do=editFriends;uid="+oRecord.getData('userId'), -// label : "EDIT", -// } -// ); var userId = oRecord.getData('userId'); - el.innerHTML = 'edit '; - el.innerHTML += '' + oData + ''; + el.innerHTML = '' + oData + ''; +} + +WebGUI.FriendManager.formatGroups = function ( el, oRecord, oColumn, oData ) { + var userId = oRecord.getData('userId'); + el.innerHTML = 'Edit all'; + var groups = oData.split("\n"); + for (var idx=0; idx < groups.length; idx++) { + var group = groups[idx]; + el.innerHTML += ' '; + el.innerHTML += ''+group+''; + } } WebGUI.FriendManager.ColumnDefs = [ // sortable:true enables sorting //{key:"username", label:WebGUI.FriendManager.i18n.get('WebGUI', '50' ), sortable: true}, //{key:"friends", label:WebGUI.FriendManager.i18n.get('Account_Friends', 'title' ), sortable: true}, - {key:"username", label:"username", sortable: true, formatter: WebGUI.FriendManager.formatUsername }, - {key:"friends", label:"friends", sortable: true}, - {key:"userId", label:"userId", sortable: true}, + {key:"groups", label:"groups", sortable: false, formatter: WebGUI.FriendManager.formatGroups }, + {key:"username", label:"username", sortable: true, formatter: WebGUI.FriendManager.formatUsername }, + {key:"friendsCount", label:"friendsCount", sortable: true}, + {key:"friends", label:"friends", sortable: false}, + {key:"userId", label:"userId", sortable: true}, ]; //Per object code