version 1.73, 2001/05/10 19:10:25
|
version 1.77, 2001/05/25 14:02:10
|
Line 10
|
Line 10
|
|
|
package Apache::lonxml; |
package Apache::lonxml; |
use vars |
use vars |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate); |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace); |
use strict; |
use strict; |
use HTML::TokeParser; |
use HTML::TokeParser; |
use Safe; |
use Safe; |
Line 57 $metamode = 0;
|
Line 57 $metamode = 0;
|
# turns on and of run::evaluate actually derefencing var refs |
# turns on and of run::evaluate actually derefencing var refs |
$evaluate = 1; |
$evaluate = 1; |
|
|
|
# data structure for eidt mode, determines what tags can go into what other tags |
|
%insertlist=(); |
|
|
|
#stores the list of active tag namespaces |
|
@namespace=(); |
|
|
sub xmlbegin { |
sub xmlbegin { |
my $output=''; |
my $output=''; |
Line 163 sub xmlparse {
|
Line 168 sub xmlparse {
|
my $safehole = new Safe::Hole; |
my $safehole = new Safe::Hole; |
$safeeval->permit("entereval"); |
$safeeval->permit("entereval"); |
$safeeval->permit(":base_math"); |
$safeeval->permit(":base_math"); |
|
$safeeval->permit("sort"); |
$safeeval->deny(":base_io"); |
$safeeval->deny(":base_io"); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); |
#need to inspect this class of ops |
#need to inspect this class of ops |
Line 365 sub callsub {
|
Line 371 sub callsub {
|
&Apache::lonxml::debug("nodefalt:$nodefault:"); |
&Apache::lonxml::debug("nodefalt:$nodefault:"); |
if ($currentstring eq '' && $nodefault eq '') { |
if ($currentstring eq '' && $nodefault eq '') { |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
|
&Apache::lonxml::debug("doing default edit for $token->[1]"); |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
$currentstring = &Apache::edit::tag_start($token,$target); |
$currentstring = &Apache::edit::tag_start($target,$token); |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$currentstring = &Apache::edit::tag_end($token,$target); |
$currentstring = &Apache::edit::tag_end($target,$token); |
} |
} |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
|
$currentstring.=&Apache::edit::handle_insert(); |
} else { |
} else { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} |
Line 612 sub debug {
|
Line 620 sub debug {
|
} |
} |
|
|
sub error { |
sub error { |
if ($Apache::lonxml::debug eq 1) { |
if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { |
print "<b>ERROR:</b>".$_[0]."<br />\n"; |
print "<b>ERROR:</b>".$_[0]."<br />\n"; |
} else { |
} else { |
print "<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"; |
print "<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"; |
Line 626 sub error {
|
Line 634 sub error {
|
&Apache::lonmsg::user_normal_msg($user,$domain,"Error in $ENV{'request.filename'}",$_[0]); |
&Apache::lonmsg::user_normal_msg($user,$domain,"Error in $ENV{'request.filename'}",$_[0]); |
} |
} |
} |
} |
|
|
#FIXME probably shouldn't have me get everything forever. |
#FIXME probably shouldn't have me get everything forever. |
&Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",$_[0]); |
&Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",$_[0]); |
#&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); |
#&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); |
} |
} |
} |
} |
|
|
Line 639 sub warning {
|
Line 647 sub warning {
|
} |
} |
} |
} |
|
|
|
sub register_insert { |
|
my @data = split /\n/, &Apache::lonnet::getfile('/home/httpd/lonTabs/insertlist.tab'); |
|
my $i; |
|
my $tagnum=0; |
|
my @order; |
|
for ($i=0;$i < $#data; $i++) { |
|
my $line = $data[$i]; |
|
if ( $line =~ /^\#/ || $line =~ /^\s*\n/) { next; } |
|
if ( $line =~ /TABLE/ ) { last; } |
|
my ($tag,$descrip,$function,$show) = split(/,/, $line); |
|
$insertlist{"$tagnum.tag"} = $tag; |
|
$insertlist{"$tagnum.description"} = $descrip; |
|
$insertlist{"$tagnum.function"} = $function; |
|
$insertlist{"$tagnum.show"}= $show; |
|
$tagnum++; |
|
} |
|
$i++; #skipping TABLE line |
|
$tagnum = 0; |
|
for (;$i < $#data;$i++) { |
|
my $line = $data[$i]; |
|
my ($mnemonic,@which) = split(/ +/,$line); |
|
my $tag = $insertlist{"$tagnum.tag"}; |
|
for (my $j=0;$j <$#which;$j++) { |
|
if ( $which[$j] eq 'Y' ) { |
|
if ($insertlist{"$j.show"} ne 'no') { |
|
push(@{ $insertlist{"$tag.which"} },$j); |
|
} |
|
} |
|
} |
|
$tagnum++; |
|
} |
|
} |
1; |
1; |
__END__ |
__END__ |
|
|