Diff for /loncom/homework/structuretags.pm between versions 1.389 and 1.398

version 1.389, 2007/08/14 01:45:20 version 1.398, 2007/09/12 07:59:51
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 207  sub get_resource_name { Line 211  sub get_resource_name {
  $name = $Apache::lonhomework::name;   $name = $Apache::lonhomework::name;
     } else {      } 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 = ''; }
Line 644  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 762  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 1067  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/\</\&lt\;/gs;  
     $skip=~s/\>/\&gt\;/gs;  
     $result.='<tr><td><pre>'.$skip.'</pre></td></tr></table>';  
     return $result;      return $result;
 }  }
   
Line 1137  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';
  }  # Do we have an include argument?
         if ($exclude) {     if ($include) {
             foreach (split(/\,/,$exclude)) {  # If include is specified, by default, don't render the block
                 if ($languages{$_}) { $result='0'; }                $result='';
             }                foreach my $included_language (split(/\,/,$include)) {
  }  # ... but if my preferred language is included, render it
                    if ($included_language eq $preferred_language) {
                       $result='1'; 
                       last; 
                    }
                 }
      }
   # Do we have an exclude argument?
              if ($exclude) {
                 $result='1';
                 foreach my $excluded_language (split(/\,/,$exclude)) {
                    if ($excluded_language eq $preferred_language) {
                       $result='0';
                       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 1181  sub end_languageblock { Line 1204  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)=@_;
   

Removed from v.1.389  
changed lines
  Added in v.1.398


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>