diff options
author | Yorhel <git@yorhel.nl> | 2020-02-28 10:05:00 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-02-28 10:05:08 +0100 |
commit | 03106135b8d4f0c2c0387991133cc3205957d68b (patch) | |
tree | e66b8249a7a6f8bae8f78c8a2b573d3394fb399c /lib | |
parent | 018cbf36fe8e33818759909d8ff4fbda87fa3f62 (diff) |
v2rw/RelEdit: Add visual novel relation editing
And a few minor styling fixes.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNWeb/Elm.pm | 5 | ||||
-rw-r--r-- | lib/VNWeb/Releases/Edit.pm | 6 | ||||
-rw-r--r-- | lib/VNWeb/VN/Elm.pm | 25 |
3 files changed, 36 insertions, 0 deletions
diff --git a/lib/VNWeb/Elm.pm b/lib/VNWeb/Elm.pm index e3d0e4f6..4a5269dc 100644 --- a/lib/VNWeb/Elm.pm +++ b/lib/VNWeb/Elm.pm @@ -70,6 +70,11 @@ my %apis = ( applicable => { anybool => 1 }, state => { int => 1 }, } } ], + VNResult => [ { aoh => { # Response to 'VN' + id => { id => 1 }, + title => {}, + original => { required => 0, default => '' }, + } } ], ); diff --git a/lib/VNWeb/Releases/Edit.pm b/lib/VNWeb/Releases/Edit.pm index 28fc96d4..21563c34 100644 --- a/lib/VNWeb/Releases/Edit.pm +++ b/lib/VNWeb/Releases/Edit.pm @@ -30,6 +30,10 @@ my $FORM = { engine => { required => 0, default => '', maxlength => 50 }, extlinks => validate_extlinks('r'), notes => { required => 0, default => '', maxlength => 10240 }, + vn => { sort_keys => 'vid', aoh => { + vid => { id => 1 }, + title => { _when => 'out' }, + } }, hidden => { anybool => 1 }, locked => { anybool => 1 }, @@ -62,6 +66,8 @@ TUWF::get qr{/$RE{rrev}/(?<action>edit|copy)} => sub { }); to_extlinks $e; + enrich_merge vid => 'SELECT id AS vid, title FROM vn WHERE id IN', $e->{vn}; + my $title = ($copy ? 'Copy ' : 'Edit ').$e->{title}; framework_ title => $title, type => 'r', dbobj => $e, tab => tuwf->capture('action'), sub { diff --git a/lib/VNWeb/VN/Elm.pm b/lib/VNWeb/VN/Elm.pm new file mode 100644 index 00000000..fd43c8ca --- /dev/null +++ b/lib/VNWeb/VN/Elm.pm @@ -0,0 +1,25 @@ +package VNWeb::VN::Elm; + +use VNWeb::Prelude; + +elm_api VN => undef, { search => {} }, sub { + my $q = shift->{search}; + my $qs = $q =~ s/[%_]//gr; + my @q = normalize_query $q; + + elm_VNResult tuwf->dbPagei({ results => 15, page => 1 }, + 'SELECT v.id, v.title, v.original + FROM (', + sql_join('UNION ALL', + $q =~ /^$RE{vid}$/ ? sql('SELECT 1, id FROM vn WHERE id =', \"$+{id}") : (), + sql('SELECT 1+substr_score(lower(title),', \$qs, '), id FROM vn WHERE title ILIKE', \"$qs%"), + @q ? (sql 'SELECT 10, id FROM vn WHERE', sql_and map sql('c_search ILIKE', \"%$_%"), @q) : () + ), ') x(prio, id) + JOIN vn v ON v.id = x.id + WHERE NOT v.hidden + GROUP BY v.id, v.title, v.original + ORDER BY MIN(x.prio), v.title + '); +}; + +1; |