summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/tpl/main2
-rw-r--r--data/tpl/userpage2
-rw-r--r--data/tpl/vnlist38
-rw-r--r--data/tpl/vnpage14
-rw-r--r--data/tpl/vnpage_rel3
-rw-r--r--data/tpl/vnpage_stats2
-rw-r--r--lib/VNDB.pm5
-rw-r--r--lib/VNDB/Util/Auth.pm2
-rw-r--r--lib/VNDB/Util/DB.pm41
-rw-r--r--lib/VNDB/VNLists.pm51
-rw-r--r--lib/global.pl4
-rw-r--r--static/files/def.js4
-rw-r--r--static/files/style.css4
13 files changed, 35 insertions, 137 deletions
diff --git a/data/tpl/main b/data/tpl/main
index d0739537..9dd70b24 100644
--- a/data/tpl/main
+++ b/data/tpl/main
@@ -109,6 +109,8 @@
<li><a href="/u[[= $p{AuthId} ]]">[[: $p{AuthUsername} ]]</a> ([[: $p{AuthRankname} ]])</li>
<!--<li><a href="/u[[= $p{AuthId} ]]/edit">My profile</a></li>-->
<li><a href="/u[[= $p{AuthId} ]]/list">My visual novel list</a></li>
+ [[ if($p{AuthOldList}) { ]]-
+ <li><a href="/u[[= $p{AuthId} ]]/vlist">My visual novel list (old)</a></li>[[ } ]]-
<li><a href="/t/u[[= $p{AuthId} ]]">My messages</a></li>
<li><a href="/u[[= $p{AuthId} ]]/hist">My recent changes</a></li>
[[ if($p{Authedit}) { ]]-
diff --git a/data/tpl/userpage b/data/tpl/userpage
index a45fc8af..aa02062e 100644
--- a/data/tpl/userpage
+++ b/data/tpl/userpage
@@ -6,7 +6,7 @@
<dl>
<dt>Username</dt><dd>[[: $d{user}{username} ]]- (<a href="/u[[= $d{user}{id} ]]">u[[= $d{user}{id} ]]</a>)</dd>
<dt>Registered</dt><dd>[[= formatdate('%Y-%m-%d', $d{user}{registered}) ]]</dd>
- <dt>Votes</dt><dd>[[= $d{pl} ? $d{user}{list}.' (<a href="/u'.$d{user}{id}.'/list">view all</a>)' : '(hidden)' ]]</dd>
+ <dt>Votes</dt><dd>[[= $d{pl} ? $d{user}{votes}.' (<a href="/u'.$d{user}{id}.'/list">view all</a>)' : '(hidden)' ]]</dd>
<dt>Changes</dt><dd>[[= $d{user}{changes}.($d{user}{changes}>0?' (<a href="/u'.$d{user}{id}.'/hist">recent changes</a>)':'') ]]</dd>
</dl>
diff --git a/data/tpl/vnlist b/data/tpl/vnlist
index 0fb20509..d2763b39 100644
--- a/data/tpl/vnlist
+++ b/data/tpl/vnlist
@@ -1,12 +1,19 @@
-[[= ttabs('u', $d{user}, 'list') ]]
+[[= ttabs('u', $d{user}) ]]
<h2>[[: $p{PageTitle} ]]</h2>
[[
- my $url = sprintf '/u%d/list', $d{user}{id};
+ my $url = sprintf '/u%d/vlist', $d{user}{id};
my $surl = sprintf '%s?s=%s;o=%s', $url, $d{order}[0], $d{order}[1];
my $purl = $surl . ';t='.$d{status};
my $sourl = $url . '?t='.$d{status};
my $furl = $purl . ';p='.$d{page};
]]
+
+<span class="warning">
+ This visual novel list is read-only, only visible to you, and may be
+ deleted in future versions of the site. You are highly encouraged to
+ move everything in this list to the new <a href="/u[[= $d{user}{id} ]]/list">visual novel list</a>.
+</span>
+
<p class="chr">
status: -[[ for (-1..$#$VNDB::LSTAT) { if($_ >= 0) { ]]- | -[[ }
if($d{status} == $_) { ]]<b>[[= $_ eq -1 ? 'all' : lc $VNDB::LSTAT->[$_] ]]</b>[[ }
@@ -30,46 +37,27 @@
[[ } else { ]]
[[= pagebut($purl) ]]-
-[[ if($d{user}{username} eq $p{AuthUsername}) { ]]
<form method="post" action="[[= $furl ]]" class="tblf">
-<input type="hidden" class="hidden" name="comments" id="comments" value="" />[[ } ]]
<table id="tvl">
<thead><tr>
<td class="tc1">Title [[= sortbut($sourl, 'title') ]]</td>
<td class="tc2">Status</td>
<td class="tc3">Added [[= sortbut($sourl, 'date') ]]</td>
- [[ if($d{user}{username} eq $p{AuthUsername}) { ]]-
<td class="tc4">Personal note</td>
- <td class="tc5">&nbsp;</td>[[ } ]]-
+ <td class="tc5">&nbsp;</td>
</tr></thead>
[[ for (@{$d{list}}) { ]]-
<tr>
<td class="tc1"><a href="/v[[= $_->{vid} ]]" title="[[: $_->{title} ]]">[[: length($_->{title})>40 ? substr($_->{title},0, 37).'...' : $_->{title} ]]</a></td>
<td class="tc2">[[= $VNDB::LSTAT->[$_->{status}] ]]</td>
<td class="tc3">[[= formatdate('%Y-%m-%d', $_->{date}, 'dh') ]]</td>
- [[ if($d{user}{username} eq $p{AuthUsername}) { ]]
<td class="tc4">[[: $_->{comments}||'-' ]]</td>
- <td class="tc5"><input type="checkbox" name="sel" value="[[= $_->{vid} ]]" /></td>[[ } ]]
+ <td class="tc5"><input type="checkbox" name="sel" value="[[= $_->{vid} ]]" /></td>
</tr>
[[ } ]]-
</table>
-[[ if($d{user}{username} eq $p{AuthUsername}) { ]]
-<select id="vnlistchange" name="vnlistchange" class="right">
- <option value="-3">- with selected -</option>
- <option value="-1">Delete</option>
- <option value="-2">Update personal note</option>
- <optgroup label="Update status:">
- [[ for (0..$#$VNDB::LSTAT) { ]]-
- <option value="[[= $_ ]]">[[: $VNDB::LSTAT->[$_] ]]</option>
- [[ } ]]
- </optgroup>
-</select>
-</form>[[ } ]]
+<input type="submit" value="Delete selected items" class="right" />
+</form>
-[[= pagebut($purl) ]]
[[ } ]]-
-[[ if($d{user}{username} eq $p{AuthUsername}) { ]]-
-<p>
- <br /><br />
- NOTE: Your personal notes are only visible to you, other people can't see them.
-</p>[[ } ]]
diff --git a/data/tpl/vnpage b/data/tpl/vnpage
index f59c0a1c..1077c202 100644
--- a/data/tpl/vnpage
+++ b/data/tpl/vnpage
@@ -167,7 +167,6 @@ if($d{vn}{length} || $d{vn}{alias} || @links || $prod) { ]]
[[ if($d{page} eq 'rg') { ]][[+ vnpage_rg ]][[ } ]]
[[ if($p{AuthLoggedin}) { ]]-
-
<div class="dropdown" id="voteDD">
<ul>
[[ if($d{vote}{vid}) { ]]-
@@ -177,19 +176,6 @@ if($d{vn}{length} || $d{vn}{alias} || @links || $prod) { ]]
[[ } ]]
</ul>
</div>
-
-[[ if(0) { ]]
-<div class="dropdown" id="listDD">
- <ul>
- [[ for (0..$#$VNDB::LSTAT) { ]]-
- <li><a href="/v[[= $d{vn}{id} ]]/list?s=[[= $_ ]]" [[= $_ == 6 ? ' id="askcomment"' : '' ]]>[[: $VNDB::LSTAT->[$_] ]]</a></li>
- [[ } if($d{list}{vid}) { ]]-
- <li><a href="/v[[= $d{vn}{id} ]]/list?s=-1">Remove</a></li>
- [[ } ]]-
- </ul>
-</div>
-[[ } ]]
-
[[ } ]]
diff --git a/data/tpl/vnpage_rel b/data/tpl/vnpage_rel
index ed39477f..ff981b0e 100644
--- a/data/tpl/vnpage_rel
+++ b/data/tpl/vnpage_rel
@@ -35,7 +35,8 @@
</td>
<td class="tc4"><a href="/r[[= $_->{id} ]]" title="[[: $_->{original} || $_->{title} ]]">[[: shorten $_->{title},60 ]]</a></td>
<td class="tc5">[[ if($p{AuthId}) { ]]
- [[= sprintf '<a href="/r%d/list?s=%d" class="dropdown above" rel="rlistDD%1$d">%s</a>', $_->{id}, $_->{rlist} ? (-1, 'x') : (1, '-') ]]
+ [[= sprintf '<a href="/r%d" class="dropdown above" rel="rlistDD%1$d">%s</a>', $_->{id}, $_->{rlist} ?
+ (substr($$VNDB::RSTAT[$_->{rlist}{rstat}],0,1).'/'.substr($$VNDB::VSTAT[$_->{rlist}{vstat}],0,1)) : '---' ]]
[[ } else { ]]&nbsp;[[ } ]]</td>
<td class="tc6">[[ if($_->{website}) { ]]<a href="[[: $_->{website} ]]" class="icons ext" title="WWW">&nbsp;</a>[[ } ]]</td>
</tr>
diff --git a/data/tpl/vnpage_stats b/data/tpl/vnpage_stats
index b4a3b018..cb24bd1c 100644
--- a/data/tpl/vnpage_stats
+++ b/data/tpl/vnpage_stats
@@ -8,7 +8,7 @@
$sum += ($_+1) * $d{votes}{graph}[$_];
}
]]
-[[ if(!$d{user} || ($d{pv} && $d{user}{votes})) { ]]-
+[[ if(!$d{user} || ($d{pl} && $d{user}{votes})) { ]]-
<li><h3>Vote graph <p class="actions">[[= $total ]]- vote[[= $total==1?'':'s' ]]- total
[[= $total && $d{user} ? sprintf(', average: %.1f.', $sum/$total) : '' ]]</p></h3>
<table id="tvg">
diff --git a/lib/VNDB.pm b/lib/VNDB.pm
index be5bc542..668c29a8 100644
--- a/lib/VNDB.pm
+++ b/lib/VNDB.pm
@@ -45,8 +45,7 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+)
edit => sub { shift->UsrEdit(shift) },
del => sub { shift->UsrDel(shift) },
list => sub { shift->RList(shift) },
- #vlist => sub { shift->VNMyList(shift) },
- #votes => sub { shift->VNVotes(shift) },
+ vlist => sub { shift->VNMyList(shift) },
hist => {'*'=> sub { shift->History('u', shift, $_[1]) } },
},
# visual novels
@@ -61,7 +60,6 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+)
rg => sub { shift->VNPage(shift, shift) },
edit => sub { shift->VNEdit(shift) },
vote => sub { shift->VNVote(shift) },
- #list => sub { shift->VNListMod(shift) },
add => sub { shift->REdit('v', shift) },
lock => sub { shift->VNLock(shift) },
hide => sub { shift->VNHide(shift) },
@@ -95,7 +93,6 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+)
# discussions
t => {
'/' => sub { shift->TIndex },
- search => sub {}, # search?
'*' => {
'/' => sub { shift->TTag($_[1]) },
new => sub { shift->TEdit(0, 0, $_[1]) },
diff --git a/lib/VNDB/Util/Auth.pm b/lib/VNDB/Util/Auth.pm
index 2f79b512..6f265253 100644
--- a/lib/VNDB/Util/Auth.pm
+++ b/lib/VNDB/Util/Auth.pm
@@ -89,6 +89,7 @@ sub _AuthCheck {
return 4 if !defined $d->{id};
return 5 if !$d->{rank};
+ $d->{oldvnlist} = $self->DBGetVNList(uid => $d->{id}, results => 1)->[0] ? 1 : 0;
$info->{_auth} = $d;
return 1;
@@ -110,6 +111,7 @@ sub AuthAddTpl {
AuthMail => $info->{_auth}{mail},
AuthId => $info->{_auth}{id},
AuthNsfw => $info->{_auth}{flags} & $VNDB::UFLAGS->{nsfw},
+ AuthOldList => $info->{_auth}{oldvnlist},
);
} else {
%tpl = (
diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm
index fdefa6e6..76a9a790 100644
--- a/lib/VNDB/Util/DB.pm
+++ b/lib/VNDB/Util/DB.pm
@@ -15,7 +15,7 @@ $VERSION = $VNDB::VERSION;
DBLanguageCount DBCategoryCount DBTableCount DBGetHist DBLockItem DBIncId
DBGetUser DBAddUser DBUpdateUser DBDelUser
DBGetVotes DBVoteStats DBAddVote DBDelVote
- DBGetVNList DBVNListStats DBAddVNList DBEditVNList DBDelVNList
+ DBGetVNList DBDelVNList
DBGetRList DBGetRLists DBEditRList DBDelRList
DBGetVN DBAddVN DBEditVN DBHideVN DBUndefRG DBVNCache
DBGetRelease DBAddRelease DBEditRelease DBHideRelease
@@ -357,6 +357,7 @@ sub DBDelUser { # uid
my($s, $id) = @_;
$s->DBExec($_, $id) for (
q|DELETE FROM vnlists WHERE uid = %d|,
+ q|DELETE FROM rlists WHERE uid = %d|,
q|DELETE FROM votes WHERE uid = %d|,
q|UPDATE changes SET requester = 0 WHERE requester = %d|,
q|UPDATE threads_posts SET uid = 0 WHERE uid = %d|,
@@ -493,44 +494,6 @@ sub DBGetVNList { # %options->{ uid vid hide order results page status }
}
-sub DBVNListStats { # uid|vid => id
- my($s, $col, $id) = @_;
- my $r = [ map 0, 0..$#$VNDB::LSTAT ],
- my $where = $col ? 'WHERE '.$col.' = '.$id : '';
- $r->[$_->{status}] = $_->{cnt} for (@{$s->DBAll(qq|
- SELECT status, COUNT(uid) as cnt
- FROM vnlists
- $where
- GROUP BY status|
- )});
- return $r;
-}
-
-
-sub DBAddVNList { # uid, vid, status, [comments]
- $_[0]->DBExec(q|
- INSERT INTO vnlists (uid, vid, status, date, comments)
- VALUES (!l, !s)|,
- [ @_[1..3], time ], $_[4]||'');
-}
-
-
-sub DBEditVNList { # %options->{ uid status comments vid }
- my($s, %o) = @_;
- my %set;
- $set{'status = %d'} = $o{status} if defined $o{status};
- $set{'comments = !s'} = $o{comments} if defined $o{comments};
- return if !keys %set;
- $s->DBExec(q|
- UPDATE vnlists
- SET !H
- WHERE uid = %d
- AND vid IN(!l)|,
- \%set, $o{uid}, $o{vid}
- );
-}
-
-
sub DBDelVNList { # uid, @vid # uid = 0 to delete all
my($s, $uid, @vid) = @_;
$uid = $uid ? 'uid = '.$uid.' AND ' : '';
diff --git a/lib/VNDB/VNLists.pm b/lib/VNDB/VNLists.pm
index f2ad5d50..a50df2e4 100644
--- a/lib/VNDB/VNLists.pm
+++ b/lib/VNDB/VNLists.pm
@@ -7,33 +7,7 @@ use Exporter 'import';
use vars ('$VERSION', '@EXPORT');
$VERSION = $VNDB::VERSION;
-@EXPORT = qw| VNListMod VNMyList VNVote RListMod RList |;
-
-
-sub VNListMod {
- my $self = shift;
- my $vid = shift;
-
- my $uid = $self->AuthInfo()->{id};
- return $self->ResDenied() if !$uid;
-
- my $f = $self->FormCheck(
- { name => 's', required => 1, enum => [ -1..$#$VNDB::LSTAT ] },
- { name => 'c', required => 0, default => '', maxlength => 500 },
- );
- return $self->ResNotFound if $f->{_err};
-
- if($f->{s} == -1) {
- $self->DBDelVNList($uid, $vid);
- } elsif($self->DBGetVNList(uid => $uid, vid => $vid)->[0]{vid}) {
- $self->DBEditVNList(uid => $uid, status => $f->{s}, vid => [ $vid ],
- $f->{s} == 6 ? ( comments => $f->{c} ) : ());
- } else {
- $self->DBAddVNList($uid, $vid, $f->{s}, $f->{c});
- }
-
- $self->ResRedirect('/v'.$vid, 'temp');
-}
+@EXPORT = qw| VNMyList VNVote RListMod RList |;
sub VNMyList {
@@ -41,7 +15,7 @@ sub VNMyList {
my $user = shift;
my $u = $self->DBGetUser(uid => $user)->[0];
- return $self->ResNotFound if !$user || !$u || (($self->AuthInfo->{id}||0) != $user && !($u->{flags} & $VNDB::UFLAGS->{list}));
+ return $self->ResNotFound if !$user || !$u || !$self->AuthInfo->{id} || $self->AuthInfo->{id} != $user;
my $f = $self->FormCheck(
{ name => 's', required => 0, default => 'title', enum => [ qw|title date| ] },
@@ -52,24 +26,8 @@ sub VNMyList {
return $self->ResNotFound if $f->{_err};
if($self->ReqMethod eq 'POST') {
- my $frm = $self->FormCheck(
- { name => 'vnlistchange', required => 1, enum => [ -2..$#$VNDB::LSTAT ] },
- { name => 'comments', required => 0, default => '', maxlength => 500 },
- { name => 'sel', required => 1, multi => 1 },
- );
- if(!$frm->{_err}) {
- my @change = map { /^[0-9]+$/ ? $_ : () } @{$frm->{sel}};
- $self->DBDelVNList($user, @change) if @change && $frm->{vnlistchange} eq '-1';
- $self->DBEditVNList(
- uid => $user,
- vid => \@change,
- $frm->{vnlistchange} eq '-2' ? (
- comments => $frm->{comments}
- ) : (
- status => $frm->{vnlistchange}
- ),
- ) if @change && $frm->{vnlistchange} ne '-1';
- }
+ my $f = $self->FormCheck({ name => 'sel', required => 1, multi => 1, template => 'int' });
+ $self->DBDelVNList($user, @{$f->{sel}}) if !$f->{_err};
}
my $order = $f->{s} . ($f->{o} eq 'a' ? ' ASC' : ' DESC');
@@ -159,6 +117,7 @@ sub RList {
return $self->ResNotFound if $f->{_err};
if($self->ReqMethod eq 'POST') {
+ return $self->ResDenied if $uid != $self->AuthInfo->{id};
my $frm = $self->FormCheck(
{ name => 'vnlistchange', required => 1, enum => [ 'd', 'r0'..('r'.$#$VNDB::RSTAT), 'v0'..('v'.$#$VNDB::VSTAT) ] },
{ name => 'rsel', required => 1, multi => 1, template => 'int' },
diff --git a/lib/global.pl b/lib/global.pl
index c1ee12ab..1d18b075 100644
--- a/lib/global.pl
+++ b/lib/global.pl
@@ -158,14 +158,14 @@ our $CAT = {
our $RSTAT = [
- '[blank]',
+ 'Unknown',
'Pending',
'Obtained', # hardcoded
'On loan',
'Deleted',
];
our $VSTAT = [
- '[blank]',
+ 'Unknown',
'Playing',
'Finished', # hardcoded
'Stalled',
diff --git a/static/files/def.js b/static/files/def.js
index fea41239..486c7a4a 100644
--- a/static/files/def.js
+++ b/static/files/def.js
@@ -97,7 +97,7 @@ function dropDown(e) {
ddy += obj.offsetTop;
} while(obj = obj.offsetParent);
if(tg.className.indexOf('above') >= 0) {
- ddx += 16;
+ ddx += 25;
ddy -= x(tg.rel).offsetHeight - 20;
}
else
@@ -112,7 +112,7 @@ function dropDown(e) {
var mouseX = e.pageX || (e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft);
var mouseY = e.pageY || (e.clientY + document.body.scrollTop + document.documentElement.scrollTop);
var obj = x(dds.rel);
- if((mouseX < ddx-15 || mouseX > ddx+obj.offsetWidth+5 || mouseY < ddy-20 || mouseY > ddy + obj.offsetHeight)
+ if((mouseX < ddx-25 || mouseX > ddx+obj.offsetWidth+5 || mouseY < ddy-20 || mouseY > ddy + obj.offsetHeight)
|| (tg.nodeName.toLowerCase() == 'a' && tg.className.indexOf('dropdown') >= 0 && tg != dds)) {
obj.style.left = '-500px';
dds = null;
diff --git a/static/files/style.css b/static/files/style.css
index b383369a..bda1e368 100644
--- a/static/files/style.css
+++ b/static/files/style.css
@@ -784,8 +784,8 @@ b.diff_del { font-weight: normal; background-color: #fcc; }
#tre .tc2 { width: 50px; text-align: center; white-space: nowrap; }
#tre .tc3, #tre .tc6 { width: 16px; margin: 0; padding: 0; white-space: nowrap; text-align: right }
#tre .tc3 { width: 70px; }
-#tre .tc5 { width: 15px; text-align: right; padding-right: 10px; }
-#tre .tc5 a { display: block; width: 15px; text-decoration: none; color: #333; }
+#tre .tc5 { width: 25px; text-align: right; padding-right: 10px; }
+#tre .tc5 a { display: block; width: 25px; text-align: right;text-decoration: none; }
#tbv .tc2 acronym, #tbv .tc3 acronym {
zoom: 1;