\E}{
}gs; if (($target eq 'tex') || ($target eq 'tex_answer')) { $output =~ s/^([^&]+)\\begin\{document}//; $output =~ s/\\end\{document}//; # $output = '\parbox{\minipagewidth}{ '.$output.' }'; #some additional cleanup necessary for LateX (due to limitations of table environment $output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g; } my $matheditor; if ($output =~ /\Qjavascript:LC_mathedit_HWVAL_\E/) { $matheditor = 'dragmath'; } elsif ($output =~ /LCmathField/) { $matheditor = 'lcmath'; } my $parser=HTML::TokeParser->new(\$output); my $token; my $thisdir=$src; my $bodydef=0; my $thisxml=0; my @rlinks=(); my @css_hrefs=(); if ($output=~/\?xml/) { $isxml=1; $thisxml=1; $output=~ /((?:\<(?:\?xml|\!DOC|html)[^\>]*(?:\>|\>\]\>)\s*)+)\]*\>/si; $xmlheader=$1; } while ($token=$parser->get_token) { if ($token->[0] eq 'S') { if ($token->[1] eq 'a') { if ($token->[2]->{'href'}) { $rlinks[$#rlinks+1]= $token->[2]->{'href'}; } } elsif ($token->[1] eq 'img') { $rlinks[$#rlinks+1]= $token->[2]->{'src'}; } elsif ($token->[1] eq 'embed') { $rlinks[$#rlinks+1]= $token->[2]->{'src'}; } elsif ($token->[1] eq 'base') { $thisdir=$token->[2]->{'href'}; } elsif ($token->[1] eq 'body') { $bodydef=1; $ssibgcolor{$_}=$token->[2]->{'bgcolor'}; $ssitext{$_}=$token->[2]->{'text'}; $ssilink{$_}=$token->[2]->{'link'}; $ssivlink{$_}=$token->[2]->{'vlink'}; $ssialink{$_}=$token->[2]->{'alink'}; if ($thisxml) { $xmlbody=$token->[4]; } } elsif ($token->[1] eq 'meta') { if ($token->[4] !~ m:/>$:) { $allmeta.="\n".$token->[4].''; } else { $allmeta.="\n".$token->[4]; } } elsif (($token->[1] eq 'script') && ($bodydef==0)) { $allscript.="\n\n" .$parser->get_text('/script'); } elsif (($token->[1] eq 'link') && ($bodydef==0)) { if (($token->[2]->{'href'} !~ m{^/adm/}) && ($token->[2]->{'rel'} eq 'stylesheet')) { $css_hrefs[$#css_hrefs+1]= $token->[2]->{'href'}; } } } } if ($output=~/\]*\>(.*)/si) { $output=$1; } $output=~s/\<\/body\>.*//si; if ($output=~/\
]*\>//gsi; $output=~s/\<\/form[^\>]*\>//gsi; if ($output=~/\]+name\s*=\s*[\'\"]*HWFILE/) { $nuploads++; } if ($output=~/\]+name\s*=\s*[\'\"]*accessbutton/) { $ntimers++; $hastimer = 1; } unless ($hasnumresp) { if ($output=~/\]+class\s*=\s*['"]*[^'">]*LC_numresponse_text\W/) { $hasnumresp = 1; } } $output=~ s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi; $output=~ s/\<((?:input|select|button|textarea)[^\>]+)id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 id="$idprefix$2" $3\>/gsi; $output=~ s/(\Qthis.form.elements['\E)(HW(?:VAL|CHK)_[^']+\'\]\.(?:value=\'|checked))/$1$prefix$2/gsi; if ($hastimer) { $output=~ s/\<(input[^\>]+name=\Q"$prefix\Eaccessbutton"[^\>]+)(?:\Qdocument.markaccess.submit();\E)([^\>]*)\>/\<$1pageTimer(this.form,'$prefix')$2\>/gsi; $output=~ s/\<(input[^\>]+name=\Q"$prefix\Emarkaccess"[^\>]+value=["'])(?:yes)(['"][^\>]*)\>/\<$1$2\>/gsi; } if ($matheditor eq 'dragmath') { $output=~ s/(\Qjavascript:LC_mathedit_\E)(HWVAL_)([^'"]+?)(\(['"]*)(\QHWVAL_\E\3['"]\)\;void\(0\)\;)/$1$idprefix$2$3$4$idprefix$5/g; $output=~ s/(function\s+LC_mathedit_)(HWVAL_)([^'"]+?)(\s+\(LCtextline\))/$1$idprefix$2$3$4/g; } elsif ($matheditor eq 'lcmath') { $output=~ s/(var\s+LCmathField\s+=\s+document\.getElementById\(['"])([^'"]+?)(['"]\)\;)/$1$idprefix$2$3/g; } $output=~ s/(\Q