From e15869b9c0c124d67f5d8ac85ffefad383642672 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 21 Dec 2010 16:14:11 +0100 Subject: Pass VN tag filters by ID rather than name This makes the UI slightly uglier and less intuitive. I'll see if I can find a way around that. This update is required for the permanent browsing filters to be fast and reliable. --- lib/VNDB/Handler/Tags.pm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/VNDB/Handler/Tags.pm') diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 0567bff6..6e373d04 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -44,7 +44,8 @@ sub tagpage { results => 50, page => $f->{p}, sort => $f->{s}, reverse => $f->{o} eq 'd', - tags_include => [ $f->{m}, [$tag ]], + tagspoil => $f->{m}, + tag_inc => $tag, ); my $title = mt '_tagp_title', $t->{meta}?0:1, $t->{name}; @@ -668,19 +669,22 @@ sub fulltree { sub tagxml { my $self = shift; - my $q = $self->formValidate({ name => 'q', maxlength => 500 }); - return 404 if $q->{_err}; - $q = $q->{q}; + my $f = $self->formValidate( + { name => 'q', required => 0, maxlength => 500 }, + { name => 'id', required => 0, multi => 1, template => 'int' }, + ); + return 404 if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); my($list, $np) = $self->dbTagGet( - $q =~ /^g([1-9]\d*)/ ? (id => $1) : $q =~ /^name:(.+)$/ ? (name => $1) : (search => $q), + !$f->{q} ? () : $f->{q} =~ /^g([1-9]\d*)/ ? (id => $1) : $f->{q} =~ /^name:(.+)$/ ? (name => $1) : (search => $f->{q}), + $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), results => 15, page => 1, ); $self->resHeader('Content-type' => 'text/xml; charset=UTF-8'); xml; - tag 'tags', more => $np ? 'yes' : 'no', query => $q; + tag 'tags', more => $np ? 'yes' : 'no', $f->{q} ? (query => $f->{q}) : (); for(@$list) { tag 'item', id => $_->{id}, meta => $_->{meta} ? 'yes' : 'no', state => $_->{state}, $_->{name}; } -- cgit v1.2.3 From 81c1681ffc46044d902145e442464c069ef1df3e Mon Sep 17 00:00:00 2001 From: Yorhel Date: Wed, 22 Dec 2010 19:23:50 +0100 Subject: Don't allow page > 100 or sorting on username or title on tag link browser Performance. Those featues are hardly used, but they can block other visitors when used in bad combinations. --- lib/VNDB/Handler/Tags.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/VNDB/Handler/Tags.pm') diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 6e373d04..3d656728 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -358,12 +358,12 @@ sub taglinks { my $f = $self->formValidate( { name => 'p', required => 0, default => 1, template => 'int' }, { name => 'o', required => 0, default => 'd', enum => ['a', 'd'] }, - { name => 's', required => 0, default => 'date', enum => [qw|date username title tag|] }, + { name => 's', required => 0, default => 'date', enum => [qw|date tag|] }, { name => 'v', required => 0, default => 0, template => 'int' }, { name => 'u', required => 0, default => 0, template => 'int' }, { name => 't', required => 0, default => 0, template => 'int' }, ); - return 404 if $f->{_err}; + return 404 if $f->{_err} || $f->{p} > 100; my($list, $np) = $self->dbTagLinks( what => 'details', @@ -433,11 +433,11 @@ sub taglinks { sorturl => $url->(s=>0,o=>0), header => [ [ mt('_taglink_col_date'), 'date' ], - [ mt('_taglink_col_user'), 'username' ], + [ mt('_taglink_col_user') ], [ mt('_taglink_col_rating') ], [ mt('_taglink_col_tag'), 'tag' ], [ mt('_taglink_col_spoiler') ], - [ mt('_taglink_col_vn'), 'title' ], + [ mt('_taglink_col_vn'), ], ], row => sub { my($s, $n, $l) = @_; -- cgit v1.2.3 From 63005b274ccde96d8bdb36e7466ea5b0899b4151 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 1 Jan 2011 16:45:58 +0100 Subject: Added saving notes to filter selector and applied filFetchDB() This finalizes the permanent filters feature. --- lib/VNDB/Handler/Tags.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/VNDB/Handler/Tags.pm') diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 3d656728..ad736027 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -39,14 +39,15 @@ sub tagpage { my $tagspoil = $self->reqCookie($self->{cookie_prefix}.'tagspoil'); $f->{m} = $tagspoil =~ /^[0-2]$/ ? $tagspoil : 0 if $f->{m} == -1; - my($list, $np) = $t->{meta} || $t->{state} != 2 ? ([],0) : $self->dbVNGet( + my($list, $np) = $t->{meta} || $t->{state} != 2 ? ([],0) : $self->filFetchDB(vn => undef, undef, { what => 'rating', results => 50, page => $f->{p}, sort => $f->{s}, reverse => $f->{o} eq 'd', tagspoil => $f->{m}, tag_inc => $tag, - ); + tag_exc => undef, + }); my $title = mt '_tagp_title', $t->{meta}?0:1, $t->{name}; $self->htmlHeader(title => $title, noindex => $t->{state} != 2); -- cgit v1.2.3