summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2008-12-09 12:14:12 +0100
committerYorhel <git@yorhel.nl>2008-12-09 12:14:12 +0100
commit62ab2e931cf21236e83d4483d8cb4eb773f26a89 (patch)
treea4a6306b569c97485c324045bf6ea9689702f219 /lib
parent148934c9d29be12fddc4e043fc587cce4f8b47b5 (diff)
Release list editing from release pages
I get the feeling I'm kind of rushing this entire VNlist feature and don't really think about making things look nice... Oh well, as long as it works. Nothing has to be perfect from the start, can always fix things afterwards, etc.
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/VNList.pm24
-rw-r--r--lib/VNDB/Handler/Releases.pm21
-rw-r--r--lib/VNDB/Handler/ULists.pm25
3 files changed, 67 insertions, 3 deletions
diff --git a/lib/VNDB/DB/VNList.pm b/lib/VNDB/DB/VNList.pm
index 4120e775..9e430f43 100644
--- a/lib/VNDB/DB/VNList.pm
+++ b/lib/VNDB/DB/VNList.pm
@@ -6,12 +6,32 @@ use warnings;
use Exporter 'import';
-our @EXPORT = qw|dbVNListGet dbVNListAdd dbVNListDel|;
+our @EXPORT = qw|dbVNListGet dbVNListList dbVNListAdd dbVNListDel|;
+
+
+# Simpler and more efficient version of dbVNListList below
+# %options->{ uid rid }
+sub dbVNListGet {
+ my($self, %o) = @_;
+
+ my %where = (
+ 'uid = ?' => $o{uid},
+ $o{rid} ? (
+ 'rid = ?' => $o{rid} ) : (),
+ );
+
+ return $self->dbAll(q|
+ SELECT uid, rid, rstat, vstat
+ FROM rlists
+ !W|,
+ \%where
+ );
+}
# %options->{ uid order char voted page results }
# NOTE: this function is mostly copied from 1.x, may need some rewriting...
-sub dbVNListGet {
+sub dbVNListList {
my($self, %o) = @_;
$o{results} ||= 50;
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm
index 3d33cf04..2338f5aa 100644
--- a/lib/VNDB/Handler/Releases.pm
+++ b/lib/VNDB/Handler/Releases.pm
@@ -180,6 +180,27 @@ sub _infotable {
end;
}
+ if($self->authInfo->{id}) {
+ my $rl = $self->dbVNListGet(uid => $self->authInfo->{id}, rid => $r->{id})->[0];
+ Tr ++$i % 2 ? (class => 'odd') : ();
+ td 'User options';
+ td;
+ Select id => 'listsel', name => 'listsel';
+ option !$rl ? 'not in your list' : "Status: $self->{vn_rstat}[$rl->{rstat}] / $self->{vn_vstat}[$rl->{vstat}]";
+ optgroup label => 'Set release status';
+ option value => "r$_", $self->{vn_rstat}[$_]
+ for (0..$#{$self->{vn_rstat}});
+ end;
+ optgroup label => 'Set play status';
+ option value => "v$_", $self->{vn_vstat}[$_]
+ for (0..$#{$self->{vn_vstat}});
+ end;
+ option value => 'del', 'remove from list' if $rl;
+ end;
+ end;
+ end;
+ }
+
end;
}
diff --git a/lib/VNDB/Handler/ULists.pm b/lib/VNDB/Handler/ULists.pm
index 110ded30..b94cd8e6 100644
--- a/lib/VNDB/Handler/ULists.pm
+++ b/lib/VNDB/Handler/ULists.pm
@@ -10,6 +10,7 @@ use VNDB::Func;
YAWF::register(
qr{v([1-9]\d*)/vote}, \&vnvote,
qr{v([1-9]\d*)/wish}, \&vnwish,
+ qr{r([1-9]\d*)/list}, \&rlist,
qr{u([1-9]\d*)/wish}, \&wishlist,
qr{u([1-9]\d*)/list}, \&vnlist,
);
@@ -51,6 +52,28 @@ sub vnwish {
}
+sub rlist {
+ my($self, $id) = @_;
+
+ my $uid = $self->authInfo->{id};
+ return $self->htmlDenied() if !$uid;
+
+ my $f = $self->formValidate(
+ { name => 'e', required => 1, enum => [ 'del', map("r$_", 0..$#{$self->{vn_rstat}}), map("v$_", 0..$#{$self->{vn_vstat}}) ] },
+ );
+ return 404 if $f->{_err};
+
+ $self->dbVNListDel($uid, $id) if $f->{e} eq 'del';
+ $self->dbVNListAdd(
+ rid => $id,
+ uid => $uid,
+ $f->{e} =~ /^([rv])(\d+)$/ && $1 eq 'r' ? (rstat => $2) : (vstat => $2)
+ ) if $f->{e} ne 'del';
+
+ $self->resRedirect('/r'.$id, 'temp');
+}
+
+
sub wishlist {
my($self, $uid) = @_;
@@ -183,7 +206,7 @@ sub vnlist {
}
- my($list, $np) = $self->dbVNListGet(
+ my($list, $np) = $self->dbVNListList(
uid => $uid,
results => 50,
page => $f->{p},