version 1.146, 2002/01/07 18:11:57
|
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 1011 sub storefile {
|
Line 1023 sub storefile {
|
if (my $fh=Apache::File->new('>'.$file)) { |
if (my $fh=Apache::File->new('>'.$file)) { |
print $fh $contents; |
print $fh $contents; |
$fh->close(); |
$fh->close(); |
|
} else { |
|
&warning("Unable to save file $file"); |
} |
} |
} |
} |
|
|
Line 1032 sub inserteditinfo {
|
Line 1046 sub inserteditinfo {
|
</html> |
</html> |
SIMPLECONTENT |
SIMPLECONTENT |
} |
} |
my $editheader='<a href="#editsection">Edit below</a><hr />'; |
|
|
$filecontents =~ s:</textarea>:</textarea>:ig; |
|
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
<hr /> |
<hr /> |
<a name="editsection" /> |
<a name="editsection" /> |
<form method="post"> |
<form method="post"> |
<textarea cols="80" rows="40" name="filecont">$filecontents</textarea> |
<textarea cols="80" rows="40" name="filecont">$filecontents</textarea> |
<br /> |
<br /> |
|
<input type="hidden" name="showmode" value="Edit" /> |
<input type="submit" name="attemptclean" |
<input type="submit" name="attemptclean" |
value="Save and then attempt to clean HTML" /> |
value="Save and then attempt to clean HTML" /> |
<input type="submit" name="savethisfile" value="Save this" /> |
<input type="submit" name="savethisfile" value="Save this" /> |
|
<input type="submit" name="showmode" value="View" /> |
</form> |
</form> |
ENDFOOTER |
ENDFOOTER |
$result=~s/(\<body[^\>]*\>)/$1$editheader/is; |
# $result=~s/(\<body[^\>]*\>)/$1$editheader/is; |
$result=~s/(\<\/body\>)/$editfooter/is; |
$result=~s/(\<\/body\>)/$editfooter/is; |
return $result; |
return $result; |
} |
} |
Line 1077 sub handler {
|
Line 1095 sub handler {
|
} |
} |
} |
} |
my %mystyle; |
my %mystyle; |
my $result = ''; |
my $result = ''; |
my $filecontents=&Apache::lonnet::getfile($file); |
my $filecontents=&Apache::lonnet::getfile($file); |
if ($filecontents == -1) { |
if ($filecontents == -1) { |
$result=(<<ENDNOTFOUND); |
$result=(<<ENDNOTFOUND); |
Line 1092 sub handler {
|
Line 1110 sub handler {
|
ENDNOTFOUND |
ENDNOTFOUND |
$filecontents=''; |
$filecontents=''; |
} else { |
} else { |
unless ($ENV{'request.state'} eq 'published') { |
unless ($ENV{'request.state'} eq 'published') { |
if ($ENV{'form.attemptclean'}) { |
if ($ENV{'form.attemptclean'}) { |
$filecontents=&htmlclean($filecontents,1); |
$filecontents=&htmlclean($filecontents,1); |
} |
|
} |
} |
$result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle); |
} |
|
if ($ENV{'form.showmode'} ne 'Edit') { |
|
$result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle); |
|
} |
} |
} |
|
|
# |
# |
# Edit action? Insert editing commands |
# Edit action? Insert editing commands |
# |
# |
unless ($ENV{'request.state'} eq 'published') { |
unless ($ENV{'request.state'} eq 'published') { |
|
if ($ENV{'form.showmode'} eq 'Edit') { |
|
$result='<html><body bgcolor="#FFFFFF"></body></html>'; |
$result=&inserteditinfo($result,$filecontents); |
$result=&inserteditinfo($result,$filecontents); |
|
} |
} |
} |
|
|
writeallows($request->uri); |
writeallows($request->uri); |
|
|
$request->print($result); |
$request->print($result); |
|
|
return OK; |
return OK; |
} |
} |
|
|
sub debug { |
sub debug { |
if ($Apache::lonxml::debug eq 1) { |
if ($Apache::lonxml::debug eq 1) { |
$|=1; |
$|=1; |