version 1.29, 2002/03/15 21:40:27
|
version 1.31, 2002/03/15 23:39:41
|
Line 239 sub astatus {
|
Line 239 sub astatus {
|
my $status=$returnhash{'resource.'.$_.'.solved'}; |
my $status=$returnhash{'resource.'.$_.'.solved'}; |
|
|
if ($status eq 'correct_by_student') { |
if ($status eq 'correct_by_student') { |
if ($code==0) { $code=3; } else { $code=4; } |
if ($code==0||$code==3) { $code=3; } else { $code=4; } |
$ctext.=' solved'; |
$ctext.=' solved'; |
} elsif ($status eq 'correct_by_override') { |
} elsif ($status eq 'correct_by_override') { |
if ($code==0) { $code=3; } else { $code=4; } |
if ($code==0||$code==3) { $code=3; } else { $code=4; } |
$ctext.=' override'; |
$ctext.=' override'; |
} elsif ($status eq 'incorrect_attempted') { |
} elsif ($status eq 'incorrect_attempted') { |
if ($code!=4 && $code!=3) { $code=2; } |
if ($code!=4 && $code!=3) { $code=2; } |
Line 258 sub astatus {
|
Line 258 sub astatus {
|
if ($code==3) { $code=4; } |
if ($code==3) { $code=4; } |
$ctext.=' override'; |
$ctext.=' override'; |
} elsif ($status eq 'excused') { |
} elsif ($status eq 'excused') { |
if ($code==0) { $code=3; } else { $code=4; } |
if ($code==0||$code==3) { $code=3; } else { $code=4; } |
$ctext.=' excused'; |
$ctext.=' excused'; |
} else { |
} else { |
if ($code==0) { $code=1; } |
if ($code==0) { $code=1; } |
Line 268 sub astatus {
|
Line 268 sub astatus {
|
return 'p'.$code.$tcode.'"'.$ctext.'"'; |
return 'p'.$code.$tcode.'"'.$ctext.'"'; |
} |
} |
|
|
# ------------------------------------------------------------ Build page table |
|
|
|
sub tracetable { |
sub addresource { |
my ($sofar,$rid,$beenhere)=@_; |
my ($resource,$sofar,$rid,$showtypes)=@_; |
my $further=$sofar; |
&Apache::lonxml::debug("Adding $resource allowing $showtypes"); |
unless ($beenhere=~/\&$rid\&/) { |
if ($showtypes eq 'problems') { |
$beenhere.=$rid.'&'; |
if ($resource!~/\.(problem|exam|quiz|assess|survey|form)$/) { |
|
&Apache::lonxml::debug("Returning early"); |
if (defined($hash{'is_map_'.$rid})) { |
return; |
$sofar++; |
} |
my $tprefix=''; |
} |
if ($hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$rid}}} |
my $brepriv=&Apache::lonnet::allowed('bre',$resource); |
eq 'sequence') { |
if ($hash{'src_'.$rid}) { |
$tprefix='h'; |
if (($brepriv eq '2') || ($brepriv eq 'F')) { |
} else { |
my $pprefix=''; |
# it's a page we need to grab out the problems only |
if ($resource=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
|
$pprefix=&astatus($rid); |
} |
} |
if (defined($rows[$sofar])) { |
if (defined($rows[$sofar])) { |
$rows[$sofar].='&'.$tprefix.$rid; |
$rows[$sofar].='&'.$pprefix.$rid; |
} else { |
} else { |
$rows[$sofar]=$tprefix.$rid; |
$rows[$sofar]=$pprefix.$rid; |
} |
} |
if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) && |
} |
(defined($hash{'map_finish_'.$hash{'src_'.$rid}})) && |
} |
($tprefix eq 'h')) { |
} |
my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}}; |
|
$sofar= |
sub followlinks () { |
&tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}}, |
my ($rid,$sofar,$beenhere,$further,$showtypes)=@_; |
'&'.$frid.'&'); |
my $mincond=1; |
$sofar++; |
my $next=''; |
if ($hash{'src_'.$frid}) { |
foreach (split(/\,/,$hash{'to_'.$rid})) { |
my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid}); |
my $thiscond= |
if (($brepriv eq '2') || ($brepriv eq 'F')) { |
&Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}}); |
my $pprefix=''; |
if ($thiscond>=$mincond) { |
if ($hash{'src_'.$frid}=~ |
if ($next) { |
/\.(problem|exam|quiz|assess|survey|form)$/) { |
$next.=','.$_.':'.$thiscond; |
$pprefix=&astatus($frid); |
} else { |
|
$next=$_.':'.$thiscond; |
} |
|
if (defined($rows[$sofar])) { |
|
$rows[$sofar].='&'.$pprefix.$frid; |
|
} else { |
|
$rows[$sofar]=$pprefix.$frid; |
|
} |
|
} |
|
} |
|
} |
} |
|
if ($thiscond>$mincond) { $mincond=$thiscond; } |
|
} |
|
} |
|
foreach (split(/\,/,$next)) { |
|
my ($linkid,$condval)=split(/\:/,$_); |
|
if ($condval>=$mincond) { |
|
&Apache::lonxml::debug("following link $linkid"); |
|
my $now=&tracetable($sofar,$hash{'goesto_'.$linkid}, |
|
$beenhere,$showtypes); |
|
if ($now>$further) { $further=$now; } |
|
} |
|
} |
|
return $further; |
|
} |
|
# ------------------------------------------------------------ Build page table |
|
|
|
sub tracetable { |
|
my ($sofar,$rid,$beenhere,$showtypes)=@_; |
|
my $further=$sofar; |
|
#$Apache::lonxml::debug=1; |
|
&Apache::lonxml::debug("$rid ; $sofar ; $beenhere"); |
|
if ($beenhere=~/\&$rid\&/) { |
|
return $further; |
|
} |
|
$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'; |
|
} elsif ($hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$rid}}} |
|
eq 'page') { |
|
$tprefix='i'; |
|
$showtypes='problems'; |
|
} |
|
if (defined($rows[$sofar])) { |
|
$rows[$sofar].='&'.$tprefix.$rid; |
} else { |
} else { |
$sofar++; |
$rows[$sofar]=$tprefix.$rid; |
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].='&'.$pprefix.$rid; |
|
} else { |
|
$rows[$sofar]=$pprefix.$rid; |
|
} |
|
} |
|
} |
|
} |
} |
|
if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) && |
if (defined($hash{'to_'.$rid})) { |
(defined($hash{'map_finish_'.$hash{'src_'.$rid}}))) { |
my $mincond=1; |
my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}}; |
my $next=''; |
$sofar=&tracetable($sofar, |
foreach (split(/\,/,$hash{'to_'.$rid})) { |
$hash{'map_start_'.$hash{'src_'.$rid}}, |
my $thiscond= |
'&'.$frid.'&',$showtypes); |
&Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}}); |
$sofar++; |
if ($thiscond>=$mincond) { |
&addresource($hash{'src_'.$frid},$sofar,$frid,$showtypes); |
if ($next) { |
if ($tprefix eq 'i') { $showtypes=''; } |
$next.=','.$_.':'.$thiscond; |
|
} else { |
|
$next=$_.':'.$thiscond; |
|
} |
|
if ($thiscond>$mincond) { $mincond=$thiscond; } |
|
} |
|
} |
|
foreach (split(/\,/,$next)) { |
|
my ($linkid,$condval)=split(/\:/,$_); |
|
if ($condval>=$mincond) { |
|
my $now=&tracetable($sofar,$hash{'goesto_'.$linkid},$beenhere); |
|
if ($now>$further) { $further=$now; } |
|
} |
|
} |
|
} |
} |
|
} else { |
|
$sofar++; |
|
&addresource($hash{'src_'.$rid},$sofar,$rid,$showtypes); |
} |
} |
|
|
|
if (defined($hash{'to_'.$rid})) { |
|
$further=&followlinks($rid,$sofar,$beenhere,$further,$showtypes); |
|
} |
|
|
return $further; |
return $further; |
} |
} |
|
|
Line 482 sub handler {
|
Line 492 sub handler {
|
|
|
for ($i=0;$i<=$#rows;$i++) { |
for ($i=0;$i<=$#rows;$i++) { |
if ($rows[$i]) { |
if ($rows[$i]) { |
|
&Apache::lonxml::debug($rows[$i]); |
$contents++; |
$contents++; |
my @colcont=split(/\&/,$rows[$i]); |
my @colcont=split(/\&/,$rows[$i]); |
$lcm*=($#colcont+1)/euclid($lcm,($#colcont+1)); |
$lcm*=($#colcont+1)/euclid($lcm,($#colcont+1)); |
Line 592 sub handler {
|
Line 603 sub handler {
|
$add='<th bgcolor="#AAFF55"><a name="'.$rid.'">'; |
$add='<th bgcolor="#AAFF55"><a name="'.$rid.'">'; |
$adde='</th>'; |
$adde='</th>'; |
} |
} |
|
if ($rid=~/^i(.+)/) { $rid=$1; } |
if ($rid=~/^p(\d)(\d)\"([\w\: \(\)\/\,]*)\"(.+)/) { |
if ($rid=~/^p(\d)(\d)\"([\w\: \(\)\/\,]*)\"(.+)/) { |
# sub astatus describes what code/tcode mean |
# sub astatus describes what code/tcode mean |
my $code=$1; |
my $code=$1; |
Line 603 sub handler {
|
Line 615 sub handler {
|
} |
} |
if ($code eq '3') { |
if ($code eq '3') { |
$add='<td bgcolor="#AAFFAA">'; |
$add='<td bgcolor="#AAFFAA">'; |
|
} elsif ($code eq '4') { |
|
$add='<td bgcolor="#E0FFAA">'; |
} else { |
} else { |
$add='<td bgcolor="#FFAAAA">'; |
$add='<td bgcolor="#FFAAAA">'; |
if ($tcode eq '2') { |
if ($tcode eq '2') { |
Line 618 sub handler {
|
Line 632 sub handler {
|
if ($code eq '1') { |
if ($code eq '1') { |
$hwke='</b> ('.$ctext.')</font>'; |
$hwke='</b> ('.$ctext.')</font>'; |
} |
} |
if ($code eq '2') { |
if ($code eq '2' || $code eq '4') { |
$hwk='<font color="#992222"><b>'; |
$hwk='<font color="#992222"><b>'; |
$hwke='</b> ('.$ctext.')</font>'; |
$hwke='</b> ('.$ctext.')</font>'; |
} |
} |
Line 626 sub handler {
|
Line 640 sub handler {
|
$hwk='<font color="#229922"><b>'; |
$hwk='<font color="#229922"><b>'; |
$hwke='</b> ('.$ctext.')</font>'; |
$hwke='</b> ('.$ctext.')</font>'; |
} |
} |
if ($code eq '4') { |
|
$hwk='<font color="#229922"><b>'; |
|
$hwke='</b> ('.$ctext.')</font>'; |
|
} |
|
} |
} |
if ($hash{'src_'.$rid} eq $currenturl) { |
if ($hash{'src_'.$rid} eq $currenturl) { |
$add=$add.'<a name="curloc"></a>'. |
$add=$add.'<a name="curloc"></a>'. |