Diff for /rat/lonpage.pm between versions 1.2 and 1.4

version 1.2, 2000/08/31 10:14:08 version 1.4, 2000/09/14 20:10:39
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 Gerd Kortemeyer  # 08/30,08/31,09/06,09/14 Gerd Kortemeyer
   
 package Apache::lonpage;  package Apache::lonpage;
   
Line 16  use GDBM_File; Line 16  use GDBM_File;
 # -------------------------------------------------------------- Module Globals  # -------------------------------------------------------------- Module Globals
 my %hash;  my %hash;
 my @rows;  my @rows;
                     
   my %ssibody=();
   my %ssibgcolor=();
   my %ssitext=();
   my %ssilink=();
   my %ssivlink=();
   my %ssialink=();
   my %cellemb=();
   
 # ------------------------------------------------------------ Build page table  # ------------------------------------------------------------ Build page table
   
Line 28  sub tracetable { Line 36  sub tracetable {
        if (defined($hash{'is_map_'.$rid})) {         if (defined($hash{'is_map_'.$rid})) {
            if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) &&             if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) &&
                (defined($hash{'map_finish_'.$hash{'src_'.$rid}}))) {                 (defined($hash{'map_finish_'.$hash{'src_'.$rid}}))) {
        $sofar=                my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}};
         $sofar=
                 &tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},                  &tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},
                 '&'.$hash{'map_finish_'.$hash{'src_'.$rid}}.'&');                  '&'.$frid.'&');
                $sofar++;                $sofar++;
                if (defined($rows[$sofar])) {                if ($hash{'src_'.$frid}) {
                    $rows[$sofar].='&'.$hash{'map_finish_'.$hash{'src_'.$rid}};                 my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid});
                } else {                 if (($brepriv eq '2') || ($brepriv eq 'F')) {
                    $rows[$sofar]=$hash{'map_finish_'.$hash{'src_'.$rid}};                   if (defined($rows[$sofar])) {
                }                     $rows[$sofar].='&'.$frid;
                    } else {
                      $rows[$sofar]=$frid;
                    }
          }
         }
    }     }
        } else {         } else {
            $sofar++;            $sofar++;
            if (defined($rows[$sofar])) {            if ($hash{'src_'.$rid}) {
              my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$rid});
              if (($brepriv eq '2') || ($brepriv eq 'F')) {
                if (defined($rows[$sofar])) {
                $rows[$sofar].='&'.$rid;                 $rows[$sofar].='&'.$rid;
            } else {               } else {
                $rows[$sofar]=$rid;                 $rows[$sofar]=$rid;
            }               }
      }
             }
        }         }
   
        if (defined($hash{'to_'.$rid})) {         if (defined($hash{'to_'.$rid})) {
Line 57  sub tracetable { Line 76  sub tracetable {
     return $further;      return $further;
 }  }
   
   sub cell {
       my ($r,$colspan,$rid)=@_;
       $r->print('<td colspan="'.$colspan.'">');
       $r->print($hash{'src_'.$rid});
       $r->print('</td>');
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
   my $r=shift;    my $r=shift;
   
 # ----------------------------------------------------------- Set document type  # ------------------------------------------- Set document type for header only
   
   if ($ENV{'browser.mathml'}) {  
     $r->content_type('text/xml');  
   } else {  
     $r->content_type('text/html');  
   }  
   $r->send_http_header;  
   
   return OK if $r->header_only;    if ($r->header_only) {
          if ($ENV{'browser.mathml'}) {
              $r->content_type('text/xml');
          } else {
              $r->content_type('text/html');
          }
          $r->send_http_header;
          return OK;
      }
   
   my $requrl=$r->uri;    my $requrl=$r->uri;
 # ----------------------------------------------------------------- Tie db file  # ----------------------------------------------------------------- Tie db file
Line 86  sub handler { Line 112  sub handler {
               if (($firstres) && ($lastres)) {                if (($firstres) && ($lastres)) {
 # ----------------------------------------------------------------- Render page  # ----------------------------------------------------------------- Render page
   
   $r->print("<h2>All is cool.</h2>");  
   
                   @rows=();                    @rows=();
   
                   &tracetable(0,$firstres,'&'.$lastres.'&');                    &tracetable(0,$firstres,'&'.$lastres.'&');
                   $rows[$#rows+1]=''.$lastres;                    if ($hash{'src_'.$lastres}) {
                        my $brepriv=
                           &Apache::lonnet::allowed('bre',$hash{'src_'.$lastres});
                        if (($brepriv eq '2') || ($brepriv eq 'F')) {
                           $rows[$#rows+1]=''.$lastres;
        }
     }
   
                   my $i;                    my $i;
                     my $j;
                     my $maxcols=-1;
   
   # --------------------------------------------- Get SSI output, post parameters
   
                   for ($i=0;$i<=$#rows;$i++) {                    for ($i=0;$i<=$#rows;$i++) {
                       $r->print($i.' - '.$rows[$i].'<br>');       if ($rows[$i]) {
                         my @colcont=split(/\&/,$rows[$i]);
                         $maxcols=$#colcont>$maxcols?$#colcont:$maxcols;
                         map {
                             my $src=$hash{'src_'.$_};
                             $src=~/\.\w+$/;
                             $cellemb{$_}=Apache::lonnet::fileembstyle($1);
                             if ($cellemb{$_} eq 'ssi') {
   # --------------------------------------------------------- This is an SSI cell
   
   # ---------------------------------------------------------------- End SSI cell
                             }
                         } @colcont;
                        } 
                   }                    }
                     if ($maxcols<0) {
                         $r->content_type('text/html');
                         $r->send_http_header;
                         $r->print('<html><body>Empty page.</body></html>');
                     } else {
   # ------------------------------------------------------------------ Build page
                         $maxcols++;
                         $r->content_type('text/html');
                         $r->send_http_header;
                         $r->print('<html><body>');
    
                         $r->print('<table cols="'.$maxcols.'" rows="'.
                                    $#rows.'" border=1>');
                         for ($i=2;$i<=$#rows;$i++) {
                             $r->print("\n<tr>");
                             my @colcont=split(/\&/,$rows[$i]);
                             my $avespan=int($maxcols/($#colcont+1));
                             my $lastspan=$maxcols-$avespan*$#colcont;
                             for ($j=0;$j<$#colcont;$j++) {
                                 &cell($r,$avespan,$colcont[$j]);
                             }
                             &cell($r,$lastspan,$colcont[$#colcont]);
                             $r->print('</tr>');
                         }
                         $r->print("\n</table>");
                         $r->print('</body></html>');
   # -------------------------------------------------------------------- End page
                     }                  
 # ------------------------------------------------------------- End render page  # ------------------------------------------------------------- End render page
               } else {                } else {
   $r->print("<h2>Page undefined.</h2>");                    $r->content_type('text/html');
                     $r->send_http_header;
     $r->print('<html><body>Page undefined.</body></html>');
               }                }
 # ------------------------------------------------------------------ Untie hash  # ------------------------------------------------------------------ Untie hash
               unless (untie(%hash)) {                unless (untie(%hash)) {

Removed from v.1.2  
changed lines
  Added in v.1.4


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