--- loncom/interface/lonuserutils.pm 2013/04/11 15:11:09 1.151 +++ loncom/interface/lonuserutils.pm 2014/02/14 17:44:00 1.162 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.151 2013/04/11 15:11:09 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.162 2014/02/14 17:44:00 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -401,7 +401,7 @@ sub javascript_validations { my $showcredits; my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); - if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) { + if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { $showcredits = 1; } @@ -642,7 +642,7 @@ sub upload_manager_javascript_forward_as $numbuttons ++; } 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.'); $auth_update = <<"END"; // Currently the initial password field is only supported for internal auth @@ -1013,7 +1013,9 @@ sub print_upload_manager_footer { .&Apache::lonhtmlcommon::row_closure(); } if ($context eq 'course' || $context eq 'domain') { - $Str .= &forceid_change($context); + $Str .= &Apache::lonhtmlcommon::row_title(&mt('Student/Employee ID')) + .&forceid_change($context) + .&Apache::lonhtmlcommon::row_closure(1); # last row in pick_box } $Str .= &Apache::lonhtmlcommon::end_pick_box(); @@ -1047,10 +1049,12 @@ sub get_defaultcredits { return unless(($cdom =~ /^$match_domain$/) && ($cnum =~ /^$match_courseid$/)); my ($defaultcredits,$domdefcredits); 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'}; if ($instcode) { $domdefcredits = $domdefaults{'officialcredits'}; + } elsif ($env{'course.'.$cdom.'_'.$cnum.'.internal.textbook'}) { + $domdefcredits = $domdefaults{'textbookcredits'}; } else { $domdefcredits = $domdefaults{'unofficialcredits'}; } @@ -1076,8 +1080,7 @@ sub get_defaultcredits { sub forceid_change { my ($context) = @_; my $output = - &Apache::lonhtmlcommon::row_title(&mt('Student/Employee ID')) - .''."\n"; } - $output .= &Apache::lonhtmlcommon::row_closure(1); # last row in pick_box return $output; } @@ -1392,9 +1394,9 @@ sub default_role_selector { &default_course_roles($context,$checkpriv,'Course',%customroles)."\n". '
'. + ' | ||||||||||||||||||||||||||||||||
'.
$lt{'exs'}.' | '.
''. ' | '.$lt{'new'}.' '. @@ -1631,13 +1633,13 @@ sub print_userlist { my @cols = &infocolumns($context,$mode,$showcredits); if (!@cols) { - $r->print(' '. + $r->print(' '. &mt('No user information selected for display.').''. ''."\n"); return; } my ($indexhash,$keylist) = &make_keylist_array(); - my (%userlist,%userinfo,$clearcoursepick); + my (%userlist,%userinfo,$clearcoursepick,$needauthorquota,$needauthorusage); if (($context eq 'domain') && ($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')) { @@ -1674,7 +1676,7 @@ sub print_userlist { $r->print(' '.&mt('Searching ...').' '); } } else { - $r->print(' '.&mt('Searching ...').' ');
+ $r->print(''.&mt('Searching ...').' ');
}
$r->rflush();
if ($context eq 'course') {
@@ -1709,6 +1711,12 @@ sub print_userlist {
\%cstr_roles,$permission);
} elsif ($context 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'});
foreach my $key (keys(%dom_roles)) {
if (ref($dom_roles{$key}) eq 'HASH') {
@@ -1821,7 +1829,7 @@ sub print_userlist {
} else {
($usercount) = &show_users_list($r,$context,$env{'form.output'},
$permission,$env{'form.Status'},\%userlist,
- $keylist,'',$showcredits);
+ $keylist,'',$showcredits,$needauthorquota,$needauthorusage);
}
if (!$usercount) {
$r->print('' @@ -1988,10 +1996,10 @@ sub get_cols_array { } if (($context eq 'course') && ($mode ne 'autoenroll') && ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'})) { - push(@cols,'photos'); + push(@cols,'photo'); } if ($context eq 'domain') { - push (@cols,'extent'); + push (@cols,('authorusage','authorquota','extent')); } } return @cols; @@ -2027,6 +2035,8 @@ sub column_checkboxes { if (($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')) { $disabledchk{'status'} = 1; + $disabledchk{'authorusage'} = 1; + $disabledchk{'authorquota'} = 1; } elsif ($env{'form.roletype'} eq 'domain') { $disabledchk{'extent'} = 1; } @@ -2078,7 +2088,11 @@ sub column_checkboxes { if (($env{'form.roletype'} eq 'domain') || ($env{'form.roletype'} eq '')) { $style = ' style="display: none;"'; } - } + } elsif (($cols[$i] eq 'authorusage') || ($cols[$i] eq 'authorquota')) { + if ($env{'form.roletype'} ne 'domain') { + $style = ' style="display: none;"'; + } + } $output .= ' | '."\n";
if ($actionselect) {
- $output .= ''.&mt('Select').' | '."\n";
+ $output .= ''.&mt('Select').' | '."\n";
}
}
foreach my $item (@cols) {
- $output .= "$lt{$item} | \n";
+ $output .= '';
+ if ($is_sortable{$item}) {
+ $output .= "$lt{$item} ▼";
+ } else {
+ $output .= $lt{$item};
+ }
+ $output .= " | \n";
}
my %role_types = &role_type_names();
$output .= &Apache::loncommon::end_data_table_header_row();
@@ -2883,6 +2914,26 @@ END
if ($emails{'permanentemail'} =~ /\S/) {
$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 ++;
}
my $autocount = 0;
@@ -2903,12 +2954,20 @@ END
my $index = $index{$sortby};
my $second = $index{'username'};
my $third = $index{'domain'};
- my @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 @sorted_users;
+ if (($sortby eq 'authorquota') || ($sortby eq 'authorusage')) {
+ @sorted_users = sort {
+ $userlist->{$b}->[$index] <=> $userlist->{$a}->[$index] ||
+ lc($userlist->{$a}->[$second]) cmp lc($userlist->{$b}->[$second]) ||
+ 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;
foreach my $user (@sorted_users) {
my %in;
@@ -2919,7 +2978,7 @@ END
}
my $clickers = (&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1];
if ($clickers!~/\w/) { $clickers='-'; }
- $in{'clicker'} = $clickers;
+ $in{'clicker'} = $clickers;
my $role = $in{'role'};
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype);
unless ($mode eq 'excel') {
@@ -2946,10 +3005,10 @@ END
if ($mode eq 'autoenroll') {
my $cellentry;
if ($in{'type'} eq 'auto') {
- $cellentry = ''.&mt('auto').'
|