--- loncom/homework/lonhomework.pm 2004/02/13 21:27:22 1.164
+++ loncom/homework/lonhomework.pm 2004/04/17 14:06:41 1.174
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.164 2004/02/13 21:27:22 albertel Exp $
+# $Id: lonhomework.pm,v 1.174 2004/04/17 14:06:41 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,6 +47,7 @@ use Apache::externalresponse();
use Apache::rankresponse();
use Apache::matchresponse();
use Apache::chemresponse();
+use Apache::drawimage();
use Apache::Constants qw(:common);
use HTML::Entities();
use Apache::loncommon();
@@ -201,6 +202,18 @@ sub check_access {
my $passed;
if ($ENV{'request.state'} eq "construct") {
+ if ($ENV{'form.problemstate'}) {
+ if ($ENV{'form.problemstate'} =~ /^CANNOT_ANSWER/) {
+ if ( ! ($ENV{'form.problemstate'} eq 'CANNOT_ANSWER_correct' &&
+ lc($Apache::lonhomework::problemstatus) eq 'no')) {
+ return ('CANNOT_ANSWER',
+ &mt('is in this state due to author settings.'));
+ }
+ } else {
+ return ($ENV{'form.problemstate'},
+ &mt('is in this state due to author settings.'));
+ }
+ }
&Apache::lonxml::debug("in construction ignoring dates");
$status='CAN_ANSWER';
$datemsg=&mt('is in under construction');
@@ -386,29 +399,29 @@ sub handle_save_or_undo {
if ((!$error) && (!copy($filebak,$file))) { $error=1; }
if ((!$error) && (!move($filetmp,$filebak))) { $error=1; }
if (!$error) {
- $request->print("
".&mt("Undid changes, Switched")." $filebak ".&mt("and")." $file
");
+ &Apache::lonxml::info("".&mt("Undid changes, Switched")." $filebak ".&mt("and")." $file
");
} else {
- $request->print("".&mt("Unable to undo, unable to switch")." $filebak ".&mt("and")." $file
");
+ &Apache::lonxml::info("".&mt("Unable to undo, unable to switch")." $filebak ".&mt("and")." $file
");
$error=1;
}
} else {
my $fs=Apache::File->new(">$filebak");
if (defined($fs)) {
print $fs $$problem;
- $request->print("".&mt("Making Backup to").
- " $filebak
");
+ &Apache::lonxml::info("".&mt("Making Backup to").
+ " $filebak");
} else {
- $request->print("".&mt("Unable to make backup")." $filebak");
+ &Apache::lonxml::info("".&mt("Unable to make backup")." $filebak");
$error=2;
}
my $fh=Apache::File->new(">$file");
if (defined($fh)) {
print $fh $$result;
- $request->print("".&mt("Saving Modifications to").
- " $file
");
+ &Apache::lonxml::info("".&mt("Saving Modifications to").
+ " $file");
} else {
- $request->print("".
- &mt("Unable to write to")." $file");
+ &Apache::lonxml::info("".
+ &mt("Unable to write to")." $file");
$error|=4;
}
}
@@ -419,7 +432,7 @@ sub analyze_header {
my ($request) = @_;
my $result.='
'.&mt("Analyzing a problem").'
-
+ '.&Apache::lonxml::message_location().'
';
+ &Apache::lonxml::add_messages(\$result);
$request->print($result);
$request->rflush();
}
@@ -536,21 +550,23 @@ sub editxmlmode {
if ($cols > 80) { $cols = 80; }
if ($cols < 70) { $cols = 70; }
if ($rows < 20) { $rows = 20; }
- $result.='
+ $result.=''.
+ &Apache::lonxml::message_location().'
';
+ &Apache::lonxml::add_messages(\$result);
$request->print($result);
}
return '';
@@ -562,6 +578,7 @@ sub renderpage {
my (@targets) = &get_target();
&Apache::lonhomework::showhashsubset(\%ENV,'form.');
&Apache::lonxml::debug("Running targets ".join(':',@targets));
+ my $overall_result;
foreach my $target (@targets) {
#my $t0 = [&gettimeofday()];
my $problem=&Apache::lonnet::getfile($file);
@@ -593,12 +610,16 @@ sub renderpage {
#$result =~ s:::;
#$result.="
Spent $td seconds processing target $target\n";
#}
- $request->print($result);
- $request->rflush();
+# $request->print($result);
+ $overall_result.=$result;
+# $request->rflush();
}
#$request->print(":Result ends");
#my $td=&tv_interval($t0);
}
+ &Apache::lonxml::add_messages(\$overall_result);
+ $request->print($overall_result);
+ $request->rflush();
}
# with no arg it returns a HTML