--- loncom/homework/lonhomework.pm 2007/03/06 19:05:58 1.265 +++ loncom/homework/lonhomework.pm 2007/07/23 23:30:47 1.268 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.265 2007/03/06 19:05:58 albertel Exp $ +# $Id: lonhomework.pm,v 1.268 2007/07/23 23:30:47 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -112,7 +112,10 @@ sub get_target { return ('web'); } } else { - if ( $env{'form.problemmode'} eq &mt('View') || + if ($env{'form.problemstate'} eq 'WEB_GRADE') { + #$env{'form.webgrade'} = 'yes'; + return ('grade','webgrade','answer'); + } elsif ( $env{'form.problemmode'} eq &mt('View') || $env{'form.problemmode'} eq &mt('Discard Edits and View')) { if ( defined($env{'form.submitted'}) && (!defined($env{'form.resetdata'})) && @@ -662,9 +665,19 @@ sub handle_save_or_undo { if ((!$error) && (!copy($filebak,$file))) { $error=1; } if ((!$error) && (!move($filetmp,$filebak))) { $error=1; } if (!$error) { - &Apache::lonxml::info("

".&mt("Undid changes, Switched")." $filebak ".&mt("and")." $file

"); + &Apache::lonxml::info("

". + &mt("Undid changes, Switched [_1] and [_2]", + ''.$filebak. + '', + ''.$file. + '')."

"); } else { - &Apache::lonxml::info("

".&mt("Unable to undo, unable to switch")." $filebak ".&mt("and")." $file

"); + &Apache::lonxml::info("

". + &mt("Unable to undo, unable to switch [_1] and [_2]", + ''. + $filebak.'', + ''. + $file.'')."

"); $error=1; } } else { @@ -672,20 +685,29 @@ sub handle_save_or_undo { my $fs=Apache::File->new(">$filebak"); if (defined($fs)) { print $fs $$problem; - &Apache::lonxml::info("".&mt("Making Backup to"). - " $filebak"); + &Apache::lonxml::info("".&mt("Making Backup to [_1]", + ''. + $filebak.''). + ""); } else { - &Apache::lonxml::info("".&mt("Unable to make backup")." $filebak"); + &Apache::lonxml::info("". + &mt("Unable to make backup [_1]", + ''. + $filebak.'').""); $error=2; } my $fh=Apache::File->new(">$file"); if (defined($fh)) { print $fh $$result; - &Apache::lonxml::info("".&mt("Saving Modifications to"). - " $file"); + &Apache::lonxml::info("".&mt("Saving Modifications to [_1]", + ''. + $file.'' ).""); } else { - &Apache::lonxml::info("". - &mt("Unable to write to")." $file"); + &Apache::lonxml::info(''. + &mt("Unable to write to [_1]", + ''. + $file.''). + ''); $error|=4; } } @@ -759,7 +781,7 @@ sub analyze { $answer_part); my $concatanswer= join("\0",@{ $answer_part }); if (($concatanswer eq '') || ($concatanswer=~/^\@/)) { - $answer_part = [''.&mt('Error').'']; + $answer_part = [''.&mt('Error').'']; } $seedexample{join("\0",$part,$i,@{$answer_part})}= $thisseed; @@ -879,6 +901,7 @@ sub renderpage { my @targets = @{$targets || [&get_target()]}; &Apache::lonhomework::showhashsubset(\%env,'form.'); &Apache::lonxml::debug("Running targets ".join(':',@targets)); + my $overall_result; foreach my $target (@targets) { # FIXME need to do something intelligent when a problem goes @@ -955,7 +978,9 @@ sub get_template_list { my @allnames; &Apache::lonxml::debug("Looking for :$extension:"); foreach my $file () { + &Apache::lonxml::debug("Looking at $file"); my $name=&Apache::lonnet::metadata($file,'title'); + &Apache::lonxml::debug("Got a name $name"); if ($namewanted && ($name eq $namewanted)) { $result=$file; last; @@ -999,7 +1024,7 @@ sub newproblem { my $dest = &Apache::lonnet::filelocation("",$request->uri); my $errormsg; if ($env{'form.newfile'}) { - $errormsg='

'.&mt('You did not select a template.').'

'."\n"; + $errormsg='

'.&mt('You did not select a template.').'

'."\n"; } my $instructions; my $start_page = @@ -1025,6 +1050,24 @@ $errormsg return ''; } +sub update_construct_style { + if ($env{'request.state'} eq "construct" + && $env{'form.problemmode'} eq &mt('View') + && defined($env{'form.submitted'}) + && !defined($env{'form.resetdata'}) + && !defined($env{'form.newrandomization'})) { + if ((!$env{'form.style_file'} && $env{'construct.style'}) + ||$env{'form.clear_style_file'}) { + &Apache::lonnet::delenv('construct\\.style'); + } elsif ($env{'form.style_file'} + && $env{'construct.style'} ne $env{'form.style_file'}) { + &Apache::lonnet::appenv('construct.style' => + $env{'form.style_file'}); + } + } +} + + sub handler { #my $t0 = [&gettimeofday()]; my $request=$_[0]; @@ -1075,6 +1118,7 @@ sub handler { } elsif ($env{'form.problemmode'} eq &mt('Calculate answers')) { &analyze($request,$file); } else { + &update_construct_style(); &renderpage($request,$file); } } else {