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