Diff for /loncom/homework/structuretags.pm between versions 1.198 and 1.210

version 1.198, 2003/07/17 18:42:13 version 1.210, 2003/09/19 20:29:29
Line 36  use strict; Line 36  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::File();  use Apache::File();
 use Apache::lonmenu;  use Apache::lonmenu;
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext',      &Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext',
Line 44  BEGIN { Line 45  BEGIN {
   
 sub start_web {  sub start_web {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     if (!($target eq 'web' || $target eq 'edit' || $target eq 'modified' ||      my $bodytext=&Apache::lonxml::get_all_text("/web",$parser);
   $target eq 'answer' || $target eq 'grade' || $target eq 'meta' )) {      if ($target eq 'web') {
  my $bodytext=&Apache::lonxml::get_all_text("/web",$parser);   return $bodytext;
     }      }
     return '';      return '';
 }  }
Line 58  sub end_web { Line 59  sub end_web {
 sub start_tex {  sub start_tex {
     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' ||      my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser);
   $target eq 'answer' || $target eq 'grade' || $target eq 'meta' )) {      if ($target eq 'tex') {
  &Apache::lonxml::debug("tex 1");   return $bodytext.' ';
  my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser);  
     } elsif ($target eq 'tex') {  
  $result=&Apache::lonxml::get_all_text("/tex",$parser);  
     }      }
     return $result;;      return $result;;
 }  }
Line 75  sub end_tex { Line 73  sub end_tex {
 sub page_start {  sub page_start {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my %found;      my %found;
     foreach my $taginside ($tagstack) {      foreach my $taginside (@$tagstack) {
  foreach my $taglookedfor ('html','body','form') {   foreach my $taglookedfor ('html','body','form') {
     if ($taginside =~ /^$taglookedfor$/i) {$found{$taglookedfor} = 1;}      if ($taginside =~ /^$taglookedfor$/i) {$found{$taglookedfor} = 1;}
  }   }
Line 94  sub page_start { Line 92  sub page_start {
     'onUnload="'.&Apache::lonmenu::unloadevents().'" ';      'onUnload="'.&Apache::lonmenu::unloadevents().'" ';
  my $background=&Apache::lonxml::get_param('background',$parstack,   my $background=&Apache::lonxml::get_param('background',$parstack,
   $safeeval);    $safeeval);
    if ($ENV{'browser.imagesuppress'} eq 'on') { $background=''; }
  if ($background) {   if ($background) {
     $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=      $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
  $background;   $background;
Line 101  sub page_start { Line 100  sub page_start {
  } else {   } else {
     my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,      my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,
    $safeeval);     $safeeval);
     if ($bgcolor) {      if (($bgcolor) && ($ENV{'browser.blackwhite'} ne 'on')) {
  $body_tag_start.='bgcolor="'.$bgcolor.'" ';   $body_tag_start.='bgcolor="'.$bgcolor.'" ';
     } else {      } else {
  $body_tag_start.='bgcolor="#ffffff"';   $body_tag_start.='bgcolor="#ffffff"';
     }      }
  }   }
    if ($ENV{'browser.fontenhance'} eq 'on') {
       $body_tag_start.=' style="font-size: x-large;" ';
    }
  $body_tag_start.='>'.&Apache::lonmenu::menubuttons(undef,$target,1);   $body_tag_start.='>'.&Apache::lonmenu::menubuttons(undef,$target,1);
  if ($target eq 'web' && $ENV{'request.state'} ne 'construct') {   if ($target eq 'web' && $ENV{'request.state'} ne 'construct') {
     my ($symb,undef,undef,undef,$publicuser)=      my ($symb,undef,undef,undef,$publicuser)=
Line 129  sub page_start { Line 131  sub page_start {
 #use Time::HiRes();  #use Time::HiRes();
 sub get_resource_name {  sub get_resource_name {
     my ($parstack,$safeeval)=@_;      my ($parstack,$safeeval)=@_;
       if (defined($Apache::lonhomework::name)) {
    return $Apache::lonhomework::name;
       }
     my $name=&Apache::lonnet::gettitle();      my $name=&Apache::lonnet::gettitle();
     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+/) {
    $name=$ENV{'request.uri'};
    $name=~s-.*/([^/]+)$-$1-;
       }
     $Apache::lonhomework::name=$name;      $Apache::lonhomework::name=$name;
     return $name;      return $name;
 }  }
Line 151  sub setup_rndseed { Line 160  sub setup_rndseed {
  $ENV{'form.rndseed'}=$rndseed;   $ENV{'form.rndseed'}=$rndseed;
     }      }
  }   }
  if ($ENV{'form.resetdata'} eq 'New Problem Variation' ||   if ($ENV{'form.resetdata'} eq &mt('New Problem Variation') ||
     $ENV{'form.newrandomization'} eq 'New Randomization') {      $ENV{'form.newrandomization'} eq &mt('New Randomization')) {
     srand(time);      srand(time);
     $rndseed=int(rand(2100000000));      $rndseed=int(rand(2100000000));
     $ENV{'form.rndseed'}=$rndseed;      $ENV{'form.rndseed'}=$rndseed;
Line 170  sub setup_rndseed { Line 179  sub setup_rndseed {
   
 sub problem_edit_header {  sub problem_edit_header {
     return '<input type="hidden" name="submitted" value="edit" />      return '<input type="hidden" name="submitted" value="edit" />
        <input type="hidden" name="problemmode" value="Edit" />         <input type="hidden" name="problemmode" value="'.&mt('Edit').'" />
        <input type="submit" name="problemmode" value="Discard Edits and View" />         <input type="submit" name="problemmode" value="'.&mt('Discard Edits and View').'" />
        <input type="submit" name="problemmode" value="EditXML" />         <input type="submit" name="problemmode" value="'.&mt('EditXML').'" />
        <input type="submit" name="Undo" value="undo" /> <hr />         <input type="submit" name="Undo" value="'.&mt('undo').'" /> <hr />
        <input type="submit" name="submit" value="Submit Changes and Edit" />         <input type="submit" name="submit" value="'.&mt('Submit Changes and Edit').'" />
        <input type="submit" name="submit" value="Submit Changes and View" /><br /><p>&nbsp;</p><table border="0"><tr><td bgcolor="#DDDDDD">         <input type="submit" name="submit" value="'.&mt('Submit Changes and View').'" /><br /><p>&nbsp;</p><table border="0"><tr><td bgcolor="#DDDDDD">
       ';        ';
 }  }
   
 sub problem_edit_footer {  sub problem_edit_footer {
     return '</td></tr></table><br /><input type="submit" name="submit" value="Submit Changes and Edit" />      return '</td></tr></table><br /><input type="submit" name="submit" value="'.&mt('Submit Changes and Edit').'" />
     <input type="submit" name="submit" value="Submit Changes and View" />';      <input type="submit" name="submit" value="'.&mt('Submit Changes and View').'" />';
 }  }
   
 sub problem_web_to_edit_header {  sub problem_web_to_edit_header {
     my ($rndseed)=@_;      my ($rndseed)=@_;
     my $result.='<input type="hidden" name="problemmode" value="View" />      my $result.='<input type="hidden" name="problemmode" value="'.&mt('View').'" />
              <input type="submit" name="problemmode" value="Edit" />               <input type="submit" name="problemmode" value="'.&mt('Edit').'" />
              <input type="submit" name="problemmode" value="EditXML" />               <input type="submit" name="problemmode" value="'.&mt('EditXML').'" />
              <input type="submit" name="newrandomization" value="New Randomization" />               <input type="submit" name="newrandomization" value="'.&mt('New Randomization').'" />
              <input type="submit" name="resetdata" value="Reset Submissions" />               <input type="submit" name="resetdata" value="'.&mt('Reset Submissions').'" />
              <nobr><input type="submit" name="changerandseed" value="Change Random Seed To:" />               <nobr><input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" />
               <input type="text" name="rndseed" width="10" value="'.                <input type="text" name="rndseed" width="10" value="'.
        $rndseed.'"         $rndseed.'"
            onChange="javascript:document.lonhomework.changerandseed.click()" /></nobr>             onChange="javascript:document.lonhomework.changerandseed.click()" /></nobr>
              <input type="checkbox" name="showallfoils" ';               <input type="checkbox" name="showallfoils" ';
     if (defined($ENV{'form.showallfoils'})) { $result.='checked="on"'; }      if (defined($ENV{'form.showallfoils'})) { $result.='checked="on"'; }
     $result.= ' />&nbsp;Show&nbsp;All&nbsp;Foils      $result.= ' />'.&mt('&nbsp;Show&nbsp;All&nbsp;Foils').'
              <hr />';               <hr />';
     my $numtoanalyze=$ENV{'form.numtoanalyze'};      my $numtoanalyze=$ENV{'form.numtoanalyze'};
     if (!$numtoanalyze) { $numtoanalyze=20; }      if (!$numtoanalyze) { $numtoanalyze=20; }
     $result.= '<input type="submit" name="problemmode" value="Calculate answers" /> for      $result.= '<input type="submit" name="problemmode" value='.
    &mt('"Calculate answers').'" /> for
              <input type="text" name="numtoanalyze" value="'.               <input type="text" name="numtoanalyze" value="'.
  $numtoanalyze.'" size="5" /> versions of this problem.'.       $numtoanalyze.'" size="5" /> '.&mt('versions of this problem').
      &Apache::loncommon::help_open_topic("Analyze_Problem",       '.'.&Apache::loncommon::help_open_topic("Analyze_Problem",
      '',undef,undef,300).       '',undef,undef,300).
      '<hr />';       '<hr />';
     return $result;      return $result;
 }  }
   
Line 267  credit even if done erroneously.<p /> Line 277  credit even if done erroneously.<p />
 ENDCHECKOUT  ENDCHECKOUT
 }  }
   
   sub init_problem_globals {
       my ($type)=@_;
       #initialize globals
       if ($type eq 'problem') {
    $Apache::inputtags::part='0';
    @Apache::inputtags::partlist=('0');
    $Apache::lonhomework::problemstatus=
       &Apache::lonnet::EXT('resource.0.problemstatus');
       } else {
    $Apache::inputtags::part='';
    @Apache::inputtags::partlist=();
    $Apache::lonhomework::problemstatus='';
       }
       @Apache::inputtags::responselist = ();
       @Apache::inputtags::importlist = ();
       @Apache::inputtags::previous=();
       @Apache::inputtags::previous_version=();
       $Apache::structuretags::printanswer='No';
       @Apache::structuretags::whileconds=();
       @Apache::structuretags::whilebody=();
       @Apache::structuretags::whileline=();
       $Apache::lonhomework::scantronmode=0;
       undef($Apache::lonhomework::name);
   
   }
   
   sub reset_problem_globals {
       my ($type)=@_;
       undef(%Apache::lonhomework::history);
       undef(%Apache::lonhomework::results);
       undef($Apache::inputtags::part);
   #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);
       undef($Apache::lonhomework::name);
   }
   
 sub start_problem {  sub start_problem {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
Line 278  sub start_problem { Line 325  sub start_problem {
     }      }
   
     $Apache::lonhomework::parsing_a_problem=1;      $Apache::lonhomework::parsing_a_problem=1;
 #initialize globals      &init_problem_globals('problem');
     $Apache::inputtags::part='0';  
     @Apache::inputtags::partlist=('0');  
     @Apache::inputtags::responselist = ();  
     @Apache::inputtags::importlist = ();  
     @Apache::inputtags::previous=();  
     @Apache::inputtags::previous_version=();  
     $Apache::structuretags::printanswer='No';  
     @Apache::structuretags::whileconds=();  
     @Apache::structuretags::whilebody=();  
     @Apache::structuretags::whileline=();  
     $Apache::lonhomework::scantronmode=0;  
     $Apache::lonhomework::problemstatus=  
  &Apache::lonnet::EXT('resource.0.problemstatus');  
   
     if (defined($ENV{'scantron.maxquest'})) {      if (defined($ENV{'scantron.maxquest'})) {
  $Apache::lonhomework::scantronmode=1;   $Apache::lonhomework::scantronmode=1;
Line 413  sub start_problem { Line 447  sub start_problem {
     if (not $ENV{'form.problem_split'}=~/yes/) {      if (not $ENV{'form.problem_split'}=~/yes/) {
  $startminipage = '\begin{minipage}{\textwidth}';   $startminipage = '\begin{minipage}{\textwidth}';
     }      }
     my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval);  
     if ($name eq '') {  
  $name=&Apache::lonnet::EXT('resource.title');  
  if ($name eq 'con_lost') { $name = ''; }  
     }  
     $Apache::lonhomework::name=$name;  
     my $id = $Apache::inputtags::part;      my $id = $Apache::inputtags::part;
     my $weight = &Apache::lonnet::EXT("resource.$id.weight");      my $weight = &Apache::lonnet::EXT("resource.$id.weight");
     my $allkeys=&Apache::lonnet::metadata($ENV{'request.uri'},'keys');      my $allkeys=&Apache::lonnet::metadata($ENV{'request.uri'},'keys');
Line 447  sub start_problem { Line 475  sub start_problem {
  print $temp_file "$duedate\n";   print $temp_file "$duedate\n";
  if (not $ENV{'request.symb'} =~ m/\.page_/) {   if (not $ENV{'request.symb'} =~ m/\.page_/) {
     if(not $duedate=~m/1969/ and $Apache::lonhomework::type ne 'exam') {      if(not $duedate=~m/1969/ and $Apache::lonhomework::type ne 'exam') {
  $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm\noindent '.$startminipage;   $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm\noindent '.$startminipage.'\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}';
     } else {      } else {
  $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm \noindent'.$startminipage;   $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm \noindent'.$startminipage.'\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}';
  if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { $result .= '\fbox{\textit{'.$weight.' pt}}';}   if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { $result .= '\fbox{\textit{'.$weight.' pt}}';}
     }      }
  } else {   } else {
Line 457  sub start_problem { Line 485  sub start_problem {
  }   }
     } else {      } else {
  if (not $ENV{'request.symb'} =~ m/\.page_/) {   if (not $ENV{'request.symb'} =~ m/\.page_/) {
     $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm\noindent'.$startminipage;      $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$ENV{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm\noindent'.$startminipage.'\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}';
     if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { $result .= '\fbox{\textit{'.$weight.' pt}}';}      if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { $result .= '\fbox{\textit{'.$weight.' pt}}';}
  } else {   } else {
     $result .= '\vskip 1mm \\\\\\\\';      $result .= '\vskip 1mm \\\\\\\\';
Line 550  sub end_problem { Line 578  sub end_problem {
     if ($ENV{'request.state'} eq 'construct' && $target eq 'web') {      if ($ENV{'request.state'} eq 'construct' && $target eq 'web') {
  &Apache::inputtags::check_for_duplicate_ids();   &Apache::inputtags::check_for_duplicate_ids();
     }      }
     undef(%Apache::lonhomework::history);  
     undef(%Apache::lonhomework::results);      &reset_problem_globals('problem');
     undef($Apache::inputtags::part);  
     undef($Apache::lonhomework::parsing_a_problem);  
   
     return $result;      return $result;
 }  }
Line 562  sub end_problem { Line 588  sub end_problem {
 sub start_library {  sub start_library {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my ($result,$head_tag_start,$body_tag_start,$form_tag_start);      my ($result,$head_tag_start,$body_tag_start,$form_tag_start);
       if ($$tagstack[0] eq 'library') { &init_problem_globals('library') };
     if ($target eq 'edit') {      if ($target eq 'edit') {
  ($result,$head_tag_start,$body_tag_start,$form_tag_start)=   ($result,$head_tag_start,$body_tag_start,$form_tag_start)=
     &page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);      &page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
Line 596  sub end_library { Line 622  sub end_library {
      $ENV{'request.state'} eq "construct") {       $ENV{'request.state'} eq "construct") {
  $result.='</form></body>'.&Apache::lonxml::xmlend();   $result.='</form></body>'.&Apache::lonxml::xmlend();
     }      }
       if ($$tagstack[0] eq 'library') { &reset_problem_globals('library') };
     return $result;      return $result;
 }  }
   
Line 624  sub end_definetag { Line 651  sub end_definetag {
 }  }
   
 sub start_block {  sub start_block {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   
     my $result;      my $result;
   
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
  my $code = $token->[2]->{'condition'};   my $code = $token->[2]->{'condition'};
  if ($code) {   if (defined($code)) {
     if (!$Apache::lonxml::default_homework_loaded) {      if (!$Apache::lonxml::default_homework_loaded) {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
     }      }
Line 641  sub start_block { Line 668  sub start_block {
     $result='1';      $result='1';
  }   }
  if ( ! $result ) {   if ( ! $result ) {
     my $skip=&Apache::lonxml::get_all_text("/block",$parser);      my $skip=&Apache::lonxml::get_all_text("/block",$parser,$style);
     &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");      &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");
  }   }
  $result='';   $result='';
Line 668  sub end_block { Line 695  sub end_block {
 }  }
   
 sub start_languageblock {  sub start_languageblock {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   
     my $result;      my $result;
   
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
  &Apache::lonxml::startredirection();   my $include = $token->[2]->{'include'};
    my $exclude = $token->[2]->{'exclude'};
           my %languages=&Apache::loncommon::display_languages();
           $result='1';
    if ($include) {
               $result='';
               foreach (split(/\,/,$include)) {
                   if ($languages{$_}) { $result='1'; }
               }
    }
           if ($exclude) {
               foreach (split(/\,/,$exclude)) {
                   if ($languages{$_}) { $result='0'; }
               }
    }
    if ( ! $result ) {
       my $skip=&Apache::lonxml::get_all_text("/languageblock",$parser,
      $style);
       &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");
    }
    $result='';
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .=&Apache::edit::tag_start($target,$token);   $result .=&Apache::edit::tag_start($target,$token);
  $result .=&Apache::edit::text_arg('Include Language:','include',   $result .=&Apache::edit::text_arg('Include Language:','include',
Line 694  sub start_languageblock { Line 741  sub start_languageblock {
 sub end_languageblock {  sub end_languageblock {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
       if ($target eq "edit") {
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||  
  $target eq 'tex' || $target eq 'analyze') {  
  my $text=&Apache::lonxml::endredirection();  
  my $include= &Apache::lonxml::get_param('include',$parstack,$safeeval);  
  my $exclude= &Apache::lonxml::get_param('exclude',$parstack,$safeeval);  
  my %languages=&Apache::loncommon::display_languages();  
  $result='1';  
  if ($include) {  
     $result='';  
     foreach (split(/\,/,$include)) {  
  if ($languages{$_}) { $result='1'; }  
     }  
  }  
  if ($exclude) {  
     foreach (split(/\,/,$exclude)) {  
  if ($languages{$_}) { $result='0'; }  
     }  
  }  
  if ( ! $result ) {  
     $result='';  
  } else {  
     $result=$text;  
  }  
     } elsif ($target eq "edit") {  
  $result.= &Apache::edit::tag_end($target,$token,'');   $result.= &Apache::edit::tag_end($target,$token,'');
     }      }
     return $result;      return $result;
 }  }
   
 sub start_instructorcomment {  sub start_instructorcomment {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   
     my $result;      my $result;
   
Line 733  sub start_instructorcomment { Line 756  sub start_instructorcomment {
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
         $result=($ENV{'request.role'}=~/^(in|cc|au|ca|li)/);          $result=($ENV{'request.role'}=~/^(in|cc|au|ca|li)/);
  if ( ! $result ) {   if ( ! $result ) {
     my $skip=&Apache::lonxml::get_all_text("/instructorcomment",$parser);      my $skip=&Apache::lonxml::get_all_text("/instructorcomment",
      $parser,$style);
     &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");      &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");
  }   }
  $result='';   $result='';
Line 911  sub start_part { Line 935  sub start_part {
     $Apache::lonhomework::problemstatus=      $Apache::lonhomework::problemstatus=
  &Apache::lonnet::EXT("resource.$id.problemstatus");   &Apache::lonnet::EXT("resource.$id.problemstatus");
     my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);      my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);
       my $expression='$external::part='.$Apache::inputtags::part.';';
       &Apache::run::run($expression,$safeeval);
   
     if ($target eq 'meta') {      if ($target eq 'meta') {
  return &Apache::response::mandatory_part_meta;   return &Apache::response::mandatory_part_meta;

Removed from v.1.198  
changed lines
  Added in v.1.210


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