Diff for /loncom/homework/structuretags.pm between versions 1.127 and 1.146

version 1.127, 2002/10/15 14:37:59 version 1.146, 2003/02/07 22:03:21
Line 29 Line 29
 # 6/26/2001 fixed extra web display at end of <web></web> tags  # 6/26/2001 fixed extra web display at end of <web></web> tags
 # 8/17,8/18,8/20 Gerd Kortemeyer  # 8/17,8/18,8/20 Gerd Kortemeyer
   
   
 package Apache::structuretags;   package Apache::structuretags; 
   
 use strict;  use strict;
Line 42  BEGIN { Line 43  BEGIN {
   
 sub start_web {  sub start_web {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   my $bodytext=&Apache::lonxml::get_all_text("/web",$$parser[$#$parser]);    my $bodytext=&Apache::lonxml::get_all_text("/web",$parser);
   if ($target eq 'web') {    if ($target eq 'web') {
     return $bodytext;      return $bodytext;
   }     } 
Line 55  sub end_web { Line 56  sub end_web {
   
 sub start_tex {  sub start_tex {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   my $bodytext=&Apache::lonxml::get_all_text("/tex",$$parser[$#$parser]);    my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser);
   if ($target eq 'tex') {    if ($target eq 'tex') {
       return $bodytext.' ';        return $bodytext.' ';
   }    }
Line 100  sub page_start { Line 101  sub page_start {
       }        }
     }      }
     $body_tag_start.='>';      $body_tag_start.='>';
       if ($target eq 'web' && $ENV{'request.state'} ne 'construct') {
    my ($symb)=&Apache::lonxml::whichuser();
    if ($symb eq '') {
       my $help = &Apache::loncommon::help_open_topic("Ambiguous_Reference");
       $help="Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored $help<br />";
       $body_tag_start.=$help;
    }
       }
   }    }
   my $form_tag_start;    my $form_tag_start;
   if (!defined($found{'form'})) {    if (!defined($found{'form'})) {
Line 109  sub page_start { Line 118  sub page_start {
   return ($result,$head_tag_start,$body_tag_start,$form_tag_start);    return ($result,$head_tag_start,$body_tag_start,$form_tag_start);
 }  }
   
   #use Time::HiRes();
 sub get_resource_name {  sub get_resource_name {
   my ($parstack,$safeeval)=@_;    my ($parstack,$safeeval)=@_;
   my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval);    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 = ''; }
   }    }
Line 129  sub setup_rndseed { Line 139  sub setup_rndseed {
       $rndseed=time;        $rndseed=time;
       $ENV{'form.rndseed'}=$rndseed;        $ENV{'form.rndseed'}=$rndseed;
     }      }
       &Apache::lonxml::debug("Setting rndseed to $rndseed");
     &Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval);      &Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval);
   }    }
   return $rndseed;    return $rndseed;
Line 140  sub problem_edit_header { Line 151  sub problem_edit_header {
        <input type="submit" name="problemmode" value="Discard Edits and View" />         <input type="submit" name="problemmode" value="Discard Edits and View" />
        <input type="submit" name="problemmode" value="EditXML" />         <input type="submit" name="problemmode" value="EditXML" />
        <input type="submit" name="Undo" value="undo" /> <hr />         <input type="submit" name="Undo" value="undo" /> <hr />
        <input type="submit" name="submit" value="Submit Changes" />         <input type="submit" name="submit" value="Submit Changes and Edit" />
        <input type="submit" name="submit" value="Submit Changes and View" /><br />         <input type="submit" name="submit" value="Submit Changes and View" /><br /><p>&nbsp;</p><table border="0"><tr><td bgcolor="#DDDDDD">
       ';        ';
 }  }
   
 sub problem_edit_footer {  sub problem_edit_footer {
   return '<br /><input type="submit" name="submit" value="Submit Changes and Edit" />    return '</td></tr></table><br /><input type="submit" name="submit" value="Submit Changes and Edit" />
     <input type="submit" name="submit" value="Submit Changes and View" />';      <input type="submit" name="submit" value="Submit Changes and View" />';
 }  }
   
Line 165  sub problem_web_to_edit_header { Line 176  sub problem_web_to_edit_header {
              <hr />';               <hr />';
   my $numtoanalyze=$ENV{'form.numtoanalyze'};    my $numtoanalyze=$ENV{'form.numtoanalyze'};
   if (!$numtoanalyze) { $numtoanalyze=100; }    if (!$numtoanalyze) { $numtoanalyze=100; }
   #DISABLED for now.    $result.= '<input type="submit" name="problemmode" value="Answer Distribution" />
   #$result.= '<input type="submit" name="problemmode" value="Answer Distribution" />               <input type="text" name="numtoanalyze" value="'.
 #             <input type="text" name="numtoanalyze" value="'.         $numtoanalyze.'" size="5" /> <hr />';
 # $numtoanalyze.'" size="5" /> <hr />';    return $result;
 }  }
   
 sub initialize_storage {  sub initialize_storage {
Line 234  sub start_problem { Line 245  sub start_problem {
   # won't get reset    # won't get reset
   if ( $Apache::inputtags::part ne '' && $target != 'meta' ) {    if ( $Apache::inputtags::part ne '' && $target != 'meta' ) {
     &Apache::lonxml::error('Only one problem allowed in a .problem file');      &Apache::lonxml::error('Only one problem allowed in a .problem file');
     my $bodytext=&Apache::lonxml::get_all_text("/problem",$$parser[-1]);      my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
     return '';      return '';
   }    }
 #intialize globals  #intialize globals
Line 271  sub start_problem { Line 282  sub start_problem {
     &page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);      &page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
   if ($target eq 'tex' and $ENV{'request.symb'} =~ m/\.page_/) { $result = '';}    if ($target eq 'tex' and $ENV{'request.symb'} =~ m/\.page_/) { $result = '';}
   
     if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); }
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {    if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {
     #handle exam checkout      #handle exam checkout
     if ($Apache::lonhomework::type eq 'exam') {      if ($Apache::lonhomework::type eq 'exam') {
Line 289  sub start_problem { Line 301  sub start_problem {
     my $expression='$external::datestatus="'.$status.'";';      my $expression='$external::datestatus="'.$status.'";';
     $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';      $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';
     &Apache::run::run($expression,$safeeval);      &Apache::run::run($expression,$safeeval);
       &Apache::lonxml::debug("Got $status");
     if (( $status eq 'CLOSED' ) ||      if (( $status eq 'CLOSED' ) ||
         ( $status eq 'UNCHECKEDOUT') ||          ( $status eq 'UNCHECKEDOUT') ||
         ( $status eq 'BANNED')) {          ( $status eq 'BANNED') ||
       my $bodytext=&Apache::lonxml::get_all_text("/problem",$$parser[$#$parser]);          ( $status eq 'UNAVAILABLE')) {
         my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
       if ( $target eq "web" ) {        if ( $target eq "web" ) {
  $result.= $head_tag_start.'</head>';   $result.= $head_tag_start.'</head>';
         my $msg=$body_tag_start.          my $msg=$body_tag_start;
     '<h1>Not open to be viewed</h1>';   if ($status eq 'UNAVAILABLE') {
       $result.='<h1>Unable to determine if this resource is open due to network problems. Please try again later.</h1>';
    } else {
       $result.='<h1>Not open to be viewed</h1>';
    }
         if ($status eq 'CLOSED') {          if ($status eq 'CLOSED') {
     $msg.='The problem '.$accessmsg;      $msg.='The problem '.$accessmsg;
  } elsif ($status eq 'UNCHECKEDOUT') {   } elsif ($status eq 'UNCHECKEDOUT') {
Line 304  sub start_problem { Line 322  sub start_problem {
         }          }
  $result.=$msg.'<br />';   $result.=$msg.'<br />';
       } elsif ($target eq 'tex') {        } elsif ($target eq 'tex') {
   $result.="\\begin{document}\\noindent \\vskip 1 mm \\begin{minipage}{\\textwidth}\\vskip 0 mm Problem is not open to be viewed. It $accessmsg \\vskip 0 mm ";    $result.="\\begin{document}\\noindent \\vskip 1 mm \\begin{minipage}{\\textwidth}\\vskip 0 mm ";
       }    if ($status eq 'UNAVAILABLE') {
       $result.='Unable to determine if this resource is open due to network problems. Please try again later.\vskip 0 mm ';
    } else {
       $result.="Problem is not open to be viewed. It $accessmsg \\vskip 0 mm ";
    }
         }
     } elsif ($target eq 'web') {      } elsif ($target eq 'web') {
       my $name= &get_resource_name($parstack,$safeeval);        my $name= &get_resource_name($parstack,$safeeval);
       if ($status eq 'CAN_ANSWER') {        if ($status eq 'CAN_ANSWER') {
Line 324  sub start_problem { Line 347  sub start_problem {
   }    }
  }   }
       } elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER'        } elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER'
        || $status eq 'CLOSED') {         || $status eq 'CLOSED' || $status eq 'UNAVALAILABLE') {
  $result.=$head_tag_start.   $result.=$head_tag_start.
   "<title>$name</title></head>\n$body_tag_start\n";    "<title>$name</title></head>\n$body_tag_start\n";
       }        }
Line 388  sub end_problem { Line 411  sub end_problem {
   my $result='';    my $result='';
   my $status=$Apache::inputtags::status['-1'];    my $status=$Apache::inputtags::status['-1'];
   if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex') {    if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex') {
     if ( $target eq 'grade' && $Apache::inputtags::part eq '0') {      if ( $target eq 'grade' && $Apache::inputtags::part eq '0' && $status eq 'CAN_ANSWER' ) {
       # if part is zero, no <part>s existed, so we need to the grading        # if part is zero, no <part>s existed, so we need to the grading
       &Apache::inputtags::grade;        &Apache::inputtags::grade;
     } elsif ( ($target eq 'web' || $target eq 'tex') && $Apache::inputtags::part eq '0' &&       } elsif ( ($target eq 'web' || $target eq 'tex') && $Apache::inputtags::part eq '0' && 
Line 412  sub end_problem { Line 435  sub end_problem {
       $result.="</body>\n";        $result.="</body>\n";
   }    }
       }        }
       if ($target ne 'tex') {        if ($target eq 'web') {
   $result.=&Apache::lonxml::xmlend();    $result.=&Apache::lonxml::xmlend();
       } else {        } elsif ($target eq 'tex') {
       $result .= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}';    $result .= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}';
       if (not $ENV{'request.symb'} =~ m/\.page_/) {    if (not $ENV{'request.symb'} =~ m/\.page_/) {
   $result .= '\end{minipage}\end{document} ';        $result .= '\end{minipage}\end{document} ';
       } else {    } else {
   $result .= '';        $result .= '';
       }    }
       }        }
     }      }
     if ($target eq 'grade') {       if ($target eq 'grade') { 
       &Apache::lonhomework::showhash(%Apache::lonhomework::results);        &Apache::lonhomework::showhash(%Apache::lonhomework::results);
       &finalize_storage();        &finalize_storage();
     }      }
       if ($target eq 'answer' && ($ENV{'request.state'} eq 'construct') ) {
    $result.='</html>'; #normally we get it from xmlend, but in CSTR
                               # we always show answer mode too.
       }
   } elsif ($target eq 'meta') {    } elsif ($target eq 'meta') {
     if ($Apache::inputtags::part eq '0') {      if ($Apache::inputtags::part eq '0') {
       $result=&Apache::response::mandatory_part_meta;        $result=&Apache::response::mandatory_part_meta;
Line 434  sub end_problem { Line 461  sub end_problem {
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
     &Apache::lonxml::debug("in end_problem with $target, edit");      &Apache::lonxml::debug("in end_problem with $target, edit");
     $result = &problem_edit_footer();      $result = &problem_edit_footer();
   }     }
   return $result;    return $result;
 }  }
   
Line 480  sub end_library { Line 507  sub end_library {
 }  }
   
 sub start_block {  sub start_block {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
       my $result;
   
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') {      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || 
     my $code = @$parstack[$#$parstack];   $target eq 'tex' || $target eq 'analyze') {
     $code =~ s/\"//g;   my $code = @$parstack[$#$parstack];
     $code .=';return $condition;';   if ($code) {
     #  print "<br />$code<br />";      $code =~ s/\"//g;
     my $result = &Apache::run::run($code,$safeeval);      $code .=';return $condition;';
     &Apache::lonxml::debug("block :$code: returned :$result:");      if (!$Apache::lonxml::default_homework_loaded) {
     if ( ! $result ) {    &Apache::lonxml::default_homework_load($safeeval);
       my $skip=&Apache::lonxml::get_all_text("/block",$$parser[$#$parser]);      }
       &Apache::lonxml::debug("skipping ahead :$skip: $$parser[$#$parser]");      $result = &Apache::run::run($code,$safeeval);
       &Apache::lonxml::debug("block :$code: returned :$result:");
    } else {
       $result='1';
    }
    if ( ! $result ) {
       my $skip=&Apache::lonxml::get_all_text("/block",$parser);
       &Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]");
    }
    $result='';
       } elsif ($target eq 'edit') {
    $result .=&Apache::edit::tag_start($target,$token);
    $result .=&Apache::edit::text_arg('Test Condition:','condition',
     $token,40);
    $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
       } elsif ($target eq 'modified') {
    my $constructtag=&Apache::edit::get_new_args($token,$parstack,
        $safeeval,'condition');
    if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
     }      }
   }      return $result;
   return "";  
 }  }
   
 sub end_block {  sub end_block {
Line 509  sub start_while { Line 555  sub start_while {
   $code .=';return $condition;';    $code .=';return $condition;';
   
   push( @Apache::structuretags::whileconds, $code);     push( @Apache::structuretags::whileconds, $code); 
     if (!$Apache::lonxml::default_homework_loaded) {
         &Apache::lonxml::default_homework_load($safeeval);
     }
   my $result = &Apache::run::run($code,$safeeval);    my $result = &Apache::run::run($code,$safeeval);
   my $bodytext=$$parser[$#$parser]->get_text("/while");    my $bodytext=$$parser[$#$parser]->get_text("/while");
   push( @Apache::structuretags::whilebody, $bodytext);    push( @Apache::structuretags::whilebody, $bodytext);
Line 540  sub start_randomlist { Line 589  sub start_randomlist {
   my $result;    my $result;
   if ($target eq 'answer' || $target eq 'grade' || $target eq 'web' ||    if ($target eq 'answer' || $target eq 'grade' || $target eq 'web' ||
       $target eq 'tex' || $target eq 'analyze') {        $target eq 'tex' || $target eq 'analyze') {
     my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]);      my $body= &Apache::lonxml::get_all_text("/randomlist",$parser);
     my $b_parser= HTML::TokeParser->new(\$body);      my $b_parser= HTML::TokeParser->new(\$body);
     my $b_tok;      my $b_tok;
     my @randomlist;      my @randomlist;
Line 625  sub start_part { Line 674  sub start_part {
     $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";';      $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";';
     &Apache::run::run($expression,$safeeval);      &Apache::run::run($expression,$safeeval);
     if ( $status eq 'CLOSED' ) {      if ( $status eq 'CLOSED' ) {
       my $bodytext=&Apache::lonxml::get_all_text("/part",$$parser[$#$parser]);        my $bodytext=&Apache::lonxml::get_all_text("/part",$parser);
       if ( $target eq "web" ) {        if ( $target eq "web" ) {
  $result="<br />Part is not open to be viewed. It $accessmsg<br />";   $result="<br />Part is not open to be viewed. It $accessmsg<br />";
       } elsif ( $target eq 'tex' ) {        } elsif ( $target eq 'tex' ) {
Line 633  sub start_part { Line 682  sub start_part {
       }        }
     } else {      } else {
       if ($target eq 'tex') {        if ($target eq 'tex') {
  $result='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent';   if ($$tagstack[-2] ne 'problem') {
     $result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent';
    }
       }        }
     }      }
     } elsif ($target eq 'edit') {
         $result.=&Apache::edit::tag_start($target,$token);
         $result.=&Apache::edit::text_arg('Part ID:','id',$token).
     &Apache::loncommon::help_open_topic("Part_Tag_Edit_Help").
         &Apache::edit::end_row().&Apache::edit::start_spanning_row();
   
     } elsif ($target eq 'modified') {
         my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,
      'id');
         if ($constructtag) {
     $result = &Apache::edit::rebuild_tag($token);
     $result.=&Apache::edit::handle_insert();
         }
   }    }
   return $result;    return $result;
 }  }
Line 644  sub end_part { Line 708  sub end_part {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   &Apache::lonxml::debug("in end_part $target ");    &Apache::lonxml::debug("in end_part $target ");
   my $status=$Apache::inputtags::status['-1'];    my $status=$Apache::inputtags::status['-1'];
   pop @Apache::inputtags::status;    my $result='';
   if ( $target eq 'meta' ) { return ''; }    if ( $target eq 'meta' ) {
   if ( $target eq 'grade' && $status eq 'CAN_ANSWER') {        $result='';
     return &Apache::inputtags::grade;    } elsif ( $target eq 'grade' && $status eq 'CAN_ANSWER') {
   }      $result=&Apache::inputtags::grade;
   if ($target eq 'web' || $target eq 'tex' ) {    } elsif ($target eq 'web' || $target eq 'tex' ) {
     my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part,$target);      my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part,
       $target);
     if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';}      if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';}
     return $gradestatus;      $result=$gradestatus;
   }    }
   return '';    pop @Apache::inputtags::status;
     return $result;
 }  }
   
 sub start_preduedate {  sub start_preduedate {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {    if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {
     if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&      if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&
  $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' ) {   $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' && 
       &Apache::lonxml::get_all_text("/preduedate",$$parser[$#$parser]);          $Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') {
         &Apache::lonxml::get_all_text("/preduedate",$parser);
     }      }
   }    }
   return '';    return '';
Line 676  sub start_postanswerdate { Line 743  sub start_postanswerdate {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {    if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
     if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') {      if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') {
       &Apache::lonxml::get_all_text("/postanswerdate",$$parser[$#$parser]);        &Apache::lonxml::get_all_text("/postanswerdate",$parser);
     }      }
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
       return '\vskip 0 mm \noindent';        return '\vskip 0 mm \noindent';
Line 695  sub start_notsolved { Line 762  sub start_notsolved {
     &Apache::lonxml::debug("not solved has :$gradestatus:");      &Apache::lonxml::debug("not solved has :$gradestatus:");
     if ($gradestatus =~ /^correct/) {      if ($gradestatus =~ /^correct/) {
       &Apache::lonxml::debug("skipping");        &Apache::lonxml::debug("skipping");
       &Apache::lonxml::get_all_text("/notsolved",$$parser[$#$parser]);        &Apache::lonxml::get_all_text("/notsolved",$parser);
     }      }
   }    }
   return '';    return '';
Line 710  sub start_solved { Line 777  sub start_solved {
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {    if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {
     my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};      my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
     if ($gradestatus !~ /^correct/) {      if ($gradestatus !~ /^correct/) {
       &Apache::lonxml::get_all_text("/solved",$$parser[$#$parser]);        &Apache::lonxml::get_all_text("/solved",$parser);
     }      }
   }    }
   return '';    return '';
Line 732  sub end_startouttext { Line 799  sub end_startouttext {
   my $text='';    my $text='';
   
   if ($target eq 'edit') {    if ($target eq 'edit') {
     $text=&Apache::lonxml::get_all_text("endouttext",$$parser[-1]);      $text=&Apache::lonxml::get_all_text("endouttext",$parser);
     $result.=&Apache::edit::start_table($token)."<tr><td>Text Block</td>      $result.=&Apache::edit::start_table($token)."<tr><td>Text Block</td>
 <td>Delete:".  <td>Delete:".
   &Apache::edit::deletelist($target,$token)    &Apache::edit::deletelist($target,$token)
Line 743  sub end_startouttext { Line 810  sub end_startouttext {
       &Apache::edit::editfield($token->[1],$text,"",80,4);        &Apache::edit::editfield($token->[1],$text,"",80,4);
   }    }
   if ($target eq 'modified') {    if ($target eq 'modified') {
     $text=&Apache::lonxml::get_all_text("endouttext",$$parser['-1']);      $text=&Apache::lonxml::get_all_text("endouttext",$parser);
     $result='<startouttext />'.&Apache::edit::modifiedfield();      $result='<startouttext />'.&Apache::edit::modifiedfield();
   }    }
   if ($target eq 'tex') {    if ($target eq 'tex') {
Line 755  sub start_endouttext { Line 822  sub start_endouttext {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   my $result='';    my $result='';
   if ($target eq "edit" ) { $result="</td></tr>".&Apache::edit::end_table()."\n"; }    if ($target eq "edit" ) { $result="</td></tr>".&Apache::edit::end_table()."\n"; }
   if ($target eq "modified") { $result='<endouttext />'; }    if ($target eq "modified") { 
        $result='<endouttext />'.
        &Apache::edit::handle_insertafter('startouttext'); }
   return $result;    return $result;
 }  }
 sub end_endouttext {  sub end_endouttext {
Line 766  sub end_endouttext { Line 835  sub end_endouttext {
 }  }
 sub delete_startouttext {  sub delete_startouttext {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
 #  my $text=&Apache::lonxml::get_all_text("endouttext",$$parser['-1']);  #  my $text=&Apache::lonxml::get_all_text("endouttext",$parser);
   my $text=$$parser['-1']->get_text("/endouttext");    my $text=$$parser['-1']->get_text("/endouttext");
   my $ntoken=$$parser['-1']->get_token();    my $ntoken=$$parser['-1']->get_token();
   &Apache::lonxml::debug("Deleting :$text: and :$ntoken->[0]:$ntoken->[1]:$ntoken->[2]: for startouttext");    &Apache::lonxml::debug("Deleting :$text: and :$ntoken->[0]:$ntoken->[1]:$ntoken->[2]: for startouttext");

Removed from v.1.127  
changed lines
  Added in v.1.146


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.