--- loncom/homework/lonhomework.pm 2001/02/19 20:35:21 1.39 +++ loncom/homework/lonhomework.pm 2002/05/24 18:55:23 1.79 @@ -1,38 +1,92 @@ +# The LearningOnline Network with CAPA # The LON-CAPA Homework handler +# +# $Id: lonhomework.pm,v 1.79 2002/05/24 18:55:23 albertel Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# # Guy Albertelli # 11/30 Gerd Kortemeyer -# 6/1 Gerd Kortemeyer +# 6/1,8/17,8/18 Gerd Kortemeyer package Apache::lonhomework; use strict; -use Apache::style; -use Apache::lonxml; -use Apache::lonnet; -use Apache::inputtags; -use Apache::structuretags; -use Apache::response; -use Apache::hint; -use Apache::outputtags; +use Apache::style(); +use Apache::lonxml(); +use Apache::lonnet(); +use Apache::lonplot(); +use Apache::inputtags(); +use Apache::structuretags(); +use Apache::randomlabel(); +use Apache::response(); +use Apache::hint(); +use Apache::outputtags(); use Apache::Constants qw(:common); +use HTML::Entities(); +#use Time::HiRes qw( gettimeofday tv_interval ); + +BEGIN { + &Apache::lonxml::register_insert(); +} sub get_target { if ( $ENV{'request.state'} eq "published") { - if ( defined $ENV{'form.submitted'}) { + if ( defined($ENV{'form.grade_target'}) + && ($Apache::lonhomework::viewgrades == 'F' )) { + return ($ENV{'form.grade_target'}); + } + if ( defined($ENV{'form.submitted'})) { return ('grade', 'web'); } else { return ('web'); } } elsif ($ENV{'request.state'} eq "construct") { - if ( defined $ENV{'form.preview'}) { - if ( defined $ENV{'form.submitted'}) { + if ( defined($ENV{'form.grade_target'}) ) { + return ($ENV{'form.grade_target'}); + } + if ( defined($ENV{'form.preview'})) { + if ( defined($ENV{'form.submitted'})) { return ('grade', 'web'); } else { return ('web'); } } else { - #return ('edit'); - #edit is currently broken - return ('web'); + if ( $ENV{'form.problemmode'} eq 'View' ) { + if ( defined($ENV{'form.submitted'}) && + (!defined($ENV{'form.resetdata'})) ) { + return ('grade', 'web','answer'); + } else { + return ('web','answer'); + } + } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) { + if ( $ENV{'form.submitted'} eq 'edit' ) { + return ('modified','edit'); + } else { + return ('edit'); + } + } else { + return ('web'); + } } } return (); @@ -47,7 +101,6 @@ sub setup_vars { sub send_header { my ($request)= @_; $request->print(&Apache::lontexconvert::header()); - $ENV{'request.uri'}=$request->uri; # $request->print('
'; + $request->print($result); + return ''; +} + +sub renderpage { + my ($request,$file) = @_; + + my (@targets) = &get_target(); + &Apache::lonxml::debug("Running targets ".join(':',@targets)); foreach my $target (@targets) { - my $file=&Apache::lonnet::filelocation("",$request->uri); + #my $t0 = [&gettimeofday()]; 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=(); } + &Apache::edit::initialize_edit; + if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); } if ($target eq 'web') { - if (&Apache::lonnet::symbread() eq '') { + my ($symb)=&Apache::lonxml::whichuser(); + if ($symb eq '') { if ($ENV{'request.state'} eq "construct") { - $request->print("In construction space, submissions ignored