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