--- loncom/interface/loncreateuser.pm 2009/12/15 16:40:31 1.330 +++ loncom/interface/loncreateuser.pm 2012/02/06 04:50:52 1.358.4.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.330 2009/12/15 16:40:31 bisitz Exp $ +# $Id: loncreateuser.pm,v 1.358.4.1 2012/02/06 04:50:52 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -219,7 +219,7 @@ END_SCRIPT sub build_tools_display { my ($ccuname,$ccdomain,$context) = @_; my (@usertools,%userenv,$output,@options,%validations,%reqtitles,%reqdisplay, - $colspan); + $colspan,$isadv,%domconfig); my %lt = &Apache::lonlocal::texthash ( 'blog' => "Personal User Blog", 'aboutme' => "Personal Information Page", @@ -243,6 +243,9 @@ sub build_tools_display { %reqtitles = &courserequest_titles(); %reqdisplay = &courserequest_display(); $colspan = ' colspan="2"'; + %domconfig = + &Apache::lonnet::get_dom('configuration',['requestcourses'],$ccdomain); + $isadv = &Apache::lonnet::is_advanced_user($ccuname,$ccdomain); } else { %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname, 'tools.aboutme','tools.portfolio','tools.blog'); @@ -289,7 +292,14 @@ sub build_tools_display { &Apache::loncommon::start_data_table_row()."\n"; if ($context eq 'requestcourses') { my ($curroption,$currlimit); - $curroption = $userenv{$context.'.'.$item}; + if ($userenv{$context.'.'.$item} ne '') { + $curroption = $userenv{$context.'.'.$item}; + } else { + my (@inststatuses); + $curroption = + &Apache::loncoursequeueadmin::get_processtype($ccuname,$ccdomain,$isadv,$ccdomain, + $item,\@inststatuses,\%domconfig); + } if (!$curroption) { $curroption = 'norequest'; } @@ -469,7 +479,7 @@ sub courserequest_display { # =================================================================== Phase one sub print_username_entry_form { - my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_; + my ($r,$context,$response,$srch,$forcenewuser,$crstype,$brcrum) = @_; my $defdom=$env{'request.role.domain'}; my $formtoset = 'crtuser'; if (exists($env{'form.startrolename'})) { @@ -493,31 +503,36 @@ sub print_username_entry_form { && (&Apache::lonnet::allowed('mcr','/'))) { $jscript .= &customrole_javascript(); } - my %loaditems = ( - 'onload' => "javascript:setFormElements(document.$formtoset)", - ); - my %breadcrumb_text = &singleuser_breadcrumb($crstype); - my $start_page = - &Apache::loncommon::start_page('User Management', - $jscript,{'add_entries' => \%loaditems,}); - if ($env{'form.action'} eq 'custom') { - &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"javascript:backPage(document.crtuser)", - text=>"Pick custom role",}); - } else { - &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"javascript:backPage(document.crtuser)", - text=>$breadcrumb_text{'search'}, - faq=>282,bug=>'Instructor Interface',}); - } my $helpitem = 'Course_Change_Privileges'; if ($env{'form.action'} eq 'custom') { $helpitem = 'Course_Editing_Custom_Roles'; } elsif ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', - $helpitem); + my %breadcrumb_text = &singleuser_breadcrumb($crstype); + if ($env{'form.action'} eq 'custom') { + push(@{$brcrum}, + {href=>"javascript:backPage(document.crtuser)", + text=>"Pick custom role", + help => $helpitem,} + ); + } else { + push (@{$brcrum}, + {href => "javascript:backPage(document.crtuser)", + text => $breadcrumb_text{'search'}, + help => $helpitem, + faq => 282, + bug => 'Instructor Interface',} + ); + } + my %loaditems = ( + 'onload' => "javascript:setFormElements(document.$formtoset)", + ); + my $args = {bread_crumbs => $brcrum, + bread_crumbs_component => 'User Management', + add_entries => \%loaditems,}; + $r->print(&Apache::loncommon::start_page('User Management',$jscript,$args)); + my %lt=&Apache::lonlocal::texthash( 'srst' => 'Search for a user and enroll as a student', 'srme' => 'Search for a user and enroll as a member', @@ -528,7 +543,7 @@ sub print_username_entry_form { 'nr' => "role name", 'cre' => "Next", ); - $r->print($start_page."\n".$crumbs); + if ($env{'form.action'} eq 'custom') { if (&Apache::lonnet::allowed('mcr','/')) { my $newroletext = &mt('Define new custom role:'); @@ -581,7 +596,6 @@ sub print_username_entry_form { } $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype)); } - $r->print(&Apache::loncommon::end_page()); } sub customrole_javascript { @@ -624,7 +638,6 @@ END sub entry_form { my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_; - my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); my ($usertype,$inexact); if (ref($srch) eq 'HASH') { if (($srch->{'srchin'} eq 'dom') && @@ -632,9 +645,10 @@ sub entry_form { ($srch->{'srchtype'} eq 'exact') && ($srch->{'srchdomain'} ne '') && ($srch->{'srchterm'} ne '')) { + my (%curr_rules,%got_rules); my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($srch->{'srchdomain'},'username'); - $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules); + $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules,\%curr_rules,\%got_rules); } else { $inexact = 1; } @@ -660,7 +674,7 @@ $userpicker ENDBLOCK if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; - my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); + my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1); my %lt=&Apache::lonlocal::texthash( 'enro' => 'Enroll one student', 'enrm' => 'Enroll one member', @@ -709,7 +723,7 @@ $showresponse
$lt{'usr'}: | -+ | $lt{'dom'}: | $domform | $sellink | @@ -751,7 +765,7 @@ END # =================================================================== Phase two sub print_user_selection_page { - my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_; + my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype,$brcrum) = @_; my @fields = ('username','domain','lastname','firstname','permanentemail'); my $sortby = $env{'form.sortby'}; @@ -792,25 +806,30 @@ ENDSCRIPT if ($context eq 'requestcrs') { $r->print(' | '.$plaintext. ' | '.$area.
@@ -1739,7 +1771,7 @@ sub new_coauthor_roles {
}
sub new_domain_roles {
- my ($r) = @_;
+ my ($r,$ccdomain) = @_;
my $addrolesdisplay = 0;
#
# Domain level
@@ -1757,6 +1789,7 @@ sub new_domain_roles {
foreach my $thisdomain (sort(&Apache::lonnet::all_domains())) {
foreach my $role (@allroles) {
next if ($role eq 'ad');
+ next if (($role eq 'au') && ($ccdomain ne $thisdomain));
if (&Apache::lonnet::allowed('c'.$role,$thisdomain)) {
my $plrole=&Apache::lonnet::plaintext($role);
my %lt=&Apache::lonlocal::texthash(
@@ -2053,9 +2086,22 @@ sub personal_data_display {
if ($canmodify_status{'inststatus'}) {
$shown = &pick_inst_statuses($userenv{'inststatus'},$usertypes,$types);
} else {
- $shown .= $userenv{'inststatus'};
if ($userenv{'inststatus'} eq '') {
$hiderow = 1;
+ } else {
+ my @showitems;
+ foreach my $item ( map { &unescape($_); } split(':',$userenv{'inststatus'})) {
+ if (exists($usertypes->{$item})) {
+ push(@showitems,$usertypes->{$item});
+ } else {
+ push(@showitems,$item);
+ }
+ }
+ if (@showitems) {
+ $shown = join(', ',@showitems);
+ } else {
+ $hiderow = 1;
+ }
}
}
if (!$hiderow) {
@@ -2151,7 +2197,7 @@ sub get_inststatuses {
# ================================================================= Phase Three
sub update_user_data {
- my ($r,$context,$crstype) = @_;
+ my ($r,$context,$crstype,$brcrum) = @_;
my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},
$env{'form.ccdomain'});
# Error messages
@@ -2176,36 +2222,39 @@ sub update_user_data {
'// ]]>'."\n".
''."\n";
my %breadcrumb_text = &singleuser_breadcrumb($crstype);
- my $args;
- if ($env{'form.popup'}) {
- $args->{'no_nav_bar'} = 1;
- } else {
- $args = undef;
- }
- $r->print(&Apache::loncommon::start_page($title,$jscript,$args));
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate)",
- text=>$breadcrumb_text{'search'},
- faq=>282,bug=>'Instructor Interface',});
+ push (@{$brcrum},
+ {href => "javascript:backPage(document.userupdate)",
+ text => $breadcrumb_text{'search'},
+ faq => 282,
+ bug => 'Instructor Interface',}
+ );
if ($env{'form.prevphase'} eq 'userpicked') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate,'get_user_info','select')",
- text=>$breadcrumb_text{'userpicked'},
- faq=>282,bug=>'Instructor Interface',});
- }
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
- text=>$breadcrumb_text{'modify'},
- faq=>282,bug=>'Instructor Interface',},
- {href=>"/adm/createuser",
- text=>"Result",
- faq=>282,bug=>'Instructor Interface',});
+ push(@{$brcrum},
+ {href => "javascript:backPage(document.userupdate,'get_user_info','select')",
+ text => $breadcrumb_text{'userpicked'},
+ faq => 282,
+ bug => 'Instructor Interface',});
+ }
my $helpitem = 'Course_Change_Privileges';
if ($env{'form.action'} eq 'singlestudent') {
$helpitem = 'Course_Add_Student';
}
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- $helpitem));
+ push(@{$brcrum},
+ {href => "javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
+ text => $breadcrumb_text{'modify'},
+ faq => 282,
+ bug => 'Instructor Interface',},
+ {href => "/adm/createuser",
+ text => "Result",
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => $helpitem});
+ my $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => 'User Management'};
+ if ($env{'form.popup'}) {
+ $args->{'no_nav_bar'} = 1;
+ }
+ $r->print(&Apache::loncommon::start_page($title,$jscript,$args));
$r->print(&update_result_form($uhome));
# Check Inputs
if (! $env{'form.ccuname'} ) {
@@ -2272,11 +2321,17 @@ sub update_user_data {
$r->print(''.&mt('User [_1] in domain [_2]', $env{'form.ccuname'}, $env{'form.ccdomain'}).''); + $r->print(''.&mt('Please be patient').' '); + my (%alerts,%rulematch,%inst_results,%curr_rules); + my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id'); my @usertools = ('aboutme','blog','portfolio'); my @requestcourses = ('official','unofficial','community'); my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'}); + my %canmodify_status = + &Apache::lonuserutils::can_modify_userinfo($context,$env{'form.ccdomain'}, + ['inststatus']); if ($env{'form.makeuser'}) { $r->print(''.&mt('Creating new account.').''); # Check for the authentication mode and password @@ -2336,49 +2391,52 @@ sub update_user_data { $r->print(&mt('Generating user').': '.$result); $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); - my (%changeHash,%newcustom,%changed); + my (%changeHash,%newcustom,%changed,%changedinfo); if ($uhome ne 'no_host') { - if ($env{'form.customquota'} == 1) { - if ($env{'form.portfolioquota'} eq '') { - $newcustom{'quota'} = 0; - } else { - $newcustom{'quota'} = $env{'form.portfolioquota'}; - $newcustom{'quota'} =~ s/[^\d\.]//g; + if ($context eq 'domain') { + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newcustom{'quota'} = 0; + } else { + $newcustom{'quota'} = $env{'form.portfolioquota'}; + $newcustom{'quota'} =~ s/[^\d\.]//g; + } + $changed{'quota'} = "a_admin($newcustom{'quota'},\%changeHash); } - $changed{'quota'} = "a_admin($newcustom{'quota'},\%changeHash); - } - foreach my $item (@usertools) { - if ($env{'form.custom'.$item} == 1) { - $newcustom{$item} = $env{'form.tools_'.$item}; - $changed{$item} = &tool_admin($item,$newcustom{$item}, - \%changeHash,'tools'); + foreach my $item (@usertools) { + if ($env{'form.custom'.$item} == 1) { + $newcustom{$item} = $env{'form.tools_'.$item}; + $changed{$item} = &tool_admin($item,$newcustom{$item}, + \%changeHash,'tools'); + } } - } - foreach my $item (@requestcourses) { - $newcustom{$item} = $env{'form.crsreq_'.$item}; - if ($env{'form.crsreq_'.$item} eq 'autolimit') { - $newcustom{$item} .= '='; - unless ($env{'form.crsreq_'.$item.'_limit'} =~ /\D/) { - $newcustom{$item} .= $env{'form.crsreq_'.$item.'_limit'}; + foreach my $item (@requestcourses) { + if ($env{'form.custom'.$item} == 1) { + $newcustom{$item} = $env{'form.crsreq_'.$item}; + if ($env{'form.crsreq_'.$item} eq 'autolimit') { + $newcustom{$item} .= '='; + unless ($env{'form.crsreq_'.$item.'_limit'} =~ /\D/) { + $newcustom{$item} .= $env{'form.crsreq_'.$item.'_limit'}; + } + } + $changed{$item} = &tool_admin($item,$newcustom{$item}, + \%changeHash,'requestcourses'); } } - $changed{$item} = &tool_admin($item,$newcustom{$item}, - \%changeHash,'requestcourses'); } - if (exists($env{'form.inststatus'})) { - my @inststatuses = &Apache::loncommon::get_env_multiple('form.inststatus'); - if (@inststatuses > 0) { - $changeHash{'inststatus'} = join(',',@inststatuses); - $changed{'inststatus'} = $changeHash{'inststatus'}; + if ($canmodify_status{'inststatus'}) { + if (exists($env{'form.inststatus'})) { + my @inststatuses = &Apache::loncommon::get_env_multiple('form.inststatus'); + if (@inststatuses > 0) { + $changeHash{'inststatus'} = join(',',@inststatuses); + $changed{'inststatus'} = $changeHash{'inststatus'}; + } } } if (keys(%changed)) { - $changeHash{'firstname'} = $env{'form.cfirstname'}; - $changeHash{'middlename'} = $env{'form.cmiddlename'}; - $changeHash{'lastname'} = $env{'form.clastname'}; - $changeHash{'generation'} = $env{'form.cgeneration'}; - $changeHash{'id'} = $env{'form.cid'}; - $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; + foreach my $item (@userinfo) { + $changeHash{$item} = $env{'form.c'.$item}; + } my $chgresult = &Apache::lonnet::put('environment',\%changeHash, $env{'form.ccdomain'},$env{'form.ccuname'}); @@ -2406,8 +2464,11 @@ sub update_user_data { $r->print($error.&mt('You do not have the authority to modify this users authentification information').'.'.$end); } } + + $r->rflush(); # Finish display of header before time consuming actions start + ## - my (@userroles,%userupdate,$cnum,$cdom,$crstype,$namechanged); + my (@userroles,%userupdate,$cnum,$cdom,%namechanged); if ($context eq 'course') { ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity(); $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum); @@ -2497,7 +2558,6 @@ sub update_user_data { push(@longroles,&Apache::lonnet::plaintext($role,$crstype)); } } - my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id'); my %canmodify = &Apache::lonuserutils::can_modify_userinfo($context,$env{'form.ccdomain'},\@userinfo,\@userroles); foreach my $item (@userinfo) { # Strip leading and trailing whitespace @@ -2544,40 +2604,48 @@ sub update_user_data { } } my ($quotachanged,$oldportfolioquota,$newportfolioquota,$oldinststatus, - $inststatus,$newinststatus,$oldisdefault,$newisdefault,$olddefquotatext, - $newdefquotatext,%oldaccess,%oldaccesstext,%newaccess,%newaccesstext, - $oldinststatuses,$newinststatuses); - my ($defquota,$settingstatus) = - &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus); - my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom); + $newinststatus,$oldisdefault,$newisdefault,%oldsettings, + %oldsettingstext,%newsettings,%newsettingstext,@disporder, + $olddefquota,$oldsettingstatus,$newdefquota,$newsettingstatus); + @disporder = ('inststatus'); + if ($env{'request.role.domain'} eq $env{'form.ccdomain'}) { + push(@disporder,'requestcourses'); + } else { + push(@disporder,'reqcrsotherdom'); + } + push(@disporder,('quota','tools')); + $oldinststatus = $userenv{'inststatus'}; + ($olddefquota,$oldsettingstatus) = + &Apache::loncommon::default_quota($env{'form.ccdomain'},$oldinststatus); + ($newdefquota,$newsettingstatus) = ($olddefquota,$oldsettingstatus); + my %canshow; if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { - $showquota = 1; + $canshow{'quota'} = 1; } if (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) { - $showtools = 1; + $canshow{'tools'} = 1; } if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) { - $showrequestcourses = 1; + $canshow{'requestcourses'} = 1; } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) { - $showreqotherdom = 1; + $canshow{'reqcrsotherdom'} = 1; } if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) { - $showinststatus = 1; + $canshow{'inststatus'} = 1; } my (%changeHash,%changed); - $oldinststatus = $userenv{'inststatus'}; if ($oldinststatus eq '') { - $oldinststatuses = $othertitle; + $oldsettings{'inststatus'} = $othertitle; } else { if (ref($usertypes) eq 'HASH') { - $oldinststatuses = join(', ',map{ $usertypes->{ &unescape($_) }; } (split(/:/,$userenv{'inststatus'}))); + $oldsettings{'inststatus'} = join(', ',map{ $usertypes->{ &unescape($_) }; } (split(/:/,$userenv{'inststatus'}))); } else { - $oldinststatuses = join(', ',map{ &unescape($_); } (split(/:/,$userenv{'inststatus'}))); + $oldsettings{'inststatus'} = join(', ',map{ &unescape($_); } (split(/:/,$userenv{'inststatus'}))); } } $changeHash{'inststatus'} = $userenv{'inststatus'}; - my %canmodify_inststatus = &Apache::lonuserutils::can_modify_userinfo($context,$env{'form.ccdomain'},['inststatus'],\@userroles); - if ($canmodify_inststatus{'inststatus'}) { + if ($canmodify_status{'inststatus'}) { + $canshow{'inststatus'} = 1; if (exists($env{'form.inststatus'})) { my @inststatuses = &Apache::loncommon::get_env_multiple('form.inststatus'); if (@inststatuses > 0) { @@ -2585,86 +2653,88 @@ sub update_user_data { $changeHash{'inststatus'} = $newinststatus; if ($newinststatus ne $oldinststatus) { $changed{'inststatus'} = $newinststatus; + ($newdefquota,$newsettingstatus) = + &Apache::loncommon::default_quota($env{'form.ccdomain'},$newinststatus); } if (ref($usertypes) eq 'HASH') { - $newinststatuses = join(', ',map{ $usertypes->{$_}; } (@inststatuses)); + $newsettings{'inststatus'} = join(', ',map{ $usertypes->{$_}; } (@inststatuses)); } else { - $newinststatuses = join(', ',map{ $usertypes->{$_}; } (@inststatuses)); - } - } else { - $newinststatus = ''; - $changeHash{'inststatus'} = $newinststatus; - $newinststatuses = $othertitle; - if ($newinststatus ne $oldinststatus) { - $changed{'inststatus'} = $changeHash{'inststatus'}; + $newsettings{'inststatus'} = join(', ',@inststatuses); } } + } else { + $newinststatus = ''; + $changeHash{'inststatus'} = $newinststatus; + $newsettings{'inststatus'} = $othertitle; + if ($newinststatus ne $oldinststatus) { + $changed{'inststatus'} = $changeHash{'inststatus'}; + ($newdefquota,$newsettingstatus) = + &Apache::loncommon::default_quota($env{'form.ccdomain'},$newinststatus); + } } + } elsif ($context ne 'selfcreate') { + $canshow{'inststatus'} = 1; + $newsettings{'inststatus'} = $oldsettings{'inststatus'}; } $changeHash{'portfolioquota'} = $userenv{'portfolioquota'}; - if ($userenv{'portfolioquota'} ne '') { - $oldportfolioquota = $userenv{'portfolioquota'}; - if ($env{'form.customquota'} == 1) { - if ($env{'form.portfolioquota'} eq '') { - $newportfolioquota = 0; + if ($context eq 'domain') { + if ($userenv{'portfolioquota'} ne '') { + $oldportfolioquota = $userenv{'portfolioquota'}; + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newportfolioquota = 0; + } else { + $newportfolioquota = $env{'form.portfolioquota'}; + $newportfolioquota =~ s/[^\d\.]//g; + } + if ($newportfolioquota != $oldportfolioquota) { + $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); + } } else { - $newportfolioquota = $env{'form.portfolioquota'}; - $newportfolioquota =~ s/[^\d\.]//g; - } - if ($newportfolioquota != $oldportfolioquota) { - $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); + $changed{'quota'} = "a_admin('',\%changeHash); + $newportfolioquota = $newdefquota; + $newisdefault = 1; } } else { - $changed{'quota'} = "a_admin('',\%changeHash); - $newportfolioquota = $defquota; - $newisdefault = 1; - } - } else { - $oldisdefault = 1; - $oldportfolioquota = $defquota; - if ($env{'form.customquota'} == 1) { - if ($env{'form.portfolioquota'} eq '') { - $newportfolioquota = 0; + $oldisdefault = 1; + $oldportfolioquota = $olddefquota; + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newportfolioquota = 0; + } else { + $newportfolioquota = $env{'form.portfolioquota'}; + $newportfolioquota =~ s/[^\d\.]//g; + } + $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); } else { - $newportfolioquota = $env{'form.portfolioquota'}; - $newportfolioquota =~ s/[^\d\.]//g; + $newportfolioquota = $newdefquota; + $newisdefault = 1; } - $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); + } + if ($oldisdefault) { + $oldsettingstext{'quota'} = &get_defaultquota_text($oldsettingstatus); + } + if ($newisdefault) { + $newsettingstext{'quota'} = &get_defaultquota_text($newsettingstatus); + } + &tool_changes('tools',\@usertools,\%oldsettings,\%oldsettingstext,\%userenv, + \%changeHash,\%changed,\%newsettings,\%newsettingstext); + if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) { + &tool_changes('requestcourses',\@requestcourses,\%oldsettings,\%oldsettingstext, + \%userenv,\%changeHash,\%changed,\%newsettings,\%newsettingstext); } else { - $newportfolioquota = $defquota; - $newisdefault = 1; + &tool_changes('reqcrsotherdom',\@requestcourses,\%oldsettings,\%oldsettingstext, + \%userenv,\%changeHash,\%changed,\%newsettings,\%newsettingstext); + } + } + foreach my $item (@userinfo) { + if ($env{'form.c'.$item} ne $userenv{$item}) { + $namechanged{$item} = 1; } } - if ($oldisdefault) { - $olddefquotatext = &get_defaultquota_text($settingstatus); - } - if ($newisdefault) { - $newdefquotatext = &get_defaultquota_text($settingstatus); - } - &tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv, - \%changeHash,\%changed,\%newaccess,\%newaccesstext); - if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) { - &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext, - \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext); - } else { - &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext, - \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext); - } - if ($env{'form.cfirstname'} ne $userenv{'firstname'} || - $env{'form.cmiddlename'} ne $userenv{'middlename'} || - $env{'form.clastname'} ne $userenv{'lastname'} || - $env{'form.cgeneration'} ne $userenv{'generation'} || - $env{'form.cid'} ne $userenv{'id'} || - $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} ) { - $namechanged = 1; - } - if (($namechanged) || (keys(%changed) > 0)) { - $changeHash{'firstname'} = $env{'form.cfirstname'}; - $changeHash{'middlename'} = $env{'form.cmiddlename'}; - $changeHash{'lastname'} = $env{'form.clastname'}; - $changeHash{'generation'} = $env{'form.cgeneration'}; - $changeHash{'id'} = $env{'form.cid'}; - $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; + $oldsettings{'quota'} = $oldportfolioquota.' Mb'; + $newsettings{'quota'} = $newportfolioquota.' Mb'; + if ((keys(%namechanged) > 0) || (keys(%changed) > 0)) { my ($chgresult,$namechgresult); if (keys(%changed) > 0) { $chgresult = @@ -2680,8 +2750,7 @@ sub update_user_data { $newenvhash{'environment.requestcourses.'.$key} = $changeHash{'requestcourses.'.$key}; if ($changeHash{'requestcourses.'.$key} ne '') { - $newenvhash{'environment.canrequest.'.$key} = - $changeHash{'requestcourses.'.$key}; + $newenvhash{'environment.canrequest.'.$key} = 1; } else { $newenvhash{'environment.canrequest.'.$key} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, @@ -2705,14 +2774,17 @@ sub update_user_data { } } } - if ($namechanged) { - # Make the change + if (keys(%namechanged) > 0) { + foreach my $field (@userinfo) { + $changeHash{$field} = $env{'form.c'.$field}; + } +# Make the change $namechgresult = &Apache::lonnet::modifyuser($env{'form.ccdomain'}, $env{'form.ccuname'},$changeHash{'id'},undef,undef, $changeHash{'firstname'},$changeHash{'middlename'}, $changeHash{'lastname'},$changeHash{'generation'}, - $changeHash{'id'},undef,$changeHash{'permanentemail'}); + $changeHash{'id'},undef,$changeHash{'permanentemail'},undef,\@userinfo); %userupdate = ( lastname => $env{'form.clastname'}, middlename => $env{'form.cmiddlename'}, @@ -2721,139 +2793,13 @@ sub update_user_data { id => $env{'form.cid'}, ); } - if (($namechanged && $namechgresult eq 'ok') || + if (((keys(%namechanged) > 0) && $namechgresult eq 'ok') || ((keys(%changed) > 0) && $chgresult eq 'ok')) { # Tell the user we changed the name - my %lt=&Apache::lonlocal::texthash( - 'uic' => 'User Information Changed', - 'frst' => 'First Name', - 'mddl' => 'Middle Name', - 'lst' => 'Last Name', - 'gen' => 'Generation', - 'id' => 'Student/Employee ID', - 'mail' => 'Permanent e-mail address', - 'disk' => 'Disk space allocated to portfolio files', - 'blog' => 'Blog Availability', - 'aboutme' => 'Personal Information Page Availability', - 'portfolio' => 'Portfolio Availability', - 'official' => 'Can Request Official Courses', - 'unofficial' => 'Can Request Unofficial Courses', - 'community' => 'Can Request Communities', - 'inststatus' => "Affiliation", - 'prvs' => 'Previous Value:', - 'chto' => 'Changed To:' - ); - $r->print(''.$lt{'uic'}.''. - &Apache::loncommon::start_data_table(). - &Apache::loncommon::start_data_table_header_row()); - $r->print(<<"END"); - | - | $lt{'frst'} | -$lt{'mddl'} | -$lt{'lst'} | -$lt{'gen'} | -$lt{'id'} | -$lt{'mail'} | -END - if ($showinststatus) { - $r->print(" -$lt{'inststatus'} | \n"); - } - if ($showrequestcourses) { - foreach my $item (@requestcourses) { - $r->print(" -$lt{$item} | \n"); - } - } elsif ($showreqotherdom) { - foreach my $item (@requestcourses) { - $r->print(" -$lt{$item} | \n"); - } - } - if ($showquota) { - $r->print(" -$lt{'disk'} | \n"); - } - if ($showtools) { - foreach my $item (@usertools) { - $r->print(" -$lt{$item} | \n"); - } - } - $r->print(&Apache::loncommon::end_data_table_header_row(). - &Apache::loncommon::start_data_table_row()); - $r->print(<<"END"); -$lt{'prvs'} | -$userenv{'firstname'} | -$userenv{'middlename'} | -$userenv{'lastname'} | -$userenv{'generation'} | -$userenv{'id'} | -$userenv{'permanentemail'} | -END - if ($showinststatus) { - $r->print(" -$oldinststatuses | \n"); - } - if ($showrequestcourses) { - foreach my $item (@requestcourses) { - $r->print(" -$oldaccess{$item} $oldaccesstext{$item} | \n"); - } - } elsif ($showreqotherdom) { - foreach my $item (@requestcourses) { - $r->print(" -$oldaccess{$item} $oldaccesstext{$item} | \n"); - } - } - if ($showquota) { - $r->print(" -$oldportfolioquota Mb $olddefquotatext | \n"); - } - if ($showtools) { - foreach my $item (@usertools) { - $r->print(" -$oldaccess{$item} $oldaccesstext{$item} | \n"); - } - } - $r->print(&Apache::loncommon::end_data_table_row(). - &Apache::loncommon::start_data_table_row()); - $r->print(<<"END"); -$lt{'chto'} | -$env{'form.cfirstname'} | -$env{'form.cmiddlename'} | -$env{'form.clastname'} | -$env{'form.cgeneration'} | -$env{'form.cid'} | -$env{'form.cpermanentemail'} | -END - if ($showinststatus) { - $r->print(" -$newinststatuses | \n"); - } - if ($showrequestcourses) { - foreach my $item (@requestcourses) { - $r->print(" -$newaccess{$item} $newaccesstext{$item} | \n"); - } - } elsif ($showreqotherdom) { - foreach my $item (@requestcourses) { - $r->print(" -$newaccess{$item} $newaccesstext{$item} | \n"); - } - } - if ($showquota) { - $r->print(" -$newportfolioquota Mb $newdefquotatext | \n"); - } - if ($showtools) { - foreach my $item (@usertools) { - $r->print(" -$newaccess{$item} $newaccesstext{$item} | \n"); - } - } - $r->print(&Apache::loncommon::end_data_table_row(). - &Apache::loncommon::end_data_table().'\n"); + } + my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id'); + foreach my $item (@userinfo) { + $r->print(" | $lt{$item} | \n"); + } + foreach my $entry (@{$order}) { + if ($canshow->{$entry}) { + if (($entry eq 'requestcourses') || ($entry eq 'reqcrsotherdom')) { + foreach my $item (@{$requestcourses}) { + $r->print("$lt{$item} | \n"); + } + } elsif ($entry eq 'tools') { + foreach my $item (@{$usertools}) { + $r->print("$lt{$item} | \n"); + } + } else { + $r->print("$lt{$entry} | \n"); + } + } + } + $r->print(&Apache::loncommon::end_data_table_header_row(). + &Apache::loncommon::start_data_table_row()); + if ($changed) { + $r->print(''.$lt{'prvs'}.' | '."\n"); + } + foreach my $item (@userinfo) { + $r->print(''.$userenv->{$item}.' | '."\n"); + } + foreach my $entry (@{$order}) { + if ($canshow->{$entry}) { + if (($entry eq 'requestcourses') || ($entry eq 'reqcrsotherdom')) { + foreach my $item (@{$requestcourses}) { + $r->print("$oldsetting->{$item} $oldsettingtext->{$item} | \n"); + } + } elsif ($entry eq 'tools') { + foreach my $item (@{$usertools}) { + $r->print("$oldsetting->{$item} $oldsettingtext->{$item} | \n"); + } + } else { + $r->print("$oldsetting->{$entry} $oldsettingtext->{$entry} | \n"); + } + } + } + $r->print(&Apache::loncommon::end_data_table_row()); + if ($changed) { + $r->print(&Apache::loncommon::start_data_table_row(). + ''.$lt{'chto'}.' | '."\n"); + foreach my $item (@userinfo) { + my $value = $env{'form.c'.$item}; + if ($namechangedhash->{$item}) { + $value = ''.$value.''; + } + $r->print("$value | \n"); + } + foreach my $entry (@{$order}) { + if ($canshow->{$entry}) { + if (($entry eq 'requestcourses') || ($entry eq 'reqcrsotherdom')) { + foreach my $item (@{$requestcourses}) { + my $value = $newsetting->{$item}.' '.$newsettingtext->{$item}; + if ($changedhash->{$item}) { + $value = ''.$value.''; + } + $r->print("$value | \n"); + } + } elsif ($entry eq 'tools') { + foreach my $item (@{$usertools}) { + my $value = $newsetting->{$item}.' '.$newsettingtext->{$item}; + if ($changedhash->{$item}) { + $value = ''.$value.''; + } + $r->print("$value | \n"); + } + } else { + my $value = $newsetting->{$entry}.' '.$newsettingtext->{$entry}; + if ($changedhash->{$entry}) { + $value = ''.$value.''; + } + $r->print("$value | \n"); + } + } + } + $r->print(&Apache::loncommon::end_data_table_row()); + } + $r->print(&Apache::loncommon::end_data_table().''.$courseform.' | '.$lt{'rol'}.' | '.$lt{'grs'}.' | '.$lt{'sta'}.' | '.$lt{'end'}.' | '. + ''.$lt{'scc'}.' | '.$lt{'rol'}.' | '.$lt{'grs'}.' | '.$lt{'sta'}.' | '.$lt{'end'}.' | '. &Apache::loncommon::end_data_table_header_row(); my $otheritems = &Apache::loncommon::start_data_table_row()."\n". - ''. + $courseform.(' ' x4).' | '."\n".
'
---|