1 package Webmin::InputTable;
4 @ISA = ( "Webmin::Table" );
6 =head2 new Webmin::InputTable(&headings, [width], [name], [heading])
7 A table containing multiple rows of inputs, each of which is the same
11 if (defined(&Webmin::Theme::InputTable::new) &&
12 caller() !~ /Webmin::Theme::InputTable/) {
13 return new Webmin::Theme::InputTable(@_[1..$#_]);
15 my $self = defined(&Webmin::Theme::Table::new) ? Webmin::Theme::Table::new(@_)
16 : Webmin::Table::new(@_);
18 $self->{'rowcount'} = 0;
22 =head2 set_inputs(&inputs)
23 Sets the objects to be used for each row
27 my ($self, $classes) = @_;
28 $self->{'classes'} = $classes;
31 =head2 add_values(&values)
32 Adds a row of inputs, with the given values
36 my ($self, $values) = @_;
38 for(my $i=0; $i<@$values; $i++) {
39 my $cls = $self->{'classes'}->[$i];
40 my $newin = { %$cls };
41 bless($newin, ref($cls));
42 $newin->set_value($values->[$i]);
43 $newin->set_name($newin->get_name()."_".$self->{'rowcount'});
44 $newin->set_form($self->{'form'}) if ($self->{'form'});
47 $self->add_row(\@row);
48 $self->{'rowcount'}++;
51 =head2 get_values(row)
52 Returns the values of the inputs in the given row
56 my ($self, $row) = @_;
58 foreach my $i (@{$self->{'rows'}->[$row]}) {
59 if (ref($i) && $i->isa("Webmin::Input")) {
60 push(@rv, $i->get_value());
71 my @rv = Webmin::Table::list_inputs($self);
72 foreach my $r (@{$self->{'rows'}}) {
74 if ($i && ref($i) && $i->isa("Webmin::Input")) {
85 return $self->{'rowcount'};
89 Validates all inputs, and returns a list of error messages
94 my $seli = $self->{'selectinput'};
97 push(@errs, map { [ $seli->get_name(), $_ ] } $seli->validate());
99 foreach my $i (@{$self->{'inputs'}}) {
100 foreach my $e ($i->validate()) {
101 push(@errs, [ $i->get_name(), $e ]);
105 foreach my $r (@{$self->{'rows'}}) {
108 if (defined($self->{'control'})) {
109 if ($r->[$self->{'control'}]->get_value() eq "") {
113 foreach my $i (@$r) {
114 if ($i && ref($i) && $i->isa("Webmin::Input") && !$skip) {
115 my $label = &text('ui_rowlabel', $k, $self->{'headings'}->[$j]);
116 foreach my $e ($i->validate()) {
117 push(@errs, [ $i->get_name(), $label." ".$e ]);
127 =head2 set_control(column)
128 Sets the column for which an empty value means no validation should be done
132 my ($self, $control) = @_;
133 $self->{'control'} = $control;