X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/492daa38d18c5b1eb173f4a4ccd4ae43968c3b3d..347e058a4a7de63c7f0b92091daa51387689771d:/word/edit.plp
diff --git a/word/edit.plp b/word/edit.plp
index 9af73cd..4a6daaa 100644
--- a/word/edit.plp
+++ b/word/edit.plp
@@ -111,7 +111,7 @@ my %wordcol = (
convert => {-label => 'Convert options', -json => 'image', -multiple => 1, -src => sub {
return "data/word/32/$_[0]->{id}.jpg";
}},
- crop32 => {-label => 'Crop 3:2', -json => 'image'},
+ crop32 => {-json => 'image', type => 'hidden'}, # set by javascript interface
story => {-label => 'Story', type => 'textarea', hidden => 'hidden'},
);
@@ -152,7 +152,6 @@ elsif (defined $post{form}) {{
my @val = map { parseinput($_) } $post{'@'.$col}->@*;
my $val = $colinfo->{-multiple} && @val ? \@val : $val[-1];
if (my $jsoncol = $colinfo->{-json}) {
- defined $val and
$row->{$jsoncol}->{$col} = $val; # hash will be encoded
}
else {
@@ -160,7 +159,13 @@ elsif (defined $post{form}) {{
}
}
my $imagecol = $row->{image}; # backup image subcolumns
- ref $_ eq 'HASH' and $_ = encode_json($_) for values %{$row};
+ while (my ($col, $val) = each %{$row}) {
+ # convert json subcolumns to database string
+ ref $val eq 'HASH' or next;
+ $val = { %{decode_json($_)}, %{$val} } for $replace->{$col} // (); # preserve unknown
+ defined $val->{$_} or delete $val->{$_} for keys %{$val}; # delete emptied
+ $row->{$col} = encode_json($val);
+ }
if (!$row->{form} and $row->{lang}) {
if ($row->{ref} ne 'delete') {
@@ -260,9 +265,12 @@ for my $col (@wordcols) {
printf '';
print $row->input($col => $attr);
if (my $imgsrc = $attr->{-src}) {
- printf('',
- $col, $_, $row->{form}, $col eq 'source' && ' hidden'
+ my $hide = $col eq 'source';
+ printf '', $col unless $hide;
+ printf('
',
+ $_, $row->{form}, $hide && qq( id="${col}preview" hidden)
) for grep { -e } $imgsrc->($row);
+ printf '' unless $hide;
}
print $row->input($_ => delete $wordcol{$_}) for @span;
print '';
@@ -326,6 +334,10 @@ while (my $ref = $children->hash) {
+
+