Diff for /loncom/homework/structuretags.pm between versions 1.114 and 1.131

version 1.114, 2002/09/16 20:40:38 version 1.131, 2002/11/06 22:58:36
Line 141  sub problem_edit_header { Line 141  sub problem_edit_header {
        <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" />
        <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>
       ';        ';
 }  }
   
Line 161  sub problem_web_to_edit_header { Line 161  sub problem_web_to_edit_header {
              <input type="submit" name="resetdata" value="Reset Submissions" />               <input type="submit" name="resetdata" value="Reset Submissions" />
              <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.= ' /> Show All Foils    $result.= ' />&nbsp;Show&nbsp;All&nbsp;Foils
              <hr />';               <hr />';
     my $numtoanalyze=$ENV{'form.numtoanalyze'};
     if (!$numtoanalyze) { $numtoanalyze=100; }
     #DISABLED for now.
     #$result.= '<input type="submit" name="problemmode" value="Answer Distribution" />
   #             <input type="text" name="numtoanalyze" value="'.
   # $numtoanalyze.'" size="5" /> <hr />';
     return $result;
 }  }
   
 sub initialize_storage {  sub initialize_storage {
Line 297  sub start_problem { Line 304  sub start_problem {
             $msg.=&checkout_msg;              $msg.=&checkout_msg;
         }          }
  $result.=$msg.'<br />';   $result.=$msg.'<br />';
       }        } 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 ";
         } 
     } 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 345  sub start_problem { Line 354  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/) {   if(not $duedate=~m/1969/) {
     $result .= '\begin{document} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm';      $result .= '\begin{document} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm\noindent \begin{minipage}{\textwidth}';
  } else {   } else {
     $result .= '\begin{document} \noindent \vskip 1 mm';      $result .= '\begin{document} \noindent \vskip 1 mm \noindent\begin{minipage}{\textwidth}';
  }   }
     } else {      } else {
  $result .= '\parbox{\minipagewidth}{\vskip 1mm\textit{Due date: '.$duedate.'} \\\\\\\\';   $result .= '\vskip 1mm\textit{Due date: '.$duedate.'} \\\\\\\\';
     }       } 
  } else {   } else {
     if (not $ENV{'request.symb'} =~ m/\.page_/) {      if (not $ENV{'request.symb'} =~ m/\.page_/) {
  $result .= '\begin{document} \noindent \vskip 1 mm';   $result .= '\begin{document} \noindent \vskip 1 mm\noindent\begin{minipage}{\textwidth}';
     } else {      } else {
  $result .= '\parbox{\minipagewidth}{\vskip 1mm \\\\\\\\';   $result .= '\vskip 1mm \\\\\\\\';
     }       } 
  }   }
     }      }
Line 387  sub end_problem { Line 396  sub end_problem {
       $status ne 'UNCHECKEDOUT') {        $status ne 'UNCHECKEDOUT') {
       # if part is zero, no <part>s existed, so we need show the current         # if part is zero, no <part>s existed, so we need show the current 
       # grading status        # grading status
       my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part);        my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part,$target);
       #FIXME this is ugly we should just generate tex in inputtags        if ($Apache::lonhomework::type ne 'exam') {$result.= $gradestatus;}
       if ($target eq 'tex') { $gradestatus=&html_to_tex($gradestatus); }  
       $result.= $gradestatus;  
     }      }
     if (      if (
  (($target eq 'web') && ($ENV{'request.state'} ne 'construct')) ||   (($target eq 'web') && ($ENV{'request.state'} ne 'construct')) ||
Line 411  sub end_problem { Line 418  sub end_problem {
       } else {        } else {
       $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{document} ';    $result .= '\end{minipage}\end{document} ';
       } else {        } else {
   $result .= '} ';    $result .= '';
       }        }
       }        }
     }      }
Line 432  sub end_problem { Line 439  sub end_problem {
   return $result;    return $result;
 }  }
   
 #FIXME I am ugly shoot me  
 sub html_to_tex {  
   my ($string)=@_;  
   $string =~ s/<table>//;  
   $string =~ s/<\/table>//;  
   $string =~ s/<tr([^>]*)>//g;  
   $string =~ s/<\/tr>//g;  
   $string =~ s/<td([^>]*)>//g;  
   $string =~ s/<\/td>//g;  
   $string =~ s/<b>/\\textbf{/g;  
   $string =~ s/<\/b>/}/g;  
   $string =~ s/<br \/>/\\vskip 0 mm /g;  
   $string =~ s/<input([^>]*)>//g;  
   return $string;  
 }  
   
 sub start_library {  sub start_library {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
Line 489  sub end_library { Line 481  sub end_library {
 }  }
   
 sub start_block {  sub start_block {
   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') {      my $result;
     my $code = @$parstack[$#$parstack];  
     $code =~ s/\"//g;      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || 
     $code .=';return $condition;';   $target eq 'tex' || $target eq 'analyze') {
     #  print "<br />$code<br />";   my $code = @$parstack[$#$parstack];
     my $result = &Apache::run::run($code,$safeeval);   if ($code) {
     &Apache::lonxml::debug("block :$code: returned :$result:");      $code =~ s/\"//g;
     if ( ! $result ) {       $code .=';return $condition;';
       my $skip=&Apache::lonxml::get_all_text("/block",$$parser[$#$parser]);      $result = &Apache::run::run($code,$safeeval);
       &Apache::lonxml::debug("skipping ahead :$skip: $$parser[$#$parser]");      &Apache::lonxml::debug("block :$code: returned :$result:");
    } else {
       $result='1';
    }
    if ( ! $result ) {
       my $skip=&Apache::lonxml::get_all_text("/block",$$parser[-1]);
       &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 548  sub start_randomlist { Line 556  sub start_randomlist {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   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 'tex' || $target eq 'analyze') {
     my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]);      my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]);
     my $b_parser= HTML::TokeParser->new(\$body);      my $b_parser= HTML::TokeParser->new(\$body);
     my $b_tok;      my $b_tok;
Line 601  sub shuffle { Line 609  sub shuffle {
     if (defined(@$a)) {      if (defined(@$a)) {
       &Apache::response::setrandomnumber();        &Apache::response::setrandomnumber();
       for($i=@$a;--$i;) {        for($i=@$a;--$i;) {
  my $j=int rand($i+1);   my $j=int(&Math::Random::random_uniform() * ($i+1));
  next if $i == $j;   next if $i == $j;
  @$a[$i,$j] = @$a[$j,$i];   @$a[$i,$j] = @$a[$j,$i];
       }        }
Line 638  sub start_part { Line 646  sub start_part {
       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' ) {
  $result="\\vskip 0 mm Part is not open to be viewed. It $accessmsg \\\\";   $result="\\end{minipage}\\vskip 0 mm Part is not open to be viewed. It $accessmsg \\\\\\begin{minipage}{\\textwidth}";
       }        }
     } else {      } else {
       if ($target eq 'tex') {        if ($target eq 'tex') {
  $result='\vskip 0 mm';   if ($$tagstack[-2] ne 'problem') {
     $result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent';
    }
       }        }
     }      }
   }    }
Line 659  sub end_part { Line 669  sub end_part {
     return &Apache::inputtags::grade;      return &Apache::inputtags::grade;
   }    }
   if ($target eq 'web' || $target eq 'tex' ) {    if ($target eq 'web' || $target eq 'tex' ) {
     my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part);      my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part,$target);
     #FIXME this is ugly we should just generate tex in inputtags      if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';}
     if ($target eq 'tex') { $gradestatus=&html_to_tex($gradestatus); }  
     return $gradestatus;      return $gradestatus;
   }    }
   return '';    return '';
Line 750  sub end_startouttext { Line 759  sub end_startouttext {
 <td>".  <td>".
   &Apache::edit::insertlist($target,$token).    &Apache::edit::insertlist($target,$token).
     &Apache::edit::end_row().&Apache::edit::start_spanning_row()."\n".      &Apache::edit::end_row().&Apache::edit::start_spanning_row()."\n".
       &Apache::edit::editfield($token->[1],$text,"",50,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['-1']);
Line 765  sub start_endouttext { Line 774  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 {

Removed from v.1.114  
changed lines
  Added in v.1.131


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