From 100b900dd29085e73a94d3b69c44aefd43881315 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 6 Apr 2009 10:34:54 -0700 Subject: [PATCH] Beginning of edit user friend interface. Change prefix of templates from friendManager to fm. --- lib/WebGUI/Account/FriendManager.pm | 50 ++++++++++++++++-- .../i18n/English/Account_FriendManager.pm | 10 ++++ sbin/installFriendManager.pl | 3 +- .../root_import_account_friendmanager.wgpkg | Bin 1541 -> 1609 bytes 4 files changed, 57 insertions(+), 6 deletions(-) diff --git a/lib/WebGUI/Account/FriendManager.pm b/lib/WebGUI/Account/FriendManager.pm index fc950a037..d2c4b35cd 100644 --- a/lib/WebGUI/Account/FriendManager.pm +++ b/lib/WebGUI/Account/FriendManager.pm @@ -8,6 +8,7 @@ use WebGUI::Pluggable; use WebGUI::Utility; use base qw/WebGUI::Account/; +use List::MoreUtils qw/uniq/; use JSON qw(from_json to_json); =head1 NAME @@ -76,12 +77,19 @@ sub editSettingsForm { defaultValue => [2,3], ); $f->template( - name => "friendManagerViewTemplateId", - value => $self->session->setting->get("friendManagerViewTemplateId"), + name => "fmViewTemplateId", + value => $self->session->setting->get("fmViewTemplateId"), namespace => "Account/FriendManager/View", label => $i18n->get("view template label"), hoverHelp => $i18n->get("view template hoverHelp"), ); + $f->template( + name => "fmEditTemplateId", + value => $self->session->setting->get("fmEditTemplateId"), + namespace => "Account/FriendManager/Edit", + label => $i18n->get("edit template label"), + hoverHelp => $i18n->get("edit template hoverHelp"), + ); return $f->printRowsOnly; } @@ -100,7 +108,8 @@ sub editSettingsFormSave { my $setting = $session->setting; my $form = $session->form; - $setting->set("friendManagerViewTemplateId", $form->process("friendManagerViewTemplateId", "template")); + $setting->set("fmViewTemplateId", $form->process("fmViewTemplateId", "template")); + $setting->set("fmEditTemplateId", $form->process("fmEditTemplateId", "template")); my $groupsToManageFriends = $form->process("groupsToManageFriends", "group"); $setting->set("groupsToManageFriends", $groupsToManageFriends); $setting->set("groupIdAdminFriends", $form->process("groupIdAdminFriends", "group")); @@ -111,6 +120,8 @@ sub editSettingsFormSave { =head2 www_editFriends ( ) Edit the friends for a user. Uses the form variable userId, to determine which user. +Only users in the managed groups are shown. Group inheritance is supported, but +only for WebGUI defined groups. =cut @@ -119,11 +130,40 @@ sub www_editFriends { my $session = $self->session; my $form = $session->form; my $userId = $form->get('userId'); + my $user = WebGUI::User->new($session, $userId); ##List users in my friends group. Each friend gets a delete link. + my $friendsList = $user->friends->getUserList(); ##List users in all administrated groups. Friends are added one at a time. + my @manageableUsers = (); + my $groupIds = $session->setting->get('groupsToManageFriends'); + my @groupIds = split "\n", $groupIds; + foreach my $groupId (@groupIds) { + my $group = WebGUI::Group->new($session, $groupId); + next GROUP unless $group->getId || $group->getId eq 'new'; + push @manageableUsers, @{ $group->getUsersNotIn($user->get('friendsGroup'), 'withoutExpired') }; + } + @manageableUsers = uniq @manageableUsers; + my %usersToAdd = (); + my $manager = $session->user; + foreach my $userId (@manageableUsers) { + my $user = WebGUI::User->new($session, $userId); + ##We don't use acceptsFriendsRequests here because it's overkill. + ##No need to check invitations, since friends are managed. + ##Existing friends are already filtered out. + next unless $user->profileField('ableToBeFriend'); + $usersToAdd{$userId} = $user->username; + } - return $self->processTemplate($var,$session->setting->get("friendManagerViewTemplateId")); + my $var; + $var->{formHeader} = WebGUI::Form::header($session); + $var->{addUserForm} = WebGUI::Form::selectBox($session, { + name => 'userToAdd', + options => \%usersToAdd, + sortByValue => 1, + }); + $var->{formFooter} = WebGUI::Form::footer($session);; + return $self->processTemplate($var,$session->setting->get("fmEditTemplateId")); } #------------------------------------------------------------------- @@ -202,7 +242,7 @@ sub www_view { }; } - return $self->processTemplate($var,$session->setting->get("friendManagerViewTemplateId")); + return $self->processTemplate($var,$session->setting->get("fmViewTemplateId")); } diff --git a/lib/WebGUI/i18n/English/Account_FriendManager.pm b/lib/WebGUI/i18n/English/Account_FriendManager.pm index a61afe96c..32ce9a895 100644 --- a/lib/WebGUI/i18n/English/Account_FriendManager.pm +++ b/lib/WebGUI/i18n/English/Account_FriendManager.pm @@ -23,6 +23,16 @@ our $I18N = { lastUpdated => 0, }, + 'edit template label' => { + message => q{Edit Friends Template}, + lastUpdated => 0, + }, + + 'edit template hoverHelp' => { + message => q{This template renders the interface for adding or removing friends for a user.}, + lastUpdated => 0, + }, + 'groupsToManageFriends label' => { message => q{Groups to Manage as Friends}, lastUpdated => 0, diff --git a/sbin/installFriendManager.pl b/sbin/installFriendManager.pl index 64d12fc76..c6d7e1ad4 100644 --- a/sbin/installFriendManager.pl +++ b/sbin/installFriendManager.pl @@ -44,7 +44,8 @@ sub installFriendManagerSettings { my $session = shift; print "Installing FriendManager into settings..."; $session->setting->add('groupIdAdminFriends', '3'); - $session->setting->add('friendManagerViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ'); + $session->setting->add('fmViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ'); + $session->setting->add('fmEditTemplateId', '64tqS80D53Z0JoAs2cX2VQ'); $session->setting->add('groupsToManageFriends', '2'); print "\tDone"; } diff --git a/sbin/packages/root_import_account_friendmanager.wgpkg b/sbin/packages/root_import_account_friendmanager.wgpkg index c1d3027068cd6266ae4325a849ddb0f8ec73efda..7a5526b315059589fe7503b502e28653324f6f2c 100644 GIT binary patch literal 1609 zcmV-P2DbShiwFP!00000|Ls{@bJI8!&NIJ46JFREQeRR#X(*iuy-}7znFh-4c9&6X zHBswGUP(>~4F7$PWXG4p31uf`_JSWA)koH+bN}RSHSYhiZM)O)8V&vHZ<}9d8-7uK z*$u~We9v=i+qWCYacrmEK=8`_Ux`#$z}5mDQFgN$FOfvZ)nct2Tt+$byJqS?Nn~~n zW{1n%Jue+^T}#e3v{6{m&-`BJe}CI`7W}{M`d$NpHShnrFaK}d|JFBw@c98GVN)tD z@Q5@~5B>K0WAi8$JSIX>BK1=2_n z$TDTtZ^p?mqH;{aLdeMN1!W<>HE-F4K+YJCC0)iLACgPf@x|N6L_Wo z*n(H#iM4mhYC#Lk5QElu7!eCgNdR8nPzHBAv2szqkxhZdctjZnhc1KWqVEYhOqAjk zd*4}8Ft7{+jTMq2D7m$;aH42Lb&y*52rAdIW6SQl##5Xwd)eIEwbG$>=2x(EMYQzI z#7`Yc8bh1Fn&C0$t&mSzWJ;K_7XHq4+yoYh$V6jgzbm!d1Xdn_Rz9l5+XR+QG077V z5R+}`um){YSZSu`iCu$)DrMyF#$lRJP}X!_)uL=54qLZmILeDBb-K*bw>AN?3S`8MGu}RsNde-xW`n@XF>)?cPHVP56xvMxPNdKQ4Ocp(Z{dd4j&6 zhmv3sjL{Vr6POTE8Ao{5LzF?2F*BfS=%t}*T(Y8F@mog3TOf)j;bQ+wL}VTb&Xq+c zx`A3a2zUaCmufi4^qo?2TP$fBN4A{5t^Pdk+6P|ySNjF;OE-A$zI#*5rSeR0#kFk~ z8!45~X&4f=_W7H)7?}ml&{WhIv-~w9dW9!MmtFJ56pQo){ZyA?n66*bU^E1zg=r_@o+;TNH>;c8 z03*Fls6H&uMo$rN3v@w-$8S%zj>>Vhb&7AuKsV<{^*E2~A46|p<)&ffy6Y`jdTWIZ zDH{_()msrA2|hW)0_yCd3v@_j+^d;#@8UjZ8`ZHa;~{NK1CpxU>-9DH z==BD3hvuYAletqK(klvVOcOT8ZFf66-L~%+h*^ld(_yLSbPAE8DoUX$rbT)#T84v| ziC=LAZ~<17F9jo&Iu5l<(#;e=CJWB#r&Qp&_5!m^QVxh?V6D?KvxLT$48CobF&2=) z>kQcIJs+IDT-J}umpr(c`=!E*sXQQ8IEhm4JB4Ote;Ul4ozBjV*KtcMSdb}|V6TID zHrBZbk{<^*c_5V##{Bk#9YHBejZ^|>5GjyzL2A~1R*ovZw2a^Lh#@Qxvsj(g;3z!G z>eThY!MpdbMxVk{wsU+n>3;Im;jmxqh|2Ssgz{qaE$IpVHz$j_2rxF7o3>ff!JIf2 zjpMs^*Y6gH;8V!FY(2jfr|m7A|J!~WJ_Fg`!;U}B|KD`}&$v)gQx{V)&(Tte{>n##4SyS0 z!@`z68&ryPnQN^m5_uuKGoLGpkOa>6T7+3|>7VZxq6$4LS#%Af(=7oG`TIB+lL4I& zo}|5{?c1f2y2$Sww*WN^cHYIZ+IaR%(-~6~@|#~;?=FNUB!}Fzd~>8&6KtJQ*S-_k z@Lnr&G`@L%{^Dia+II&^wofnmg(p^#4V{hsC?4Y>QNTx|DE(wviuEexD3!ByJY@wP zsT!z4N6wxZcjf732BkEO1!aa5pX(FnJd;+N5dM?$KjkvtgD(8Q_+f$nk_G+(;VXe6 H03HAU*bf+_ literal 1541 zcmV+g2KxCQiwFP!00000|Ls^?Z`(E$&U1f-;J$P~6G^^Ej++K>lcw>KbP4SAwrmA0 zF*XyKR7uLNSM(ykKgW#2Xj`wLNfhP7 zkY!TKuf$0|B4UWcVlBm!w}gglqJ=uefS6Ji3$iGVO(^DuB4cqakahNbYv-oK(tK?}?ffk99|!Zs2D1H8B;6z*tb=R^5MHU%1^0ig(d zy$G5Q-5(Tm6#*x)v;+?f3m3{Jl0-y>lAS+6Wif1Qn(zjVQ7Z4MvcG4ikIJBb0isHk zt!~YIyVZo(s7@i=4BCL>jFZ4?A7p)yl>lo?=5@T6Er#4!m&Oy^51 z5$BvqrVKMbG~g_WJK@WaNIg_9q)9vi)v}7d7m~3RKm!nv{gCzBs+Mg-DT4$C=Si6Q zF=8yXv_So+^EpN|U#5p%qY+j~uUCu_PZy}Sst~|*wM>DL5Rm4kb;5mJFkoCu*Ch#_ zl$=n0T%2t^x1jM@Z*l+CWoPHe44$1cbc=hcJU>~E^K|)ZC~4FzS$3|w+LEodR@jix zA?8G0^5}@O(K+Inrgk0gSV*o3G;G!K-D<7rRh_2SED$A;QHoZwqV)zM&{{;y;!2Hbk$xeG2o-J0 z@F`d^0x=c8W)e0MAW7Il9FH(fdiUFh;v`8*5l{?#XKZp3os(ViN462a<`sL15eMqA z&b+PGaqsMOQFS6tS#UcubcrDmafq)`5~VTV7HFC}Wezf2(C`|D;W!=>0cJUzCFL?d zL9V0VHjgI*V#p>PdIV)FHHU#tA&?;Tg47P}tkRVHY->;E0flM6r?EU=f+Nu&D|69@ z!JAhn?fCG7pHAN&Z{J>=y=%0K9TCx;3aBz#VIv{5o-_MZjD14nX!f}*b~I^SFplfg zn}z^zDkR`+d(7qWXIhiZ_vh1-S8()e;EO>;G2^d~zHWkeeep-Y=f9fc{y6`Aix9c*`7h%%MWr<|=wEm?ELC8WhDFN@KwjkTOv8$jCV;B_!o#d_ zw7UnzP>Gxw7F|QmRJn(f+yM%PxJO2qC28ZRd5%#o=P8_9EkHFBowcZ}?w!9-j71lP z{N@?*?!s9@oSxKXO?ofhpP>jvjV(FER@y+UjI8h3u|bT?hPUKH!yPD5q2yXJ^p^E+ zZ~(06h(*dTxp&paj3un6;Z+Ui%(I@EGKH8mMCb3&nMHtmFqoQeY<&$4F^#XA@9wU@ zyW8-qMii_d8)fsXBpcAx_1R%f$oU4jyc3=1o?dpwX9r2AcQ6?qo*sShPW;B8@Wd)Q zp>nbv#Y5D`5{P9KrQfyYbFC{98<5i%P;*CLA$m0zH@T$x@Ra5 rb3!#Q?yB?SET2}J5Wc7X2ieNE=!icsepulDV}U;b)xV`-02}}S8_W2>