--- loncom/xml/scripttag.pm 2002/01/21 16:41:31 1.65 +++ loncom/xml/scripttag.pm 2003/05/14 13:33:00 1.88 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # '; + } + return ('','no'); +} + +sub end_LONCAPA_INTERNAL_LONHTTPD_PORT { + return ('','no'); } sub start_script { @@ -53,33 +79,38 @@ sub start_script { my $type= &Apache::lonxml::get_param('type',$parstack,$safeeval); &Apache::lonxml::debug("found type of $type"); if ($type eq "loncapa/perl") { - my $bodytext=&Apache::lonxml::get_all_text("/script",$$parser[$#$parser]); + my $bodytext=&Apache::lonxml::get_all_text("/script",$parser); if ( $target eq "modified" ) { $result=$token->[4].&Apache::edit::modifiedfield(); } elsif ( $target eq 'web' || $target eq 'tex' || - $target eq 'grade' || $target eq 'answer') { - &Apache::run::run($bodytext,$safeeval); - if (($target eq 'answer') && ($Apache::lonhomework::viewgrades == 'F')) { - $Apache::lonxml::evaluate--; - $result.="newwindow
";
-	my $listing= &Apache::run::dump($target,$safeeval);
-	$listing =~ s/\n/\\n/g;
-	$listing =~ s/\"/"/g;
-	$listing =~ s/\'/’/g;
-	$listing =~ s//>/g;
-	$listing =~ s/&/&/g;
-	$result.=$listing;
-	$result.= "
\');newWindow.document.close();void(0);\">Script Vars

"; - } + $target eq 'grade' || $target eq 'answer' || + $target eq 'analyze' ) { + if (!$Apache::lonxml::default_homework_loaded) { + &Apache::lonxml::default_homework_load($safeeval); + } + &Apache::run::run($bodytext,$safeeval); + if (($target eq 'answer') && + ($ENV{'form.answer_output_mode'} ne 'tex') && + ($Apache::lonhomework::viewgrades == 'F')) { + $Apache::lonxml::evaluate--; + $result.="Script Vars
"; + } } elsif ($target eq "edit" ) { #&Apache::run::run($bodytext,$safeeval); #$result="
<$token->[1]> output:
$bodytext
Source:
"; $result=&Apache::edit::tag_start($target,$token,'Script'); - $result.=&Apache::edit::editfield($token->[1],$bodytext,'',50,4); + $result.=&Apache::edit::editfield($token->[1],$bodytext,'',80,4); } } else { - if ($target ne "meta") { $result = $token->[4]; } + if ($target ne "meta") { + $result = $token->[4]; + my $bodytext=&Apache::lonxml::get_all_text("/script",$parser); + $result.=$bodytext; + } } return $result; } @@ -94,7 +125,7 @@ sub end_script { return $token->[2]; } elsif ($target eq 'edit' ) { return &Apache::edit::end_table(); - } elsif (($ENV{'request.state'} eq 'construct') && ($target eq 'answer')) { + } elsif ($target eq 'answer') { $Apache::lonxml::evaluate++; } return ''; @@ -104,22 +135,27 @@ sub start_display { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; - my $bodytext=&Apache::lonxml::get_all_text("/display",$$parser[$#$parser]); + my $bodytext=&Apache::lonxml::get_all_text("/display",$parser); if ( $target eq "modified" ) { $result=$token->[4].&Apache::edit::modifiedfield(); } elsif ( $target eq 'web' || $target eq 'tex' || - $target eq 'grade' || $target eq 'answer') { - $result=&Apache::run::run($bodytext,$safeeval); - if ($target eq 'grade' || $target eq 'answer' ) { - $result=''; # grade should produce no output - } + $target eq 'grade' || $target eq 'answer' || + $target eq 'analyze') { + if (!$Apache::lonxml::default_homework_loaded) { + &Apache::lonxml::default_homework_load($safeeval); + } + $result=&Apache::run::run($bodytext,$safeeval); + if ($target eq 'grade' || $target eq 'answer' || + $target eq 'analyze') { + $result=''; # grade should produce no output + } } elsif ($target eq "edit" ) { #$result = # "
<$token->[1]> output:
$bodytext
Source:
"; #$result.=&Apache::edit::editfield($token->[1],$bodytext,'',40,1); $result=&Apache::edit::tag_start($target,$token,'Script With Display'); - $result.=&Apache::edit::editfield($token->[1],$bodytext,'',40,1) + $result.=&Apache::edit::editfield($token->[1],$bodytext,'',80,1) } return $result; } @@ -136,7 +172,8 @@ sub start_scriptlib { my $result =''; my $error=''; - if ($target eq 'web' || $target eq 'grade' || $target eq 'meta' || $target eq 'edit' || $target eq 'answer') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'meta' || + $target eq 'edit' || $target eq 'answer' || $target eq 'analyze') { $bodytext=$$parser[$#$parser]->get_text("/scriptlib"); $bodytext=&Apache::run::evaluate($bodytext,$safeeval, $$parstack[$#$parstack]); @@ -157,7 +194,8 @@ sub start_scriptlib { if ($target eq "edit" ) { $result= &Apache::edit::tag_start($target,$token,'New Script Functions'). - &Apache::edit::editfield($token->[1],$bodytext,'',40,1). + &Apache::edit::editline($token->[1],$bodytext,'scriptlib',40). + &Apache::edit::browse(undef,'textnode'). $error.''. &Apache::edit::end_table(); } @@ -181,7 +219,8 @@ sub start_parserlib { my $bodytext; my $result =""; my $error=''; - if ($target eq 'web' || $target eq 'grade' || $target eq 'meta' || $target eq 'edit' || $target eq 'answer') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'meta' || + $target eq 'edit' || $target eq 'answer' || $target eq 'analyze') { $bodytext=$$parser[$#$parser]->get_text("/parserlib"); $bodytext=&Apache::run::evaluate($bodytext,$safeeval, $$parstack[$#$parstack]); @@ -202,7 +241,7 @@ sub start_parserlib { if ($target eq "edit" ) { $result= &Apache::edit::tag_start($target,$token,'New Tag Definitions'). - &Apache::edit::editfield($token->[1],$bodytext,'',40,1). + &Apache::edit::editline($token->[1],$bodytext,'',40). $error.''. &Apache::edit::end_table(); } @@ -254,7 +293,8 @@ sub start_import { $bodytext=Apache::run::evaluate($bodytext,$safeeval,$$parstack[$#$parstack]); - if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || + $target eq 'tex' || $target eq 'analyze' ) { # FIXME this probably needs to be smart about construction vs. # non construction space. my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext); @@ -270,10 +310,13 @@ sub start_import { my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); if (!$id) { $id=$Apache::lonxml::curdepth; } push(@Apache::inputtags::import,$id); - &Apache::lonxml::newparser($parser,\$file,$dir); + + &Apache::lonxml::newparser($parser,\$file,$dir); + } elsif ($target eq "edit" ) { $result.=&Apache::edit::tag_start($target,$token); - $result.=&Apache::edit::editfield($token->[1],$bodytext,'',40,1); + $result.=&Apache::edit::editline($token->[1],$bodytext,'',40); + $result.=&Apache::edit::browse(undef,'textnode'); #FIXME this need to convert $bodytext to be a contruction space reference #my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext); #$result.="Clickhere to edit
" @@ -295,8 +338,11 @@ sub start_import { } sub end_import { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; pop(@Apache::inputtags::import); - return ''; + my $result; + if ($target eq 'edit' ) { $result=&Apache::edit::end_table(); } + return $result; } sub start_storetc { @@ -336,20 +382,56 @@ sub end_physnet { sub start_standalone { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web' && $ENV{'request.course.id'} ) { - my $inside = &Apache::lonxml::get_all_text("/standalone",$$parser[-1]); + my $result=''; + if ($target eq 'web' ) { + if ( $ENV{'request.course.id'} ) { + my $inside = &Apache::lonxml::get_all_text("/standalone",$parser); + } else { + $result='
'; + } } - return ''; + return $result; } sub end_standalone { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result=''; + if ($target eq 'web' ) { + if ( $ENV{'request.course.id'} ) { + } else { + $result='
'; + } + } + return $result; +} + +sub start_comment { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result=''; + if ($target eq 'edit') { + $result=&Apache::edit::tag_start($target,$token); + my $bodytext=&Apache::lonxml::get_all_text("/comment",$parser); + $result.=&Apache::edit::editfield($token->[1],$bodytext,'',80,4) + } elsif ( $target eq 'modified') { + $result=$token->[4].&Apache::edit::modifiedfield($token); + } elsif ( $target eq 'web' || $target eq 'tex' || $target eq 'grade' || + $target eq 'answer' || $target eq 'meta' || $target eq 'analyze') { + #normally throw away comments + my $bodytext=&Apache::lonxml::get_all_text("/comment",$parser); + } + return $result; +} + +sub end_comment { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; + if ($target eq 'edit' ) { return &Apache::edit::end_table(); } return ''; } sub xmlparse { my ($string) = @_; - &Apache::lonxml::debug("Got $string"); +# &Apache::lonxml::debug("Got $string"); my ($target,$token,$tagstack,$parstack,$oldparser,$safeeval,$style)= @Apache::scripttag::parser_env; my @parser;