1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
[[= ttabs('v', $d{vn}) ]]
<h2>[[: $d{vn}{title} ]]</h2>
[[ if($d{vn}{hidden}) { ]]-
<span class="warning">
This item has been deleted from the database. File a request on the
<a href="http://forum.vndb.org/index.php?board=5.0">forums</a>
to undelete this page.
</span>
[[ } ]]
[[ if(!$d{vn}{hidden} || $p{Authdel}) { ]]-
[[ if($d{change}) { ]]
[[= cdiff($d{prev}, $d{vn},
[ title => 'Title', 1 ],
[ alias => 'Alias', 1 ],
[ desc => 'Description', 1, 1 ],
[ length => 'Length', sub { $VNDB::VNLEN->[$_[0] ][0] } ],
[ l_wp => 'Wikipedia link', sub { $_[0] ? '<a href="http://en.wikipedia.org/wiki/'.$_[0].'">'.$_[0].'</a>' : 'No link' } ],
[ l_vnn => 'V-N.net link', sub { $_[0] ? '<a href="http://visual-novels.net/vn/index.php?option=com_content&task=view&id='.$_[0].'">'.$_[0].'</a>' : 'No link' } ],
[ l_cisv => 'CISVisual link', sub { $_[0] ? '<a href="http://cisvisual.net/title/'.$_[0].'">'.$_[0].'</a>' : 'No link' } ],
[ categories => 'Categories', sub { join(' ', map { $VNDB::CAT->{substr($_->[0],0,1)}[1]{substr($_->[0],1,2)}.'('.$_->[1].')' } sort { $a->[0] cmp $b->[0] } @{$_[0]}) || 'No categories selected' }, 1 ],
[ relations => 'Relations', sub { join("<br />\n", map { $VNDB::VREL->[$_->{relation}].': '._hchar($_->{title}) } sort { $a->{id} <=> $b->{id} } @{$_[0]}) } ],
[ image => 'Image', sub { $_[0] ? sprintf '<img src="%s/cv/%02d/%d.jpg" />', $p{st}, $_[0]%50, $_[0] : 'No image'; } ],
[ img_nsfw => 'NSFW', sub { $_[0] ? 'Not safe' : 'Safe' } ]
) ]]
[[ } ]]-
[[
my @lang;
for (@{$d{rel}}) {
my $l = $_->{language};
next if grep { $_ eq $l } @lang;
push @lang, $l;
}
]]
<div id="vnheader">
<div>
[[ if($d{vn}{image}) { ]]
[[ if($d{vn}{img_nsfw} && !$p{AuthNsfw}) { ]]
<img src="[[: $p{st} ]]/cv/nsfw.png" id="nsfw" class="[[: $p{st} ]]/cv/[[= sprintf '%02d/%d', $d{vn}{image}%50, $d{vn}{image} ]].jpg" />
[[ } else { ]]
<img src="[[: $p{st} ]]/cv/[[= sprintf '%02d/%d', $d{vn}{image}%50, $d{vn}{image} ]].jpg" alt="[[: $p{PageTitle} ]]" />
[[ } ]]
[[ } else { ]]-
No image uploaded yet...
[[ } ]]-
</div>
-[[ if($p{AuthLoggedin}) { ]]
<p class="mod">< user options -
<a href="/u[[= $p{AuthId} ]]/votes" rel="voteDD" class="dropdown">[[= $d{vote}{vid} ? 'your vote: '.$d{vote}{vote} : 'vote' ]]</a>
- <a href="/u[[= $p{AuthId} ]]/list" rel="listDD" class="dropdown">[[= !$d{list}{vid} ? 'add to vn list' : 'status: '.lc $VNDB::LSTAT->[$d{list}{status}] ]]</a>
></p>
[[ } ]]-
-[[
$d{vn}{c_votes} =~ s#^([0-9]{2}.[0-9]{2})\|([0-9]{4})$#$2 == 0 ? 'No votes yet' :
$1 == 0 ? sprintf 'N/A (%d vote%s)', $2, $2>1?'s':'' : sprintf '%.2f (%d vote%s)', $1, $2, $2>1?'s':''#e;
my @links = (
$d{vn}{l_wp} ? [ 'Wikipedia', 'http://en.wikipedia.org/wiki/%s', $d{vn}{l_wp} ] : (),
$d{vn}{l_vnn} ? [ 'V-N.net', 'http://visual-novels.net/vn/index.php?option=com_content&task=view&id=%d', $d{vn}{l_vnn} ] : (),
$d{vn}{l_cisv} ? [ 'CISVisual', 'http://cisvisual.net/title/%d', $d{vn}{l_cisv} ] : (),
);
if($d{vn}{length} || $d{vn}{alias} || @links) { ]]
<h3>General info</h3>
<dl>
[[ if($d{vn}{length}) { ]]-
<dt>Length</dt><dd>[[: $VNDB::VNLEN->[$d{vn}{length}][0] ]]- ([[: $VNDB::VNLEN->[$d{vn}{length}][1] ]])</dd>[[ } ]]-
[[ if($d{vn}{alias}) { ]]-
<dt>Aliases</dt><dd>[[: $d{vn}{alias} ]]</dd>[[ } ]]-
[[ if(@links > 0) { ]]
<dt>Links</dt><dd>[[= join(', ', map { '<a href="'.sprintf($_->[1],$_->[2]).'">'.$_->[0].'</a>' } @links) ]]</dd>[[ } ]]-
</dl>
[[ } ]]-
[[ if(@{$d{vn}{categories}}) { my %nolvl = (pli=>1,pbr=>1,gaa=>1,gab=>1); ]]-
<h3>Categories</h3>
<dl class="vncat">
[[ for (sort keys %$VNDB::CAT) {
my $c = $_;
my @c = map { my $s=$_;
my ($cs) = grep { $_->[0] eq $c.$s } @{$d{vn}{categories}};
$cs ? sprintf('<i class="crgn%d">%s</i>', $nolvl{$c.$_}?0:$cs->[1], $VNDB::CAT->{$c}[1]{$s})
: ()
} sort keys %{$VNDB::CAT->{$c}[1]};
if(@c) { ]]-
<dt>[[: $VNDB::CAT->{$c}[0] ]]</dt><dd>[[= join(', ', @c) ]]</dd>
[[ } } ]]
</dl>
[[ } ]]-
[[ if($#{$d{vn}{relations}} >= 0) { ]]-
<h3>[[= $d{page} eq 'rg' ? 'Relations' : '<a href="/v'.$d{vn}{id}.'/rg">Relations</a>' ]]</h3>
<dl class="vnrel">
[[ my $lrel = -1; my $i=0; for (sort { $a->{relation} <=> $b->{relation} } @{$d{vn}{relations}}) {
if($_->{relation} != $lrel) { $lrel=$_->{relation}; if($i) { ]]</dd>[[ } ]]-
<dt>[[: $VNDB::VREL->[$lrel] ]]</dt><dd><a href="/v[[= $_->{id} ]]">[[: $_->{title} ]]</a>
[[ } else { ]]<br /><a href="/v[[= $_->{id} ]]" title="[[: $_->{title} ]]">[[: shorten $_->{title}, 40 ]]</a>[[ }
++$i;} ]]
</dl>
[[ } ]]-
[[ if(@lang && grep { @{$_->{producers}} } @{$d{rel}}) { ]]-
<h3>Producers</h3>
<dl>
[[ for my $l (@lang) { my %l;
$_->{language} eq $l && (%l = ( %l, map {
sprintf('<a href="/p%d" title="%s">%s</a>',
$_->{id}, _hchar($_->{name}), _hchar shorten $_->{name}, 30) => 1
} @{$_->{producers}} )) for (@{$d{rel}});
if(keys %l) { ]]-
<dt>[[: $VNDB::LANG->{$l} ]]</dt><dd>[[= join(' & ', keys %l) ]]</dd>
[[ } } ]]
</dl>
[[ } ]]-
<h3>[[= $d{page} eq 'stats' ? 'User stats' : '<a href="/v'.$d{vn}{id}.'/stats">User stats</a>' ]]</h3>
<dl>
<dt>Rating</dt><dd>[[: $d{vn}{c_votes} ]]</dd>
</dl>
</div>
-[[
my @lnks = (
!$d{page} ? '<b>description & releases</b>' : '<a href="/v'.$d{vn}{id}.'">description & releases</a>',
$d{page} eq 'stats' ? '<b>stats</b>' : '<a href="/v'.$d{vn}{id}.'/stats">stats</a>',
$d{vn}{rgraph} ? (
$d{page} eq 'rg' ? '<b>relations</b>' : '<a href="/v'.$d{vn}{id}.'/rg">relations</a>',
) : (),
);
]]
<p class="opts">- -[[= join(' - ', @lnks) ]]- -</p>
[[ if(!$d{page}) { ]][[+ vnpage_rel ]][[ } ]]
[[ if($d{page} eq 'stats') { ]][[+ vnpage_stats ]][[ } ]]
[[ if($d{page} eq 'rg') { ]][[+ vnpage_rg ]][[ } ]]
[[ if($p{AuthLoggedin}) { ]]-
<div class="dropdown" id="voteDD">
<ul>
[[ if($d{vote}{vid}) { ]]-
<li><a href="/v[[= $d{vn}{id} ]]/vote?v=-1">revoke</a></li>
[[ } for (reverse 1..10) { ]]-
<li class="center"><a href="/v[[= $d{vn}{id} ]]/vote?v=[[= $_ ]]">[[= $_ ]]</a></li>
[[ } ]]
</ul>
</div>
<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>
[[ } ]]
[[ } ]]
|