--- loncom/homework/lonhomework.pm 2002/03/22 20:11:00 1.73 +++ loncom/homework/lonhomework.pm 2002/03/29 18:32:46 1.74 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.73 2002/03/22 20:11:00 albertel Exp $ +# $Id: lonhomework.pm,v 1.74 2002/03/29 18:32:46 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,6 +61,9 @@ sub get_target { return ('web'); } } elsif ($ENV{'request.state'} eq "construct") { + if ( defined($ENV{'form.grade_target'}) ) { + return ($ENV{'form.grade_target'}); + } if ( defined($ENV{'form.preview'})) { if ( defined($ENV{'form.submitted'})) { return ('grade', 'web'); @@ -270,6 +273,16 @@ sub handle_save_or_undo { return $error; } +sub analyze { + my ($request,$file) = @_; + &Apache::lonxml::debug("Analyze"); + my $result=&Apache::lonnet::ssi($request->uri,('grade_target' => 'analyze')); + &Apache::lonxml::debug(":$result:"); + (my $garbage,$result)=split(/_HASH_REF__/,$result,2); + &showhash(&Apache::lonnet::str2hash($result)); + return $result; +} + sub editxmlmode { my ($request,$file) = @_; my $result; @@ -319,6 +332,7 @@ sub renderpage { my $result = ''; &Apache::inputtags::initialize_inputtags; &Apache::edit::initialize_edit; + if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); } if ($target eq 'web') { if (&Apache::lonnet::symbread() eq '') { if ($ENV{'request.state'} eq "construct") { @@ -343,6 +357,9 @@ sub renderpage { if ($target eq 'modified') { &handle_save_or_undo($request,\$problem,\$result); } else { + if ($target eq 'analyze') { + $result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze); + } #my $td=&tv_interval($t0); #if ( $Apache::lonxml::debug) { #$result =~ s:::; @@ -454,7 +471,6 @@ sub handler { # the last one if ( defined($ENV{'form.problemmode'}) && defined(@{ $ENV{'form.problemmode'} })) { - &Apache::lonxml::debug("3Problem Modes ".$ENV{'form.problemmode'}); my $mode=$ENV{'form.problemmode'}->[-1]; undef $ENV{'form.problemmode'}; $ENV{'form.problemmode'}=$mode; @@ -484,6 +500,8 @@ sub handler { &renderpage($request,$file); } elsif ($ENV{'form.problemmode'} eq 'EditXML') { &editxmlmode($request,$file); + } elsif ($ENV{'form.problemmode'} eq 'Answer Distribution') { + &analyze($request,$file); } else { &renderpage($request,$file); } @@ -493,6 +511,7 @@ sub handler { } } else { # just render the page normally outside of construction space + &Apache::lonxml::debug("not construct"); &renderpage($request,$file); } #my $td=&tv_interval($t0);