--- loncom/homework/lonhomework.pm 2003/01/28 00:13:37 1.107 +++ loncom/homework/lonhomework.pm 2003/03/25 22:51:48 1.116 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.107 2003/01/28 00:13:37 albertel Exp $ +# $Id: lonhomework.pm,v 1.116 2003/03/25 22:51:48 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -339,7 +339,9 @@ sub handle_save_or_undo { sub analyze_header { my ($request) = @_; - my $result.=' + my $result.=' + Analyzing a problem +
@@ -353,6 +355,13 @@ sub analyze_header { $request->rflush(); } +sub analyze_footer { + my ($request) = @_; + my $result=''; + $request->print($result); + $request->rflush(); +} + sub analyze { my ($request,$file) = @_; &Apache::lonxml::debug("Analyze"); @@ -361,30 +370,50 @@ sub analyze { my %allparts; my $rndseed=$ENV{'form.rndseed'}; &analyze_header($request); + my %prog_state= + &Apache::lonhtmlcommon::Create_PrgWin($request,'Analyze Progress', + 'Getting Problem Variants', + $ENV{'form.numtoanalyze'}); for(my $i=1;$i<$ENV{'form.numtoanalyze'}+1;$i++) { + &Apache::lonhtmlcommon::Increment_PrgWin($request,\%prog_state, + 'last problem'); my $subresult=&Apache::lonnet::ssi($request->uri, ('grade_target' => 'analyze'), ('rndseed' => $i)); &Apache::lonxml::debug(":$subresult:"); (my $garbage,$subresult)=split(/_HASH_REF__/,$subresult,2); my %analyze=&Apache::lonnet::str2hash($subresult); - &Apache::lonhomework::showhash(%analyze); - my @parts = @{ $analyze{'parts'} }; + my @parts; + if (defined(@{ $analyze{'parts'} })) { + @parts=@{ $analyze{'parts'} }; + } foreach my $part (@parts) { if (!exists($allparts{$part})) {$allparts{$part}=1;}; - if ($analyze{$part.'.type'} eq 'numericalresponse') { + if ($analyze{$part.'.type'} eq 'numericalresponse' || + $analyze{$part.'.type'} eq 'stringresponse' || + $analyze{$part.'.type'} eq 'formularesponse' ) { push( @{ $overall{$part.'.answer'} }, [@{ $analyze{$part.'.answer'} }]); } } } + &Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state, + 'Analyzing Results'); foreach my $part (keys(%allparts)) { - $request->print(''); - foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'} })) { - $request->print(''); + if (defined(@{ $overall{$part.'.answer'} })) { + $request->print('
Part '.$part.'
'.join('',@{ $answer }). - '
'); + foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'} })) { + $request->print(''); + } + $request->print('
Part '.$part.'
'.join('',@{ $answer }). + '
'); + } else { + $request->print('

Part '.$part. + ' is not analyzabale at this time

'); } } + &Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state); + &analyze_footer($request); &Apache::lonhomework::showhash(%overall); return $result; } @@ -393,7 +422,7 @@ sub editxmlmode { my ($request,$file) = @_; my $result; my $problem=&Apache::lonnet::getfile($file); - if ($problem == -1) { + if ($problem eq -1) { &Apache::lonxml::error(" Unable to find $file"); $problem=''; } @@ -409,7 +438,15 @@ sub editxmlmode { &renderpage($request,$file); } else { my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem); - my $xml_help = Apache::loncommon::help_open_topic("Problem_Editor_XML_Index"); + my $xml_help = '
'. + &Apache::loncommon::help_open_topic("Problem_Editor_XML_Index",'Problem Editing Help') + .''. + &Apache::loncommon::help_open_topic("Greek_Symbols",'Greek Symbols', + undef,undef,600) + .''. + &Apache::loncommon::help_open_topic("Other_Symbols",'Other Symbols', + undef,undef,600) + .'
'; if ($cols > 80) { $cols = 80; } if ($cols < 70) { $cols = 70; } if ($rows < 20) { $rows = 20; } @@ -424,7 +461,7 @@ sub editxmlmode {
- ' . $xml_help . ' Problem Help
+ ' . $xml_help . '
'; @@ -448,17 +485,14 @@ sub renderpage { my %mystyle; my $result = ''; - &Apache::inputtags::initialize_inputtags(); - &Apache::outputtags::initialize_outputtags(); - &Apache::edit::initialize_edit(); - if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); } + if ($target eq 'analyze') { %Apache::lonhomework::analyze=(); } if ($target eq 'answer') { &showhash(%Apache::lonhomework::history); } if ($target eq 'web') {&Apache::lonhomework::showhashsubset(\%ENV,'^form');} &Apache::lonxml::debug("Should be parsing now"); $result = &Apache::lonxml::xmlparse($request, $target, $problem, &setup_vars($target),%mystyle); - + undef($Apache::lonhomework::parsing_a_problem); #$request->print("Result follows:"); if ($target eq 'modified') { &handle_save_or_undo($request,\$problem,\$result); @@ -473,6 +507,7 @@ sub renderpage { #$result.="
Spent $td seconds processing target $target\n"; #} $request->print($result); + $request->rflush(); } #$request->print(":Result ends"); #my $td=&tv_interval($t0); @@ -496,7 +531,7 @@ sub get_template_list { } } if (@allnames && !$result) { - $result="\n\n'; } return $result;