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 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 '
  • ';