version 1.160, 2003/04/03 14:53:44
|
version 1.161, 2003/04/03 17:44:12
|
Line 251 sub start_problem {
|
Line 251 sub start_problem {
|
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser); |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser); |
return ''; |
return ''; |
} |
} |
#intialize globals |
#initialize globals |
$Apache::inputtags::part='0'; |
$Apache::inputtags::part='0'; |
@Apache::inputtags::responselist = (); |
@Apache::inputtags::responselist = (); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
$Apache::structuretags::printanswer='No'; |
$Apache::structuretags::printanswer='No'; |
|
@Apache::structuretags::whileconds=(); |
|
@Apache::structuretags::whilebody=(); |
|
@Apache::structuretags::whileline=(); |
|
|
if ($target ne 'analyze') { |
if ($target ne 'analyze') { |
&initialize_storage(); |
&initialize_storage(); |
if ($target eq 'web') { |
if ($target eq 'web') { |
Line 582 sub end_block {
|
Line 586 sub end_block {
|
sub start_while { |
sub start_while { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
|
&Apache::lonxml::debug('starting while'); |
|
my $result; |
my $result; |
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') { |
$target eq 'tex' || $target eq 'analyze') { |
my $code = $token->[2]->{'condition'}; |
my $code = $token->[2]->{'condition'}; |
|
|
Line 593 sub start_while {
|
Line 596 sub start_while {
|
&Apache::lonxml::default_homework_load($safeeval); |
&Apache::lonxml::default_homework_load($safeeval); |
} |
} |
my $result = &Apache::run::run($code,$safeeval); |
my $result = &Apache::run::run($code,$safeeval); |
my $bodytext=$$parser[-1]->get_text("/while"); |
my $bodytext=&Apache::lonxml::get_all_text("/while",$parser); |
push( @Apache::structuretags::whilebody, $bodytext); |
push( @Apache::structuretags::whilebody, $bodytext); |
|
push( @Apache::structuretags::whileline, $token->[5]); |
|
&Apache::lonxml::debug("s code $code got -$result-"); |
if ( $result ) { |
if ( $result ) { |
&Apache::lonxml::newparser($parser,\$bodytext); |
&Apache::lonxml::newparser($parser,\$bodytext); |
} |
} |
Line 613 sub start_while {
|
Line 618 sub start_while {
|
|
|
sub end_while { |
sub end_while { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
&Apache::lonxml::debug('ending while'); |
|
|
|
my $result; |
my $result; |
|
|
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') { |
$target eq 'tex' || $target eq 'analyze') { |
my $code = pop(@Apache::structuretags::whileconds); |
my $code = pop(@Apache::structuretags::whileconds); |
my $bodytext = pop(@Apache::structuretags::whilebody); |
my $bodytext = pop(@Apache::structuretags::whilebody); |
my $result = &Apache::run::run($code,$safeeval); |
my $line = pop(@Apache::structuretags::whileline); |
if ( $result ) { |
my $return = &Apache::run::run($code,$safeeval); |
&Apache::lonxml::newparser($parser,\$bodytext); |
my $starttime=time; |
|
my $error=0; |
|
while ($return) { |
|
if (time-$starttime > |
|
$Apache::lonnet::perlvar{'lonScriptTimeout'}) { |
|
$return = 0; $error=1; next; |
|
} |
|
$result.=&Apache::scripttag::xmlparse($bodytext); |
|
$return = &Apache::run::run($code,$safeeval); |
|
} |
|
if ($error) { |
|
&Apache::lonxml::error('<pre>Code ran too long. It ran for more than '.$Apache::lonnet::perlvar{'lonScriptTimeout'}.' seconds occured while running <while$gt; on line '.$line.'</pre>'); |
} |
} |
} elsif ($target eq "edit") { |
} elsif ($target eq "edit") { |
$result.= &Apache::edit::tag_end($target,$token,''); |
$result.= &Apache::edit::tag_end($target,$token,''); |