git.shiar.nl
/
perl
/
html-form-simple.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
XXX: defaults
[perl/html-form-simple.git]
/
lib
/
HTML
/
Form
/
Simple.pm
diff --git
a/lib/HTML/Form/Simple.pm
b/lib/HTML/Form/Simple.pm
index 3a58c799761a27e880891e321a7ec375166b75c4..2b30d79007059e5051a1210114ba2d5fed58359e 100644
(file)
--- a/
lib/HTML/Form/Simple.pm
+++ b/
lib/HTML/Form/Simple.pm
@@
-9,7
+9,8
@@
our $VERSION = '1.00';
sub new {
sub new {
- bless {}, $_[0];
+ my ($class, $default) = @_;
+ bless {default => $default}, $class;
}
sub _attr {
}
sub _attr {
@@
-83,6
+84,8
@@
sub hidden {
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{type} = 'hidden' unless defined $attr->{type};
return $self->tag(input => $attr);
$attr->{type} = 'hidden' unless defined $attr->{type};
return $self->tag(input => $attr);
@@
-94,6
+97,8
@@
sub text {
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'text' unless defined $attr->{type} or defined $attr->{rows};
$value = delete $attr->{value} if defined $attr->{rows};
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'text' unless defined $attr->{type} or defined $attr->{rows};
$value = delete $attr->{value} if defined $attr->{rows};
@@
-109,13
+114,15
@@
sub select {
my $self = shift;
my ($name, $rows, $default, $attr) = $self->_attr(3, @_);
my $self = shift;
my ($name, $rows, $default, $attr) = $self->_attr(3, @_);
- $default = $attr->{value} unless defined $default;
- delete $attr->{value}; # never a parent attribute
-
$attr->{name} = $name;
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'select' unless defined $attr->{type};
$attr->{name} = $name;
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'select' unless defined $attr->{type};
+ $default = $attr->{value} unless defined $default;
+ delete $attr->{value}; # never a parent attribute
+ $default = $self->{default}->{$name}
+ if not defined $default and defined $name and defined $self->{default};
+
my @options = map { ref $_ ? $_ : {value => $_} } @$rows;
my @return;
my @options = map { ref $_ ? $_ : {value => $_} } @$rows;
my @return;
@@
-164,38
+171,42
@@
sub select {
sub radio {
my $self = shift;
sub radio {
my $self = shift;
- my ($name, $label, $
value
, $attr) = $self->_attr(3, @_);
+ my ($name, $label, $
rows
, $attr) = $self->_attr(3, @_);
- if (not defined $
value
) {
+ if (not defined $
rows
) {
if (defined $label) {
if (defined $label) {
- $
value
= ref $label eq 'ARRAY' ? [1 .. $#$label+1] : [1];
+ $
rows
= ref $label eq 'ARRAY' ? [1 .. $#$label+1] : [1];
}
else {
}
else {
- $
value
= [{}];
+ $
rows
= [{}];
}
}
}
}
- elsif (ref $
value
ne 'ARRAY') {
- $
value = [$value
];
+ elsif (ref $
rows
ne 'ARRAY') {
+ $
rows = [$rows
];
}
if (defined $label) {
}
if (defined $label) {
- $_ = ref $_ eq 'HASH' ? {%$_} : {value => $_} for @$value;
- $_->{label} = ref $label eq 'ARRAY' ? shift @$label : $label for @$value;
+ $rows = [ map { ref $_ eq 'HASH' ? {%$_} : {value => $_} } @$rows ];
+ if (ref $label eq 'ARRAY') {
+ $rows->[$_]->{label} = $label->[$_] for 0 .. $#$rows;
+ } else {
+ $_->{label} = $label for @$rows;
+ }
}
}
- $self->select($name, $
value
, {%$attr, type => 'radio'});
+ $self->select($name, $
rows
, {%$attr, type => 'radio'});
}
sub check {
my $self = shift;
my ($name, $label, $checked, $attr) = $self->_attr(3, @_);
}
sub check {
my $self = shift;
my ($name, $label, $checked, $attr) = $self->_attr(3, @_);
- my $rows = defined $label ? ref $label eq 'ARRAY' ?
$label
: [$label] : [{}];
+ my $rows = defined $label ? ref $label eq 'ARRAY' ?
[@$label]
: [$label] : [{}];
ref $_ eq 'HASH' or $_ = {label => $_} for @$rows;
if (defined $checked) {
if (ref $checked eq 'ARRAY') {
ref $_ eq 'HASH' or $_ = {label => $_} for @$rows;
if (defined $checked) {
if (ref $checked eq 'ARRAY') {
- $
_->{checked} = shift @$checked for @
$rows;
- push @$rows, map { {checked => $_} } @$checked;
+ $
rows->[$_]->{checked} = $checked->[$_] for 0 .. $#
$rows;
+ push @$rows, map { {checked => $_} } @$checked
[@$rows .. $#$checked]
;
}
else {
$_->{checked} = $checked for @$rows;
}
else {
$_->{checked} = $checked for @$rows;