From 0ccfc568cb2167ae38ea0c170d511ce321651c86 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 30 May 2020 18:59:21 +0200 Subject: [PATCH] word edit: named form input options Parameters replaced by prefixed -label and -option; other attributes are appended literally. --- writer.plp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/writer.plp b/writer.plp index 15a9515..ca27e21 100644 --- a/writer.plp +++ b/writer.plp @@ -208,33 +208,37 @@ my $title = $row->{id} ? "entry #$row->{id}" : 'new entry'; package Shiar_Sheet::FormRow { sub input { - my ($row, $col, $type, $label) = @_; + my ($row, $col, $attr) = @_; my $val = $row->{$col} // ''; $val = '{'.join(',', map {s/,/\\,/gr} @{$val}).'}' if ref $val eq 'ARRAY'; - if (ref $type eq 'ARRAY') { + my $html = ''; + $html .= qq( $_="$attr->{$_}") for sort grep {!/^-/} keys %{$attr // {}}; + + if (my $options = $attr->{-select}) { return ( sprintf('', ); } - elsif ($type eq 'checkbox') { + elsif ($attr->{type} eq 'checkbox') { + $html .= ' checked' if $val; return sprintf( join('', '', - ), $col, $type, !!$val && ' checked', $label + ), $col, $html, $attr->{-label} ); } else { - my $html = ''; - $html .= qq( $_="$type->{$_}") for sort keys %{$type // {}}; return ( - $label ? sprintf('', $col, $label) : (), + (map { + sprintf('', $col, $_) + } $attr->{-label} // ()), sprintf('', $col, PLP::Functions::EscapeHTML($val), $html ), @@ -269,13 +273,13 @@ for my $colinfo (pairs @wordcols) { printf '
  • ', $col, $title; printf ''; if ($col eq 'prio') { - print $row->input($col => \@prioenum); - print $row->input(cover => 'checkbox', 'Highlighted'); - print $row->input(grade => {type => 'number'}, 'Order'); + print $row->input($col => {-select => \@prioenum}); + print $row->input(cover => {type => 'checkbox', -label => 'Highlighted'}); + print $row->input(grade => {type => 'number', -label => 'Order'}); } else { print $row->input($col); - print $row->input(ref => {}, 'Reference') if $col eq 'cat'; + print $row->input(ref => {-label => 'Reference'}) if $col eq 'cat'; } print ''; say '

  • '; -- 2.30.0