--- loncom/interface/groupsort.pm 2012/06/30 23:02:20 1.69 +++ loncom/interface/groupsort.pm 2013/01/08 03:46:07 1.70 @@ -2,7 +2,7 @@ # The LON-CAPA group sort handler # Allows for sorting prior to import into RAT. # -# $Id: groupsort.pm,v 1.69 2012/06/30 23:02:20 raeburn Exp $ +# $Id: groupsort.pm,v 1.70 2013/01/08 03:46:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -152,12 +152,18 @@ sub readfromfile { &Apache::lonnet::filelocation('',$env{'form.readfile'})); } else { my $parser = HTML::TokeParser->new(\$cont); - my $token; + my ($token,$donechk,%allmaps); while ($token = $parser->get_token) { if ($token->[0] eq 'S') { if ($token->[1] eq 'resource') { if ($env{'form.recover'}) { if ($token->[2]->{'type'} ne 'zombie') { next; } + if ($token->[2]->{'src'} =~ /\.(page|sequence)$/) { + unless ($donechk) { + $donechk = &get_allmaps(\%allmaps); + } + if ($allmaps{$token->[2]->{'src'}}) { next; } + } } else { if ($token->[2]->{'type'} eq 'zombie') { next; } } @@ -181,6 +187,34 @@ sub readfromfile { } } +sub get_allmaps { + my ($allmaps) = @_; + return unless (ref($allmaps) eq 'HASH'); + if (($env{'form.recover'}) && + ($env{'request.course.id'}) && + ($env{'form.readfile'} =~ m{/default(|_\d+)\.(page|sequence)$})) { + my $cid = $env{'request.course.id'}; + my $cdom = $env{'course.'.$cid.'.domain'}; + my $cnum = $env{'course.'.$cid.'.num'}; + my $chome = $env{'course.'.$cid.'.home'}; + my $lastchange = + &Apache::lonnet::get_coursechange($cdom,$cnum); + if ($lastchange > $env{'request.course.tied'}) { + my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); + unless ($ferr) { + &Apache::loncommon::update_content_constraints($cdom,$cnum, + $chome,$cid); + } + } + my $navmap = Apache::lonnavmaps::navmap->new(); + if (defined($navmap)) { + foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_map() },1,0,1)) { + $allmaps->{$res->src()} = 1; + } + } + } + return 1; +} # ---------------------------------------------------------------- Main Handler sub handler {