--- rat/lonpage.pm 2000/09/14 09:26:37 1.3
+++ rat/lonpage.pm 2000/09/14 20:10:39 1.4
@@ -16,6 +16,14 @@ use GDBM_File;
# -------------------------------------------------------------- Module Globals
my %hash;
my @rows;
+
+my %ssibody=();
+my %ssibgcolor=();
+my %ssitext=();
+my %ssilink=();
+my %ssivlink=();
+my %ssialink=();
+my %cellemb=();
# ------------------------------------------------------------ Build page table
@@ -28,11 +36,12 @@ sub tracetable {
if (defined($hash{'is_map_'.$rid})) {
if ((defined($hash{'map_start_'.$hash{'src_'.$rid}})) &&
(defined($hash{'map_finish_'.$hash{'src_'.$rid}}))) {
- my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}};
- $sofar=
+ my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}};
+ $sofar=
&tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},
'&'.$frid.'&');
- $sofar++;
+ $sofar++;
+ if ($hash{'src_'.$frid}) {
my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid});
if (($brepriv eq '2') || ($brepriv eq 'F')) {
if (defined($rows[$sofar])) {
@@ -41,9 +50,11 @@ sub tracetable {
$rows[$sofar]=$frid;
}
}
+ }
}
} else {
- $sofar++;
+ $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])) {
@@ -52,6 +63,7 @@ sub tracetable {
$rows[$sofar]=$rid;
}
}
+ }
}
if (defined($hash{'to_'.$rid})) {
@@ -64,6 +76,12 @@ sub tracetable {
return $further;
}
+sub cell {
+ my ($r,$colspan,$rid)=@_;
+ $r->print('
');
+ $r->print($hash{'src_'.$rid});
+ $r->print(' | ');
+}
# ================================================================ Main Handler
@@ -97,21 +115,22 @@ sub handler {
@rows=();
&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 $j;
my $maxcols=-1;
- my %ssibody=();
- my %ssibgcolor=();
- my %ssitext=();
- my %ssilink=();
- my %ssivlink=();
- my %ssialink=();
- my %cellemb=();
# --------------------------------------------- Get SSI output, post parameters
for ($i=0;$i<=$#rows;$i++) {
+ if ($rows[$i]) {
my @colcont=split(/\&/,$rows[$i]);
$maxcols=$#colcont>$maxcols?$#colcont:$maxcols;
map {
@@ -124,7 +143,7 @@ sub handler {
# ---------------------------------------------------------------- End SSI cell
}
} @colcont;
-
+ }
}
if ($maxcols<0) {
$r->content_type('text/html');
@@ -132,7 +151,26 @@ sub handler {
$r->print('Empty page.');
} else {
# ------------------------------------------------------------------ Build page
-
+ $maxcols++;
+ $r->content_type('text/html');
+ $r->send_http_header;
+ $r->print('');
+
+ $r->print('');
+ for ($i=2;$i<=$#rows;$i++) {
+ $r->print("\n");
+ 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('
');
+ }
+ $r->print("\n
");
+ $r->print('');
# -------------------------------------------------------------------- End page
}
# ------------------------------------------------------------- End render page