--- loncom/homework/structuretags.pm 2012/04/11 11:40:00 1.504 +++ loncom/homework/structuretags.pm 2012/05/28 20:31:11 1.507 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.504 2012/04/11 11:40:00 goltermann Exp $ +# $Id: structuretags.pm,v 1.507 2012/05/28 20:31:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -996,7 +996,7 @@ sub firstaccess_msg { } elsif ($interval[1] eq 'course') { my $course = $env{'course.'.$env{'request.course.id'}.'.description'}; $result .= "

".&mt('The resources in "[_1]" are open for a limited time.',$course)."

" - .'

'.&mt('Once you click the "Show Resource" button below you have [_2] to omplete all resources "[_1]".' + .'

'.&mt('Once you click the "Show Resource" button below you have [_2] to complete all resources "[_1]".' ,$course,$time)."

"; } else { my $title=&Apache::lonnet::gettitle($symb); @@ -1162,7 +1162,20 @@ sub start_problem { my $accessmsg; my $name= &get_resource_name($parstack,$safeeval); - my ($result,$form_tag_start); + my ($result,$form_tag_start,$slot_name,$slot); + + if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || + $target eq 'tex') { + if ($env{'form.markaccess'}) { + my @interval=&Apache::lonnet::EXT("resource.0.interval"); + &Apache::lonnet::set_first_access($interval[1]); + } + + ($status,$accessmsg,$slot_name,$slot) = + &Apache::lonhomework::check_slot_access('0','problem'); + push (@Apache::inputtags::status,$status); + } + if ($target eq 'web' || $target eq 'webgrade' || $target eq 'tex' || $target eq 'edit') { ($result,$form_tag_start) = @@ -1175,20 +1188,14 @@ sub start_problem { if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval,$target); } if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { - if ($env{'form.markaccess'}) { - my @interval=&Apache::lonnet::EXT("resource.0.interval"); - &Apache::lonnet::set_first_access($interval[1]); - } - 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); - } - - ($status,$accessmsg,my $slot_name,my $slot) = - &Apache::lonhomework::check_slot_access('0','problem'); - push (@Apache::inputtags::status,$status); + 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); @@ -1490,7 +1497,13 @@ sub end_problem { $result.=""; } if ($target eq 'web') { - $result.= &Apache::loncommon::end_page({'discussion' => 1}); + # + # Closing not added by end_page(). + # Added separately at end of this routine, after added + # so document will be valid xhtml. + # + $result.= &Apache::loncommon::end_page({'discussion' => 1, + 'notbody' => 1}); } elsif ($target eq 'tex') { my $endminipage = ''; if (not $env{'form.problem_split'}=~/yes/) { @@ -1548,6 +1561,11 @@ sub end_problem { # if ($target eq 'web') { $result .= &Apache::lonhtmlcommon::set_compute_end_time(); + # + # Closing tags delayed so any tags + # not in head can appear inside body, for valid xhtml. + # + $result .= "\n"; } return $result; }