--- loncom/xml/lonxml.pm 2001/05/26 15:31:33 1.78 +++ loncom/xml/lonxml.pm 2001/05/30 15:27:13 1.81 @@ -8,6 +8,7 @@ # 3/29,5/4 Gerd Kortemeyer # 5/10 Scott Harrison # 5/26 Gerd Kortemeyer +# 5/27 H. K. Ng package Apache::lonxml; use vars @@ -16,6 +17,7 @@ use strict; use HTML::TokeParser; use Safe; use Safe::Hole; +use Math::Cephes qw(:trigs :hypers :bessels erf erfc); use Opcode; sub register { @@ -35,6 +37,9 @@ use Apache::run; use Apache::londefdef; use Apache::scripttag; use Apache::edit; +use Apache::lonnet; +use Apache::File; + #================================================== Main subroutine: xmlparse #debugging control, to turn on debugging modify the correct handler $Apache::lonxml::debug=0; @@ -172,6 +177,27 @@ sub xmlparse { $safeeval->permit("sort"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); + + $safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); + $safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); + $safehole->wrap(\&Math::Cephes::atan,$safeeval,'&atan'); + $safehole->wrap(\&Math::Cephes::sinh,$safeeval,'&sinh'); + $safehole->wrap(\&Math::Cephes::cosh,$safeeval,'&cosh'); + $safehole->wrap(\&Math::Cephes::tanh,$safeeval,'&tanh'); + $safehole->wrap(\&Math::Cephes::asinh,$safeeval,'&asinh'); + $safehole->wrap(\&Math::Cephes::acosh,$safeeval,'&acosh'); + $safehole->wrap(\&Math::Cephes::atanh,$safeeval,'&atanh'); + $safehole->wrap(\&Math::Cephes::erf,$safeeval,'&erf'); + $safehole->wrap(\&Math::Cephes::erfc,$safeeval,'&erfc'); + $safehole->wrap(\&Math::Cephes::j0,$safeeval,'&j0'); + $safehole->wrap(\&Math::Cephes::j1,$safeeval,'&j1'); + $safehole->wrap(\&Math::Cephes::jn,$safeeval,'&jn'); + $safehole->wrap(\&Math::Cephes::jv,$safeeval,'&jv'); + $safehole->wrap(\&Math::Cephes::y0,$safeeval,'&y0'); + $safehole->wrap(\&Math::Cephes::y1,$safeeval,'&y1'); + $safehole->wrap(\&Math::Cephes::yn,$safeeval,'&yn'); + $safehole->wrap(\&Math::Cephes::yv,$safeeval,'&yv'); + #need to inspect this class of ops # $safeeval->deny(":base_orig"); $safeinit .= ';$external::target='.$target.';'; @@ -571,6 +597,14 @@ ENDSCRIPT return $result; } +sub storefile { + my ($file,$contents)=@_; + if (my $fh=Apache::File->new('>'.$file)) { + print $fh $contents; + $fh->close(); + } +} + sub inserteditinfo { my ($result,$filecontents)=@_; unless ($filecontents) { @@ -621,16 +655,16 @@ sub handler { return OK if $request->header_only; + + my $file=&Apache::lonnet::filelocation("",$request->uri); # # Edit action? Save file. # unless ($ENV{'request.state'} eq 'published') { if ($ENV{'form.savethisfile'}) { - + &storefile($file,$ENV{'form.filecont'}); } } - - my $file=&Apache::lonnet::filelocation("",$request->uri); my %mystyle; my $result = ''; my $filecontents=&Apache::lonnet::getfile($file);