--- rat/map.pm 2008/12/19 03:49:56 1.12 +++ rat/map.pm 2022/10/22 17:24:55 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # routines for modyfing .sequence and .page files # -# $Id: map.pm,v 1.12 2008/12/19 03:49:56 raeburn Exp $ +# $Id: map.pm,v 1.16 2022/10/22 17:24:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -303,10 +303,14 @@ sub startfinish { } } } +# Make sure this has at least start and finish + if ($#order==-1) { + $resources[&getresidx()]='::false'; + $order[0]=$#resources; + } # Put in a start resource my ($name,$url,$ext)=split(/\:/,$resources[$order[0]]); $resources[$order[0]]=$name.':'.$url.':'.$ext.':start:res'; -# Make sure this has at least start and finish if ($#order==0) { $resources[&getresidx()]='::false'; $order[1]=$#resources; @@ -319,11 +323,11 @@ sub startfinish { # ------------------------------------------------------------------- Store map sub storemap { - my $realfn=shift; + my ($realfn,$useorig,$dotimeupdate) = @_; my $fn=$realfn; # unless this is forced to work from the original file, use a temporary file # instead - unless (shift) { + unless ($useorig) { $fn=$realfn.'.tmp'; unless (-e $fn) { copy($realfn,$fn); @@ -357,9 +361,9 @@ sub storemap { $output.='<&>objcont<:>'.$i.'<:>'.$zombies[$i]; } } - $output=~s/https?\&colon\;\/\///g; + $output=~s/http\&colon\;\/\///g; $env{'form.output'}=$output; - return &loadmap($fn,&savemap($fn,'')); + return &loadmap($fn,&savemap($fn,'',$dotimeupdate)); } # ------------------------------------------ Store and get parameters in global @@ -583,7 +587,7 @@ sub loadmap { # ----------------------------------------------------------- Saves map to disk sub savemap { - my ($fn,$errtext)=@_; + my ($fn,$errtext,$dotimeupdate)=@_; my $infotext=''; my %alltypes; my %allvalues; @@ -616,8 +620,8 @@ sub savemap { } $comp[1].='" external="true'; } else { - if ($comp[1]=~/^https?\:\/\//) { - $comp[1]=~s/^https?\:\/\/[^\/]*\//\//; + if ($comp[1]=~/^http\:\/\//) { + $comp[1]=~s/^http\:\/\/[^\/]*\//\//; } } $outstr.='\n"; + my ($cdom,$cnum,$mapname); if ($fn=~m{^/*uploaded/($LONCAPA::domain_re)/($LONCAPA::courseid_re)/(.*)$}) { + ($cdom,$cnum,$mapname) = ($1,$2,$3); $env{'form.output'}=$outstr; - my $result=&Apache::lonnet::finishuserfileupload($2,$1, - 'output',$3); + my $result=&Apache::lonnet::finishuserfileupload($cnum,$cdom, + 'output',$mapname); if ($result != m|^/uploaded/|) { $errtext.='Map not saved: A network error occurred when trying to save the map. '; } @@ -689,6 +695,25 @@ sub savemap { $errtext.='Could not write file '.$fn.'. Map not saved. '; } } + if ($dotimeupdate) { + unless ($errtext) { + if ($env{'request.course.id'}) { + if (($cdom eq $env{'course.'.$env{'request.course.id'}.'.domain'}) && + ($cnum eq $env{'course.'.$env{'request.course.id'}.'.num'}) && + ($mapname =~ /^supplemental(|_\d+)\.sequence$/)) { + &Apache::lonnet::update_supp_caches($cdom,$cnum); + } else { + my $now = time; + &Apache::lonnet::put('environment',{'internal.contentchange' => $now}, + $env{'course.'.$env{'request.course.id'}.'.domain'}, + $env{'course.'.$env{'request.course.id'}.'.num'}); + &Apache::lonnet::appenv( + {'course.'.$env{'request.course.id'}.'.internal.contentchange' => $now}); + &Apache::lonnet::do_cache_new('crschange',$env{'request.course.id'},$now,600); + } + } + } + } } else { # -------------------------------------------- Cannot write to that file, error $errtext.='Map not saved: The specified path does not exist. ';