summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2019-07-08 15:25:29 +0200
committerYorhel <git@yorhel.nl>2019-07-08 15:25:31 +0200
commitab05632cd6d2c1edfb5791711614b1633f72b194 (patch)
tree84e1335c1d3ee940cfd5a013ba541411c967f815 /lib/VNDB/Handler
parent37f6528e6ac44e9a036e6c4ea8a9ba7837c907f7 (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.pm13
-rw-r--r--lib/VNDB/Handler/Staff.pm13
-rw-r--r--lib/VNDB/Handler/Tags.pm2
-rw-r--r--lib/VNDB/Handler/Traits.pm2
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}) : (),
);