--- loncom/homework/structuretags.pm 2012/05/28 20:31:11 1.507 +++ loncom/homework/structuretags.pm 2012/09/12 05:14:09 1.508 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.507 2012/05/28 20:31:11 raeburn Exp $ +# $Id: structuretags.pm,v 1.508 2012/09/12 05:14:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1160,6 +1160,7 @@ sub start_problem { &Apache::run::run($expression,$safeeval); my $status; my $accessmsg; + my $resource_due; my $name= &get_resource_name($parstack,$safeeval); my ($result,$form_tag_start,$slot_name,$slot); @@ -1189,14 +1190,6 @@ sub start_problem { if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { - if ($status eq 'CAN_ANSWER') { - my $resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); - my $time_left = $resource_due - time(); - if ($resource_due && ($time_left > 0) && ($target eq 'web')) { - $result .= &Apache::lonhtmlcommon::set_due_date($resource_due); - } - } - #handle rand seed in construction space my $rndseed=&setup_rndseed($safeeval,$target); my ($symb)=&Apache::lonnet::whichuser(); @@ -1305,13 +1298,35 @@ sub start_problem { 'problem'); } } elsif ($target eq 'web') { - if ($status eq 'CAN_ANSWER' - && $slot_name ne '' - && $Apache::lonhomework::history{'resource.0.checkedin'} eq '') { - # unproctored slot access, self checkin - &Apache::bridgetask::check_in('problem',undef,undef, - $slot_name); - } + if ($status eq 'CAN_ANSWER') { + $resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); + if ($slot_name ne '') { + my $checked_in = + $Apache::lonhomework::history{'resource.0.checkedin'}; + if ($checked_in eq '') { + # unproctored slot access, self checkin + &Apache::bridgetask::check_in('problem',undef,undef, + $slot_name); + $checked_in = + $Apache::lonhomework::results{"resource.0.checkedin"}; + } + if ((ref($slot) eq 'HASH') && ($checked_in ne '')) { + if ($slot->{'starttime'} < time()) { + if (!$resource_due) { + $resource_due = $slot->{'endtime'}; + } elsif ($slot->{'endtime'} < $resource_due) { + $resource_due = $slot->{'endtime'}; + } + } + } + } + if ($resource_due) { + my $time_left = $resource_due - time(); + if ($resource_due && ($time_left > 0) && ($target eq 'web')) { + $result .= &Apache::lonhtmlcommon::set_due_date($resource_due); + } + } + } $result.="\n $form_tag_start \t". ''; # create a page header and exit