From: Mischa POSLAWSKY
Date: Sat, 13 Jun 2020 14:12:09 +0000 (+0200)
Subject: word edit: user editlang enables language inputs
X-Git-Tag: v1.13~215
X-Git-Url: http://git.shiar.net/sheet.git/commitdiff_plain/52bf5994673f4118164e476834d37be670586c4a?ds=inline
word edit: user editlang enables language inputs
---
diff --git a/tools/word.pg.sql b/tools/word.pg.sql
index 101af7a..d18a99c 100644
--- a/tools/word.pg.sql
+++ b/tools/word.pg.sql
@@ -3,6 +3,7 @@ CREATE TABLE login (
pass text,
email text,
fullname text,
+ editlang text[],
id serial NOT NULL PRIMARY KEY
);
diff --git a/writer.plp b/writer.plp
index d72ef02..ce52761 100644
--- a/writer.plp
+++ b/writer.plp
@@ -277,6 +277,7 @@ elsif ($ENV{REQUEST_METHOD} eq 'POST') {{
}}
else {
$row->{prio} //= 1;
+ $row->{lang} //= $user->{editlang}->[0];
$row->{$_} = $get{$_} for keys %get;
}
@@ -365,14 +366,18 @@ for my $col (@wordcols) {
say '
';
}
-if ($row->{id} and not $row->{ref}) {
+if (not $row->{ref}) {
printf '',
'trans', 'Translations';
- my @children = $db->select(word => '*', {ref => $row->{id}}, 'lang, id')->hashes;
+ my @children = !$row->{id} ? () :
+ $db->select(word => '*', {ref => $row->{id}}, 'lang, id')->hashes;
while (my ($lang, $val) = each %fields) {
$lang =~ s/^trans-// or next;
push @children, { lang => $lang, form => $val };
}
+ my %existing = map { $_->{lang} => 1 } $row, @children;
+ $existing{$_} or push @children, { lang => $_ } for @{$user->{editlang}};
+
for my $ref (@children) {
printf(
'- ',
@@ -381,7 +386,7 @@ if ($row->{id} and not $row->{ref}) {
printf(
$ref->{id} ? '%s
' :
'',
- "trans-$ref->{lang}", "/writer/$ref->{id}", Entity($ref->{form}),
+ "trans-$ref->{lang}", "/writer/$ref->{id}", Entity($ref->{form} // ''),
);
}
say '
';