--- loncom/interface/loncommon.pm 2022/10/29 17:44:05 1.1394 +++ loncom/interface/loncommon.pm 2022/10/29 18:13:28 1.1395 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1394 2022/10/29 17:44:05 raeburn Exp $ +# $Id: loncommon.pm,v 1.1395 2022/10/29 18:13:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -72,6 +72,7 @@ use Apache::lonuserstate(); use Apache::courseclassifier(); use LONCAPA qw(:DEFAULT :match); use LONCAPA::LWPReq; +use LONCAPA::map(); use HTTP::Request; use DateTime::TimeZone; use DateTime::Locale; @@ -17062,7 +17063,6 @@ sub construct_course { # unless (($args->{'nonstandard'}) || ($args->{'firstres'} eq 'blank') || ($cloneid)) { - use LONCAPA::map; $outcome .= &mt('Setting first resource').': '; my $map = '/uploaded/'.$$crsudom.'/'.$$crsunum.'/default.sequence'; @@ -18369,7 +18369,7 @@ sub switch_for_update { } sub update_content_constraints { - my ($cdom,$cnum,$chome,$cid,$keeporder) = @_; + my ($cdom,$cnum,$chome,$cid) = @_; my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired'); my ($reqdmajor,$reqdminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'}); my (%checkresponsetypes,%checkcrsrestypes); @@ -18417,20 +18417,6 @@ sub update_content_constraints { } undef($navmap); } - my (@resources,@order,@resparms,@zombies); - if ($keeporder) { - use LONCAPA::map; - @resources = @LONCAPA::map::resources; - @order = @LONCAPA::map::order; - @resparms = @LONCAPA::map::resparms; - @zombies = @LONCAPA::map::zombies; - } - if ($keeporder) { - @LONCAPA::map::resources = @resources; - @LONCAPA::map::order = @order; - @LONCAPA::map::resparms = @resparms; - @LONCAPA::map::zombies = @zombies; - } if (&Apache::lonnet::count_supptools($cnum,$cdom,1)) { my ($major,$minor) = split(/\./,$checkcrsrestypes{'exttool'}); if (($major > $reqdmajor) || ($major == $reqdmajor && $minor > $reqdminor)) { @@ -18457,7 +18443,7 @@ sub allmaps_incourse { if ($lastchange > $env{'request.course.tied'}) { my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); unless ($ferr) { - &update_content_constraints($cdom,$cnum,$chome,$cid,1); + &update_content_constraints($cdom,$cnum,$chome,$cid); } } my $navmap = Apache::lonnavmaps::navmap->new(); @@ -18492,6 +18478,42 @@ sub parse_supplemental_title { return $title; } +sub get_supplemental { + my ($cnum,$cdom,$ignorecache,$possdel)=@_; + my $hashid=$cnum.':'.$cdom; + my ($supplemental,$cached,$set_httprefs); + unless ($ignorecache) { + ($supplemental,$cached) = &Apache::lonnet::is_cached_new('supplemental',$hashid); + } + unless (defined($cached)) { + my $chome=&Apache::lonnet::homeserver($cnum,$cdom); + unless ($chome eq 'no_host') { + my @order = @LONCAPA::map::order; + my @resources = @LONCAPA::map::resources; + my @resparms = @LONCAPA::map::resparms; + my @zombies = @LONCAPA::map::zombies; + my ($errors,%ids,%hidden); + $errors = + &recurse_supplemental($cnum,$cdom,'supplemental.sequence', + $errors,$possdel,\%ids,\%hidden); + @LONCAPA::map::order = @order; + @LONCAPA::map::resources = @resources; + @LONCAPA::map::resparms = @resparms; + @LONCAPA::map::zombies = @zombies; + $set_httprefs = 1; + if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { + &Apache::lonnet::appenv({'request.course.suppupdated' => time}); + } + $supplemental = { + ids => \%ids, + hidden => \%hidden, + }; + &Apache::lonnet::do_cache_new('supplemental',$hashid,$supplemental,600); + } + } + return ($supplemental,$set_httprefs); +} + sub recurse_supplemental { my ($cnum,$cdom,$suppmap,$errors,$possdel,$suppids,$hiddensupp,$hidden) = @_; if (($suppmap) && (ref($suppids) eq 'HASH') && (ref($hiddensupp) eq 'HASH')) { @@ -18692,7 +18714,7 @@ sub validate_folderpath { $changed = 1; my $is_hidden; unless ($got_supp) { - my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom); + my ($supplemental) = &get_supplemental($coursenum,$coursedom); if (ref($supplemental) eq 'HASH') { if (ref($supplemental->{'hidden'}) eq 'HASH') { %supphidden = %{$supplemental->{'hidden'}};