version 1.387, 2007/08/08 19:13:19
|
version 1.399, 2007/09/12 08:35:44
|
Line 42 use lib '/home/httpd/lib/perl/';
|
Line 42 use lib '/home/httpd/lib/perl/';
|
use LONCAPA; |
use LONCAPA; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
} |
} |
|
|
sub start_web { |
sub start_web { |
Line 157 function setSubmittedPart (part) {
|
Line 157 function setSubmittedPart (part) {
|
$body_args{'no_title'} = 1; |
$body_args{'no_title'} = 1; |
$body_args{'force_register'} = 1; |
$body_args{'force_register'} = 1; |
$body_args{'add_entries'} = \%add_entries; |
$body_args{'add_entries'} = \%add_entries; |
|
if ($env{'environment.remote'} eq 'off' |
|
&& $env{'request.state'} eq 'construct') { |
|
$body_args{'only_body'} = 1; |
|
} |
} |
} |
$body_args{'no_auto_mt_title'} = 1; |
$body_args{'no_auto_mt_title'} = 1; |
my $page_start = &Apache::loncommon::start_page($name,$extra_head, |
my $page_start = &Apache::loncommon::start_page($name,$extra_head, |
Line 202 function setSubmittedPart (part) {
|
Line 206 function setSubmittedPart (part) {
|
#use Time::HiRes(); |
#use Time::HiRes(); |
sub get_resource_name { |
sub get_resource_name { |
my ($parstack,$safeeval)=@_; |
my ($parstack,$safeeval)=@_; |
|
my $name; |
if (defined($Apache::lonhomework::name)) { |
if (defined($Apache::lonhomework::name)) { |
return $Apache::lonhomework::name; |
$name = $Apache::lonhomework::name; |
} |
} else { |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($symb)=&Apache::lonnet::whichuser(); |
my $name=&Apache::lonnet::gettitle($symb); |
$name=&Apache::lonnet::gettitle($symb); |
if ($name eq '') { |
if ($name eq '') { |
$name=&Apache::lonnet::EXT('resource.title'); |
$name=&Apache::lonnet::EXT('resource.title'); |
if ($name eq 'con_lost') { $name = ''; } |
if ($name eq 'con_lost') { $name = ''; } |
} |
} |
if ($name!~/\S+/) { |
if ($name!~/\S+/) { |
$name=$env{'request.uri'}; |
$name=$env{'request.uri'}; |
$name=~s-.*/([^/]+)$-$1-; |
$name=~s-.*/([^/]+)$-$1-; |
|
} |
|
# The name has had html tags escaped: |
|
|
|
$name=~s/</</gs; |
|
$name=~s/>/>/gs; |
|
|
|
$Apache::lonhomework::name=$name; |
} |
} |
$Apache::lonhomework::name=$name; |
|
return $name; |
return $name; |
} |
} |
|
|
Line 637 sub start_problem {
|
Line 648 sub start_problem {
|
} |
} |
|
|
if ($target ne 'analyze') { |
if ($target ne 'analyze') { |
if ($env{'request.state'} eq 'construct') { &set_problem_state('0'); } |
|
$Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type'); |
$Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type'); |
if (($env{'request.state'} eq 'construct') && |
if (($env{'request.state'} eq 'construct') && |
defined($env{'form.problemtype'})) { |
defined($env{'form.problemtype'})) { |
Line 658 sub start_problem {
|
Line 668 sub start_problem {
|
$Apache::lonhomework::default_type = $Apache::lonhomework::type; |
$Apache::lonhomework::default_type = $Apache::lonhomework::type; |
|
|
&initialize_storage(); |
&initialize_storage(); |
|
if ($target ne 'analyze' |
|
&& $env{'request.state'} eq 'construct') { |
|
&set_problem_state('0'); |
|
} |
|
|
if ($target eq 'web') { |
if ($target eq 'web') { |
&Apache::lonxml::debug(" grading history "); |
&Apache::lonxml::debug(" grading history "); |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
Line 750 sub start_problem {
|
Line 765 sub start_problem {
|
$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.='The problem '.$accessmsg; |
$msg.=&mt('The problem ').$accessmsg; |
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
$msg.=&checkout_msg(); |
$msg.=&checkout_msg(); |
} elsif ($status eq 'NOT_YET_VIEWED') { |
} elsif ($status eq 'NOT_YET_VIEWED') { |
Line 1055 sub start_definetag {
|
Line 1070 sub start_definetag {
|
|
|
my $name = $token->[2]->{'name'}; |
my $name = $token->[2]->{'name'}; |
my $skip=&Apache::lonxml::get_all_text("/definetag",$parser,$style); |
my $skip=&Apache::lonxml::get_all_text("/definetag",$parser,$style); |
if ($name=~/^\//) { |
if ($target eq 'web') { |
$result= |
if ($name=~/^\//) { |
'<br /><table bgcolor="#FFBBBB"><tr><th>END <tt>'.$name.'</tt></th></tr>'; |
$result= |
} else { |
'<br /><table class="LC_sty_end"><tr><th>'. |
$result= |
&mt('END [_1]'.'<tt>'.$name.'</tt>').'</th></tr>'; |
'<br /><table bgcolor="#BBFFBB"><tr><th>BEGIN <tt>'.$name.'</tt></th></tr>'; |
} else { |
|
$result= |
|
'<br /><table class="LC_sty_begin"><tr><th>'. |
|
&mt('BEGIN [_1]'.'<tt>'.$name.'</tt>').'</th></tr>'; |
|
} |
|
$skip = &HTML::Entities::encode($skip, '<>&"'); |
|
$result.='<tr><td><pre>'.$skip.'</pre></td></tr></table>'; |
} |
} |
$skip=~s/\</\<\;/gs; |
|
$skip=~s/\>/\>\;/gs; |
|
$result.='<tr><td><pre>'.$skip.'</pre></td></tr></table>'; |
|
return $result; |
return $result; |
} |
} |
|
|
Line 1125 sub start_languageblock {
|
Line 1143 sub start_languageblock {
|
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') { |
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') { |
my $include = $token->[2]->{'include'}; |
my $include = $token->[2]->{'include'}; |
my $exclude = $token->[2]->{'exclude'}; |
my $exclude = $token->[2]->{'exclude'}; |
my %languages=&Apache::loncommon::display_languages(); |
my @preferred_languages=&Apache::loncommon::preferred_languages(); |
$result='1'; |
# This should not even happen, since we should at least have the server language |
if ($include) { |
if (!$preferred_languages[0]) { $preferred_languages[0]='en'; } |
$result=''; |
# Now loop over all languages in order of preference |
foreach (split(/\,/,$include)) { |
foreach my $preferred_language (@preferred_languages) { |
if ($languages{$_}) { $result='1'; } |
# If the languageblock has no arguments, show the contents |
} |
$result=1; |
} |
my $found=0; |
if ($exclude) { |
# Do we have an include argument? |
foreach (split(/\,/,$exclude)) { |
if ($include) { |
if ($languages{$_}) { $result='0'; } |
# If include is specified, by default, don't render the block |
} |
$result=0; |
} |
foreach my $included_language (split(/\,/,$include)) { |
|
# ... but if my preferred language is included, render it |
|
if ($included_language eq $preferred_language) { |
|
$result=1; |
|
$found=1; |
|
} |
|
} |
|
} |
|
# Do we have an exclude argument? |
|
if ($exclude) { |
|
$result=1; |
|
foreach my $excluded_language (split(/\,/,$exclude)) { |
|
if ($excluded_language eq $preferred_language) { |
|
$result=0; |
|
$found=1; |
|
} |
|
} |
|
} |
|
if ($found) { last; } |
|
} |
if ( ! $result ) { |
if ( ! $result ) { |
my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser, |
my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser, |
$style); |
$style); |
Line 1169 sub end_languageblock {
|
Line 1206 sub end_languageblock {
|
return $result; |
return $result; |
} |
} |
|
|
|
{ |
|
my %available_texts; |
|
sub start_translated { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
&Apache::lonxml::register('Apache::structuretags',('lang')); |
|
undef(%available_texts); |
|
} |
|
|
|
sub end_translated { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
my $result; |
|
#show the translation on viewable targets |
|
if ($target eq 'web' || $target eq 'tex' || $target eq 'webgrade'|| |
|
# or non-viewable targets, if it's embedded in something that |
|
# wants the output |
|
(($target eq 'answer' || $target eq 'analyze'|| $target eq 'grade') |
|
&& &Apache::lonxml::in_redirection() ) ) { |
|
my @possibilities = keys(%available_texts); |
|
my $which = |
|
&Apache::loncommon::languages(\@possibilities) || 'default'; |
|
$result = $available_texts{$which}; |
|
} |
|
undef(%available_texts); |
|
&Apache::lonxml::deregister('Apache::structuretags',('lang')); |
|
return $result; |
|
} |
|
|
|
|
|
sub start_lang { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') { |
|
&Apache::lonxml::startredirection(); |
|
} |
|
return ''; |
|
} |
|
|
|
sub end_lang { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') { |
|
my $result = &Apache::lonxml::endredirection(); |
|
my $which = &Apache::lonxml::get_param('which',$parstack, |
|
$safeeval); |
|
$available_texts{$which} = $result; |
|
} |
|
return ''; |
|
} |
|
} |
|
|
sub start_instructorcomment { |
sub start_instructorcomment { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
|
Line 1427 sub start_part {
|
Line 1514 sub start_part {
|
if ($target eq 'tex') { |
if ($target eq 'tex') { |
if (not $env{'form.problem_split'}=~/yes/) { |
if (not $env{'form.problem_split'}=~/yes/) { |
if ($$tagstack[-2] eq 'td') { |
if ($$tagstack[-2] eq 'td') { |
$result.='\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; |
$result.='\noindent \begin{minipage}{\textwidth}\noindent'; |
} else { |
} else { |
$result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; |
$result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; |
} |
} |