version 1.159, 2003/12/22 22:15:27
|
version 1.165, 2004/02/16 17:20:39
|
Line 201 sub check_access {
|
Line 201 sub check_access {
|
my $passed; |
my $passed; |
|
|
if ($ENV{'request.state'} eq "construct") { |
if ($ENV{'request.state'} eq "construct") { |
|
if (defined($ENV{'form.problemstatus'})) { |
|
if ($ENV{'form.problemstate'} =~ /^CANNOT_ANSWER/) { |
|
return ('CANNOT_ANSWER','is in this state by royal decree.'); |
|
} else { |
|
return ($ENV{'form.problemstate'}, |
|
'is in this state by royal decree.'); |
|
} |
|
} |
&Apache::lonxml::debug("in construction ignoring dates"); |
&Apache::lonxml::debug("in construction ignoring dates"); |
$status='CAN_ANSWER'; |
$status='CAN_ANSWER'; |
$datemsg=&mt('is in under construction'); |
$datemsg=&mt('is in under construction'); |
return ($status,$datemsg); |
# return ($status,$datemsg); |
} |
} |
|
|
&Apache::lonxml::debug("checking for part :$id:"); |
&Apache::lonxml::debug("checking for part :$id:"); |
&Apache::lonxml::debug("time:".time); |
&Apache::lonxml::debug("time:".time); |
|
|
my $allowed=&check_ip_acc(&Apache::lonnet::EXT("resource.$id.acc")); |
|
if (!$allowed) { |
|
$status='INVALID_ACCESS'; |
|
$date=&mt("can not be accessed from your location."); |
|
return($status,$date); |
|
} |
|
|
|
foreach $temp ("opendate","duedate","answerdate") { |
if ($ENV{'request.state'} ne "construct") { |
$lastdate = $date; |
my $allowed=&check_ip_acc(&Apache::lonnet::EXT("resource.$id.acc")); |
$date = &Apache::lonnet::EXT("resource.$id.$temp"); |
if (!$allowed && ($Apache::lonhomework::browse ne 'F')) { |
my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type"); |
$status='INVALID_ACCESS'; |
if ($thistype =~ /^(con_lost|no_such_host)/ || |
$date=&mt("can not be accessed from your location."); |
$date =~ /^(con_lost|no_such_host)/) { |
|
$status='UNAVAILABLE'; |
|
$date=&mt("may open later."); |
|
return($status,$date); |
return($status,$date); |
} |
} |
if ($thistype eq 'date_interval') { |
|
if ($temp eq 'opendate') { |
foreach $temp ("opendate","duedate","answerdate") { |
$date=&Apache::lonnet::EXT("resource.$id.duedate")-$date; |
$lastdate = $date; |
|
$date = &Apache::lonnet::EXT("resource.$id.$temp"); |
|
my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type"); |
|
if ($thistype =~ /^(con_lost|no_such_host)/ || |
|
$date =~ /^(con_lost|no_such_host)/) { |
|
$status='UNAVAILABLE'; |
|
$date=&mt("may open later."); |
|
return($status,$date); |
} |
} |
if ($temp eq 'answerdate') { |
if ($thistype eq 'date_interval') { |
$date=&Apache::lonnet::EXT("resource.$id.duedate")+$date; |
if ($temp eq 'opendate') { |
|
$date=&Apache::lonnet::EXT("resource.$id.duedate")-$date; |
|
} |
|
if ($temp eq 'answerdate') { |
|
$date=&Apache::lonnet::EXT("resource.$id.duedate")+$date; |
|
} |
} |
} |
|
&Apache::lonxml::debug("found :$date: for :$temp:"); |
|
if ($date eq '') { |
|
$date = &mt("an unknown date"); $passed = 0; |
|
} elsif ($date eq 'con_lost') { |
|
$date = &mt("an indeterminate date"); $passed = 0; |
|
} else { |
|
if (time < $date) { $passed = 0; } else { $passed = 1; } |
|
$date = localtime $date; |
|
} |
|
if (!$passed) { $type=$temp; last; } |
} |
} |
&Apache::lonxml::debug("found :$date: for :$temp:"); |
&Apache::lonxml::debug("have :$type:$passed:"); |
if ($date eq '') { |
if ($passed) { |
$date = &mt("an unknown date"); $passed = 0; |
$status='SHOW_ANSWER'; |
} elsif ($date eq 'con_lost') { |
$datemsg=$date; |
$date = &mt("an indeterminate date"); $passed = 0; |
} elsif ($type eq 'opendate') { |
} else { |
$status='CLOSED'; |
if (time < $date) { $passed = 0; } else { $passed = 1; } |
$datemsg = &mt("will open on")." $date"; |
$date = localtime $date; |
} elsif ($type eq 'duedate') { |
|
$status='CAN_ANSWER'; |
|
$datemsg = &mt("is due at")." $date"; |
|
} elsif ($type eq 'answerdate') { |
|
$status='CLOSED'; |
|
$datemsg = &mt("was due on")." $lastdate".&mt(", and answers will be available on")." $date"; |
} |
} |
if (!$passed) { $type=$temp; last; } |
|
} |
|
&Apache::lonxml::debug("have :$type:$passed:"); |
|
if ($passed) { |
|
$status='SHOW_ANSWER'; |
|
$datemsg=$date; |
|
} elsif ($type eq 'opendate') { |
|
$status='CLOSED'; |
|
$datemsg = &mt("will open on")." $date"; |
|
} elsif ($type eq 'duedate') { |
|
$status='CAN_ANSWER'; |
|
$datemsg = &mt("is due at")." $date"; |
|
} elsif ($type eq 'answerdate') { |
|
$status='CLOSED'; |
|
$datemsg = &mt("was due on")." $lastdate".&mt(", and answers will be available on")." $date"; |
|
} |
} |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
#check #tries, and if correct. |
#check #tries, and if correct. |
my $tries = $Apache::lonhomework::history{"resource.$id.tries"}; |
my $tries = $Apache::lonhomework::history{"resource.$id.tries"}; |
my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries"); |
my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries"); |
if ( $tries eq '' ) { $tries = '0'; } |
if ( $tries eq '' ) { $tries = '0'; } |
if ( $maxtries eq '' ) { $maxtries = '2'; } |
if ( $maxtries eq '' && |
if ($tries >= $maxtries) { $status = 'CANNOT_ANSWER'; } |
$ENV{'request.state'} ne 'construct') { $maxtries = '2'; } |
|
if ($maxtries && $tries >= $maxtries) { $status = 'CANNOT_ANSWER'; } |
# if (correct and show prob status) or excused then CANNOT_ANSWER |
# if (correct and show prob status) or excused then CANNOT_ANSWER |
if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/ |
if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/ |
&& |
&& |
Line 490 sub analyze {
|
Line 501 sub analyze {
|
} |
} |
$request->print('</table>'); |
$request->print('</table>'); |
} else { |
} else { |
$request->print('<p>'.&mt('Part').' '.$part.' '. |
$request->print('<p>'.&mt('Response').' '.$part.' '. |
&mt('is not analyzable at this time').'</p>'); |
&mt('is not analyzable at this time').'</p>'); |
} |
} |
} |
} |
if (scalar(keys(%allparts)) == 0 ) { |
if (scalar(keys(%allparts)) == 0 ) { |
$request->print('<p>'.&mt('Found no analyzable parts in this problem, currently only Numerical, Formula and String response styles are supported.').'</p>'); |
$request->print('<p>'.&mt('Found no analyzable respones in this problem, currently only Numerical, Formula and String response styles are supported.').'</p>'); |
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state); |
&analyze_footer($request); |
&analyze_footer($request); |
Line 524 sub editxmlmode {
|
Line 535 sub editxmlmode {
|
&renderpage($request,$file); |
&renderpage($request,$file); |
} else { |
} else { |
my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem); |
my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem); |
my $xml_help = Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index", |
my $xml_help = '<table><tr><td>'. |
"Problem Editing Help"); |
&Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index", |
|
"Problem Editing Help"). |
|
'</td><td>'. |
|
&Apache::loncommon::help_open_faq(5). |
|
&Apache::loncommon::help_open_bug('Authoring').'</td></tr></table>'; |
if ($cols > 80) { $cols = 80; } |
if ($cols > 80) { $cols = 80; } |
if ($cols < 70) { $cols = 70; } |
if ($cols < 70) { $cols = 70; } |
if ($rows < 20) { $rows = 20; } |
if ($rows < 20) { $rows = 20; } |
Line 553 sub renderpage {
|
Line 568 sub renderpage {
|
my ($request,$file) = @_; |
my ($request,$file) = @_; |
|
|
my (@targets) = &get_target(); |
my (@targets) = &get_target(); |
|
&Apache::lonhomework::showhashsubset(\%ENV,'form.'); |
&Apache::lonxml::debug("Running targets ".join(':',@targets)); |
&Apache::lonxml::debug("Running targets ".join(':',@targets)); |
foreach my $target (@targets) { |
foreach my $target (@targets) { |
#my $t0 = [&gettimeofday()]; |
#my $t0 = [&gettimeofday()]; |
Line 701 sub handler {
|
Line 717 sub handler {
|
my $request=$_[0]; |
my $request=$_[0]; |
|
|
$Apache::lonxml::debug=$ENV{'user.debug'}; |
$Apache::lonxml::debug=$ENV{'user.debug'}; |
|
|
if (&setupheader($request)) { return OK; } |
if (&setupheader($request)) { return OK; } |
$ENV{'request.uri'}=$request->uri; |
$ENV{'request.uri'}=$request->uri; |
|
|