X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate%2FPlugin%2FL.pm;h=f7ffc11b2d046493c957b99a5f90ee0cc46c4e22;hb=d13408232bfd23d718fee1bc76535196ff409880;hp=d8d223ecb5fac65b76c0b84eaba9f1ca8004c528;hpb=4275966729691b3ae94efeeee829fa24cbf85e93;p=kivitendo-erp.git diff --git a/SL/Template/Plugin/L.pm b/SL/Template/Plugin/L.pm index d8d223ecb..f7ffc11b2 100644 --- a/SL/Template/Plugin/L.pm +++ b/SL/Template/Plugin/L.pm @@ -17,6 +17,11 @@ sub _tag_id { } } +my %_valueless_attributes = map { $_ => 1 } qw( + checked compact declare defer disabled ismap multiple noresize noshade nowrap + readonly selected +); + sub _H { my $string = shift; return $::locale->quote_special_chars('HTML', $string); @@ -62,9 +67,9 @@ sub attributes { my @result = (); while (my ($name, $value) = each %options) { next unless $name; - next if $name eq 'disabled' && !$value; + next if $_valueless_attributes{$name} && !$value; $value = '' if !defined($value); - push @result, _H($name) . '="' . _H($value) . '"'; + push @result, $_valueless_attributes{$name} ? _H($name) : _H($name) . '="' . _H($value) . '"'; } return @result ? ' ' . join(' ', @result) : ''; @@ -277,7 +282,8 @@ sub date_tag { s/y+/\%Y/gi; } $::myconfig{"dateformat"}; - my $cal_align = delete $params{cal_align} || 'BR'; + my $cal_align = delete $params{cal_align} || 'BR'; + my $onchange = delete $params{onchange}; my $str_value = blessed $value ? $value->to_lxoffice : $value; $self->input_tag($name, $str_value, @@ -285,8 +291,11 @@ sub date_tag { size => 11, title => _H($::myconfig{dateformat}), onBlur => 'check_right_date_format(this)', + ($onchange ? ( + onChange => $onchange, + ) : ()), %params, - ) . ((!$params{no_cal}) ? + ) . ((!$params{no_cal} && !$params{readonly}) ? $self->html_tag('img', undef, src => 'image/calendar.png', alt => $::locale->text('Calendar'), @@ -412,12 +421,19 @@ sub areainput_tag { my ($self, $name, $value, @slurp) = @_; my %attributes = _hashify(@slurp); - my $rows = delete $attributes{rows} || 1; + my ($rows, $cols); my $min = delete $attributes{min_rows} || 1; + if (exists $attributes{cols}) { + $cols = delete $attributes{cols}; + $rows = $::form->numtextrows($value, $cols); + } else { + $rows = delete $attributes{rows} || 1; + } + return $rows > 1 - ? $self->textarea_tag($name, $value, %attributes, rows => max $rows, $min) - : $self->input_tag($name, $value, %attributes); + ? $self->textarea_tag($name, $value, %attributes, rows => max($rows, $min), ($cols ? (cols => $cols) : ())) + : $self->input_tag($name, $value, %attributes, ($cols ? (size => $cols) : ())); } sub multiselect2side { @@ -682,7 +698,8 @@ should be selected by default. =item C Creates a generic input tag or textarea tag, depending on content size. The -mount of desired rows must be given with C parameter, Accpeted parameters +amount of desired rows must be either given with the C parameter or can +be computed from the value and the C paramter, Accepted parameters include C for rendering a minimum of rows if a textarea is displayed. You can force input by setting rows to 1, and you can force textarea by setting