Diff for /loncom/homework/structuretags.pm between versions 1.396 and 1.404

version 1.396, 2007/09/11 23:36:39 version 1.404, 2007/10/16 23:20:25
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 92  sub end_tex { Line 92  sub end_tex {
     return '';      return '';
 }  }
   
   sub homework_js {
       return &Apache::loncommon::resize_textarea_js().
    <<'JS';
   <script type="text/javascript">
   function setSubmittedPart (part) {
      this.document.lonhomework.submitted.value="part_"+part;
   }
   
   function image_response_click (which, e) {
       init_geometry();
       if (!e) { e = window.event; } //IE
       var input_element = document.lonhomework.elements[which];
       var token_element = document.lonhomework.elements[which+'_token'];
       var token = token_element.value;
       var img_element   = document.getElementById(which+'_imageresponse');
       var x= e.clientX-getX(img_element)+Geometry.getHorizontalScroll();
       var y= e.clientY-getY(img_element)+Geometry.getVerticalScroll();
       var click = x+':'+y;
       input_element.value = click;
       img_element.src = '/adm/randomlabel.png?token='+token+'&clickdata='+click;
   }
   </script>
   JS
   }
   
 sub page_start {  sub page_start {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name,      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name,
  $extra_head)=@_;   $extra_head)=@_;
Line 108  sub page_start { Line 133  sub page_start {
    $parstack,$parser,$safeeval);     $parstack,$parser,$safeeval);
     }      }
   
     $extra_head.= '      $extra_head .= &homework_js();
 <script type="text/javascript">  
 function setSubmittedPart (part) {  
    this.document.lonhomework.submitted.value="part_"+part;  
 }  
 </script>  
 ';  
   
     my %body_args;      my %body_args;
     if (defined($found{'html'})) {      if (defined($found{'html'})) {
Line 139  function setSubmittedPart (part) { Line 158  function setSubmittedPart (part) {
     } elsif (!defined($found{'body'})       } elsif (!defined($found{'body'}) 
      && $env{'request.state'} eq 'construct') {       && $env{'request.state'} eq 'construct') {
  if ($target eq 'web' || $target eq 'edit') {   if ($target eq 'web' || $target eq 'edit') {
     # no extra args to bodytag      if ($env{'environment.remote'} ne 'off') {
    $body_args{'only_body'}  = 1;
       }
  }   }
     } elsif (!defined($found{'body'})) {      } elsif (!defined($found{'body'})) {
  my %add_entries;   my %add_entries;
Line 1143  sub start_languageblock { Line 1164  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 $preferred_language=(&Apache::loncommon::preferred_languages)[0];          my @preferred_languages=&Apache::loncommon::preferred_languages();
 # This should not even happen, since we should at least have the server language  # This should not even happen, since we should at least have the server language
         if (!$preferred_language) { $preferred_language='en'; }          if (!$preferred_languages[0]) { $preferred_languages[0]='en'; }
   # Now loop over all languages in order of preference
           foreach my $preferred_language (@preferred_languages) {
 # If the languageblock has no arguments, show the contents  # If the languageblock has no arguments, show the contents
         $result='1';             $result=1;
              my $found=0;
 # Do we have an include argument?  # Do we have an include argument?
  if ($include) {     if ($include) {
 # If include is specified, by default, don't render the block  # If include is specified, by default, don't render the block
             $result='';                $result=0;
             foreach my $included_language (split(/\,/,$include)) {                foreach my $included_language (split(/\,/,$include)) {
 # ... but if my preferred language is included, render it  # ... but if my preferred language is included, render it
                 if ($included_language eq $preferred_language) { $result='1'; }                   if ($included_language eq $preferred_language) {
             }                      $result=1; 
  }                      $found=1; 
                    }
                 }
      }
 # Do we have an exclude argument?  # Do we have an exclude argument?
         if ($exclude) {             if ($exclude) {
             $result='1';                $result=1;
             foreach my $excluded_language (split(/\,/,$exclude)) {                foreach my $excluded_language (split(/\,/,$exclude)) {
                 if ($excluded_language eq $preferred_language) { $result='0'; }                   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 1195  sub end_languageblock { Line 1227  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 1407  sub start_part { Line 1489  sub start_part {
     @Apache::inputtags::previous=();      @Apache::inputtags::previous=();
     @Apache::inputtags::previous_version=();      @Apache::inputtags::previous_version=();
     $Apache::lonhomework::problemstatus=&get_problem_status($id);      $Apache::lonhomework::problemstatus=&get_problem_status($id);
       &Apache::response::reset_params();
   
     my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);      my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);
     my $newtype=&Apache::lonnet::EXT("resource.$id.type");      my $newtype=&Apache::lonnet::EXT("resource.$id.type");
     if ($newtype) { $Apache::lonhomework::type=$newtype; }      if ($newtype) { $Apache::lonhomework::type=$newtype; }
Line 1663  sub start_startouttext { Line 1747  sub start_startouttext {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my @result=(''.'');      my @result=(''.'');
     if ($target eq 'edit' || $target eq 'modified' ) { @result=('','no'); }      if ($target eq 'edit' || $target eq 'modified' ) { @result=('','no'); }
       
       my $nesting = 
    &Apache::lonxml::set_state('outtext',
      &Apache::lonxml::get_state('outtext')+1);
       if ($nesting > 1 && $env{'request.state'} eq 'construct') {
    &Apache::lonxml::error("Nesting of &lt;startouttext /&gt; not allowed, on line ".$token->[5]);
       }
     return (@result);      return (@result);
 }  }
   
Line 1702  sub start_endouttext { Line 1793  sub start_endouttext {
  $result='<endouttext />'.   $result='<endouttext />'.
     &Apache::edit::handle_insertafter('startouttext');      &Apache::edit::handle_insertafter('startouttext');
     }      }
   
       my $nesting = 
    &Apache::lonxml::set_state('outtext',
      &Apache::lonxml::get_state('outtext')-1);
       if ($nesting < 0 && $env{'request.state'} eq 'construct') {
    &Apache::lonxml::error(" Extraneous &lt;endouttext /&gt; not allowed on line ".$token->[5]);
    &Apache::lonxml::set_state('outtext', 0);
       }
     return $result;      return $result;
 }  }
   

Removed from v.1.396  
changed lines
  Added in v.1.404


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