--- loncom/homework/structuretags.pm 2011/12/27 19:48:31 1.497.2.6 +++ loncom/homework/structuretags.pm 2012/04/04 10:48:30 1.502 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.497.2.6 2011/12/27 19:48:31 foxr Exp $ +# $Id: structuretags.pm,v 1.502 2012/04/04 10:48:30 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1060,6 +1060,9 @@ sub reset_problem_globals { undef(%Apache::lonhomework::history); undef(%Apache::lonhomework::results); undef($Apache::inputtags::part); + if ($type eq 'Task') { + undef($Apache::inputtags::slot_name); + } #don't undef this, lonhomework.pm takes care of this, we use this to #detect if we try to do 2 problems in one file # undef($Apache::lonhomework::parsing_a_problem); @@ -1176,7 +1179,13 @@ sub start_problem { 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)) { + $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); @@ -1229,6 +1238,9 @@ sub start_problem { ( $status eq 'BANNED') || ( $status eq 'UNAVAILABLE') || ( $status eq 'NOT_IN_A_SLOT') || + ( $status eq 'NOTRESERVABLE') || + ( $status eq 'RESERVABLE') || + ( $status eq 'RESERVABLE_LATER') || ( $status eq 'INVALID_ACCESS')) { my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, $style); @@ -1238,9 +1250,12 @@ sub start_problem { $msg.='

'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'

'; } elsif ($status eq 'NOT_IN_A_SLOT') { $msg.='

'.&mt('You are not currently signed up to work at this time and/or place.').'

'; + } elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || + ($status eq 'NOTRESERVABLE')) { + $msg.='

'.&mt('Access requires reservation to work at specific time/place.').'

'; } elsif ($status ne 'NOT_YET_VIEWED') { $msg.='

'.&mt('Not open to be viewed').'

'; - } + } if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { $msg.=&mt('The problem ').$accessmsg; } elsif ($status eq 'UNCHECKEDOUT') { @@ -1249,6 +1264,16 @@ sub start_problem { $msg.=&firstaccess_msg($accessmsg,$symb); } elsif ($status eq 'NOT_IN_A_SLOT') { $msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); + } elsif ($status eq 'RESERVABLE') { + $msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', + &Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). + '
'. + &Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); + } elsif ($status eq 'RESERVABLE_LATER') { + $msg.=&mt('Window to make a reservation will open [_1].', + &Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); + } elsif ($status eq 'NOTRESERVABLE') { + $msg.=&mt('Not available to make a reservation.'); } $result.=$msg.'
'; } elsif ($target eq 'tex') { @@ -1516,6 +1541,14 @@ sub end_problem { &reset_problem_globals('problem'); + # + # This shouild be just above the return so that the + # time put in the javascript is as late as possible in the + # computation: + # + if ($target eq 'web') { + $result .= &Apache::lonhtmlcommon::set_compute_end_time(); + } return $result; } @@ -1824,7 +1857,9 @@ sub end_languageblock { $result = &select_hyphenation($which); } $result .= $available_texts{$which}; - $result .= &select_metadata_hyphenation(); # Restore original language. + if ($target eq 'tex') { + $result .= &select_metadata_hyphenation(); # Restore original language. + } } undef(%available_texts); &Apache::lonxml::deregister('Apache::structuretags',('lang'));