version 1.148, 2002/01/09 09:50:59
|
version 1.150, 2002/01/18 17:04:46
|
Line 463 sub xmlparse {
|
Line 463 sub xmlparse {
|
|
|
($target, my @tenta) = split('&&',$target); |
($target, my @tenta) = split('&&',$target); |
|
|
my @stack = (); |
my @stack = (); |
my @parstack = (); |
my @parstack = (); |
&initdepth; |
&initdepth; |
|
|
Line 533 sub inner_xmlparse {
|
Line 533 sub inner_xmlparse {
|
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
#clear out any tags that didn't end |
#clear out any tags that didn't end |
while ($token->[1] ne $$stack['-1'] && ($#$stack > -1)) { |
while ($token->[1] ne $$stack['-1'] && ($#$stack > -1)) { |
&Apache::lonxml::warning('Missing tag </'.$$stack['-1'].'> in file'); |
my $lasttag=$$stack[-1]; |
&end_tag($stack,$parstack,$token); |
if ($token->[1] =~ /^$lasttag$/i) { |
|
&Apache::lonxml::warning('Using tag </'.$token->[1].'> as end tag to <'.$$stack[-1].'>'); |
|
last; |
|
} else { |
|
&Apache::lonxml::warning('Found tag </'.$$stack[-1].'> when looking for </'.$token->[1].'> in file'); |
|
&end_tag($stack,$parstack,$token); |
|
} |
} |
} |
|
|
if (exists($$style_for_target{'/'."$token->[1]"})) { |
if (exists($$style_for_target{'/'."$token->[1]"})) { |
Line 613 sub recurse {
|
Line 619 sub recurse {
|
$safeeval, $style_for_target); |
$safeeval, $style_for_target); |
} elsif ($tokenpat->[0] eq 'E') { |
} elsif ($tokenpat->[0] eq 'E') { |
#clear out any tags that didn't end |
#clear out any tags that didn't end |
while ($tokenpat->[1] ne $innerstack[$#innerstack] |
while ($tokenpat->[1] ne $innerstack[$#innerstack] |
&& ($#innerstack > -1)) { |
&& ($#innerstack > -1)) { |
&Apache::lonxml::warning('Missing tag </'.$innerstack['-1'].'> in style'); |
my $lasttag=$innerstack[-1]; |
&end_tag(\@innerstack,\@innerparstack,$tokenpat); |
if ($tokenpat->[1] =~ /^$lasttag$/i) { |
|
&Apache::lonxml::warning('Using tag </'.$tokenpat->[1].'> as end tag to <'.$innerstack[-1].'>'); |
|
last; |
|
} else { |
|
&Apache::lonxml::warning('Found tag </'.$innerstack[-1].'> when looking for </'.$tokenpat->[1].'> in file'); |
|
&end_tag(\@innerstack,\@innerparstack,$tokenpat); |
|
} |
} |
} |
$partstring = &callsub("end_$tokenpat->[1]", $target, $tokenpat, |
$partstring = &callsub("end_$tokenpat->[1]", $target, $tokenpat, |
\@innerstack, \@innerparstack, \@pat, |
\@innerstack, \@innerparstack, \@pat, |
Line 936 sub parstring {
|
Line 948 sub parstring {
|
foreach (@{$token->[3]}) { |
foreach (@{$token->[3]}) { |
unless ($_=~/\W/) { |
unless ($_=~/\W/) { |
my $val=$token->[2]->{$_}; |
my $val=$token->[2]->{$_}; |
$val =~ s/([\%\@\\])/\\$1/g; |
$val =~ s/([\%\@\\\"])/\\$1/g; |
#if ($val =~ m/^[\%\@]/) { $val="\\".$val; } |
#if ($val =~ m/^[\%\@]/) { $val="\\".$val; } |
$temp .= "my \$$_=\"$val\";" |
$temp .= "my \$$_=\"$val\";" |
} |
} |
Line 1055 ENDFOOTER
|
Line 1067 ENDFOOTER
|
return $result; |
return $result; |
} |
} |
|
|
sub editbutton { |
|
my ($result) = @_; |
|
my $button=(<<EDITBUTTON); |
|
<form method="post"> |
|
<input type="submit" name="showmode" value="Edit" /> |
|
</form> |
|
EDITBUTTON |
|
$result=~s/(\<\/body\>)/$button/is; |
|
return $result; |
|
} |
|
|
|
sub handler { |
sub handler { |
my $request=shift; |
my $request=shift; |
|
|
Line 1126 ENDNOTFOUND
|
Line 1127 ENDNOTFOUND
|
if ($ENV{'form.showmode'} eq 'Edit') { |
if ($ENV{'form.showmode'} eq 'Edit') { |
$result='<html><body bgcolor="#FFFFFF"></body></html>'; |
$result='<html><body bgcolor="#FFFFFF"></body></html>'; |
$result=&inserteditinfo($result,$filecontents); |
$result=&inserteditinfo($result,$filecontents); |
} else { |
|
$result = &editbutton($result); |
|
} |
} |
} |
} |
|
|