--- loncom/interface/loncreateuser.pm 2023/11/05 20:06:04 1.473 +++ loncom/interface/loncreateuser.pm 2024/02/29 14:09:30 1.475 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.473 2023/11/05 20:06:04 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.475 2024/02/29 14:09:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -273,7 +273,7 @@ sub build_tools_display { my ($ccuname,$ccdomain,$context) = @_; my (@usertools,%userenv,$output,@options,%validations,%reqtitles,%reqdisplay, $colspan,$isadv,%domconfig,@defaulteditors,@customeditors,@custommanagers, - @possmanagers,$editorsty,$customsty); + @possmanagers); my %lt = &Apache::lonlocal::texthash ( 'blog' => "Personal User Blog", 'aboutme' => "Personal Information Page", @@ -337,13 +337,15 @@ sub build_tools_display { } foreach my $item (@usertools) { my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off, - $currdisp,$custdisp,$custradio,$onclick); + $currdisp,$custdisp,$custradio,$onclick,$customsty,$editorsty); $cust_off = 'checked="checked" '; $tool_on = 'checked="checked" '; - $curr_access = - &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,undef, - $context,\%userenv,'', - {'is_adv' => $isadv}); + unless (($context eq 'authordefaults') && ($item ne 'webdav')) { + $curr_access = + &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,undef, + $context,\%userenv,'', + {'is_adv' => $isadv}); + } if ($context eq 'requestauthor') { if ($userenv{$context} ne '') { $cust_on = ' checked="checked" '; @@ -466,7 +468,7 @@ sub build_tools_display { $tool_off = 'checked="checked" '; $tool_on = ''; } - $customsty = ' style="display:inline;"'; + $customsty = ' style="display:block;"'; } } $output .= ' '."\n". @@ -474,16 +476,14 @@ sub build_tools_display { ' '."\n". &Apache::loncommon::start_data_table_row()."\n"; if (($context eq 'requestcourses') || ($context eq 'requestauthor')) { - my ($curroption,$currlimit,$customsty); + my ($curroption,$currlimit); my $envkey = $context.'.'.$item; if ($context eq 'requestauthor') { $envkey = $context; } if ($userenv{$envkey} ne '') { $curroption = $userenv{$envkey}; - $customsty = ' style="display:block"'; } else { - $customsty = ' style="display:none"'; my (@inststatuses); if ($context eq 'requestcourses') { $curroption = @@ -3781,7 +3781,10 @@ sub update_user_data { } if (($env{'user.name'} eq $env{'form.ccuname'}) && ($env{'user.domain'} eq $env{'form.ccdomain'})) { - my %newenvhash; + my (%newenvhash,$got_domdefs,%domdefaults,$got_userenv, + %userenv); + my @fromenv = keys(%changed); + push(@fromenv,'inststatus'); foreach my $key (keys(%changed)) { if (($key eq 'official') || ($key eq 'unofficial') || ($key eq 'community') || ($key eq 'textbook') || @@ -3791,28 +3794,55 @@ sub update_user_data { if ($changeHash{'requestcourses.'.$key}) { $newenvhash{'environment.canrequest.'.$key} = 1; } else { + unless ($got_domdefs) { + %domdefaults = + &Apache::lonnet::get_domain_defaults($env{'user.domain'}); + $got_domdefs = 1; + } + unless ($got_userenv) { + %userenv = + &Apache::lonnet::userenvironment($env{'user.domain'}, + $env{'user.name'},@fromenv); + $got_userenv = 1; + } $newenvhash{'environment.canrequest.'.$key} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','requestcourses'); + $key,'reload','requestcourses',\%userenv,\%domdefaults); } } elsif ($key eq 'requestauthor') { $newenvhash{'environment.'.$key} = $changeHash{$key}; if ($changeHash{$key}) { $newenvhash{'environment.canrequest.author'} = 1; } else { + unless ($got_domdefs) { + %domdefaults = + &Apache::lonnet::get_domain_defaults($env{'user.domain'}); + $got_domdefs = 1; + } + unless ($got_userenv) { + %userenv = + &Apache::lonnet::userenvironment($env{'user.domain'}, + $env{'user.name'},@fromenv); + $got_userenv = 1; + } $newenvhash{'environment.canrequest.author'} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','requestauthor'); + $key,'reload','requestauthor',\%userenv,\%domdefaults); } } elsif ($key eq 'editors') { $newenvhash{'environment.author'.$key} = $changeHash{'author'.$key}; - if ($key eq 'editors') { - if ($env{'form.customeditors'}) { - $newenvhash{'environment.editors'} = $changeHash{'author'.$key}; + if ($env{'form.customeditors'}) { + $newenvhash{'environment.editors'} = $changeHash{'author'.$key}; + } else { + unless ($got_domdefs) { + %domdefaults = + &Apache::lonnet::get_domain_defaults($env{'user.domain'}); + $got_domdefs = 1; + } + if ($domdefaults{'editors'} ne '') { + $newenvhash{'environment.editors'} = $domdefaults{'editors'}; } else { - $newenvhash{'environment.editors'} = - &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','authordefaults'); + $newenvhash{'environment.editors'} = 'edit,xml'; } } } elsif ($key ne 'quota') { @@ -3822,9 +3852,20 @@ sub update_user_data { $newenvhash{'environment.availabletools.'.$key} = $changeHash{'tools.'.$key}; } else { + unless ($got_domdefs) { + %domdefaults = + &Apache::lonnet::get_domain_defaults($env{'user.domain'}); + $got_domdefs = 1; + } + unless ($got_userenv) { + %userenv = + &Apache::lonnet::userenvironment($env{'user.domain'}, + $env{'user.name'},@fromenv); + $got_userenv = 1; + } $newenvhash{'environment.availabletools.'.$key} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','tools'); + $key,'reload','tools',\%userenv,\%domdefaults); } } }