Diff for /rat/lonpage.pm between versions 1.8 and 1.13

version 1.8, 2000/09/23 20:12:46 version 1.13, 2000/10/16 17:29:11
Line 4 Line 4
 # (TeX Content Handler  # (TeX Content Handler
 #  #
 # 05/29/00,05/30 Gerd Kortemeyer)  # 05/29/00,05/30 Gerd Kortemeyer)
 # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23 Gerd Kortemeyer  # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23,
   # 10/02,10/10,10/14,10/16 Gerd Kortemeyer
   
 package Apache::lonpage;  package Apache::lonpage;
   
Line 73  sub tracetable { Line 74  sub tracetable {
        }         }
   
        if (defined($hash{'to_'.$rid})) {         if (defined($hash{'to_'.$rid})) {
     my $mincond=1;
             my $next='';
           map {            map {
               my $now=&tracetable($sofar,$hash{'goesto_'.$_},$beenhere);                my $thiscond=
               if ($now>$further) { $further=$now; }        &Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}});
                 if ($thiscond>=$mincond) {
     if ($next) {
         $next.=','.$_.':'.$thiscond;
                     } else {
                         $next=$_.':'.$thiscond;
     }
                     if ($thiscond>$mincond) { $mincond=$thiscond; }
         }
           } split(/\,/,$hash{'to_'.$rid});            } split(/\,/,$hash{'to_'.$rid});
             map {
                 my ($linkid,$condval)=split(/\:/,$_);
                 if ($condval>=$mincond) {
                   my $now=&tracetable($sofar,$hash{'goesto_'.$linkid},$beenhere);
                   if ($now>$further) { $further=$now; }
         }
             } split(/\,/,$next);
   
        }         }
     }      }
     return $further;      return $further;
Line 122  sub handler { Line 141  sub handler {
      }       }
   }    }
   
   # ------------------------------------------------------------ Add to symb list
   
                   my $i;                    my $i;
                     my %symbhash=();
                     for ($i=0;$i<=$#rows;$i++) {
        if ($rows[$i]) {
                           my @colcont=split(/\&/,$rows[$i]);
                           map {
                              $symbhash{$hash{'src_'.$_}}='';
           } @colcont;
        }
     }
                     &Apache::lonnet::symblist($requrl,%symbhash);
   
   # ------------------------------------------------------------------ Page parms
   
                   my $j;                    my $j;
                   my $lcm=1;                    my $lcm=1;
                   my $contents=0;                    my $contents=0;
Line 171  sub handler { Line 205  sub handler {
                               my $output=Apache::lonnet::ssi($src,%posthash);                                my $output=Apache::lonnet::ssi($src,%posthash);
                               my $parser=HTML::TokeParser->new(\$output);                                my $parser=HTML::TokeParser->new(\$output);
                               my $token;                                my $token;
                                 my $thisdir=$src;
                               my $bodydef=0;                                my $bodydef=0;
                               my $thisxml=0;                                my $thisxml=0;
                                 my @rlinks=();
                               if ($output=~/\?xml/) {                                if ($output=~/\?xml/) {
                                  $isxml=1;                                   $isxml=1;
                                  $thisxml=1;                                   $thisxml=1;
Line 180  sub handler { Line 216  sub handler {
          /((?:\<(?:\?xml|\!DOC|html)[^\>]*(?:\>|\>\]\>)\s*)+)\<body[^\>]*\>/si;           /((?:\<(?:\?xml|\!DOC|html)[^\>]*(?:\>|\>\]\>)\s*)+)\<body[^\>]*\>/si;
                                  $xmlheader=$1;                                   $xmlheader=$1;
       }        }
                               while (($bodydef==0) &&                                while ($token=$parser->get_token) {
                                      ($token=$parser->get_token)) {   if ($token->[0] eq 'S') {
   if ($token->[1] eq 'body') {                                    if ($token->[1] eq 'a') {
         if ($token->[2]->{'href'}) {
                                            $rlinks[$#rlinks+1]=
        $token->[2]->{'href'};
         }
     } elsif ($token->[1] eq 'img') {
                                            $rlinks[$#rlinks+1]=
        $token->[2]->{'src'};
     } elsif ($token->[1] eq 'embed') {
                                            $rlinks[$#rlinks+1]=
        $token->[2]->{'src'};
     } elsif ($token->[1] eq 'base') {
         $thisdir=$token->[2]->{'href'};
     } elsif ($token->[1] eq 'body') {
       $bodydef=1;        $bodydef=1;
                                       $ssibgcolor{$_}=$token->[2]->{'bgcolor'};                                        $ssibgcolor{$_}=$token->[2]->{'bgcolor'};
                                       $ssitext{$_}=$token->[2]->{'text'};                                        $ssitext{$_}=$token->[2]->{'text'};
Line 192  sub handler { Line 241  sub handler {
                                       if ($thisxml) {                                        if ($thisxml) {
   $xmlbody=$token->[4];    $xmlbody=$token->[4];
                                       }                                        }
                                   }                                    } elsif ($token->[1] eq 'meta') {
                                   if ($token->[1] eq 'meta') {  
       $allmeta.="\n".$token->[4].'</meta>';        $allmeta.="\n".$token->[4].'</meta>';
                                   }                                    } elsif (($token->[1] eq 'script') &&
                                   if ($token->[1] eq 'script') {                                             ($bodydef==0)) {
       $allscript.="\n\n"        $allscript.="\n\n"
                                                 .$parser->get_text('/script');                                                  .$parser->get_text('/script');
                                   }                                    }
                               }          }
         }
                               if ($output=~/\<body[^\>]*\>(.*)/si) {                                if ($output=~/\<body[^\>]*\>(.*)/si) {
                                  $output=$1;                                    $output=$1; 
                               }                                }
Line 210  sub handler { Line 259  sub handler {
                                   $output=~s/\<form[^\>]*\>//gsi;                                    $output=~s/\<form[^\>]*\>//gsi;
                                   $output=~s/\<\/form[^\>]*\>//gsi;                                    $output=~s/\<\/form[^\>]*\>//gsi;
                               }                                }
                                 $thisdir=~s/\/[^\/]*$//;
         map {
     unless (($_=~/^http:\/\//i) ||
                                             ($_=~/^\//)) {
         my $newlocation=
       &Apache::lonnet::hreflocation($thisdir,$_);
                        $output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/;
     }
         } @rlinks;
                        $output=~s/\<\s*applet/\<applet codebase=\"$thisdir\" /gi;
       $ssibody{$_}=$output;        $ssibody{$_}=$output;
   
 # ---------------------------------------------------------------- End SSI cell  # ---------------------------------------------------------------- End SSI cell
Line 246  sub handler { Line 305  sub handler {
                       } else {                        } else {
   $r->print('<body bgcolor="#FFFFFF">');    $r->print('<body bgcolor="#FFFFFF">');
                       }                        }
   
 # ------------------------------------------------------------------ Start form  # ------------------------------------------------------------------ Start form
                       if ($nforms) {                        if ($nforms) {
   $r->print('<form method="post" action="'.    $r->print('<form method="post" action="'.
Line 285  sub handler { Line 343  sub handler {
                               } elsif ($cellemb{$rid} eq 'img') {                                } elsif ($cellemb{$rid} eq 'img') {
                                   $r->print('><img src="'.                                    $r->print('><img src="'.
                                     $hash{'src_'.$rid}.'"></img>');                                      $hash{'src_'.$rid}.'"></img>');
       }        } elsif ($cellemb{$rid} eq 'emb') {
                                     $r->print('><embed src="'.
                                       $hash{'src_'.$rid}.'"></embed>');
                                 }
                               $r->print('</td>');                                $r->print('</td>');
                           }                            }
                           $r->print('</tr>');                            $r->print('</tr>');
Line 318  sub handler { Line 379  sub handler {
           }            }
       }         } 
   }    }
   $ENV{'user.error.msg'}="$requrl:bre:1:1:Course not initialized";    $ENV{'user.error.msg'}="$requrl:bre:0:0:Course not initialized";
   return HTTP_NOT_ACCEPTABLE;     return HTTP_NOT_ACCEPTABLE; 
 }  }
   

Removed from v.1.8  
changed lines
  Added in v.1.13


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