version 1.14, 2007/12/12 19:47:56
|
version 1.16, 2007/12/14 00:20:53
|
Line 1764 sub show_users_list {
|
Line 1764 sub show_users_list {
|
$cnum = $env{'course.'.$cid.'.num'}; |
$cnum = $env{'course.'.$cid.'.num'}; |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
$userlist,$keylist,$cdom,$cnum); |
$userlist,$keylist,$cdom,$cnum); |
if (! exists($env{'form.displayphotos'})) { |
if ($mode eq 'autoenroll') { |
$env{'form.displayphotos'} = 'off'; |
$env{'form.showrole'} = 'st'; |
} |
} else { |
$displayphotos = $env{'form.displayphotos'}; |
if (! exists($env{'form.displayphotos'})) { |
if (! exists($env{'form.displayclickers'})) { |
$env{'form.displayphotos'} = 'off'; |
$env{'form.displayclickers'} = 'off'; |
} |
} |
$displayphotos = $env{'form.displayphotos'}; |
$displayclickers = $env{'form.displayclickers'}; |
if (! exists($env{'form.displayclickers'})) { |
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
$env{'form.displayclickers'} = 'off'; |
$r->print(' |
} |
|
$displayclickers = $env{'form.displayclickers'}; |
|
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
|
$r->print(' |
<script type="text/javascript"> |
<script type="text/javascript"> |
function photowindow(photolink) { |
function photowindow(photolink) { |
var title = "Photo_Viewer"; |
var title = "Photo_Viewer"; |
Line 1783 function photowindow(photolink) {
|
Line 1786 function photowindow(photolink) {
|
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
</script> |
</script> |
'); |
'); |
} |
} |
$r->print(<<END); |
$r->print(<<END); |
<input type="hidden" name="displayphotos" value="$displayphotos" /> |
<input type="hidden" name="displayphotos" value="$displayphotos" /> |
<input type="hidden" name="displayclickers" value="$displayclickers" /> |
<input type="hidden" name="displayclickers" value="$displayclickers" /> |
END |
END |
|
} |
} |
} |
unless ($mode eq 'autoenroll') { |
if ($mode ne 'autoenroll') { |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
my $singconfirm = &mt(' for a single user'); |
my $singconfirm = &mt(' for a single user'); |
Line 1919 END
|
Line 1923 END
|
} elsif ($env{'form.showrole'} ne 'Any') { |
} elsif ($env{'form.showrole'} ne 'Any') { |
$rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'}); |
$rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'}); |
} |
} |
my $results_description = &results_header_row($rolefilter,$statusmode, |
my $results_description; |
$context); |
if ($mode ne 'autoenroll') { |
$r->print('<b>'.$results_description.'</b><br />'); |
$results_description = &results_header_row($rolefilter,$statusmode, |
|
$context,$permission); |
|
$r->print('<b>'.$results_description.'</b><br />'); |
|
} |
my ($output,$actionselect); |
my ($output,$actionselect); |
if ($mode eq 'html' || $mode eq 'view') { |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') { |
if ($permission->{'cusr'}) { |
if ($mode ne 'autoenroll') { |
$actionselect = &select_actions($context,$setting,$statusmode); |
if ($permission->{'cusr'}) { |
} |
$actionselect = &select_actions($context,$setting,$statusmode); |
$r->print(<<END); |
} |
|
$r->print(<<END); |
<input type="hidden" name="srchby" value="uname" /> |
<input type="hidden" name="srchby" value="uname" /> |
<input type="hidden" name="srchin" value="dom" /> |
<input type="hidden" name="srchin" value="dom" /> |
<input type="hidden" name="srchtype" value="exact" /> |
<input type="hidden" name="srchtype" value="exact" /> |
<input type="hidden" name="srchterm" value="" /> |
<input type="hidden" name="srchterm" value="" /> |
<input type="hidden" name="srchdomain" value="" /> |
<input type="hidden" name="srchdomain" value="" /> |
END |
END |
if ($mode ne 'autoenroll') { |
$output = '<p>'; |
$output = '<p>'; |
my @linkdests = ('aboutme'); |
my @linkdests = ('aboutme'); |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
push (@linkdests,'modify'); |
push (@linkdests,'modify'); |
$output .= '<span class="LC_nobreak">'.$lt{'link'}.': '; |
$output .= '<span class="LC_nobreak">'.$lt{'link'}.': '; |
my $usernamelink = $env{'form.usernamelink'}; |
my $usernamelink = $env{'form.usernamelink'}; |
if ($usernamelink eq '') { |
if ($usernamelink eq '') { |
$usernamelink = 'aboutme'; |
$usernamelink = 'aboutme'; |
} |
} |
foreach my $item (@linkdests) { |
foreach my $item (@linkdests) { |
my $checkedstr = ''; |
my $checkedstr = ''; |
if ($item eq $usernamelink) { |
if ($item eq $usernamelink) { |
$checkedstr = ' checked="checked" '; |
$checkedstr = ' checked="checked" '; |
} |
} |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
} |
} |
$output .= '</span><br />'; |
$output .= '</span><br />'; |
} else { |
} else { |
$output .= &mt("Click on a username to view the user's personal page.").'<br />'; |
$output .= &mt("Click on a username to view the user's personal page.").'<br />'; |
} |
} |
if ($actionselect) { |
if ($actionselect) { |
$output .= <<"END"; |
$output .= <<"END"; |
|
$lt{'ac'}: $actionselect <input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.actionlist)" /></p> |
$lt{'ac'}: $actionselect <input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.actionlist)" /></p> |
<p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> |
<p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" /> |
END |
END |
} |
} |
} |
} |
$output .= "\n<p>\n". |
$output .= "\n<p>\n". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
Line 1980 END
|
Line 1987 END
|
$output .= "<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n"; |
$output .= "<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n"; |
} |
} |
my %role_types = &role_type_names(); |
my %role_types = &role_type_names(); |
if ($context eq 'course') { |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
# Clicker display on or off? |
# Clicker display on or off? |
my %clicker_options = &Apache::lonlocal::texthash( |
my %clicker_options = &Apache::lonlocal::texthash( |
Line 2014 END
|
Line 2021 END
|
' </th>'."\n"; |
' </th>'."\n"; |
} |
} |
} |
} |
$output .= &Apache::loncommon::end_data_table_header_row(); |
|
} |
} |
|
$output .= &Apache::loncommon::end_data_table_header_row(); |
# Done with the HTML header line |
# Done with the HTML header line |
} elsif ($mode eq 'csv') { |
} elsif ($mode eq 'csv') { |
# |
# |
Line 2151 END
|
Line 2158 END
|
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print("<td>$rowcount</td>\n"); |
|
my $checkval; |
my $checkval; |
if ($mode ne 'autoenroll' && $actionselect) { |
if ($mode eq 'autoenroll') { |
$checkval = $user; |
my $cellentry; |
if ($context eq 'course') { |
if ($in{'type'} eq 'auto') { |
if ($role eq 'st') { |
$cellentry = '<b>'.&mt('auto').'</b> <label><input type="checkbox" name="chgauto" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label>'; |
$checkval .= ':st'; |
$autocount ++; |
} |
} else { |
$checkval .= ':'.$in{'section'}; |
$cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><nobr><label><input type="checkbox" name="chgmanual" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label></nobr></td></tr><tr><td><nobr>'; |
if ($role eq 'st') { |
$manualcount ++; |
$checkval .= ':'.$in{'type'}.':'.$in{'lockedtype'}; |
if ($in{'lockedtype'}) { |
|
$cellentry .= '<label><input type="checkbox" name="unlockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Unlock').'</label>'; |
|
$unlockcount ++; |
|
} else { |
|
$cellentry .= '<label><input type="checkbox" name="lockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Lock').'</label>'; |
|
$lockcount ++; |
|
} |
|
$cellentry .= '</nobr></td></tr></table>'; |
|
} |
|
$r->print("<td>$cellentry</td>\n"); |
|
} else { |
|
$r->print("<td>$rowcount</td>\n"); |
|
$checkval; |
|
if ($actionselect) { |
|
$checkval = $user; |
|
if ($context eq 'course') { |
|
if ($role eq 'st') { |
|
$checkval .= ':st'; |
|
} |
|
$checkval .= ':'.$in{'section'}; |
|
if ($role eq 'st') { |
|
$checkval .= ':'.$in{'type'}.':'.$in{'lockedtype'}; |
|
} |
} |
} |
|
$r->print('<td><input type="checkbox" name="actionlist" value="'. |
|
$checkval.'"></td>'); |
} |
} |
$r->print('<td><input type="checkbox" name="actionlist" value="'. |
|
$checkval.'"></td>'); |
|
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
if ($item eq 'username') { |
if ($item eq 'username') { |
$r->print('<td>'.&print_username_link($permission,\%in).'</td>'); |
$r->print('<td>'.&print_username_link($mode,$permission, |
} elsif (($item eq 'start' || $item eq 'end') && ($mode ne 'autoeroll') && ($actionselect)) { |
\%in).'</td>'); |
|
} elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) { |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
} else { |
} else { |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
} |
} |
} |
} |
if ($context eq 'course') { |
if (($context eq 'course') && ($mode ne 'autoenroll')) { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($displayclickers eq 'on') { |
if ($displayclickers eq 'on') { |
my $clickers = |
my $clickers = |
Line 2256 END
|
Line 2285 END
|
} |
} |
|
|
sub print_username_link { |
sub print_username_link { |
my ($permission,$in) = @_; |
my ($mode,$permission,$in) = @_; |
my $output; |
my $output; |
if (!$permission->{'cusr'}) { |
if ($mode eq 'autoenroll') { |
|
$output = $in->{'username'}; |
|
} elsif (!$permission->{'cusr'}) { |
$output = &Apache::loncommon::aboutmewrapper($in->{'username'}, |
$output = &Apache::loncommon::aboutmewrapper($in->{'username'}, |
$in->{'username'}, |
$in->{'username'}, |
$in->{'domain'}); |
$in->{'domain'}); |
Line 2530 END
|
Line 2561 END
|
} |
} |
|
|
sub results_header_row { |
sub results_header_row { |
my ($rolefilter,$statusmode,$context) = @_; |
my ($rolefilter,$statusmode,$context,$permission) = @_; |
my ($description,$showfilter); |
my ($description,$showfilter); |
if ($rolefilter ne 'Any') { |
if ($rolefilter ne 'Any') { |
$showfilter = $rolefilter; |
$showfilter = $rolefilter; |
Line 2550 sub results_header_row {
|
Line 2581 sub results_header_row {
|
$description .= &mt('All users in course with [_1] roles',$rolefilter); |
$description .= &mt('All users in course with [_1] roles',$rolefilter); |
} |
} |
} |
} |
|
if (exists($permission->{'view_section'})) { |
|
if ($env{'form.showrole'} eq 'st') { |
|
$description .= ' '.&mt('(section [_1] only)',$permission->{'view_section'}); |
|
} elsif ($env{'form.showrole'} eq 'any') { |
|
$description .= ' '.&mt('(section [_1] only)',$permission->{'view_section'}); |
|
} |
|
} |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$description = |
$description = |
&mt('Author space for <span class="LC_cusr_emph">[_1]</span>', |
&mt('Author space for <span class="LC_cusr_emph">[_1]</span>', |
Line 3693 ENDSECCODE
|
Line 3731 ENDSECCODE
|
return $setsection_js; |
return $setsection_js; |
} |
} |
|
|
|
sub can_create_user { |
|
my ($dom,$context,$usertype) = @_; |
|
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); |
|
my $cancreate = 1; |
|
if (ref($domconf{'usercreation'}) eq 'HASH') { |
|
if (ref($domconf{'usercreation'}{'cancreate'}) eq 'HASH') { |
|
if ($context eq 'course' || $context eq 'author') { |
|
my $creation = $domconf{'usercreation'}{'cancreate'}{$context}; |
|
if ($creation eq 'none') { |
|
$cancreate = 0; |
|
} elsif ($creation ne 'any') { |
|
if (defined($usertype)) { |
|
if ($creation ne $usertype) { |
|
$cancreate = 0; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $cancreate; |
|
} |
|
|
|
sub get_permission { |
|
my ($context) = @_; |
|
my %permission; |
|
if ($context eq 'course') { |
|
if ((&Apache::lonnet::allowed('cta',$env{'request.course.id'})) || |
|
(&Apache::lonnet::allowed('cin',$env{'request.course.id'})) || |
|
(&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) || |
|
(&Apache::lonnet::allowed('cep',$env{'request.course.id'})) || |
|
(&Apache::lonnet::allowed('cst',$env{'request.course.id'}))) { |
|
$permission{'cusr'} = 1; |
|
$permission{'view'} = |
|
&Apache::lonnet::allowed('vcl',$env{'request.course.id'}); |
|
|
|
} |
|
if (&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) { |
|
$permission{'custom'} = 1; |
|
} |
|
if (&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) { |
|
$permission{'view'} = 1; |
|
} |
|
if (!$permission{'view'}) { |
|
my $scope = $env{'request.course.id'}.'/'.$env{'request.course.sec'}; |
|
$permission{'view'} = &Apache::lonnet::allowed('vcl',$scope); |
|
if ($permission{'view'}) { |
|
$permission{'view_section'} = $env{'request.course.sec'}; |
|
} |
|
} |
|
if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) { |
|
$permission{'grp_manage'} = 1; |
|
} |
|
} elsif ($context eq 'author') { |
|
$permission{'cusr'} = &authorpriv($env{'user.name'},$env{'request.role.domain'}); |
|
$permission{'view'} = $permission{'cusr'}; |
|
} else { |
|
if ((&Apache::lonnet::allowed('cad',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('cli',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('csc',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('cdg',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))) { |
|
$permission{'cusr'} = 1; |
|
} |
|
if (&Apache::lonnet::allowed('ccr',$env{'request.role.domain'})) { |
|
$permission{'custom'} = 1; |
|
} |
|
$permission{'view'} = $permission{'cusr'}; |
|
} |
|
my $allowed = 0; |
|
foreach my $perm (values(%permission)) { |
|
if ($perm) { $allowed=1; last; } |
|
} |
|
return (\%permission,$allowed); |
|
} |
|
|
|
# ==================================================== Figure out author access |
|
|
|
sub authorpriv { |
|
my ($auname,$audom)=@_; |
|
unless ((&Apache::lonnet::allowed('cca',$audom.'/'.$auname)) |
|
|| (&Apache::lonnet::allowed('caa',$audom.'/'.$auname))) { return ''; } return 1; |
|
} |
|
|
1; |
1; |
|
|