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.
This commit is contained in:
Colin Kuskie 2009-04-09 16:02:58 -07:00
parent 03b777ee1e
commit d13d1bac8c
2 changed files with 49 additions and 23 deletions

View file

@ -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

View file

@ -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 = '<span id="'+myId+'" class="yui-button"><span class="first-child"><button type="link">edit</button></span></span>';
// 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 = '<a href="?op=account;module=friendManager;do=editFriends;userId=' + userId + '">edit</a> ';
el.innerHTML += '<a href="?op=account;module=inbox;uid=' + userId + '">' + oData + '</a>';
el.innerHTML = '<a href="?op=account;module=inbox;uid=' + userId + '">' + oData + '</a>';
}
WebGUI.FriendManager.formatGroups = function ( el, oRecord, oColumn, oData ) {
var userId = oRecord.getData('userId');
el.innerHTML = '<a href="?op=account;module=friendManager;do=editFriends;userId=' + userId + '">Edit all</a>';
var groups = oData.split("\n");
for (var idx=0; idx < groups.length; idx++) {
var group = groups[idx];
el.innerHTML += ' ';
el.innerHTML += '<a href="?op=account;module=friendManager;do=editFriends;userId=' + userId + ';groupName='+group+'">'+group+'</a>';
}
}
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