--- loncom/xml/lonxml.pm 2001/06/09 14:23:27 1.90 +++ loncom/xml/lonxml.pm 2001/06/16 18:34:31 1.96 @@ -10,6 +10,8 @@ # 5/26 Gerd Kortemeyer # 5/27 H. K. Ng # 6/2,6/3,6/8,6/9 Gerd Kortemeyer +# 6/12,6/13 H. K. Ng +# 6/16 Gerd Kortemeyer package Apache::lonxml; use vars @@ -19,6 +21,7 @@ use HTML::TokeParser; use Safe; use Safe::Hole; use Math::Cephes qw(:trigs :hypers :bessels erf erfc); +use Math::Random qw(:all); use Opcode; sub register { @@ -145,6 +148,12 @@ ENDPARM (2,1,'back.gif','backward','','gopost("/adm/flip","back:"+currentURL)'); menu.switchbutton (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 } @@ -157,7 +166,8 @@ ENDPARM menu.clearbut(7,2); menu.clearbut(7,3); 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); } @@ -214,29 +224,9 @@ sub printalltags { } sub xmlparse { - my ($target,$content_file_string,$safeinit,%style_for_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; - } else { - $Apache::lonxml::redirection = 0; - $Apache::lonxml::metamode = 0; - $Apache::lonxml::evaluate = 1; - $Apache::lonxml::import = 1; - } + + &setup_globals($target); #&printalltags(); my @pars = (); @Apache::lonxml::pwd=(); @@ -416,11 +406,6 @@ sub callsub { { my $sub1; no strict 'refs'; - if ($target eq 'edit' && $token->[0] eq 'S') { - $currentstring = &Apache::edit::tag_start($target,$token,$tagstack, - $parstack,$parser, - $safeeval,$style); - } my $tag=$token->[1]; my $space=$Apache::lonxml::alltags{$tag}; if (!$space) { @@ -468,6 +453,36 @@ sub callsub { 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 { my ($target,$safeeval,$safehole,$safeinit) = @_; $safeeval->permit("entereval"); @@ -495,10 +510,31 @@ sub init_safespace { $safehole->wrap(\&Math::Cephes::y1,$safeeval,'&y1'); $safehole->wrap(\&Math::Cephes::yn,$safeeval,'&yn'); $safehole->wrap(\&Math::Cephes::yv,$safeeval,'&yv'); - + $safehole->wrap(\&Math::Random::random_beta,$safeeval,'&math_random_beta'); + $safehole->wrap(\&Math::Random::random_chi_square,$safeeval,'&math_random_chi_square'); + $safehole->wrap(\&Math::Random::random_exponential,$safeeval,'&math_random_exponential'); + $safehole->wrap(\&Math::Random::random_f,$safeeval,'&math_random_f'); + $safehole->wrap(\&Math::Random::random_gamma,$safeeval,'&math_random_gamma'); + $safehole->wrap(\&Math::Random::random_multivariate_normal,$safeeval,'&math_random_multivariate_normal'); + $safehole->wrap(\&Math::Random::random_multinomial,$safeeval,'&math_random_multinomial'); + $safehole->wrap(\&Math::Random::random_noncentral_chi_square,$safeeval,'&math_random_noncentral_chi_square'); + $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_permutation,$safeeval,'&math_random_permutation'); + $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_poisson,$safeeval,'&math_random_poisson'); + $safehole->wrap(\&Math::Random::random_uniform_integer,$safeeval,'&math_random_uniform_integer'); + $safehole->wrap(\&Math::Random::random_negative_binomial,$safeeval,'&math_random_negative_binomial'); + $safehole->wrap(\&Math::Random::random_binomial,$safeeval,'&math_random_binomial'); + $safehole->wrap(\&Math::Random::random_seed_from_phrase,$safeeval,'&random_seed_from_phrase'); + $safehole->wrap(\&Math::Random::random_set_seed_from_phrase,$safeeval,'&random_set_seed_from_phrase'); + $safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_seed'); + $safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed'); + #need to inspect this class of ops # $safeeval->deny(":base_orig"); - $safeinit .= ';$external::target='.$target.';'; + $safeinit .= ';$external::target="'.$target.'";'; $safeinit .= ';$external::randomseed='.&Apache::lonnet::rndseed().';'; &Apache::run::run($safeinit,$safeeval); } @@ -784,7 +820,7 @@ ENDNOTFOUND sub debug { if ($Apache::lonxml::debug eq 1) { - print "DEBUG:".$_[0]."
\n"; + print("DEBUG:".$_[0]."
\n"); } } @@ -833,11 +869,13 @@ sub register_insert { my $line = $data[$i]; if ( $line =~ /^\#/ || $line =~ /^\s*\n/) { next; } if ( $line =~ /TABLE/ ) { last; } - my ($tag,$descrip,$function,$show) = split(/,/, $line); + my ($tag,$descrip,$color,$function,$show) = split(/,/, $line); $insertlist{"$tagnum.tag"} = $tag; $insertlist{"$tagnum.description"} = $descrip; + $insertlist{"$tagnum.color"} = $color; $insertlist{"$tagnum.function"} = $function; $insertlist{"$tagnum.show"}= $show; + $insertlist{"$tag.num"}=$tagnum; $tagnum++; } $i++; #skipping TABLE line