diff options
-rw-r--r-- | data/style.css | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/Tags.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Handler/Tags.pm | 7 | ||||
-rw-r--r-- | lib/VNDB/Util/LayoutHTML.pm | 1 | ||||
-rw-r--r-- | static/f/forms.js | 20 |
5 files changed, 27 insertions, 11 deletions
diff --git a/data/style.css b/data/style.css index 0b719a91..2b84a4c6 100644 --- a/data/style.css +++ b/data/style.css @@ -979,6 +979,7 @@ ul#catselect li li.exc { background-position: 0px -33px; color: $statnok$; } #tagtable .tc3_1 { border-left: 1px solid $border$; width: 150px; text-align: center } #tagtable .tc1 { min-width: 200px; border-right: 1px solid $border$ } #tagtable .tc3 { border-right: 1px solid $border$ } +#tagtable .tc5 { text-align: right } a.taglvl { display: block; float: left; width: 8px; height: 12px; border: 1px solid $border$; font-size: 1px; color: $maintext$!important } a.taglvl0 { width: 15px; border: none!important; font-size: 10px; text-align: center; } a.taglvl:hover { border-bottom: 1px solid transparent!important } @@ -988,6 +989,9 @@ a.taglvl:hover { border-bottom: 1px solid transparent!important } .taglvlsel.taglvl1 { background-color: #cf0; border-color: #cf0 } .taglvlsel.taglvl2 { background-color: #8f0; border-color: #8f0 } .taglvlsel.taglvl3 { background-color: #0f0; border-color: #0f0 } +#jt_box_tags #tagtable .tc5 { padding: 0 } +#tagtable .tc5 select { width: 90px; height: 15px; border: 0; margin: 0; font-size: 11px; background-color: $_blendbg$; text-align: right } +#tagtable .odd .tc5 select { background-color: $secbg$ } diff --git a/lib/VNDB/DB/Tags.pm b/lib/VNDB/DB/Tags.pm index 2250ff90..9ed6560b 100644 --- a/lib/VNDB/DB/Tags.pm +++ b/lib/VNDB/DB/Tags.pm @@ -101,11 +101,13 @@ sub dbTagLinks { # Change a user's tags for a VN entry -# Arguments: uid, vid, [ [ tag, vote ], .. ] +# Arguments: uid, vid, [ [ tag, vote, spoiler ], .. ] sub dbTagLinkEdit { my($self, $uid, $vid, $tags) = @_; $self->dbExec('DELETE FROM tags_vn WHERE vid = ? AND uid = ?', $vid, $uid); - $self->dbExec('INSERT INTO tags_vn (tag, vid, uid, vote) VALUES (?, ?, ?, ?)', $_->[0], $vid, $uid, $_->[1]) for (@$tags); + $self->dbExec('INSERT INTO tags_vn (tag, vid, uid, vote, spoiler) VALUES (?, ?, ?, ?, ?)', + $_->[0], $vid, $uid, $_->[1], $_->[2] == -1 ? undef : $_->[2] + ) for (@$tags); } diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 667b302f..614123df 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -217,9 +217,8 @@ sub vntagmod { if($self->reqMethod eq 'POST') { my $frm = $self->formValidate( - { name => 'taglinks', required => 0, default => '', maxlength => 10240, regex => [ qr/^[1-9][0-9]*,-?[1-3]( [1-9][0-9]*,-?[1-3])*$/, 'meh' ] } + { name => 'taglinks', required => 0, default => '', maxlength => 10240, regex => [ qr/^[1-9][0-9]*,-?[1-3],-?[0-2]( [1-9][0-9]*,-?[1-3],-?[0-2])*$/, 'meh' ] } ); - use Data::Dumper; warn Dumper $frm; return 404 if $frm->{_err}; $self->dbTagLinkEdit($self->authInfo->{id}, $vid, [ map [ split /,/ ], split / /, $frm->{taglinks}]); } @@ -273,9 +272,9 @@ sub vntagmod { td class => 'tc2', sprintf '%.2f (%d)', !$m->{vote} ? $t->{rating} : $t->{users} == 1 ? 0 : ($t->{rating}*$t->{users} - $m->{vote}) / ($t->{users}-1), $t->{users} - ($m->{vote} ? 1 : 0); - td class => 'tc3', $t->{spoiler}; + td class => 'tc3', sprintf '%.2f', $t->{spoiler}; td class => 'tc4', $m->{vote}||0; - td class => 'tc5', $m->{spoiler}||'-'; + td class => 'tc5', defined $m->{spoiler} ? $m->{spoiler} : -1; end; } end; diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index 257c6e14..f2a63c7b 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -57,6 +57,7 @@ sub _menu { div; a href => '/', 'Home'; br; a href => '/v/all', 'Visual novels'; br; + a href => '/g', 'Tags'; br; a href => '/p/all', 'Producers'; br; a href => '/u/all', 'Users'; br; a href => '/hist', 'Recent changes'; br; diff --git a/static/f/forms.js b/static/f/forms.js index 65f9efc0..e0ec7084 100644 --- a/static/f/forms.js +++ b/static/f/forms.js @@ -885,14 +885,24 @@ function tglLoad() { tglStripe(); var l = x('tagtable').getElementsByTagName('tbody')[0].getElementsByTagName('tr'); for(var i=0; i<l.length;i++) { - var o = l[i].getElementsByTagName('td')[3]; - tglVoteBar(o, parseInt(o.innerHTML)); + var o = l[i].getElementsByTagName('td'); + tglSpoiler(o[4], parseInt(o[4].innerHTML)); + tglVoteBar(o[3], parseInt(o[3].innerHTML)); } } +function tglSpoiler(obj, spoil) { + var r = '<select onchange="tglSerialize()">'; + for(var i=-1; i<=2; i++) + r += '<option value="'+i+'"'+(spoil==i?' selected="selected"':'')+'>' + +(i == -1 ? 'neutral' : i == 0 ? 'no spoiler' : i == 1 ? 'minor spoiler' : 'major spoiler') + +' </option>'; + obj.innerHTML = r+'</select>'; +} + function tglVoteBar(obj, vote) { var r = ''; - for(i=-3;i<=3;i++) + for(var i=-3;i<=3;i++) r += '<a href="#" class="taglvl taglvl'+i+'" onmouseover="tglVoteBarSel(this, '+i+')"' + ' onmouseout="tglVoteBarSel(this, '+vote+')" onclick="return tglVoteBar(this.parentNode, '+i+')"> </a>'; obj.innerHTML = r; @@ -958,7 +968,7 @@ function tglAdd() { td.className = 'tc4'; tr.appendChild(td); td = document.createElement('td'); - td.innerHTML = '-'; + tglSpoiler(td, -1); td.className = 'tc5'; tr.appendChild(td); x('tagtable').getElementsByTagName('tbody')[0].appendChild(tr); @@ -981,7 +991,7 @@ function tglSerialize() { var vt = l[i].getElementsByTagName('td')[3].getElementsByTagName('a'); var id; if((id = lnk.replace(/^.*g([1-9][0-9]*)$/, "$1")) != lnk && vt.length > 3 && vt[3].innerHTML != '-') - r += (r?' ':'')+id+','+vt[3].innerHTML; + r += (r?' ':'')+id+','+vt[3].innerHTML+','+(l[i].getElementsByTagName('select')[0].selectedIndex-1); } x('taglinks').value = r; } |