version 1.92, 2001/06/12 22:39:36
|
version 1.98, 2001/06/27 18:52:34
|
Line 10
|
Line 10
|
# 5/26 Gerd Kortemeyer |
# 5/26 Gerd Kortemeyer |
# 5/27 H. K. Ng |
# 5/27 H. K. Ng |
# 6/2,6/3,6/8,6/9 Gerd Kortemeyer |
# 6/2,6/3,6/8,6/9 Gerd Kortemeyer |
|
# 6/12,6/13 H. K. Ng |
|
# 6/16 Gerd Kortemeyer |
|
|
package Apache::lonxml; |
package Apache::lonxml; |
use vars |
use vars |
Line 146 ENDPARM
|
Line 148 ENDPARM
|
(2,1,'back.gif','backward','','gopost("/adm/flip","back:"+currentURL)'); |
(2,1,'back.gif','backward','','gopost("/adm/flip","back:"+currentURL)'); |
menu.switchbutton |
menu.switchbutton |
(2,3,'forw.gif','forward','','gopost("/adm/flip","forward:"+currentURL)'); |
(2,3,'forw.gif','forward','','gopost("/adm/flip","forward:"+currentURL)'); |
|
menu.switchbutton |
|
(9,1,'sbkm.gif','set','bookmark','set_bookmark()'); |
|
menu.switchbutton |
|
(9,2,'vbkm.gif','view','bookmark','edit_bookmarks()'); |
|
menu.switchbutton |
|
(9,3,'anot.gif','anno-','tations','annotate()'); |
$hwkadd |
$hwkadd |
} |
} |
|
|
Line 158 ENDPARM
|
Line 166 ENDPARM
|
menu.clearbut(7,2); |
menu.clearbut(7,2); |
menu.clearbut(7,3); |
menu.clearbut(7,3); |
menu.menucltim=menu.setTimeout( |
menu.menucltim=menu.setTimeout( |
'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);', |
'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ |
|
'clearbut(9,1);clearbut(9,2);clearbut(9,3);', |
2000); |
2000); |
|
|
} |
} |
Line 216 sub printalltags {
|
Line 225 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 288 sub xmlparse {
|
Line 278 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 325 sub xmlparse {
|
Line 315 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 373 sub recurse {
|
Line 363 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 423 sub callsub {
|
Line 413 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 463 sub callsub {
|
Line 462 sub callsub {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
sub setup_globals { |
|
my ($target)=@_; |
|
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 501 sub init_safespace {
|
Line 530 sub init_safespace {
|
$safehole->wrap(\&Math::Random::random_noncentral_f,$safeeval,'&math_random_noncentral_f'); |
$safehole->wrap(\&Math::Random::random_noncentral_f,$safeeval,'&math_random_noncentral_f'); |
$safehole->wrap(\&Math::Random::random_normal,$safeeval,'&math_random_normal'); |
$safehole->wrap(\&Math::Random::random_normal,$safeeval,'&math_random_normal'); |
$safehole->wrap(\&Math::Random::random_permutation,$safeeval,'&math_random_permutation'); |
$safehole->wrap(\&Math::Random::random_permutation,$safeeval,'&math_random_permutation'); |
# $safehole->wrap(\&Math::Random::random_permuted_index,$safeeval,'&math_random_permuted_index'); |
$safehole->wrap(\&Math::Random::random_permuted_index,$safeeval,'&math_random_permuted_index'); |
$safehole->wrap(\&Math::Random::random_uniform,$safeeval,'&math_random_uniform'); |
$safehole->wrap(\&Math::Random::random_uniform,$safeeval,'&math_random_uniform'); |
$safehole->wrap(\&Math::Random::random_poisson,$safeeval,'&math_random_poisson'); |
$safehole->wrap(\&Math::Random::random_poisson,$safeeval,'&math_random_poisson'); |
$safehole->wrap(\&Math::Random::random_uniform_integer,$safeeval,'&math_random_uniform_integer'); |
$safehole->wrap(\&Math::Random::random_uniform_integer,$safeeval,'&math_random_uniform_integer'); |
Line 533 sub endredirection {
|
Line 562 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 800 ENDNOTFOUND
|
Line 836 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 874 sub register_insert {
|
Line 910 sub register_insert {
|
$tagnum++; |
$tagnum++; |
} |
} |
} |
} |
|
|
|
sub description { |
|
my ($token)=@_; |
|
return $insertlist{$insertlist{"$token->[1].num"}.'.description'}; |
|
} |
1; |
1; |
__END__ |
__END__ |
|
|