--- loncom/interface/groupsort.pm 2011/07/04 09:24:58 1.68 +++ loncom/interface/groupsort.pm 2013/01/08 03:51:06 1.68.6.4 @@ -2,7 +2,7 @@ # The LON-CAPA group sort handler # Allows for sorting prior to import into RAT. # -# $Id: groupsort.pm,v 1.68 2011/07/04 09:24:58 foxr Exp $ +# $Id: groupsort.pm,v 1.68.6.4 2013/01/08 03:51:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,7 +37,7 @@ use GDBM_File; use Apache::loncommon; use Apache::lonlocal; use Apache::lonnet; -use LONCAPA; +use LONCAPA qw(:DEFAULT :match); my $iconpath; # variable to be accessible to multiple subroutines my %hash; # variable to tie to user specific database @@ -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 { @@ -411,7 +445,14 @@ END $r->print(""); $r->print(""); $r->print(""); - $r->print($resource->{'title'}.$resource->{'notes'}."\n"); + if (($env{'form.recover'}) && + ($resource->{'url'} =~ m{/uploaded/$match_domain/$match_courseid/supplemental/})) { + my $title = &Apache::loncommon::parse_supplemental_title($resource->{'title'}); + $r->print($title); + } else { + $r->print($resource->{'title'}); + } + $r->print($resource->{'notes'}."\n"); $r->print($resource->{'url'}."" .&Apache::loncommon::end_data_table_row() ."\n");