diff options
-rw-r--r-- | elm/ReleaseEdit.elm | 9 | ||||
-rw-r--r-- | lib/VNWeb/Releases/Edit.pm | 9 |
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; |