summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elm/ReleaseEdit.elm9
-rw-r--r--lib/VNWeb/Releases/Edit.pm9
2 files changed, 16 insertions, 2 deletions
diff --git a/elm/ReleaseEdit.elm b/elm/ReleaseEdit.elm
index b994e5ed..ce841e99 100644
--- a/elm/ReleaseEdit.elm
+++ b/elm/ReleaseEdit.elm
@@ -37,6 +37,7 @@ main = Browser.element
type alias Model =
{ state : Api.State
, titles : List GRE.RecvTitles
+ , vntitles : List GRE.RecvVntitles
, olang : String
, official : Bool
, patch : Bool
@@ -82,6 +83,7 @@ init : GRE.Recv -> Model
init d =
{ state = Api.Normal
, titles = d.titles
+ , vntitles = d.vntitles
, olang = d.olang
, official = d.official
, patch = d.patch
@@ -232,8 +234,11 @@ update msg model =
case msg of
Noop -> (model, Cmd.none)
TitleAdd s ->
- ({ model | titles = model.titles ++ [{ lang = s, title = Nothing, latin = Nothing, mtl = False }], olang = if List.isEmpty model.titles then s else model.olang }
- , Task.attempt (always Noop) (Dom.focus ("title_" ++ s)))
+ let def = List.filter (\e -> e.lang == s) model.vntitles |> List.head
+ title = Maybe.map (\e -> e.title) def
+ latin = Maybe.andThen (\e -> e.latin) def
+ in ({ model | titles = model.titles ++ [{ lang = s, title = title, latin = latin, mtl = False }], olang = if List.isEmpty model.titles then s else model.olang }
+ , Task.attempt (always Noop) (Dom.focus ("title_" ++ s)))
TitleDel i -> ({ model | titles = delidx i model.titles }, Cmd.none)
TitleLang i s -> ({ model | titles = modidx i (\e -> { e | lang = s }) model.titles }, Cmd.none)
TitleTitle i s -> ({ model | titles = modidx i (\e -> { e | title = if s == "" then Nothing else Just s }) model.titles }, Cmd.none)
diff --git a/lib/VNWeb/Releases/Edit.pm b/lib/VNWeb/Releases/Edit.pm
index 522d405d..4263c1ca 100644
--- a/lib/VNWeb/Releases/Edit.pm
+++ b/lib/VNWeb/Releases/Edit.pm
@@ -16,6 +16,12 @@ my $FORM = {
title => { required => 0, default => undef, maxlength => 300 },
latin => { required => 0, default => undef, maxlength => 300 },
} },
+ # Titles fetched from the VN entry, for auto-filling
+ vntitles => { _when => 'out', aoh => {
+ lang => {},
+ title => {},
+ latin => { required => 0 },
+ } },
olang => { enum => \%LANGUAGE, default => 'ja' },
platforms => { aoh => { platform => { enum => \%PLATFORM } } },
media => { aoh => {
@@ -79,6 +85,8 @@ TUWF::get qr{/$RE{rrev}/(?<action>edit|copy)} => sub {
$e->{titles} = [ sort { $a->{lang} cmp $b->{lang} } $e->{titles}->@* ];
to_extlinks $e;
+ $e->{vntitles} = tuwf->dbAlli('SELECT lang, title, latin FROM vn_titles WHERE id =', \$e->{vn}[0]{vid}) if $e->{vn}->@* == 1;
+
enrich_merge vid => 'SELECT id AS vid, title FROM vnt WHERE id IN', $e->{vn};
enrich_merge pid => 'SELECT id AS pid, name FROM producers WHERE id IN', $e->{producers};
@@ -109,6 +117,7 @@ TUWF::get qr{/$RE{vid}/add}, sub {
my $e = {
elm_empty($FORM_OUT)->%*,
vn => [{vid => $v->{id}, title => $v->{title}, rtype => 'complete'}],
+ vntitles => tuwf->dbAlli('SELECT lang, title, latin FROM vn_titles WHERE id =', \$v->{id}),
official => 1,
};
$e->{authmod} = auth->permDbmod;