--- loncom/homework/lonhomework.pm 2000/11/30 16:20:49 1.17 +++ loncom/homework/lonhomework.pm 2000/12/04 22:08:57 1.18 @@ -12,42 +12,25 @@ use Apache::structuretags; use Apache::response; -sub subhandler { - my ($target,$problem)=@_; - my %mystyle; - my $result = ''; - &Apache::inputtags::initialize_inputtags; - %Apache::lonhomework::results=(); - %Apache::lonhomework::history=&Apache::lonnet::restore; - #ignore error conditions - my ($temp)=keys %Apache::lonhomework::history ; - if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } - - my $resultkey; - foreach $resultkey (sort keys %Apache::lonhomework::history) { - &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::history{$resultkey}"); - } - &Apache::lonxml::debug("\n
restored values^
\n"); - my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm'); - if ($default == -1) { - &Apache::lonxml::error("Unable to find default_homework.lcpm"); - $default=''; - } - - return Apache::lonxml::xmlparse($target, $problem, - $default.&setup_vars($target),%mystyle); -} - sub get_target { if ( $ENV{'request.state'} eq "published") { - return 'web'; + if ( defined $ENV{'form.submit'}) { + return ('grade', 'web'); + } else { + return ('web'); + } } elsif ($ENV{'request.state'} eq "construct") { if ( defined $ENV{'form.preview'}) { - return 'web'; + if ( defined $ENV{'form.submit'}) { + return ('grade', 'web'); + } else { + return ('web'); + } } else { - return 'edit'; + return ('edit'); } } + return (); } sub setup_vars { @@ -69,27 +52,13 @@ sub send_footer { $request->print(&Apache::lontexconvert::footer()); } -sub getfilenothere { - my ($filename) = @_; - my $a=""; - if (! -e $filename ) { - &Apache::lonnet::subscribe($filename); - &Apache::lonnet::repcopy($filename); - } - { - my $fh=Apache::File->new($filename); - - while (<$fh>) { - $a .=$_; - } - } - return $a -} - sub handler { - my $request=shift; + my $request=$_[0]; $Apache::lonxml::debug=1; + + my (@targets) = &get_target(); + if ($ENV{'browser.mathml'}) { $request->content_type('text/xml'); } else { @@ -97,33 +66,64 @@ sub handler { } $request->send_http_header; return 'OK' if $request->header_only; - + &Apache::lonhomework::send_header($request); - my $file=&Apache::lonnet::filelocation("",$request->uri); - my $problem=&Apache::lonnet::getfile($file); - if ($problem == -1) { - &Apache::lonxml::error(" Unable to find $file"); - $problem=''; - } - - my $result=&subhandler(&get_target(),$problem); + + foreach my $target (@targets) { + my $file=&Apache::lonnet::filelocation("",$request->uri); + my $problem=&Apache::lonnet::getfile($file); + if ($problem == -1) { + &Apache::lonxml::error(" Unable to find $file"); + $problem=''; + } + + my %mystyle; + my $result = ''; + &Apache::inputtags::initialize_inputtags; + %Apache::lonhomework::results=(); + %Apache::lonhomework::history=&Apache::lonnet::restore; + #ignore error conditions + my ($temp)=keys %Apache::lonhomework::history ; + if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } + + if ($target eq 'grade') { + my $resultkey; + foreach $resultkey (sort keys %Apache::lonhomework::history) { + &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::history{$resultkey}"); + } + &Apache::lonxml::debug("\n
restored values^
\n"); + } + my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm'); + if ($default == -1) { + &Apache::lonxml::error("Unable to find default_homework.lcpm"); + $default=''; + } + if ( $target eq 'grade') { + $Apache::lonxml::textredirection = 0; + } else { + $Apache::lonxml::textredirection = 1; + } + $result = &Apache::lonxml::xmlparse($target, $problem, + $default.&setup_vars($target),%mystyle); - #$request->print("Result follows:"); - $request->print($result); - #$request->print(":Result ends"); - - my $temp; - my $resultkey; - foreach $resultkey (sort keys %Apache::lonhomework::results) { - &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::results{$resultkey}"); + #$request->print("Result follows:"); + $request->print($result); + #$request->print(":Result ends"); + if ($target eq 'grade') { + my $resultkey; + foreach $resultkey (sort keys %Apache::lonhomework::results) { + &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::results{$resultkey}"); + } + &Apache::lonxml::debug("\n
storing values^
\n"); + } + + my ($temp) = keys %Apache::lonhomework::results; + if ( $temp ne '' ) { + &Apache::lonxml::debug("Store return message:".&Apache::lonnet::cstore(%Apache::lonhomework::results)); + } } - &Apache::lonxml::debug("\n
storing values^
\n"); - &Apache::lonhomework::send_footer($request); - ($temp) = keys %Apache::lonhomework::results; - if ( $temp ne '' ) { - &Apache::lonxml::debug("Store return message:".&Apache::lonnet::cstore(%Apache::lonhomework::results)); - } + return 'OK'; }