# $Id: Util.pm,v 1.2 2003/09/28 08:09:31 clajac Exp $
package CPANXR::Apache::Util;
use strict;
sub navigator {
my ($pkg, $r, $page, $base) = @_;
$r->print("<p><center>");
if($page->previous_page) {
$r->print("<a href=\"");
$r->print($base);
$r->print("&p=");
$r->print($page->previous_page);
$r->print("\"><<</a> ")
}
for(1..$page->last_page) {
$r->print("<a href=\"");
$r->print($base);
$r->print("&p=" . $_ . "\">");
if($_ == $page->current_page) {
$r->print("<font size=\"+1\">" . $_ . "</font>");
} else {
$r->print($_);
}
$r->print("</a> ");
}
if($page->next_page) {
$r->print("<a href=\"");
$r->print($base);
$r->print("&p=");
$r->print($page->next_page);
$r->print("\">>></a>");
}
$r->print("</center>");
}
package CPANXR::Apache::Util::Table;
our @Colors = qw(eeeeee ffffff);
sub new {
my ($pkg, $r, $columns, $width) = @_;
$pkg = ref $pkg || $pkg;
unless(ref $width eq 'ARRAY') {
my $cw = int(100/$columns);
@$width = map { $cw } 0..($columns - 1);
$width->[-1] += (100 - $cw * $columns) unless($cw * $columns == 100);
@$width = map { $_ . "%" } @$width;
}
return bless { r => $r,
columns => $columns,
row_num => 0,
width => $width }, $pkg;
}
sub begin {
my $self = shift;
$self->{r}->print("<table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">\n");
1;
}
sub print {
my ($self, @data) = @_;
my $color = $self->{row_num} & 1;
$self->{r}->print("<tr bgcolor=\"#$Colors[$color]\">");
for(0..($self->{columns} - 1)) {
$self->{r}->print("<td width=\"$self->{width}->[$_]\">");
$self->{r}->print($data[$_] ? $data[$_] : "");
$self->{r}->print("</td>");
}
$self->{r}->print("</tr>");
$self->{row_num}++;
1;
}
sub header {
my ($self, @data) = @_;
$self->{r}->print("<tr bgcolor=\"#dddddd\">");
for(0..($self->{columns} - 1)) {
$self->{r}->print("<td>");
$self->{r}->print($data[$_] ? $data[$_] : "");
$self->{r}->print("</td>");
}
$self->{r}->print("</tr>");
$self->{row_num} = 1;
1;
}
sub end {
my $self = shift;
$self->{r}->print("</table>");
}
1;