--- loncom/xml/lonxml.pm 2002/11/12 20:11:10 1.214
+++ loncom/xml/lonxml.pm 2003/01/07 17:02:10 1.223
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.214 2002/11/12 20:11:10 www Exp $
+# $Id: lonxml.pm,v 1.223 2003/01/07 17:02:10 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -101,6 +101,7 @@ use Apache::File();
use Apache::loncommon();
use Apache::lonfeedback();
use Apache::lonmsg();
+use Apache::loncacc();
#================================================== Main subroutine: xmlparse
#debugging control, to turn on debugging modify the correct handler
@@ -144,8 +145,8 @@ $Apache::lonxml::registered=0;
# a pointer the the Apache request object
$Apache::lonxml::request='';
-# a problem number counter, and check on hether it is used
-$Apache::lonxml::counter=0;
+# a problem number counter, and check on ether it is used
+$Apache::lonxml::counter=1;
$Apache::lonxml::counter_changed=0;
#internal check on whether to look at style defs
@@ -191,7 +192,8 @@ sub xmlend {
my $idx;
for ($idx=1;$idx<=$contrib{'version'};$idx++) {
my $hidden=($contrib{'hidden'}=~/\.$idx\./);
- unless (($hidden) && (!$seeid)) {
+ my $deleted=($contrib{'deleted'}=~/\.$idx\./);
+ unless ((($hidden) && (!$seeid)) || ($deleted)) {
my $message=$contrib{$idx.':message'};
$message=~s/\n/\
/g;
$message=&Apache::lontexconvert::msgtexconverted($message);
@@ -225,8 +227,10 @@ sub xmlend {
} else {
$sender.=' Hide';
- }
- }
+ }
+ $sender.=' Delete';
+ }
} else {
if ($screenname) {
$sender=''.$screenname.'';
@@ -351,7 +355,7 @@ sub printtokenheader {
if ($target eq 'web') {
my %idhash=&Apache::lonnet::idrget($tudom,($tuname));
return
- ''.
+ ''.
'Checked out for '.$plainname.
'
User: '.$tuname.' at '.$tudom.
'
ID: '.$idhash{$tuname}.
@@ -373,6 +377,18 @@ sub fontsettings() {
return $headerstring;
}
+
+##
+## switchmenu - modeled on lonmenu::switchmenu, but better.
+## Helper function for registerurl
+##
+sub switchmenu {
+ my ($row,$col,$imgsrc,$texttop,$textbot,$action,$description)=@_;
+ return(<
@@ -456,6 +528,7 @@ ENDPARM
menu.switchbutton
(9,3,'anot.gif','anno-','tations','annotate()','Make notes and annotations about this resource');
$hwkadd
+ $editbutton
}
function LONCAPAstale() {
@@ -470,7 +543,7 @@ ENDPARM
menu.clearbut(7,3);
menu.menucltim=menu.setTimeout(
'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+
- 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3)',
+ 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3);clearbut(6,1)',
2000);
}
@@ -598,7 +671,7 @@ sub htmlclean {
sub latex_special_symbols {
my ($current_token,$stack,$parstack)=@_;
- $current_token=~s/\\/\\char92 /g;
+ $current_token=~s/\\ /\\char92 /g;
$current_token=~s/\^/\\char94 /g;
$current_token=~s/\~/\\char126 /g;
$current_token=~s/(&[^a-z\#])/\\$1/g;
@@ -623,8 +696,7 @@ sub inner_xmlparse {
if ($metamode<1) {
my $text=$token->[1];
if ($token->[0] eq 'C' && $target eq 'tex') {
- $text = '%'.$text;
- $text =~ s/[\n\r]//g;
+ $text = '%'.$text."\n";
}
$result.=$text;
}
@@ -716,7 +788,7 @@ sub inner_xmlparse {
if (($ENV{'QUERY_STRING'}) && ($target eq 'web')) {
$finaloutput=&afterburn($finaloutput);
- }
+ }
return $finaloutput;
}
@@ -744,13 +816,13 @@ sub callsub {
}
if (!$deleted) {
if ($space) {
- &Apache::lonxml::debug("Calling sub $sub in $space $metamode");
+ #&Apache::lonxml::debug("Calling sub $sub in $space $metamode");
$sub1="$space\:\:$sub";
($currentstring,$nodefault) = &$sub1($target,$token,$tagstack,
$parstack,$parser,$safeeval,
$style);
} else {
- &Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode");
+ #&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode");
if ($metamode <1) {
if (defined($token->[4]) && ($metamode < 1)) {
$currentstring = $token->[4];
@@ -762,7 +834,7 @@ sub callsub {
# &Apache::lonxml::debug("nodefalt:$nodefault:");
if ($currentstring eq '' && $nodefault eq '') {
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') {
$currentstring = &Apache::edit::tag_start($target,$token);
} elsif ($token->[0] eq 'E') {
@@ -863,6 +935,37 @@ 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::Cephes::bdtr ,$safeeval,'&bdtr' );
+ $safehole->wrap(\&Math::Cephes::bdtrc ,$safeeval,'&bdtrc' );
+ $safehole->wrap(\&Math::Cephes::bdtri ,$safeeval,'&bdtri' );
+ $safehole->wrap(\&Math::Cephes::btdtr ,$safeeval,'&btdtr' );
+ $safehole->wrap(\&Math::Cephes::chdtr ,$safeeval,'&chdtr' );
+ $safehole->wrap(\&Math::Cephes::chdtrc,$safeeval,'&chdtrc');
+ $safehole->wrap(\&Math::Cephes::chdtri,$safeeval,'&chdtri');
+ $safehole->wrap(\&Math::Cephes::fdtr ,$safeeval,'&fdtr' );
+ $safehole->wrap(\&Math::Cephes::fdtrc ,$safeeval,'&fdtrc' );
+ $safehole->wrap(\&Math::Cephes::fdtri ,$safeeval,'&fdtri' );
+ $safehole->wrap(\&Math::Cephes::gdtr ,$safeeval,'&gdtr' );
+ $safehole->wrap(\&Math::Cephes::gdtrc ,$safeeval,'&gdtrc' );
+ $safehole->wrap(\&Math::Cephes::nbdtr ,$safeeval,'&nbdtr' );
+ $safehole->wrap(\&Math::Cephes::nbdtrc,$safeeval,'&nbdtrc');
+ $safehole->wrap(\&Math::Cephes::nbdtri,$safeeval,'&nbdtri');
+ $safehole->wrap(\&Math::Cephes::ndtr ,$safeeval,'&ndtr' );
+ $safehole->wrap(\&Math::Cephes::ndtri ,$safeeval,'&ndtri' );
+ $safehole->wrap(\&Math::Cephes::pdtr ,$safeeval,'&pdtr' );
+ $safehole->wrap(\&Math::Cephes::pdtrc ,$safeeval,'&pdtrc' );
+ $safehole->wrap(\&Math::Cephes::pdtri ,$safeeval,'&pdtri' );
+ $safehole->wrap(\&Math::Cephes::stdtr ,$safeeval,'&stdtr' );
+ $safehole->wrap(\&Math::Cephes::stdtri,$safeeval,'&stdtri');
+
+# $safehole->wrap(\&Math::Cephes::new_fract,$safeeval,'&new_fract');
+# $safehole->wrap(\&Math::Cephes::radd,$safeeval,'&radd');
+# $safehole->wrap(\&Math::Cephes::rsub,$safeeval,'&rsub');
+# $safehole->wrap(\&Math::Cephes::rmul,$safeeval,'&rmul');
+# $safehole->wrap(\&Math::Cephes::rdiv,$safeeval,'&rdiv');
+# $safehole->wrap(\&Math::Cephes::euclid,$safeeval,'&euclid');
+
$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');
@@ -1022,7 +1125,8 @@ sub get_all_text {
if ( $tag =~ m:^/: ) {
my $tag=substr($tag,1);
#&Apache::lonxml::debug("have:$tag:");
- while (($depth >=0) && ($#$pars > -1)) {
+ my $top_empty=0;
+ while (($depth >=0) && ($#$pars > -1) && (!$top_empty)) {
while (($depth >=0) && ($token = $$pars[-1]->get_token)) {
#&Apache::lonxml::debug("e token:$token->[0]:$depth:$token->[1]:".$#$pars.":".$#Apache::lonxml::pwd);
if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) {
@@ -1044,6 +1148,7 @@ sub get_all_text {
pop(@$pars);
pop(@Apache::lonxml::pwd);
}
+ if (($depth >=0) && ($#$pars == 0) ) { $top_empty=1; }
}
} else {
while ($#$pars > -1) {