--- loncom/interface/loncreateuser.pm 2007/03/12 17:06:59 1.148 +++ loncom/interface/loncreateuser.pm 2007/05/29 17:48:44 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.148 2007/03/12 17:06:59 albertel Exp $ +# $Id: loncreateuser.pm,v 1.149 2007/05/29 17:48:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -122,11 +122,72 @@ sub portfolio_quota { my ($ccuname,$ccdomain) = @_; my %lt = &Apache::lonlocal::texthash( 'disk' => "Disk space allocated to user's portfolio files", + 'cuqu' => "Current quota", + 'cust' => "Custom quota", + 'defa' => "Default", + 'chqu' => "Change quota", ); - my $output = '

'.$lt{'disk'}.'

'. + my ($currquota,$quotatype,$inststatus,$defquota) = + &Apache::loncommon::get_user_quota($ccuname,$ccdomain); + my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($ccdomain); + my ($longinsttype,$showquota,$custom_on,$custom_off,$defaultinfo); + if ($inststatus ne '') { + if ($usertypes->{$inststatus} ne '') { + $longinsttype = $usertypes->{$inststatus}; + } + } + $custom_on = ' '; + $custom_off = ' checked="checked" '; + my $quota_javascript = <<"END_SCRIPT"; + +END_SCRIPT + if ($quotatype eq 'custom') { + $custom_on = $custom_off; + $custom_off = ' '; + $showquota = $currquota; + if ($longinsttype eq '') { + $defaultinfo = &mt('For this user, the default quota would be [_1] + Mb.',$defquota); + } else { + $defaultinfo = &mt("For this user, the default quota would be [_1] + Mb, as determined by the user's institutional + affiliation ([_2]).",$defquota,$longinsttype); + } + } else { + if ($longinsttype eq '') { + $defaultinfo = &mt('For this user, the default quota is [_1] + Mb.',$defquota); + } else { + $defaultinfo = &mt("For this user, the default quota of [_1] + Mb, is determined by the user's institutional + affiliation ([_2]).",$defquota,$longinsttype); + } + } + my $output = $quota_javascript. + '

'.$lt{'disk'}.'

'. + $lt{'cuqu'}.': '.$currquota.' Mb.  '. + $defaultinfo.'
'.$lt{'chqu'}. + ':  '. + '  '. ' Mb'; + $showquota.'" onfocus="javascript:quota_changes('."'quota'".')" '. + '/> Mb'; return $output; } @@ -234,7 +295,7 @@ sub print_user_modification_page { ); $loginscript = &Apache::loncommon::authform_header(%param); $authformkrb = &Apache::loncommon::authform_kerberos(%param); - + $ccuname =&LONCAPA::clean_username($ccuname); $ccdomain=&LONCAPA::clean_domain($ccdomain); my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); @@ -1115,7 +1176,8 @@ ENDMODIFYUSERHEAD # Check for need to change my %userenv = &Apache::lonnet::get ('environment',['firstname','middlename','lastname','generation', - 'portfolioquota'],$env{'form.ccdomain'},$env{'form.ccuname'}); + 'portfolioquota','inststatus'],$env{'form.ccdomain'}, + $env{'form.ccuname'}); my ($tmp) = keys(%userenv); if ($tmp =~ /^(con_lost|error)/i) { %userenv = (); @@ -1125,22 +1187,55 @@ ENDMODIFYUSERHEAD # Strip leading and trailing whitespace $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g; } - my ($quotachanged,$namechanged,$oldportfolioquota); + my ($quotachanged,$namechanged,$oldportfolioquota,$newportfolioquota, + $inststatus,$isdefault,$defquotatext); + my ($defquota,$settingstatus) = + &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus); my %changeHash; - if (exists($userenv{'portfolioquota'})) { + if ($userenv{'portfolioquota'} ne '') { $oldportfolioquota = $userenv{'portfolioquota'}; - if (exists($env{'form.portfolioquota'})) { - if ($env{'form.portfolioquota'} ne $userenv{'portfolioquota'}) { - if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { - # Current user has quota modification privileges - $quotachanged = 1; - $changeHash{'portfolioquota'} = $env{'form.portfolioquota'}; - } + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newportfolioquota = 0; + } else { + $newportfolioquota = $env{'form.portfolioquota'}; + $newportfolioquota =~ s/[^\d\.]//g; } + if ($newportfolioquota != $userenv{'portfolioquota'}) { + $quotachanged = "a_admin($newportfolioquota,\%changeHash); + } + } else { + $quotachanged = "a_admin('',\%changeHash); + $newportfolioquota = $defquota; + $isdefault = 1; } } else { - $oldportfolioquota = - &Apache::loncommon::default_quota($env{'form.ccdomain'}); + $oldportfolioquota = $defquota; + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newportfolioquota = 0; + } else { + $newportfolioquota = $env{'form.portfolioquota'}; + $newportfolioquota =~ s/[^\d\.]//g; + } + $quotachanged = "a_admin($newportfolioquota,\%changeHash); + } else { + $newportfolioquota = $defquota; + $isdefault = 1; + } + } + if ($isdefault) { + if ($settingstatus eq '') { + $defquotatext = &mt('(default)'); + } else { + my ($usertypes,$order) = + &Apache::lonnet::retrieve_inst_usertypes($env{'form.ccdomain'}); + if ($usertypes->{$settingstatus} eq '') { + $defquotatext = &mt('(default)'); + } else { + $defquotatext = &mt('(default for [_1])',$usertypes->{$settingstatus}); + } + } } if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}) && ($env{'form.cfirstname'} ne $userenv{'firstname'} || @@ -1184,16 +1279,24 @@ ENDMODIFYUSERHEAD $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'} - $oldportfolioquota + $oldportfolioquota Mb $lt{'chto'} $env{'form.cfirstname'} $env{'form.cmiddlename'} $env{'form.clastname'} $env{'form.cgeneration'} - $env{'form.portfolioquota'} Mb + $newportfolioquota Mb $defquotatext END + if (($env{'form.ccdomain'} eq $env{'user.domain'}) && + ($env{'form.ccuname'} eq $env{'user.name'})) { + my %newenvhash; + foreach my $key (keys(%changeHash)) { + $newenvhash{'environment.'.$key} = $changeHash{$key}; + } + &Apache::lonnet::appenv(%newenvhash); + } } else { # error occurred $r->print("

".&mt('Unable to successfully change environment for')." ". $env{'form.ccuname'}." ".&mt('in domain')." ". @@ -1220,8 +1323,10 @@ END

$lt{'gen'}: $userenv{'generation'}

END if ($putresult eq 'ok') { - if ($oldportfolioquota ne $env{'form.portfolioquota'}) { - $r->print('

'.$lt{'disk'}.': '.$env{'form.portfolioquota'}.' Mb

'); + if ($oldportfolioquota != $newportfolioquota) { + $r->print('

'.$lt{'disk'}.': '.$newportfolioquota.' Mb '. + $defquotatext.'

'); + &Apache::lonnet::appenv('environment.portfolioquota' => $changeHash{'portfolioquota'}); } } } @@ -1446,6 +1551,17 @@ END $r->print(&Apache::loncommon::end_page()); } +sub quota_admin { + my ($setquota,$changeHash) = @_; + my $quotachanged; + if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { + # Current user has quota modification privileges + $quotachanged = 1; + $changeHash->{'portfolioquota'} = $setquota; + } + return $quotachanged; +} + sub build_roles { my ($sectionstr,$sections,$role) = @_; my $num_sections = 0;