version 1.152, 2013/05/03 16:29:34
|
version 1.160, 2013/12/24 19:15:11
|
Line 401 sub javascript_validations {
|
Line 401 sub javascript_validations {
|
|
|
my $showcredits; |
my $showcredits; |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) { |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { |
$showcredits = 1; |
$showcredits = 1; |
} |
} |
|
|
Line 642 sub upload_manager_javascript_forward_as
|
Line 642 sub upload_manager_javascript_forward_as
|
$numbuttons ++; |
$numbuttons ++; |
} |
} |
if (!$can_assign->{'int'}) { |
if (!$can_assign->{'int'}) { |
my $warning = &mt('You may not specify an initial password for each user, as this is only available when new users use LON-CAPA internal authentication.').'\n' |
my $warning = &mt('You may not specify an initial password for each user, as this is only available when new users use LON-CAPA internal authentication.').'\n'. |
&mt('Your current role does not have rights to create users with that authentication type.'); |
&mt('Your current role does not have rights to create users with that authentication type.'); |
$auth_update = <<"END"; |
$auth_update = <<"END"; |
// Currently the initial password field is only supported for internal auth |
// Currently the initial password field is only supported for internal auth |
Line 1047 sub get_defaultcredits {
|
Line 1047 sub get_defaultcredits {
|
return unless(($cdom =~ /^$match_domain$/) && ($cnum =~ /^$match_courseid$/)); |
return unless(($cdom =~ /^$match_domain$/) && ($cnum =~ /^$match_courseid$/)); |
my ($defaultcredits,$domdefcredits); |
my ($defaultcredits,$domdefcredits); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) { |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { |
my $instcode = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
my $instcode = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
if ($instcode) { |
if ($instcode) { |
$domdefcredits = $domdefaults{'officialcredits'}; |
$domdefcredits = $domdefaults{'officialcredits'}; |
|
} elsif ($env{'course.'.$cdom.'_'.$cnum.'.internal.textbook'}) { |
|
$domdefcredits = $domdefaults{'textbookcredits'}; |
} else { |
} else { |
$domdefcredits = $domdefaults{'unofficialcredits'}; |
$domdefcredits = $domdefaults{'unofficialcredits'}; |
} |
} |
Line 1637 sub print_userlist {
|
Line 1639 sub print_userlist {
|
return; |
return; |
} |
} |
my ($indexhash,$keylist) = &make_keylist_array(); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my (%userlist,%userinfo,$clearcoursepick); |
my (%userlist,%userinfo,$clearcoursepick,$needauthorquota,$needauthorusage); |
if (($context eq 'domain') && |
if (($context eq 'domain') && |
($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'community')) { |
($env{'form.roletype'} eq 'community')) { |
Line 1709 sub print_userlist {
|
Line 1711 sub print_userlist {
|
\%cstr_roles,$permission); |
\%cstr_roles,$permission); |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
if ($env{'form.roletype'} eq 'domain') { |
if ($env{'form.roletype'} eq 'domain') { |
|
if (grep(/^authorusage$/,@cols)) { |
|
$needauthorusage = 1; |
|
} |
|
if (grep(/^authorquota$/,@cols)) { |
|
$needauthorquota = 1; |
|
} |
%dom_roles = &Apache::lonnet::get_domain_roles($env{'request.role.domain'}); |
%dom_roles = &Apache::lonnet::get_domain_roles($env{'request.role.domain'}); |
foreach my $key (keys(%dom_roles)) { |
foreach my $key (keys(%dom_roles)) { |
if (ref($dom_roles{$key}) eq 'HASH') { |
if (ref($dom_roles{$key}) eq 'HASH') { |
Line 1821 sub print_userlist {
|
Line 1829 sub print_userlist {
|
} else { |
} else { |
($usercount) = &show_users_list($r,$context,$env{'form.output'}, |
($usercount) = &show_users_list($r,$context,$env{'form.output'}, |
$permission,$env{'form.Status'},\%userlist, |
$permission,$env{'form.Status'},\%userlist, |
$keylist,'',$showcredits); |
$keylist,'',$showcredits,$needauthorquota,$needauthorusage); |
} |
} |
if (!$usercount) { |
if (!$usercount) { |
$r->print('<br /><span class="LC_info">' |
$r->print('<br /><span class="LC_info">' |
Line 1988 sub get_cols_array {
|
Line 1996 sub get_cols_array {
|
} |
} |
if (($context eq 'course') && ($mode ne 'autoenroll') && |
if (($context eq 'course') && ($mode ne 'autoenroll') && |
($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'})) { |
($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'})) { |
push(@cols,'photos'); |
push(@cols,'photo'); |
} |
} |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
push (@cols,'extent'); |
push (@cols,('authorusage','authorquota','extent')); |
} |
} |
} |
} |
return @cols; |
return @cols; |
Line 2027 sub column_checkboxes {
|
Line 2035 sub column_checkboxes {
|
if (($env{'form.roletype'} eq 'course') || |
if (($env{'form.roletype'} eq 'course') || |
($env{'form.roletype'} eq 'community')) { |
($env{'form.roletype'} eq 'community')) { |
$disabledchk{'status'} = 1; |
$disabledchk{'status'} = 1; |
|
$disabledchk{'authorusage'} = 1; |
|
$disabledchk{'authorquota'} = 1; |
} elsif ($env{'form.roletype'} eq 'domain') { |
} elsif ($env{'form.roletype'} eq 'domain') { |
$disabledchk{'extent'} = 1; |
$disabledchk{'extent'} = 1; |
} |
} |
Line 2078 sub column_checkboxes {
|
Line 2088 sub column_checkboxes {
|
if (($env{'form.roletype'} eq 'domain') || ($env{'form.roletype'} eq '')) { |
if (($env{'form.roletype'} eq 'domain') || ($env{'form.roletype'} eq '')) { |
$style = ' style="display: none;"'; |
$style = ' style="display: none;"'; |
} |
} |
} |
} elsif (($cols[$i] eq 'authorusage') || ($cols[$i] eq 'authorquota')) { |
|
if ($env{'form.roletype'} ne 'domain') { |
|
$style = ' style="display: none;"'; |
|
} |
|
} |
$output .= '<span id="show'.$cols[$i].'"'.$style.'><label>'. |
$output .= '<span id="show'.$cols[$i].'"'.$style.'><label>'. |
'<input id="showcol'.$cols[$i].'" type="checkbox" name="showcol" value="'.$cols[$i].'"'.$checked.' /><span id="showcoltext'.$cols[$i].'">'. |
'<input id="showcol'.$cols[$i].'" type="checkbox" name="showcol" value="'.$cols[$i].'"'.$checked.' /><span id="showcoltext'.$cols[$i].'">'. |
$lt{$cols[$i]}.'</span>'. |
$lt{$cols[$i]}.'</span>'. |
Line 2112 sub get_column_names {
|
Line 2126 sub get_column_names {
|
'photo' => "photo", |
'photo' => "photo", |
'lastlogin' => "last login", |
'lastlogin' => "last login", |
'extent' => "extent", |
'extent' => "extent", |
|
'authorusage' => "disk usage (%)", |
|
'authorquota' => "disk quota (MB)", |
'ca' => "check all", |
'ca' => "check all", |
'ua' => "uncheck all", |
'ua' => "uncheck all", |
'clicker' => "clicker-ID", |
'clicker' => "clicker-ID", |
Line 2119 sub get_column_names {
|
Line 2135 sub get_column_names {
|
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
$lt{'extent'} = &mt('course(s): description, section(s), status'); |
$lt{'extent'} = &mt('course(s): description, section(s), status'); |
} elsif ($context eq 'domain' && $env{'form.roletype'} eq 'community') { |
} elsif ($context eq 'domain' && $env{'form.roletype'} eq 'community') { |
$lt{'extent'} = &mt('communities: description, section(s), status'); |
$lt{'extent'} = &mt('community(s): description, section(s), status'); |
} elsif (($context eq 'author') || |
} elsif (($context eq 'author') || |
($context eq 'domain' && $env{'form.roletype'} eq 'author')) { |
($context eq 'domain' && $env{'form.roletype'} eq 'author')) { |
$lt{'extent'} = &mt('author'); |
$lt{'extent'} = &mt('author'); |
Line 2395 sub make_keylist_array {
|
Line 2411 sub make_keylist_array {
|
$index->{'photo'} = &Apache::loncoursedata::CL_PHOTO(); |
$index->{'photo'} = &Apache::loncoursedata::CL_PHOTO(); |
$index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL(); |
$index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL(); |
$index->{'credits'} = &Apache::loncoursedata::CL_CREDITS(); |
$index->{'credits'} = &Apache::loncoursedata::CL_CREDITS(); |
|
$index->{'authorquota'} = &Apache::loncoursedata::CL_AUTHORQUOTA(); |
|
$index->{'authorusage'} = &Apache::loncoursedata::CL_AUTHORUSAGE(); |
foreach my $key (keys(%{$index})) { |
foreach my $key (keys(%{$index})) { |
$keylist->[$index->{$key}] = $key; |
$keylist->[$index->{$key}] = $key; |
} |
} |
Line 2444 sub process_date_info {
|
Line 2462 sub process_date_info {
|
|
|
sub show_users_list { |
sub show_users_list { |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname, |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname, |
$showcredits)=@_; |
$showcredits,$needauthorquota,$needauthorusage)=@_; |
if ($formname eq '') { |
if ($formname eq '') { |
$formname = 'studentform'; |
$formname = 'studentform'; |
} |
} |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
# |
# |
# Variables for excel output |
# Variables for excel output |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
Line 2464 sub show_users_list {
|
Line 2483 sub show_users_list {
|
} |
} |
} else { |
} else { |
push(@sortable,'extent'); |
push(@sortable,'extent'); |
|
if (($context eq 'domain') && ($env{'form.roletype'} eq 'domain') && |
|
(($env{'form.showrole'} eq 'Any') || ($env{'form.showrole'} eq 'au'))) { |
|
push(@sortable,('authorusage','authorquota')); |
|
} |
} |
} |
if ($mode eq 'pickauthor') { |
if ($mode eq 'pickauthor') { |
@sortable = ('username','fullname','email','status'); |
@sortable = ('username','fullname','email','status'); |
} |
} |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
my %is_sortable; |
|
map { $is_sortable{$_} = 1; } @sortable; |
|
unless ($is_sortable{$sortby}) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
my $setting = $env{'form.roletype'}; |
my $setting = $env{'form.roletype'}; |
Line 2708 END
|
Line 2733 END
|
} else { |
} else { |
$output .= "\n".'<th> </th>'."\n"; |
$output .= "\n".'<th> </th>'."\n"; |
if ($actionselect) { |
if ($actionselect) { |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
$output .= '<th class="LC_nobreak" valign="top">'.&mt('Select').'</th>'."\n"; |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
$output .= '<th class="LC_nobreak" valign="top">'; |
|
if ($is_sortable{$item}) { |
|
$output .= "<a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\" style=\"text-decoration:none;\">$lt{$item}<span class=\"LC_fontsize_small\"> ▼</span></a>"; |
|
} else { |
|
$output .= $lt{$item}; |
|
} |
|
$output .= "</th>\n"; |
} |
} |
my %role_types = &role_type_names(); |
my %role_types = &role_type_names(); |
$output .= &Apache::loncommon::end_data_table_header_row(); |
$output .= &Apache::loncommon::end_data_table_header_row(); |
Line 2883 END
|
Line 2914 END
|
if ($emails{'permanentemail'} =~ /\S/) { |
if ($emails{'permanentemail'} =~ /\S/) { |
$userlist->{$user}->[$index{'email'}] = $emails{'permanentemail'}; |
$userlist->{$user}->[$index{'email'}] = $emails{'permanentemail'}; |
} |
} |
|
if (($context eq 'domain') && ($env{'form.roletype'} eq 'domain') && |
|
($role eq 'au')) { |
|
my ($disk_quota,$current_disk_usage,$percent); |
|
if (($needauthorusage) || ($needauthorquota)) { |
|
$disk_quota = &Apache::loncommon::get_user_quota($uname,$udom,'author'); |
|
} |
|
if ($needauthorusage) { |
|
$current_disk_usage = |
|
&Apache::lonnet::diskusage($udom,$uname,"$londocroot/priv/$udom/$uname"); |
|
if ($disk_quota == 0) { |
|
$percent = 100.0; |
|
} else { |
|
$percent = $current_disk_usage/(10 * $disk_quota); |
|
} |
|
$userlist->{$user}->[$index{'authorusage'}] = sprintf("%.0f",$percent); |
|
} |
|
if ($needauthorquota) { |
|
$userlist->{$user}->[$index{'authorquota'}] = sprintf("%.2f",$disk_quota); |
|
} |
|
} |
$usercount ++; |
$usercount ++; |
} |
} |
my $autocount = 0; |
my $autocount = 0; |
Line 2903 END
|
Line 2954 END
|
my $index = $index{$sortby}; |
my $index = $index{$sortby}; |
my $second = $index{'username'}; |
my $second = $index{'username'}; |
my $third = $index{'domain'}; |
my $third = $index{'domain'}; |
my @sorted_users = sort { |
my @sorted_users; |
lc($userlist->{$a}->[$index]) cmp lc($userlist->{$b}->[$index]) |
if (($sortby eq 'authorquota') || ($sortby eq 'authorusage')) { |
|| |
@sorted_users = sort { |
lc($userlist->{$a}->[$second]) cmp lc($userlist->{$b}->[$second]) || |
$userlist->{$b}->[$index] <=> $userlist->{$a}->[$index] || |
lc($userlist->{$a}->[$third]) cmp lc($userlist->{$b}->[$third]) |
lc($userlist->{$a}->[$second]) cmp lc($userlist->{$b}->[$second]) || |
} (keys(%$userlist)); |
lc($userlist->{$a}->[$third]) cmp lc($userlist->{$b}->[$third]) |
|
} (keys(%$userlist)); |
|
} else { |
|
@sorted_users = sort { |
|
lc($userlist->{$a}->[$index]) cmp lc($userlist->{$b}->[$index]) || |
|
lc($userlist->{$a}->[$second]) cmp lc($userlist->{$b}->[$second]) || |
|
lc($userlist->{$a}->[$third]) cmp lc($userlist->{$b}->[$third]) |
|
} (keys(%$userlist)); |
|
} |
my $rowcount = 0; |
my $rowcount = 0; |
foreach my $user (@sorted_users) { |
foreach my $user (@sorted_users) { |
my %in; |
my %in; |
Line 2919 END
|
Line 2978 END
|
} |
} |
my $clickers = (&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
my $clickers = (&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
if ($clickers!~/\w/) { $clickers='-'; } |
if ($clickers!~/\w/) { $clickers='-'; } |
$in{'clicker'} = $clickers; |
$in{'clicker'} = $clickers; |
my $role = $in{'role'}; |
my $role = $in{'role'}; |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); |
unless ($mode eq 'excel') { |
unless ($mode eq 'excel') { |
Line 3043 END
|
Line 3102 END
|
$r->print('<td> </td>'."\n"); |
$r->print('<td> </td>'."\n"); |
} |
} |
} |
} |
|
} elsif (($item eq 'authorquota') || ($item eq 'authorusage')) { |
|
$r->print('<td align="right">'.$in{$item}.'</td>'."\n"); |
} else { |
} else { |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
} |
} |
Line 4263 sub upfile_drop_add {
|
Line 4324 sub upfile_drop_add {
|
if ($entries{$fields{'username'}} =~ /\s/) { |
if ($entries{$fields{'username'}} =~ /\s/) { |
$nowhitespace = ' - '.&mt('usernames may not contain spaces.'); |
$nowhitespace = ' - '.&mt('usernames may not contain spaces.'); |
} |
} |
$r->print('<br />'. |
$r->print( |
&mt('[_1]: Unacceptable username for user [_2] [_3] [_4] [_5]', |
'<br />'. |
'<b>'.$entries{$fields{'username'}}.'</b>',$fname,$mname,$lname,$gen). |
&mt('Unacceptable username [_1] for user [_2] [_3] [_4] [_5]', |
$nowhitespace); |
'"<b>'.$entries{$fields{'username'}}.'</b>"', |
|
$fname,$mname,$lname,$gen). |
|
$nowhitespace); |
next; |
next; |
} else { |
} else { |
$entries{$fields{'domain'}} =~ s/^\s+|\s+$//g; |
$entries{$fields{'domain'}} =~ s/^\s+|\s+$//g; |
if ($entries{$fields{'domain'}} |
if ($entries{$fields{'domain'}} |
ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { |
ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { |
$r->print('<br />'. '<b>'.$entries{$fields{'domain'}}. |
$r->print( |
'</b>: '.&mt('Unacceptable domain for user [_1] [_2] [_3] [_4]',$fname,$mname,$lname,$gen)); |
'<br />'. |
next; |
&mt('Unacceptable domain [_1] for user [_2] [_3] [_4] [_5]', |
|
'"<b>'.$entries{$fields{'domain'}}.'</b>"', |
|
$fname,$mname,$lname,$gen)); |
|
next; |
} |
} |
my $username = $entries{$fields{'username'}}; |
my $username = $entries{$fields{'username'}}; |
my $userdomain = $entries{$fields{'domain'}}; |
my $userdomain = $entries{$fields{'domain'}}; |
Line 4618 sub upfile_drop_add {
|
Line 4684 sub upfile_drop_add {
|
# Get current classlist |
# Get current classlist |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
if (! defined($classlist)) { |
if (! defined($classlist)) { |
$r->print('<form name="studentform" method="post" action="/adm/createuser" />'. |
$r->print('<form name="studentform" method="post" action="/adm/createuser">'. |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
'<p class="LC_info">'.&mt('There are no students with current/future access to the course.').'</p>'. |
'<p class="LC_info">'.&mt('There are no students with current/future access to the course.').'</p>'. |
'</form>'."\n"); |
'</form>'."\n"); |
Line 4741 sub print_drop_menu {
|
Line 4807 sub print_drop_menu {
|
$heading = &mt("Drop Students"); |
$heading = &mt("Drop Students"); |
} |
} |
$r->print('<h3>'.$heading.'</h3>'."\n". |
$r->print('<h3>'.$heading.'</h3>'."\n". |
'<form name="studentform" method="post">'."\n"); |
'<form name="studentform" method="post" action="">'."\n"); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
if (! defined($classlist)) { |
if (! defined($classlist)) { |
my $msg = ''; |
my $msg = ''; |