diff options
author | Yorhel <git@yorhel.nl> | 2019-07-08 15:25:29 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2019-07-08 15:25:31 +0200 |
commit | ab05632cd6d2c1edfb5791711614b1633f72b194 (patch) | |
tree | 84e1335c1d3ee940cfd5a013ba541411c967f815 /lib/VNDB/Handler | |
parent | 37f6528e6ac44e9a036e6c4ea8a9ba7837c907f7 (diff) |
Add Producer/Staff/Seiyuu filters to Release/VN/Char filters
This also abstracts and changes the tag/trait filter selection interface
a little bit. Non-searchable tags/traits are now simply not listed
anymore in the dropdown search.
Diffstat (limited to 'lib/VNDB/Handler')
-rw-r--r-- | lib/VNDB/Handler/Producers.pm | 13 | ||||
-rw-r--r-- | lib/VNDB/Handler/Staff.pm | 13 | ||||
-rw-r--r-- | lib/VNDB/Handler/Tags.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Handler/Traits.pm | 2 |
4 files changed, 21 insertions, 9 deletions
diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index f78d4336..e6517b16 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -474,19 +474,22 @@ sub list { sub pxml { my $self = shift; - my $q = $self->formValidate({ get => 'q', maxlength => 500 }); - return $self->resNotFound if $q->{_err}; - $q = $q->{q}; + my $f = $self->formValidate( + { get => 'q', required => 0, maxlength => 500 }, + { get => 'id', required => 0, multi => 1, template => 'id' }, + ); + return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); my($list, $np) = $self->dbProducerGet( - $q =~ /^p([1-9]\d*)/ ? (id => $1) : (search => $q, sort => 'search'), + !$f->{q} ? () : $f->{q} =~ /^p([1-9]\d*)/ ? (id => $1) : (search => $f->{q}, sort => 'search'), + $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), results => 10, page => 1, ); $self->resHeader('Content-type' => 'text/xml; charset=UTF-8'); xml; - tag 'producers', more => $np ? 'yes' : 'no', query => $q; + tag 'producers', more => $np ? 'yes' : 'no', query => $f->{q}; for(@$list) { tag 'item', id => $_->{id}, $_->{name}; } diff --git a/lib/VNDB/Handler/Staff.pm b/lib/VNDB/Handler/Staff.pm index 4d583b68..70f78392 100644 --- a/lib/VNDB/Handler/Staff.pm +++ b/lib/VNDB/Handler/Staff.pm @@ -372,11 +372,16 @@ sub list { sub staffxml { my $self = shift; - my $q = $self->formValidate({ get => 'q', required => 0, maxlength => 500 }); - return $self->resNotFound if $q->{_err} || !$q->{q}; + my $f = $self->formValidate( + { get => 'q', required => 0, maxlength => 500 }, + { get => 'id', required => 0, multi => 1, template => 'id' }, + { get => 'staffid', required => 0, default => 0 }, # The returned id = staff id when set, otherwise it's the alias id + ); + return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); my($list, $np) = $self->dbStaffGet( - $q->{q} =~ /^s([1-9]\d*)/ ? (id => $1) : $q->{q} =~ /^=(.+)/ ? (exact => $1) : (search => $q->{q}, sort => 'search'), + !$f->{q} ? () : $f->{q} =~ /^s([1-9]\d*)/ ? (id => $1) : $f->{q} =~ /^=(.+)/ ? (exact => $1) : (search => $f->{q}, sort => 'search'), + $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), results => 10, page => 1, ); @@ -384,7 +389,7 @@ sub staffxml { xml; tag 'staff', more => $np ? 'yes' : 'no'; for(@$list) { - tag 'item', sid => $_->{id}, id => $_->{aid}, orig => $_->{original}, $_->{name}; + tag 'item', sid => $_->{id}, id => $f->{staffid} ? $_->{id} : $_->{aid}, orig => $_->{original}, $_->{name}; } end; } diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 954ea279..90b3e726 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -769,6 +769,7 @@ sub tagxml { my $f = $self->formValidate( { get => 'q', required => 0, maxlength => 500 }, { get => 'id', required => 0, multi => 1, template => 'id' }, + { get => 'searchable', required => 0, default => 0 }, ); return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); @@ -777,6 +778,7 @@ sub tagxml { $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), results => 15, page => 1, + $f->{searchable} ? (state => 2, searchable => 1) : (), ); $self->resHeader('Content-type' => 'text/xml; charset=UTF-8'); diff --git a/lib/VNDB/Handler/Traits.pm b/lib/VNDB/Handler/Traits.pm index 8d798245..05321988 100644 --- a/lib/VNDB/Handler/Traits.pm +++ b/lib/VNDB/Handler/Traits.pm @@ -426,6 +426,7 @@ sub traitxml { { get => 'q', required => 0, maxlength => 500 }, { get => 'id', required => 0, multi => 1, template => 'id' }, { get => 'r', required => 0, default => 15, template => 'uint', min => 1, max => 200 }, + { get => 'searchable', required => 0, default => 0 }, ); return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); @@ -434,6 +435,7 @@ sub traitxml { page => 1, sort => 'group', state => 2, + $f->{searchable} ? (searchable => 1) : (), !$f->{q} ? () : $f->{q} =~ /^i([1-9]\d*)/ ? (id => $1) : (search => $f->{q}, sort => 'search'), $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), ); |