--- loncom/homework/structuretags.pm 2011/12/26 13:45:10 1.497.2.5 +++ loncom/homework/structuretags.pm 2012/03/25 14:35:58 1.501 @@ -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.5 2011/12/26 13:45:10 foxr Exp $ +# $Id: structuretags.pm,v 1.501 2012/03/25 14:35:58 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,6 +61,7 @@ use Apache::lonlocal; use Apache::lonxml; use Apache::londefdef; use Apache::lonenc(); +use Apache::loncommon(); use Time::HiRes qw( gettimeofday tv_interval ); use lib '/home/httpd/lib/perl/'; use LONCAPA; @@ -110,6 +111,28 @@ sub select_hyphenation { } } ## +# Selects hyphenation based on the current problem metadata. +# This requires that +# - There is a language metadata item set for the problem. +# - The language has a latex/babel hyphenation. +# +# @note: Uses &Apache::lonxml::request to locate the Uri associated with +# this problem. +# @return string (possibly empty). +# @retval If not empty an appropriate \selectlanguage{} directive. +# +sub select_metadata_hyphenation { + my $uri = $Apache::lonxml::request->uri; + my $language = &Apache::lonnet::metadata($uri, 'language'); + my $latex_language = &Apache::loncommon::latexhyphenation($language); + if ($latex_language) { + return '\selectlanguage{'.$latex_language."}\n"; + } + return ''; # no latex hyphenation or no lang metadata. +} + + +## # Clears the set of languages required by the document being rendered. # sub clear_required_languages { @@ -1037,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); @@ -1153,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); @@ -1206,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); @@ -1215,9 +1250,12 @@ sub start_problem { $msg.='