Edit friends interface.
New edit template with i18n and variables. Edit with save, to add and remove friends.
This commit is contained in:
parent
98d7318d64
commit
a67907308f
3 changed files with 72 additions and 11 deletions
|
|
@ -129,11 +129,23 @@ sub www_editFriends {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
my $form = $session->form;
|
my $form = $session->form;
|
||||||
my $userId = $form->get('userId');
|
my $userId = shift || $form->get('userId', 'guid');
|
||||||
my $user = WebGUI::User->new($session, $userId);
|
my $user = WebGUI::User->new($session, $userId);
|
||||||
|
|
||||||
##List users in my friends group. Each friend gets a delete link.
|
##List users in my friends group. Each friend gets a delete link.
|
||||||
my $friendsList = $user->friends->getUserList();
|
my $friendsList = $user->friends->getUserList();
|
||||||
|
my @friends_loop = ();
|
||||||
|
while (my ($userId, $username) = each %{ $friendsList }) {
|
||||||
|
push @friends_loop, {
|
||||||
|
userId => $userId,
|
||||||
|
username => $username,
|
||||||
|
checkForm => WebGUI::Form::checkbox($session, {
|
||||||
|
name => 'friendToAxe',
|
||||||
|
value => $userId,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
##List users in all administrated groups. Friends are added one at a time.
|
##List users in all administrated groups. Friends are added one at a time.
|
||||||
my @manageableUsers = ();
|
my @manageableUsers = ();
|
||||||
my $groupIds = $session->setting->get('groupsToManageFriends');
|
my $groupIds = $session->setting->get('groupsToManageFriends');
|
||||||
|
|
@ -141,33 +153,82 @@ sub www_editFriends {
|
||||||
foreach my $groupId (@groupIds) {
|
foreach my $groupId (@groupIds) {
|
||||||
my $group = WebGUI::Group->new($session, $groupId);
|
my $group = WebGUI::Group->new($session, $groupId);
|
||||||
next GROUP unless $group->getId || $group->getId eq 'new';
|
next GROUP unless $group->getId || $group->getId eq 'new';
|
||||||
push @manageableUsers, @{ $group->getUsersNotIn($user->get('friendsGroup'), 'withoutExpired') };
|
push @manageableUsers, @{ $group->getUsersNotIn($user->{_user}->{'friendsGroup'}, 'withoutExpired') };
|
||||||
}
|
}
|
||||||
@manageableUsers = uniq @manageableUsers;
|
@manageableUsers = uniq @manageableUsers;
|
||||||
my %usersToAdd = ();
|
my %usersToAdd = ();
|
||||||
|
tie %usersToAdd, 'Tie::IxHash';
|
||||||
my $manager = $session->user;
|
my $manager = $session->user;
|
||||||
foreach my $userId (@manageableUsers) {
|
my $i18n = WebGUI::International->new($session);
|
||||||
my $user = WebGUI::User->new($session, $userId);
|
$usersToAdd{0} = $i18n->get('Select One');
|
||||||
|
my @usersToAdd = ();
|
||||||
|
USERID: foreach my $newFriendId (@manageableUsers) {
|
||||||
|
next USERID if $newFriendId eq $userId;
|
||||||
|
my $user = WebGUI::User->new($session, $newFriendId);
|
||||||
##We don't use acceptsFriendsRequests here because it's overkill.
|
##We don't use acceptsFriendsRequests here because it's overkill.
|
||||||
##No need to check invitations, since friends are managed.
|
##No need to check invitations, since friends are managed.
|
||||||
##Existing friends are already filtered out.
|
##Existing friends are already filtered out.
|
||||||
next unless $user->profileField('ableToBeFriend');
|
next USERID unless $user->profileField('ableToBeFriend');
|
||||||
$usersToAdd{$userId} = $user->username;
|
push @usersToAdd, [ $newFriendId, $user->username ];
|
||||||
|
}
|
||||||
|
|
||||||
|
@usersToAdd = sort { $a->[1] cmp $b->[1] } @usersToAdd;
|
||||||
|
foreach my $newFriend (@usersToAdd) {
|
||||||
|
$usersToAdd{$newFriend->[0]} = $newFriend->[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
my $var;
|
my $var;
|
||||||
$var->{formHeader} = WebGUI::Form::header($session);
|
$var->{formHeader} = WebGUI::Form::formHeader($session, {
|
||||||
|
action => $self->getUrl('module=friendManager;do=editFriendsSave'),
|
||||||
|
})
|
||||||
|
. WebGUI::Form::hidden($session, { name => 'userId', value => $userId } );
|
||||||
$var->{addUserForm} = WebGUI::Form::selectBox($session, {
|
$var->{addUserForm} = WebGUI::Form::selectBox($session, {
|
||||||
name => 'userToAdd',
|
name => 'userToAdd',
|
||||||
options => \%usersToAdd,
|
options => \%usersToAdd,
|
||||||
sortByValue => 1,
|
|
||||||
});
|
});
|
||||||
$var->{formFooter} = WebGUI::Form::footer($session);;
|
$var->{friends_loop} = \@friends_loop;
|
||||||
|
$var->{has_friends} = scalar @friends_loop;
|
||||||
|
$var->{submit} = WebGUI::Form::submit($session);
|
||||||
|
$var->{formFooter} = WebGUI::Form::formFooter($session);
|
||||||
|
$var->{username} = $user->username;
|
||||||
|
$var->{userId} = $user->userId;
|
||||||
return $self->processTemplate($var,$session->setting->get("fmEditTemplateId"));
|
return $self->processTemplate($var,$session->setting->get("fmEditTemplateId"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_editFriendsSave ( )
|
||||||
|
|
||||||
|
Handle adding and removing people from a user's friend group. The userId of
|
||||||
|
the user to modify will be in the userId from variable. One userId to add will be
|
||||||
|
in userToAdd.
|
||||||
|
|
||||||
|
Users to delete will be listed in checkboxes with the name, friendToAxe
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_editFriendsSave () {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $form = $session->form;
|
||||||
|
my $userId = $form->process('userId', 'guid');
|
||||||
|
my $user = WebGUI::User->new($session, $userId);
|
||||||
|
my $userToAdd = $form->process('userToAdd', 'guid');
|
||||||
|
|
||||||
|
if ($userToAdd) {
|
||||||
|
$user->friends->addUsers([$userToAdd]);
|
||||||
|
}
|
||||||
|
|
||||||
|
my @usersToRemove = $form->process('friendToAxe', 'checkList');
|
||||||
|
if (scalar @usersToRemove) {
|
||||||
|
$user->friends->deleteUsers(\@usersToRemove);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $self->www_editFriends($userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 www_getFriendsAsJson ( )
|
=head2 www_getFriendsAsJson ( )
|
||||||
|
|
||||||
For each user in a group, count how many friends they have and return that data
|
For each user in a group, count how many friends they have and return that data
|
||||||
|
|
@ -196,7 +257,7 @@ sub www_getFriendsAsJson {
|
||||||
USER: foreach my $userId (@{ $group->getUsers} ) {
|
USER: foreach my $userId (@{ $group->getUsers} ) {
|
||||||
my $user = WebGUI::User->new($session, $userId);
|
my $user = WebGUI::User->new($session, $userId);
|
||||||
next USER unless $user;
|
next USER unless $user;
|
||||||
my $friendsCount = scalar $user->friends->getUsers();
|
my $friendsCount = scalar @{ $user->friends->getUsers() };
|
||||||
push @records, {
|
push @records, {
|
||||||
userId => $userId,
|
userId => $userId,
|
||||||
username => $user->username,
|
username => $user->username,
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ sub installFriendManagerSettings {
|
||||||
print "Installing FriendManager into settings...";
|
print "Installing FriendManager into settings...";
|
||||||
$session->setting->add('groupIdAdminFriends', '3');
|
$session->setting->add('groupIdAdminFriends', '3');
|
||||||
$session->setting->add('fmViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ');
|
$session->setting->add('fmViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ');
|
||||||
$session->setting->add('fmEditTemplateId', '64tqS80D53Z0JoAs2cX2VQ');
|
$session->setting->add('fmEditTemplateId', 'lG2exkH9FeYvn4pA63idNg');
|
||||||
$session->setting->add('groupsToManageFriends', '2');
|
$session->setting->add('groupsToManageFriends', '2');
|
||||||
print "\tDone";
|
print "\tDone";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue