version 1.95, 2001/06/16 16:09:09
|
version 1.99, 2001/07/03 20:58:27
|
Line 70 $evaluate = 1;
|
Line 70 $evaluate = 1;
|
# data structure for eidt mode, determines what tags can go into what other tags |
# data structure for eidt mode, determines what tags can go into what other tags |
%insertlist=(); |
%insertlist=(); |
|
|
#stores the list of active tag namespaces |
# stores the list of active tag namespaces |
@namespace=(); |
@namespace=(); |
|
|
|
# has the dynamic menu been updated to know about this resource |
|
$Apache::lonxml::registered=0; |
|
|
sub xmlbegin { |
sub xmlbegin { |
my $output=''; |
my $output=''; |
if ($ENV{'browser.mathml'}) { |
if ($ENV{'browser.mathml'}) { |
Line 102 sub fontsettings() {
|
Line 105 sub fontsettings() {
|
} |
} |
|
|
sub registerurl { |
sub registerurl { |
|
if ($Apache::lonxml::registered) { return ''; } |
if ($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) { |
if ($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) { |
my $hwkadd=''; |
my $hwkadd=''; |
if ($ENV{'REQUEST_URI'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
if ($ENV{'REQUEST_URI'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
Line 225 sub printalltags {
|
Line 229 sub printalltags {
|
|
|
sub xmlparse { |
sub xmlparse { |
my ($target,$content_file_string,$safeinit,%style_for_target) = @_; |
my ($target,$content_file_string,$safeinit,%style_for_target) = @_; |
if ($target eq 'meta') { |
|
$Apache::lonxml::redirection = 0; |
&setup_globals($target); |
$Apache::lonxml::metamode = 1; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 0; |
|
} elsif ($target eq 'grade') { |
|
&startredirection; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 1; |
|
} elsif ($target eq 'modified') { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 0; |
|
$Apache::lonxml::import = 0; |
|
} else { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 1; |
|
} |
|
#&printalltags(); |
#&printalltags(); |
my @pars = (); |
my @pars = (); |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::pwd=(); |
Line 297 sub xmlparse {
|
Line 282 sub xmlparse {
|
#clear out any tags that didn't end |
#clear out any tags that didn't end |
while ($token->[1] ne $stack[$#stack] && ($#stack > -1)) { |
while ($token->[1] ne $stack[$#stack] && ($#stack > -1)) { |
&Apache::lonxml::warning("Unbalanced tags in resource $stack['-1']"); |
&Apache::lonxml::warning("Unbalanced tags in resource $stack['-1']"); |
pop @stack;pop @parstack;&decreasedepth($token); |
&end_tag(\@stack,\@parstack,$token); |
} |
} |
|
|
if (exists $style_for_target{'/'."$token->[1]"}) { |
if (exists $style_for_target{'/'."$token->[1]"}) { |
Line 334 sub xmlparse {
|
Line 319 sub xmlparse {
|
$result = ''; |
$result = ''; |
} |
} |
if ($token->[0] eq 'E') { |
if ($token->[0] eq 'E') { |
pop @stack;pop @parstack;&decreasedepth($token); |
&end_tag(\@stack,\@parstack,$token); |
} |
} |
} |
} |
pop @pars; |
pop @pars; |
Line 382 sub recurse {
|
Line 367 sub recurse {
|
while ($tokenpat->[1] ne $innerstack[$#innerstack] |
while ($tokenpat->[1] ne $innerstack[$#innerstack] |
&& ($#innerstack > -1)) { |
&& ($#innerstack > -1)) { |
&Apache::lonxml::warning("Unbalanced tags in resource $innerstack['-1']"); |
&Apache::lonxml::warning("Unbalanced tags in resource $innerstack['-1']"); |
pop @innerstack;pop @innerparstack;&decreasedepth($tokenpat); |
&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 432 sub callsub {
|
Line 417 sub callsub {
|
$sub=~tr/A-Z/a-z/; |
$sub=~tr/A-Z/a-z/; |
$space=$Apache::lonxml::alltags{$tag} |
$space=$Apache::lonxml::alltags{$tag} |
} |
} |
if ($space) { |
|
#&Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n"); |
my $deleted=0; |
$sub1="$space\:\:$sub"; |
$Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter); |
$Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter); |
if (($token->[0] eq 'S') && ($target eq 'modified')) { |
($currentstring,$nodefault) = &$sub1($target,$token,$tagstack, |
$deleted=&Apache::edit::handle_delete($space,$target,$token,$tagstack, |
$parstack,$parser,$safeeval, |
$parstack,$parser,$safeeval, |
$style); |
$style); |
} else { |
} |
#&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n"); |
if (!$deleted) { |
if ($metamode <1) { |
if ($space) { |
if (defined($token->[4]) && ($metamode < 1)) { |
#&Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n"); |
$currentstring = $token->[4]; |
$sub1="$space\:\:$sub"; |
} else { |
($currentstring,$nodefault) = &$sub1($target,$token,$tagstack, |
$currentstring = $token->[2]; |
$parstack,$parser,$safeeval, |
|
$style); |
|
} else { |
|
#&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n"); |
|
if ($metamode <1) { |
|
if (defined($token->[4]) && ($metamode < 1)) { |
|
$currentstring = $token->[4]; |
|
} else { |
|
$currentstring = $token->[2]; |
|
} |
} |
} |
} |
} |
} |
# &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]"); |
&Apache::lonxml::debug("doing default edit for $token->[1]"); |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
$currentstring = &Apache::edit::tag_start($target,$token); |
$currentstring = &Apache::edit::tag_start($target,$token); |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$currentstring = &Apache::edit::tag_end($target,$token); |
$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(); |
$currentstring.=&Apache::edit::handle_insert(); |
} else { |
} else { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} |
} |
} |
} |
} |
} |
Line 472 sub callsub {
|
Line 466 sub callsub {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
sub setup_globals { |
|
my ($target)=@_; |
|
$Apache::lonxml::registered = 0; |
|
if ($target eq 'meta') { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 1; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 0; |
|
} elsif ($target eq 'grade') { |
|
&startredirection; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 1; |
|
} elsif ($target eq 'modified') { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 0; |
|
$Apache::lonxml::import = 0; |
|
} elsif ($target eq 'edit') { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 0; |
|
$Apache::lonxml::import = 0; |
|
} else { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 0; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 1; |
|
} |
|
} |
|
|
sub init_safespace { |
sub init_safespace { |
my ($target,$safeeval,$safehole,$safeinit) = @_; |
my ($target,$safeeval,$safehole,$safeinit) = @_; |
$safeeval->permit("entereval"); |
$safeeval->permit("entereval"); |
Line 542 sub endredirection {
|
Line 567 sub endredirection {
|
pop @Apache::lonxml::outputstack; |
pop @Apache::lonxml::outputstack; |
} |
} |
|
|
|
sub end_tag { |
|
my ($tagstack,$parstack,$token)=@_; |
|
pop(@$tagstack); |
|
pop(@$parstack); |
|
&decreasedepth($token); |
|
} |
|
|
sub initdepth { |
sub initdepth { |
@Apache::lonxml::depthcounter=(); |
@Apache::lonxml::depthcounter=(); |
$Apache::lonxml::depth=-1; |
$Apache::lonxml::depth=-1; |
Line 809 ENDNOTFOUND
|
Line 841 ENDNOTFOUND
|
|
|
sub debug { |
sub debug { |
if ($Apache::lonxml::debug eq 1) { |
if ($Apache::lonxml::debug eq 1) { |
print "DEBUG:".$_[0]."<br />\n"; |
print("DEBUG:".$_[0]."<br />\n"); |
} |
} |
} |
} |
|
|
Line 883 sub register_insert {
|
Line 915 sub register_insert {
|
$tagnum++; |
$tagnum++; |
} |
} |
} |
} |
|
|
|
sub description { |
|
my ($token)=@_; |
|
return $insertlist{$insertlist{"$token->[1].num"}.'.description'}; |
|
} |
1; |
1; |
__END__ |
__END__ |
|
|