diff options
author | Yorhel <git@yorhel.nl> | 2010-11-28 10:03:16 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2010-11-28 10:03:16 +0100 |
commit | d82f42629c802d968be247832c2e7cbf17eb16c6 (patch) | |
tree | dda59c514f81fbc151b9d53480a85090537b700d | |
parent | 80106c9930e39047fb24f0486412085ca99efef9 (diff) |
VN Filter Selector: Added "original language" filter
The original language is the language of the first release of the VN,
and is cached in vn.c_olang. (Geez, the vn table has more caching
columns than actual information >.>)
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | data/lang.txt | 7 | ||||
-rw-r--r-- | data/script.js | 1 | ||||
-rw-r--r-- | lib/VNDB/DB/VN.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNBrowse.pm | 2 | ||||
-rw-r--r-- | util/sql/func.sql | 15 | ||||
-rw-r--r-- | util/sql/schema.sql | 3 | ||||
-rw-r--r-- | util/updates/update_2.14.sql | 7 |
8 files changed, 37 insertions, 4 deletions
@@ -1,7 +1,7 @@ 2.14 - ? - Improved filter selection interface for the release and VN browser - New release filters: voiced and animation - - New VN filters: length and "has anime" + - New VN filters: length, "has anime" and original language - Apply search query and filters when changing first char - Added Atom feeds for the recent announcements, changes and posts (located in /www/feeds and updated every 15 min. by Multi::Feed) diff --git a/data/lang.txt b/data/lang.txt index 3795a079..447b417c 100644 --- a/data/lang.txt +++ b/data/lang.txt @@ -5754,6 +5754,13 @@ cs*: Jazyky hu*: Nyelvek nl : Taal +:_vnbrowse_olang +en : Original language +ru*: +cs*: +hu*: +nl : Originele taal + :_vnbrowse_platform en : Platform ru*: Платформы diff --git a/data/script.js b/data/script.js index 5f680353..48bc4241 100644 --- a/data/script.js +++ b/data/script.js @@ -2065,6 +2065,7 @@ function filVN() { function (o) { var s = getCookie('tagspoil'); if(o+'' == '') return s == null ? 0 : s; setCookie('tagspoil', o); return o}) ], [ mt('_vnbrowse_language'), filFSelect('lang', mt('_vnbrowse_language'), 20, lang) ], + [ mt('_vnbrowse_olang'), filFSelect('olang',mt('_vnbrowse_olang'), 20, lang) ], [ mt('_vnbrowse_platform'), filFSelect('plat', mt('_vnbrowse_platform'), 20, plat) ] ]; } diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index 1154fc71..d25a5796 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -10,7 +10,7 @@ use Encode 'decode_utf8'; our @EXPORT = qw|dbVNGet dbVNRevisionInsert dbVNImageId dbScreenshotAdd dbScreenshotGet dbScreenshotRandom|; -# Options: id, rev, char, search, length, lang, plat, tags_include, tags_exclude, hasani, results, page, what, sort, reverse +# Options: id, rev, char, search, length, lang, olang, plat, tags_include, tags_exclude, hasani, results, page, what, sort, reverse # What: extended anime relations screenshots relgraph rating ranking changes # Sort: id rel pop rating title tagscore rand sub dbVNGet { @@ -33,6 +33,8 @@ sub dbVNGet { 'vr.length IN(!l)' => [ ref $o{length} ? $o{length} : [$o{length}] ]) : (), $o{lang} ? ( 'v.c_languages && ARRAY[!l]::language[]' => [ ref $o{lang} ? $o{lang} : [$o{lang}] ]) : (), + $o{olang} ? ( + 'v.c_olang && ARRAY[!l]::language[]' => [ ref $o{olang} ? $o{olang} : [$o{olang}] ]) : (), $o{plat} ? ( '('.join(' OR ', map "v.c_platforms ILIKE '%%$_%%'", ref $o{plat} ? @{$o{plat}} : $o{plat}).')' => 1 ) : (), defined $o{hasani} ? ( diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index df450677..7b35dc26 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -25,7 +25,7 @@ sub list { ); return 404 if $f->{_err}; $f->{q} ||= $f->{sq}; - my $fil = fil_parse $f->{fil}, qw|length hasani taginc tagexc tagspoil lang plat|; + my $fil = fil_parse $f->{fil}, qw|length hasani taginc tagexc tagspoil lang olang plat|; _fil_compat($self, $fil); if($f->{q}) { diff --git a/util/sql/func.sql b/util/sql/func.sql index 35faf6a6..53af121c 100644 --- a/util/sql/func.sql +++ b/util/sql/func.sql @@ -26,6 +26,21 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$ AND rr1.released <> 0 GROUP BY rv1.vid ), 0), + c_olang = ARRAY( + SELECT lang + FROM releases_lang + WHERE rid = ( + SELECT r.latest + FROM releases_vn rv + JOIN releases r ON rv.rid = r.latest + JOIN releases_rev rr ON rr.id = r.latest AND rr.rid = r.id + WHERE rr.released > 0 + AND NOT r.hidden + AND rv.vid = $1 + ORDER BY rr.released + LIMIT 1 + ) + ), c_languages = ARRAY( SELECT rl2.lang FROM releases_rev rr2 diff --git a/util/sql/schema.sql b/util/sql/schema.sql index 1eb823e3..6911a40b 100644 --- a/util/sql/schema.sql +++ b/util/sql/schema.sql @@ -293,7 +293,8 @@ CREATE TABLE vn ( c_popularity real, c_rating real, c_votecount integer NOT NULL DEFAULT 0, - c_search text + c_search text, + c_olang language[] NOT NULL DEFAULT '{}' ); -- vn_anime diff --git a/util/updates/update_2.14.sql b/util/updates/update_2.14.sql index 5c8cfe76..2233e0a8 100644 --- a/util/updates/update_2.14.sql +++ b/util/updates/update_2.14.sql @@ -1,6 +1,13 @@ +-- add vn.c_olang + +ALTER TABLE vn ADD COLUMN c_olang language[] NOT NULL DEFAULT '{}'; + + +-- reload functions \i util/sql/func.sql + -- redefine the triggers to use the new conditional triggers in PostgreSQL 9.0 DROP TRIGGER hidlock_update ON vn; |