--- loncom/xml/lonxml.pm 2001/05/15 20:50:03 1.76 +++ loncom/xml/lonxml.pm 2001/05/26 15:31:33 1.78 @@ -7,6 +7,7 @@ # 2/21,3/13 Guy # 3/29,5/4 Gerd Kortemeyer # 5/10 Scott Harrison +# 5/26 Gerd Kortemeyer package Apache::lonxml; use vars @@ -168,6 +169,7 @@ sub xmlparse { my $safehole = new Safe::Hole; $safeeval->permit("entereval"); $safeeval->permit(":base_math"); + $safeeval->permit("sort"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); #need to inspect this class of ops @@ -569,6 +571,39 @@ ENDSCRIPT return $result; } +sub inserteditinfo { + my ($result,$filecontents)=@_; + unless ($filecontents) { + $filecontents=(<<SIMPLECONTENT); +<html> +<head> +<title> + Title of Document Goes Here +</title> +</head> +<body bgcolor="#FFFFFF"> + + Body of Document Goes Here + +</body> +</html> +SIMPLECONTENT + } + my $editheader='<a href="#editsection">Edit below</a><hr />'; + my $editfooter=(<<ENDFOOTER); +<hr /> +<a name="editsection" /> +<form method="post"> +<textarea cols="80" rows="40" name="filecont">$filecontents</textarea> +<br /> +<input type="submit" name="savethisfile" value="Save this file" /> +</form> +ENDFOOTER + $result=~s/(\<body[^\>]*\>)/$1$editheader/is; + $result=~s/(\<\/body\>)/$editfooter/is; + return $result; +} + sub handler { my $request=shift; @@ -582,30 +617,46 @@ sub handler { $request->content_type('text/html'); } -# $request->print(<<ENDHEADER); -#<html> -#<head> -#<title>Just test</title> -#</head> -#<body bgcolor="#FFFFFF"> -#ENDHEADER -# &Apache::lonhomework::send_header($request); $request->send_http_header; return OK if $request->header_only; +# +# Edit action? Save file. +# + unless ($ENV{'request.state'} eq 'published') { + if ($ENV{'form.savethisfile'}) { + + } + } my $file=&Apache::lonnet::filelocation("",$request->uri); my %mystyle; my $result = ''; my $filecontents=&Apache::lonnet::getfile($file); if ($filecontents == -1) { - &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>"); + $result=(<<ENDNOTFOUND); +<html> +<head> +<title>File not found</title> +</head> +<body bgcolor="#FFFFFF"> +<b>File not found: $file</b> +</body> +</html> +ENDNOTFOUND $filecontents=''; } else { $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle); } +# +# Edit action? Insert editing commands +# + unless ($ENV{'request.state'} eq 'published') { + $result=&inserteditinfo($result,$filecontents); + } + $request->print($result); writeallows($request->uri);