1package WebminUI::Columns;
2use WebminCore;
3
4=head2 new WebminUI::Columns(cols)
5Displays some page elements in a multi-column table
6=cut
7sub new
8{
9my ($self, $cols) = @_;
10if (defined(&WebminUI::Theme::Columns::new)) {
11        return new WebminUI::Theme::Columns(@_[1..$#_]);
12        }
13$self = { 'columns' => 2 };
14bless($self);
15$self->set_columns($cols) if (defined($cols));
16return $self;
17}
18
19=head2 html()
20Returns HTML for the objects, arranged in columns
21=cut
22sub html
23{
24my ($self) = @_;
25my $rv;
26my $n = scalar(@{$self->{'contents'}});
27$rv .= "<table width=100% cellpadding=4><tr>\n";
28my $h = int($n / $self->{'columns'})+1;
29my $i = 0;
30my $pc = int(100/$self->{'columns'});
31foreach my $c (@{$self->{'contents'}}) {
32	if ($i%$h == 0) {
33		$rv .= "<td valign=top width=$pc%>";
34		}
35	$rv .= $c->html()."<p>\n";
36	$i++;
37	if ($i%$h == 0) {
38		$rv .= "</td>\n";
39		}
40	}
41$rv .= "</tr></table>\n";
42return $rv;
43}
44
45=head2 add(object)
46Adds some WebminUI:: object to this list
47=cut
48sub add
49{
50my ($self, $object) = @_;
51push(@{$self->{'contents'}}, $object);
52if ($self->{'page'}) {
53	$object->set_page($self->{'page'});
54	}
55}
56
57sub set_columns
58{
59my ($self, $columns) = @_;
60$self->{'columns'} = $columns;
61}
62
63sub get_columns
64{
65my ($self) = @_;
66return $self->{'columns'};
67}
68
69=head2 set_page(WebminUI::Page)
70Called when this menu is added to a page
71=cut
72sub set_page
73{
74my ($self, $page) = @_;
75$self->{'page'} = $page;
76foreach my $c (@{$self->{'contents'}}) {
77	$c->set_page($page);
78	}
79}
80
811;
82
83