diff options
author | Yorhel <git@yorhel.nl> | 2010-12-10 11:57:47 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2010-12-10 11:57:47 +0100 |
commit | 5c949ff5cb57fc56e05dde010cc852f0f1207ca0 (patch) | |
tree | 74f064e785a66b20f742896ebd7a2bc4436f2dbd /lib/VNDB/Handler/ULists.pm | |
parent | 3362cf0391fad05a0eed1bd11a54f4c97f5260db (diff) |
Added vote listings for VNs and users (/[uv]+/votes)
Diffstat (limited to 'lib/VNDB/Handler/ULists.pm')
-rw-r--r-- | lib/VNDB/Handler/ULists.pm | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/VNDB/Handler/ULists.pm b/lib/VNDB/Handler/ULists.pm index a610a14a..002f90d3 100644 --- a/lib/VNDB/Handler/ULists.pm +++ b/lib/VNDB/Handler/ULists.pm @@ -12,6 +12,7 @@ YAWF::register( qr{v([1-9]\d*)/wish}, \&vnwish, qr{r([1-9]\d*)/list}, \&rlist, qr{xml/rlist.xml}, \&rlist, + qr{([uv])([1-9]\d*)/votes}, \&votelist, qr{u([1-9]\d*)/wish}, \&wishlist, qr{u([1-9]\d*)/list}, \&vnlist, ); @@ -97,6 +98,65 @@ sub rlist { } +sub votelist { + my($self, $type, $id) = @_; + + my $obj = $type eq 'v' ? $self->dbVNGet(id => $id)->[0] : $self->dbUserGet(uid => $id)->[0]; + return 404 if !$obj->{id}; + + 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 title vote|] }, + ); + + my($list, $np) = $self->dbVoteGet( + $type.'id' => $id, + what => $type eq 'v' ? 'user' : 'vn', + hide => $type eq 'v', + hide_ign => $type eq 'v', + sort => $f->{s} eq 'title' && $type eq 'v' ? 'username' : $f->{s}, + reverse => $f->{o} eq 'd', + results => 50, + page => $f->{p} + ); + return 404 if !@$list; + + my $title = mt $type eq 'v' ? '_votelist_title_vn' : '_votelist_title_user', $obj->{title} || $obj->{username}; + $self->htmlHeader(title => $title); + $self->htmlMainTabs($type => $obj, 'votes'); + div class => 'mainbox'; + h1 $title; + end; + + $self->htmlBrowse( + class => 'votelist', + items => $list, + options => $f, + nextpage => $np, + pageurl => "/$type$id/votes?o=$f->{o};s=$f->{s}", + sorturl => "/$type$id/votes", + header => [ + [ mt('_votelist_col_date'), 'date' ], + [ mt('_votelist_col_vote'), 'vote' ], + [ mt('_votelist_col_'.($type eq 'v'?'user':'vn')), 'title' ], + ], + row => sub { + my($s, $n, $l) = @_; + Tr $n % 2 ? (class => 'odd') : (); + td class => 'tc1', $self->{l10n}->date($l->{date}); + td class => 'tc2', $l->{vote}; + td class => 'tc3'; + a href => $type eq 'v' ? ("/u$l->{uid}", $l->{username}) : ("/v$l->{vid}", shorten $l->{title}, 100); + end; + end; + }, + ); + + $self->htmlFooter; +} + + sub wishlist { my($self, $uid) = @_; |