version 1.1, 2006/07/02 18:01:47
|
version 1.4, 2006/08/17 23:36:05
|
Line 31 use Apache::loncommon;
|
Line 31 use Apache::loncommon;
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::longroup; |
use Apache::longroup; |
|
use LONCAPA; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
|
|
Line 51 sub handler {
|
Line 52 sub handler {
|
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['group']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['group','ref','status']); |
|
|
my $gpterm = &Apache::loncommon::group_term(); |
my $gpterm = &Apache::loncommon::group_term(); |
my $ucgpterm = $gpterm; |
my $ucgpterm = $gpterm; |
$ucgpterm =~ s/^(\w)/uc($1)/e; |
$ucgpterm =~ s/^(\w)/uc($1)/e; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $group; |
my $group; |
|
my %curr_groups; |
|
|
|
# Validating group input. |
|
my $badinput; |
if ((!defined($env{'form.group'})) || ($env{'form.group'} eq '')) { |
if ((!defined($env{'form.group'})) || ($env{'form.group'} eq '')) { |
$r->print(&mt('No [_1] name provided',$gpterm)); |
$r->print(&mt('No group name provided.<br />')); |
|
$badinput = 1; |
} else { |
} else { |
$group = $env{'form.group'}; |
$group = $env{'form.group'}; |
$group =~ s/\W//g; |
$group =~ s/\W//g; |
} |
} |
if ($group eq '') { |
if (!$badinput && $group eq '') { |
$r->print(&mt('Invalid [_1] name provided',$gpterm)); |
$r->print(&mt('Invalid group name provided.<br />')); |
|
$badinput = 1; |
} |
} |
|
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
|
if ($cdom eq '' || $cnum eq '') { |
if ($cdom eq '' || $cnum eq '') { |
$r->print(&mt('Invalid [_1]',$crstype)); |
$r->print(&mt('Invalid [_1]<br />',$crstype)); |
|
$badinput = 1; |
} |
} |
|
|
my @coursegroups = split(/:/,$env{'request.course.groups'}); |
if (!$badinput) { |
if ((@coursegroups == 0) || ((@coursegroups > 0) && |
%curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
(!(grep/^\Q$group\E$/,@coursegroups)))) { |
if (!defined($curr_groups{$group})) { |
$r->print(&mt('[_1] is not the name of a valid [_2] in this [_3].', |
$r->print(&mt('"[_1]" is not the name of a valid group in this [_2].', |
$group,$gpterm,lc($crstype))); |
$group,lc($crstype))); |
} |
$badinput = 1; |
|
} |
|
} |
|
if ($badinput) { |
|
return OK; |
|
} |
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
|
Line 90 sub handler {
|
Line 102 sub handler {
|
'/'.$group); |
'/'.$group); |
my $view_details = &Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group); |
my $view_details = &Apache::lonnet::allowed('vmd',$env{'request.course.id'}.'/'.$group); |
|
|
my $viewgrps = &Apache::lonnet::allowed('vcg',$env{'request.course.id'}); |
my $viewgrps = &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')); |
my $editgrps = &Apache::lonnet::allowed('mdg',$env{'request.course.id'}); |
my $editgrps = &Apache::lonnet::allowed('mdg',$env{'request.course.id'}); |
|
|
if ((!$can_view) && (!$view_details) && (!$viewgrps) && (!$editgrps)) { |
if ((!$can_view) && (!$view_details) && (!$viewgrps) && (!$editgrps)) { |
$r->print(&mt('You do not have privileges to view the membership roster in this [_1]',$gpterm)); |
$r->print(&mt('You do not have privileges to view the membership roster in this [_1]',$gpterm)); |
return OK; |
return OK; |
} |
} |
my %coursegroups = &Apache::longroup::coursegroups($cdom,$cnum,$group); |
my %content = &Apache::longroup::get_group_settings($curr_groups{$group}); |
my %content = &Apache::longroup::get_group_settings($coursegroups{$group}); |
|
my $description = &unescape($content{'description'}); |
my $description = &unescape($content{'description'}); |
$r->print(&roster_header($cdom,$cnum,$group,$description,$gpterm,$ucgpterm)); |
$r->print(&roster_header($cdom,$cnum,$group,$description,$gpterm,$ucgpterm)); |
|
|
Line 118 sub handler {
|
Line 129 sub handler {
|
|
|
sub roster_header { |
sub roster_header { |
my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm) = @_; |
my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm) = @_; |
|
my $refarg; |
|
if (exists($env{'form.ref'}) && $env{'form.ref'} ne 'popup') { |
|
$refarg = 'ref='.$env{'form.ref'}; |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/coursegroups", |
|
text=>"Groups", |
|
title=>"View course groups"}); |
|
} |
|
my $args; |
|
if ($env{'form.ref'} eq 'popup') { |
|
$args = { |
|
'no_nav_bar' => 1, |
|
'no_inline_link' => 1, |
|
}; |
|
} |
my $jscript = qq| |
my $jscript = qq| |
function changeSort(caller) { |
function changeSort(caller) { |
document.grouproster.sortby.value = caller; |
document.grouproster.sortby.value = caller; |
document.grouproster.submit(); |
document.grouproster.submit(); |
}\n|; |
}\n|; |
|
my $itemtitle = &mt('Group membership status - [_1]',$description); |
my $output = |
my $output = |
&Apache::loncommon::start_page(&mt('[_1] Membership ',$ucgpterm), |
&Apache::loncommon::start_page('Group Membership', |
'<script type="text/javascript">'. |
'<script type="text/javascript">'. |
$jscript.'</script>'); |
$jscript.'</script>',$args); |
&Apache::lonhtmlcommon::add_breadcrumb |
if ($env{'form.ref'} eq 'popup') { |
({href=>"/adm/$cdom/$cnum/$group/grppg", |
$output .= '<h3>'.&mt('Group membership status - [_1]',$description). |
text=>"$ucgpterm: $description", |
'</h3>'; |
title=>"Go to group's home page"}, |
} else { |
{href=>"/adm/grouproster?group=$group", |
&Apache::lonhtmlcommon::add_breadcrumb |
text=>"Membership roster", |
({href=>"/adm/$cdom/$cnum/$group/smppg?$refarg", |
title=>"Display group membership"},); |
text=>"$ucgpterm: $description", |
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('[_1] membership status - [_2]',$gpterm,$description)); |
title=>"Go to group's home page"}, |
|
{href=>'/adm/grouproster?group='.$group.'&'.$refarg, |
|
text=>"Membership roster", |
|
title=>"Display group membership"},); |
|
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('[_1] membership status - [_2]',$gpterm,$description)); |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 144 sub roster_table {
|
Line 176 sub roster_table {
|
|
|
my $fixedprivs = &Apache::longroup::get_fixed_privs(); |
my $fixedprivs = &Apache::longroup::get_fixed_privs(); |
|
|
my ($memberinfo,$hastools,$addtools,$numitems) = |
my ($memberinfo,$numitems,$hastools,$addtools) = |
&Apache::longroup::group_memberlist($cdom,$cnum,$group,$fixedprivs, |
&Apache::longroup::group_memberlist($cdom,$cnum,$group,$fixedprivs, |
$available); |
$available); |
my (%tooltype,$toolprivs); |
my (%tooltype,$toolprivs); |
Line 196 sub roster_table {
|
Line 228 sub roster_table {
|
'<input type="submit" name="statusbutton" value="'. |
'<input type="submit" name="statusbutton" value="'. |
$lt{'updi'}.'"><input type="hidden" name="sortby" value="'. |
$lt{'updi'}.'"><input type="hidden" name="sortby" value="'. |
$env{'form.sortby'}.'"/>'. |
$env{'form.sortby'}.'"/>'. |
'<input type="hidden" name="group" value="'.$group. |
'<input type="hidden" name="group" value="'.$group.'"/>'); |
'"/></form><br /><br />'); |
if (exists($env{'form.ref'})) { |
|
$r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}. |
|
'" />'); |
|
} |
|
$r->print('</form><br />'); |
|
|
} |
} |
|
$r->print('<br />'); |
if (ref($numitems) eq 'HASH') { |
if (ref($numitems) eq 'HASH') { |
foreach my $key (keys(%{$numitems})) { |
foreach my $key (keys(%{$numitems})) { |
if ($status eq $key && !$$numitems{$key}) { |
if ($status eq $key && !$$numitems{$key}) { |
$r->print(&mt('There are no [_1] members to display in this [_2]', |
$r->print(&mt('There are no [_1]s to display in this [_2].', |
$key,$gpterm)); |
lc($lt{$key}),$gpterm)); |
return; |
return; |
} |
} |
} |
} |
Line 213 sub roster_table {
|
Line 250 sub roster_table {
|
<form name="grouproster" action="/adm/grouproster" method="post"> |
<form name="grouproster" action="/adm/grouproster" method="post"> |
<input type="hidden" name="group" value="'.$group.'" /> |
<input type="hidden" name="group" value="'.$group.'" /> |
<input type="hidden" name="sortby" value="'.$env{'form.sortby'}.'" /> |
<input type="hidden" name="sortby" value="'.$env{'form.sortby'}.'" /> |
|
<input type="hidden" name="status" value="'.$status.'" /> |
'); |
'); |
|
if (exists($env{'form.ref'})) { |
|
$r->print('<input type="hidden" name="ref" value="'.$env{'form.ref'}. |
|
'" />'); |
|
} |
my %Sortby = (); |
my %Sortby = (); |
my $usercount = 0; |
my $usercount = 0; |
foreach my $user (sort(keys(%{$memberinfo}))) { |
foreach my $user (sort(keys(%{$memberinfo}))) { |
Line 296 sub members_table_row {
|
Line 338 sub members_table_row {
|
my $curr_tool; |
my $curr_tool; |
my $privlist; |
my $privlist; |
foreach my $priv (@{$$userinfo{'privs'}}) { |
foreach my $priv (@{$$userinfo{'privs'}}) { |
unless ($curr_tool eq $$tooltype{$priv}) { |
if (defined($$tooltype{$priv})) { |
$curr_tool = $$tooltype{$priv}; |
if ($curr_tool ne $$tooltype{$priv}) { |
$privlist .= '<b>'.$curr_tool.'</b>: '; |
$curr_tool = $$tooltype{$priv}; |
|
$privlist .= '<b>'.$curr_tool.'</b>: '; |
|
} |
|
$privlist .= $$toolprivs{$curr_tool}{$priv}.', '; |
} |
} |
$privlist .= $$toolprivs{$curr_tool}{$priv}.', '; |
|
} |
} |
$privlist =~ s/, $//; |
$privlist =~ s/, $//; |
$output .= '<td>'.$privlist.'</td>'; |
$output .= '<td>'.$privlist.'</td>'; |