--- rat/map.pm 2007/01/16 21:18:08 1.5 +++ rat/map.pm 2007/07/12 01:04:32 1.7 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # routines for modyfing .sequence and .page files # -# $Id: map.pm,v 1.5 2007/01/16 21:18:08 albertel Exp $ +# $Id: map.pm,v 1.7 2007/07/12 01:04:32 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -245,14 +245,21 @@ sub attemptread { # ------------------------------------- Revive zombie idx or get unused number sub getresidx { - my $url=shift; + my ($url,$residx)= @_; my $max=1+($#resources>$#zombies?$#resources:$#zombies); unless ($url) { return $max; } for (my $i=0; $i<=$#zombies; $i++) { my ($title,$src,$ext,$type)=split(/\:/,$zombies[$i]); if ($src eq $url) { - undef($zombies[$i]); - return $i; + if ($residx) { + if ($i == $residx) { + undef($zombies[$i]); + return $i; + } + } else { + undef($zombies[$i]); + return $i; + } } } return $max; @@ -440,7 +447,7 @@ sub qtescape { $str=~s/\&\#58\;/\:/g; $str=~s/\&\#39\;/\'/g; $str=~s/\&\#44\;/\,/g; - $str=~s/\"/\&\#34\;/g; + $str=~s/\&\#34\;/\"/g; return $str; } @@ -626,6 +633,8 @@ sub savemap { # --------------------------------------------------------------- Logical input if (($comp[$#comp] eq 'res') || ($comp[$#comp] eq 'zombie')) { $comp[0]=qtescape($comp[0]); + $comp[0] = &HTML::Entities::encode($comp[0],'&<>"'); + $comp[1]=qtescape($comp[1]); if ($comp[2] eq 'true') { if ($comp[1]!~/^http\:\/\//) { @@ -644,7 +653,7 @@ sub savemap { $outstr.=' type="'.$comp[3].'"'; } if ($comp[0] ne '') { - $outstr.=' title="'.&HTML::Entities::encode($comp[0]).'"'; + $outstr.=' title="'.$comp[0].'"'; } $outstr.=" />\n"; } elsif ($comp[$#comp] eq 'cond') {