version 1.497.2.4, 2011/12/14 11:56:08
|
version 1.503, 2012/04/05 09:49:51
|
Line 61 use Apache::lonlocal;
|
Line 61 use Apache::lonlocal;
|
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::londefdef; |
use Apache::londefdef; |
use Apache::lonenc(); |
use Apache::lonenc(); |
|
use Apache::loncommon(); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA; |
use LONCAPA; |
Line 96 my %languages_required;
|
Line 97 my %languages_required;
|
sub select_hyphenation { |
sub select_hyphenation { |
my $language = shift; |
my $language = shift; |
|
|
$language = &Apache::loncommon::latex_language($language); # Translate -> latex language. |
$language = &Apache::loncommon::latexlanguage($language); # Translate -> latex language. |
|
|
# If there is no latex language there's not much we can do: |
# If there is no latex language there's not much we can do: |
|
|
if ($language) { |
if ($language) { |
&require_language($language); |
&require_language($language); |
my $babel_hyphenation = "\\select_language{$language}"; |
my $babel_hyphenation = "\\selectlanguage{$language}"; |
|
|
return $babel_hyphenation; |
return $babel_hyphenation; |
} else { |
} else { |
Line 110 sub select_hyphenation {
|
Line 111 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. |
# Clears the set of languages required by the document being rendered. |
# |
# |
sub clear_required_languages { |
sub clear_required_languages { |
Line 122 sub clear_required_languages {
|
Line 145 sub clear_required_languages {
|
# |
# |
sub require_language { |
sub require_language { |
my $language = shift; |
my $language = shift; |
|
|
$languages_required{$language} = 1; |
$languages_required{$language} = 1; |
} |
} |
|
|
Line 133 sub require_language {
|
Line 155 sub require_language {
|
# @retval \usepackage[lang1,lang2...]{babel} |
# @retval \usepackage[lang1,lang2...]{babel} |
# @retval '' if there are no languages_required. |
# @retval '' if there are no languages_required. |
sub languages_header { |
sub languages_header { |
|
|
my $header =''; |
my $header =''; |
my @languages = keys(%languages_required); |
my @languages = (keys(%languages_required)); |
|
|
# Only generate the header if there are languages: |
# Only generate the header if there are languages: |
|
|
Line 143 sub languages_header {
|
Line 164 sub languages_header {
|
my $language_list = join(',', (@languages)); |
my $language_list = join(',', (@languages)); |
$header = '\usepackage['.$language_list."]{babel}\n"; |
$header = '\usepackage['.$language_list."]{babel}\n"; |
} |
} |
|
|
return $header; |
return $header; |
} |
} |
|
|
Line 1040 sub reset_problem_globals {
|
Line 1060 sub reset_problem_globals {
|
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::results); |
undef(%Apache::lonhomework::results); |
undef($Apache::inputtags::part); |
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 |
#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 |
#detect if we try to do 2 problems in one file |
# undef($Apache::lonhomework::parsing_a_problem); |
# undef($Apache::lonhomework::parsing_a_problem); |
Line 1156 sub start_problem {
|
Line 1179 sub start_problem {
|
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
&Apache::lonnet::set_first_access($interval[1]); |
&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) = |
($status,$accessmsg,my $slot_name,my $slot) = |
&Apache::lonhomework::check_slot_access('0','problem'); |
&Apache::lonhomework::check_slot_access('0','problem'); |
push (@Apache::inputtags::status,$status); |
push (@Apache::inputtags::status,$status); |
Line 1209 sub start_problem {
|
Line 1238 sub start_problem {
|
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'NOT_IN_A_SLOT') || |
( $status eq 'NOT_IN_A_SLOT') || |
|
( $status eq 'NOTRESERVABLE') || |
|
( $status eq 'RESERVABLE') || |
|
( $status eq 'RESERVABLE_LATER') || |
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
Line 1218 sub start_problem {
|
Line 1250 sub start_problem {
|
$msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>'; |
$msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>'; |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
$msg.='<h1>'.&mt('You are not currently signed up to work at this time and/or place.').'</h1>'; |
$msg.='<h1>'.&mt('You are not currently signed up to work at this time and/or place.').'</h1>'; |
|
} elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || |
|
($status eq 'NOTRESERVABLE')) { |
|
$msg.='<h1>'.&mt('Access requires reservation to work at specific time/place.').'</h1>'; |
} elsif ($status ne 'NOT_YET_VIEWED') { |
} elsif ($status ne 'NOT_YET_VIEWED') { |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
} |
} |
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
$msg.=&mt('The problem ').$accessmsg; |
$msg.=&mt('The problem ').$accessmsg; |
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
Line 1229 sub start_problem {
|
Line 1264 sub start_problem {
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
$msg.=&firstaccess_msg($accessmsg,$symb); |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
$msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
$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')). |
|
'<br />'. |
|
&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.'<br />'; |
$result.=$msg.'<br />'; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
Line 1289 sub start_problem {
|
Line 1334 sub start_problem {
|
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
|
$result .= &select_metadata_hyphenation(); |
|
|
|
|
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
Line 1345 sub end_problem {
|
Line 1392 sub end_problem {
|
} |
} |
my $name_of_resourse= &Apache::lonxml::latex_special_symbols(&get_resource_name($parstack,$safeeval),'header'); |
my $name_of_resourse= &Apache::lonxml::latex_special_symbols(&get_resource_name($parstack,$safeeval),'header'); |
my $begin_doc=' \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$env{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent '; |
my $begin_doc=' \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$env{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent '; |
|
&clear_required_languages(); |
my $toc_line='\vskip 1 mm\noindent '.$startminipage. |
my $toc_line='\vskip 1 mm\noindent '.$startminipage. |
'\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}'; |
'\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}'; |
|
|
Line 1493 sub end_problem {
|
Line 1541 sub end_problem {
|
|
|
&reset_problem_globals('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; |
return $result; |
} |
} |
|
|
Line 1801 sub end_languageblock {
|
Line 1857 sub end_languageblock {
|
$result = &select_hyphenation($which); |
$result = &select_hyphenation($which); |
} |
} |
$result .= $available_texts{$which}; |
$result .= $available_texts{$which}; |
|
if ($target eq 'tex') { |
|
$result .= &select_metadata_hyphenation(); # Restore original language. |
|
} |
} |
} |
undef(%available_texts); |
undef(%available_texts); |
&Apache::lonxml::deregister('Apache::structuretags',('lang')); |
&Apache::lonxml::deregister('Apache::structuretags',('lang')); |