From 52bf5994673f4118164e476834d37be670586c4a Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 13 Jun 2020 16:12:09 +0200 Subject: [PATCH] word edit: user editlang enables language inputs --- tools/word.pg.sql | 1 + writer.plp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) 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 '
  • '; -- 2.30.0