--- loncom/interface/londocs.pm 2011/11/27 22:51:28 1.466 +++ loncom/interface/londocs.pm 2011/12/04 15:51:58 1.467 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.466 2011/11/27 22:51:28 www Exp $ +# $Id: londocs.pm,v 1.467 2011/12/04 15:51:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2880,13 +2880,49 @@ sub handler { if ($resurl=~/\.(sequence|page)$/) { $mapurl=$resurl; } - my $maptitle = &Apache::lonnet::gettitle($mapurl); + my $mapresobj; + my $navmap = Apache::lonnavmaps::navmap->new(); + if (ref($navmap)) { + $mapresobj = $navmap->getResourceByUrl($mapurl); + } $mapurl=~s{^.*/([^/]+)\.(\w+)$}{$1}; my $type=$2; - my $path='default&'.&Apache::lonhtmlcommon::entity_encode('Main Course Documents'). - '&default&...::::&'. - &Apache::lonhtmlcommon::entity_encode($mapurl).'&'. - &Apache::lonhtmlcommon::entity_encode($maptitle).'::::'; + my $path; + if (ref($mapresobj)) { + my $pcslist = $mapresobj->map_hierarchy(); + if ($pcslist ne '') { + foreach my $pc (split(/,/,$pcslist)) { + next if ($pc <= 1); + my $res = $navmap->getByMapPc($pc); + if (ref($res)) { + my $thisurl = $res->src(); + $thisurl=~s{^.*/([^/]+)\.\w+$}{$1}; + my $thistitle = $res->title(); + $path .= '&'. + &Apache::lonhtmlcommon::entity_encode($thisurl).'&'. + &Apache::lonhtmlcommon::entity_encode($thistitle). + ':'.$res->randompick(). + ':'.$res->randomout(). + ':'.$res->encrypted(). + ':'.$res->randomorder(); + } + } + } + $path .= '&'.&Apache::lonhtmlcommon::entity_encode($mapurl).'&'. + &Apache::lonhtmlcommon::entity_encode($mapresobj->title()). + ':'.$mapresobj->randompick(). + ':'.$mapresobj->randomout(). + ':'.$mapresobj->encrypted(). + ':'.$mapresobj->randomorder(); + } else { + my $maptitle = &Apache::lonnet::gettitle($mapurl); + $path = '&default&...::::'. + '&'.&Apache::lonhtmlcommon::entity_encode($mapurl).'&'. + &Apache::lonhtmlcommon::entity_encode($maptitle).'::::'; + } + $path = 'default&'. + &Apache::lonhtmlcommon::entity_encode('Main Course Documents'). + $path; if ($type eq 'sequence') { $env{'form.folderpath'}=$path; $env{'form.pagepath'}='';