--- loncom/interface/lonnavmaps.pm 2001/01/06 20:17:33 1.5 +++ loncom/interface/lonnavmaps.pm 2001/01/30 00:35:24 1.9 @@ -9,7 +9,7 @@ # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23, # 10/02,10/10,10/14,10/16,10/18,10/19,10/31,11/6,11/14,11/16 Gerd Kortemeyer) # -# 3/1/1,6/1 Gerd Kortemeyer +# 3/1/1,6/1,17/1,29/1 Gerd Kortemeyer package Apache::lonnavmaps; @@ -36,6 +36,59 @@ sub euclid { return $b; } +# ------------------------------------------------------------- Find out status + +sub astatus { + my $rid=shift; + my $code=1; + my $ctext=''; + $rid=~/(\d+)\.(\d+)/; + my $symb=&Apache::lonnet::escape( + &Apache::lonnet::declutter($hash{'map_id_'.$1}).'___'.$2.'___'. + &Apache::lonnet::declutter($hash{'src_'.$rid})); + my $answer=&Apache::lonnet::reply( + "restore:$ENV{'user.domain'}:$ENV{'user.name'}:". + $ENV{'request.course.id'}.":$symb", + "$ENV{'user.home'}"); + my %returnhash=(); + map { + my ($name,$value)=split(/\=/,$_); + $returnhash{&Apache::lonnet::unescape($name)}= + &Apache::lonnet::unescape($value); + } split(/\&/,$answer); + if ($returnhash{'version'}) { + my $version; + for ($version=1;$version<=$returnhash{'version'};$version++) { + map { + $returnhash{$_}=$returnhash{$version.':'.$_}; + } split(/\:/,$returnhash{$version.':keys'}); + } + map { + if (($_=~/\.(\w+)\.solved$/) && ($_!~/^\d+\:/)) { + my $part=$1; + if ($returnhash{$_} eq 'correct_by_student') { + unless ($code==2) { $code=3; } + $ctext.='Part '.$part.': solved'; + } elsif ($returnhash{$_} eq 'correct_by_override') { + unless ($code==2) { $code=3; } + $ctext.='Part '.$part.': override'; + } elsif ($returnhash{$_} eq 'incorrect_attempted') { + $code=2; + $ctext.='Part '.$part.': '. + $returnhash{'resource.'.$part.'.tries'}.' attempt(s)'; + } elsif ($returnhash{$_} eq 'incorrect_by_override') { + $code=2; + $ctext.='Part '.$part.': override'; + } elsif ($returnhash{$_} eq 'excused') { + unless ($code==2) { $code=3; } + $ctext.='Part '.$part.': excused'; + } + } + } keys %returnhash; + } + return 'p'.$code.'"'.$ctext.'"'; +} + # ------------------------------------------------------------ Build page table sub tracetable { @@ -45,8 +98,20 @@ sub tracetable { $beenhere.=$rid.'&'; if (defined($hash{'is_map_'.$rid})) { + $sofar++; + my $tprefix=''; + if ($hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$rid}}} + eq 'sequence') { + $tprefix='h'; + } + if (defined($rows[$sofar])) { + $rows[$sofar].='&'.$tprefix.$rid; + } else { + $rows[$sofar]=$tprefix.$rid; + } if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) && - (defined($hash{'map_finish_'.$hash{'src_'.$rid}}))) { + (defined($hash{'map_finish_'.$hash{'src_'.$rid}})) && + ($tprefix eq 'h')) { my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}}; $sofar= &tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}}, @@ -55,10 +120,16 @@ sub tracetable { if ($hash{'src_'.$frid}) { my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid}); if (($brepriv eq '2') || ($brepriv eq 'F')) { + my $pprefix=''; + if ($hash{'src_'.$frid}=~ + /\.(problem|exam|quiz|assess|survey|form)$/) { + $pprefix=&astatus($frid); + + } if (defined($rows[$sofar])) { - $rows[$sofar].='&'.$frid; + $rows[$sofar].='&'.$pprefix.$frid; } else { - $rows[$sofar]=$frid; + $rows[$sofar]=$pprefix.$frid; } } } @@ -68,10 +139,15 @@ sub tracetable { if ($hash{'src_'.$rid}) { my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$rid}); if (($brepriv eq '2') || ($brepriv eq 'F')) { + my $pprefix=''; + if ($hash{'src_'.$rid}=~ + /\.(problem|exam|quiz|assess|survey|form)$/) { + $pprefix=&astatus($rid); + } if (defined($rows[$sofar])) { - $rows[$sofar].='&'.$rid; + $rows[$sofar].='&'.$pprefix.$rid; } else { - $rows[$sofar]=$rid; + $rows[$sofar]=$pprefix.$rid; } } } @@ -179,6 +255,8 @@ sub handler { 'Navigate LON-CAPA Maps'); $r->print(''. + ''. + ''. '

Navigate Course Map

'); $r->rflush(); # ----------------------------------------------------------------- Start table @@ -190,10 +268,33 @@ sub handler { my $avespan=$lcm/($#colcont+1); for ($j=0;$j<=$#colcont;$j++) { my $rid=$colcont[$j]; - $r->print(''. - $hash{'title_'.$rid}.''); - $r->print(''); + my $add='  '; + my $adde=''; + my $hwk=''; + my $hwke=''; + if ($rid=~/^h(.+)/) { + $rid=$1; + $add=''; + $adde=''; + } + if ($rid=~/^p(\d)\"([\w\: \(\)]*)\"(.+)/) { + my $code=$1; + my $ctext=$2; + $rid=$3; + $hwk=''; + $hwke=''; + if ($code eq '2') { + $hwk=''; + $hwke=' ('.$ctext.')'; + } + if ($code eq '3') { + $hwk=''; + $hwke=' ('.$ctext.')'; + } + } + $r->print($add.''.$hwk. + $hash{'title_'.$rid}.$hwke.''.$adde); } $r->print(''); }