word edit: user editlang enables language inputs
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 13 Jun 2020 14:12:09 +0000 (16:12 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 20 Oct 2020 20:49:11 +0000 (22:49 +0200)
tools/word.pg.sql
writer.plp

index 101af7a19491142d9d91920240d22c04017547ec..d18a99cb4b3172f464f5302832957e910ba9a678 100644 (file)
@@ -3,6 +3,7 @@ CREATE TABLE login (
        pass       text,
        email      text,
        fullname   text,
+       editlang   text[],
        id         serial      NOT NULL PRIMARY KEY
 );
 
index d72ef021111f021d2b21038c0cd4e6c894c814c5..ce52761ef490526c6d510f2b931441d8652e24a7 100644 (file)
@@ -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 '</p></li>';
 }
 
-if ($row->{id} and not $row->{ref}) {
+if (not $row->{ref}) {
        printf '<li><label for="%s">%s</label><div><ul class="inline" id="%1$s">',
                '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(
                        '<li><label for="%s" title="%3$s">%s </label>',
@@ -381,7 +386,7 @@ if ($row->{id} and not $row->{ref}) {
                printf(
                        $ref->{id} ? '<a id="%s" href="%s">%s</a></li>' :
                        '<input id="%s" name="%1$s" value="%3$s" />',
-                       "trans-$ref->{lang}", "/writer/$ref->{id}", Entity($ref->{form}),
+                       "trans-$ref->{lang}", "/writer/$ref->{id}", Entity($ref->{form} // ''),
                );
        }
        say '</ul></div></li>';