diff options
-rw-r--r-- | data/global.pl | 1 | ||||
-rw-r--r-- | data/lang.txt | 52 | ||||
-rw-r--r-- | data/script.js | 10 | ||||
-rw-r--r-- | lib/VNDB/DB/Chars.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Chars.pm | 17 | ||||
-rw-r--r-- | util/sql/func.sql | 4 | ||||
-rw-r--r-- | util/updates/update_2.19.sql | 44 |
7 files changed, 104 insertions, 28 deletions
diff --git a/data/global.pl b/data/global.pl index 54373fec..9cc7ac8a 100644 --- a/data/global.pl +++ b/data/global.pl @@ -107,6 +107,7 @@ our %S = (%S, rlist_status => [ 0..4 ], # 2 = hardcoded 'OK' vnlist_status => [ 0..4 ], blood_types => [qw| unknown a b ab o other |], + genders => [qw| unknown m f b |], atom_feeds => { # num_entries, title, id announcements => [ 10, 'VNDB Site Announcements', '/t/an' ], changes => [ 25, 'VNDB Recent Changes', '/hist' ], diff --git a/data/lang.txt b/data/lang.txt index 5c13e0ce..68b1896c 100644 --- a/data/lang.txt +++ b/data/lang.txt @@ -1206,6 +1206,37 @@ hu*: nl : Anders/fictief +# Genders + +:_gender_unknown +en : Unknown or N/A +ru*: +cs*: +hu*: +nl : Onbekend of n.v.t. + +:_gender_m +en : Male +ru*: +cs*: +hu*: +nl : Man + +:_gender_f +en : Female +ru*: +cs*: +hu*: +nl : Vrouw + +:_gender_b +en : Both +ru*: +cs*: +hu*: +nl : Beide + + ############################################################################# @@ -4812,6 +4843,13 @@ cs*: hu*: nl : Omschrijving +:_revfield_c_gender +en : Gender +ru*: +cs*: +hu*: +nl : Geslacht + :_revfield_c_b_month en : Birthday - month ru*: @@ -4956,13 +4994,6 @@ cs*: hu*: nl : Verjaardag -:_charp_bloodt -en : Blood type -ru*: -cs*: -hu*: -nl : Bloedgroep - :_charp_description en : Description ru*: @@ -5037,6 +5068,13 @@ cs : Popis hu : Leírás nl : Omschrijving +:_chare_form_gender +en : Gender +ru*: +cs*: +hu*: +nl : Geslacht + :_chare_form_bday en : Birthday ru*: diff --git a/data/script.js b/data/script.js index 7b122c73..f7b6eb1b 100644 --- a/data/script.js +++ b/data/script.js @@ -1763,11 +1763,13 @@ function ctrLoad() { var v = {}; // tag id -> spoiler lookup table var q = []; // list of id=X parameters for(var i=0; i<l.length; i++) { - var m = l[i].split(/-/); - v[m[0]] = m[1]; - q[i] = 'id='+m[0]; + if(l[i]) { + var m = l[i].split(/-/); + v[m[0]] = m[1]; + q[i] = 'id='+m[0]; + } } - if(l.length > 0) + if(q.length > 0) ajax('/xml/traits.xml?'+q.join(';'), function (ht) { var t = ht.responseXML.getElementsByTagName('item'); for(var i=0; i<t.length; i++) diff --git a/lib/VNDB/DB/Chars.pm b/lib/VNDB/DB/Chars.pm index 22ddd5d5..c5c16932 100644 --- a/lib/VNDB/DB/Chars.pm +++ b/lib/VNDB/DB/Chars.pm @@ -32,7 +32,7 @@ sub dbCharGet { ); my @select = (qw|c.id cr.name cr.original|, 'cr.id AS cid'); - push @select, qw|c.hidden c.locked cr.alias cr.desc cr.image cr.b_month cr.b_day cr.s_bust cr.s_waist cr.s_hip cr.height cr.weight cr.bloodt| if $o{what} =~ /extended/; + push @select, qw|c.hidden c.locked cr.alias cr.desc cr.image cr.b_month cr.b_day cr.s_bust cr.s_waist cr.s_hip cr.height cr.weight cr.bloodt cr.gender| if $o{what} =~ /extended/; push @select, qw|h.requester h.comments c.latest u.username h.rev h.ihid h.ilock|, "extract('epoch' from h.added) as added" if $o{what} =~ /changes/; my @join; @@ -73,7 +73,7 @@ sub dbCharRevisionInsert { my($self, $o) = @_; my %set = map exists($o->{$_}) ? (qq|"$_" = ?|, $o->{$_}) : (), - qw|name original alias desc image b_month b_day s_bust s_waist s_hip height weight bloodt|; + qw|name original alias desc image b_month b_day s_bust s_waist s_hip height weight bloodt gender|; $self->dbExec('UPDATE edit_char !H', \%set) if keys %set; if($o->{traits}) { diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm index 5445144b..e862f3f5 100644 --- a/lib/VNDB/Handler/Chars.pm +++ b/lib/VNDB/Handler/Chars.pm @@ -35,6 +35,7 @@ sub page { [ original => diff => 1 ], [ alias => diff => qr/[ ,\n\.]/ ], [ desc => diff => qr/[ ,\n\.]/ ], + [ gender => serialize => sub { mt "_gender_$_[0]" } ], [ b_month => serialize => sub { $_[0]||mt '_revision_empty' } ], [ b_day => serialize => sub { $_[0]||mt '_revision_empty' } ], [ s_bust => serialize => sub { $_[0]||mt '_revision_empty' } ], @@ -79,7 +80,10 @@ sub page { Tr; td colspan => 2; b $r->{name}; - b class => 'grayedout', style => 'margin-left: 10px', $r->{original} ; + b class => 'grayedout', style => 'margin-left: 10px', $r->{original} if $r->{original}; + use utf8; + b style => 'margin-left: 10px; font-size: 14px', {qw|m ♂ f ♀ b ♂♀|}->{$r->{gender}} if $r->{gender} ne 'unknown'; + span style => 'margin-left: 10px', mt "_bloodt_$r->{bloodt}" if $r->{bloodt} ne 'unknown'; end; end; my $i = 0; @@ -110,12 +114,6 @@ sub page { td sprintf '%02d-%02d', $r->{b_month}, $r->{b_day}; end; } - if($r->{bloodt} ne 'unknown') { - Tr ++$i % 2 ? (class => 'odd') : (); - td class => 'key', mt '_charp_bloodt'; - td mt "_bloodt_$r->{bloodt}"; - end; - } # traits # TODO: handle spoilers! @@ -167,7 +165,7 @@ sub edit { || $id && ($r->{locked} && !$self->authCan('lock') || $r->{hidden} && !$self->authCan('del')); my %b4 = !$id ? () : ( - (map +($_ => $r->{$_}), qw|name original alias desc image ihid ilock s_bust s_waist s_hip height weight bloodt|), + (map +($_ => $r->{$_}), qw|name original alias desc image ihid ilock s_bust s_waist s_hip height weight bloodt gender|), bday => $r->{b_month} ? sprintf('%02d-%02d', $r->{b_month}, $r->{b_day}) : '', traits => join(' ', map sprintf('%d-%d', $_->{tid}, $_->{spoil}), @{$r->{traits}}), ); @@ -180,6 +178,7 @@ sub edit { { post => 'original', required => 0, maxlength => 200, default => '' }, { post => 'alias', required => 0, maxlength => 500, default => '' }, { post => 'desc', required => 0, maxlength => 5000, default => '' }, + { post => 'gender', required => 0, default => 'unknown', enum => $self->{genders} }, { post => 'image', required => 0, default => 0, template => 'int' }, { post => 'bday', required => 0, default => '', regex => [ qr/^\d{2}-\d{2}$/, mt('_chare_form_bday_err') ] }, { post => 's_bust', required => 0, default => 0, template => 'int' }, @@ -237,6 +236,8 @@ sub edit { [ text => name => mt('_chare_form_alias'), short => 'alias', rows => 3 ], [ static => content => mt('_chare_form_alias_note') ], [ text => name => mt('_chare_form_desc').'<br /><b class="standout">'.mt('_inenglish').'</b>', short => 'desc', rows => 6 ], + [ select => name => mt('_chare_form_gender'),short => 'gender', options => [ + map [ $_, mt("_gender_$_") ], @{$self->{genders}} ] ], [ input => name => mt('_chare_form_bday'), short => 'bday', width => 100, post => ' '.mt('_chare_form_bday_fmt') ], [ input => name => mt('_chare_form_bust'), short => 's_bust', width => 50, post => ' cm' ], [ input => name => mt('_chare_form_waist'), short => 's_waist',width => 50, post => ' cm' ], diff --git a/util/sql/func.sql b/util/sql/func.sql index d7081aef..c655159a 100644 --- a/util/sql/func.sql +++ b/util/sql/func.sql @@ -424,7 +424,7 @@ BEGIN INSERT INTO edit_char DEFAULT VALUES; -- load revision ELSE - INSERT INTO edit_char SELECT name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight,bloodt FROM chars_rev WHERE id = hid; + INSERT INTO edit_char SELECT name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight, bloodt, gender FROM chars_rev WHERE id = hid; INSERT INTO edit_char_traits SELECT tid, spoil FROM chars_traits WHERE cid = hid; END IF; END; @@ -440,7 +440,7 @@ BEGIN RAISE 'edit_char must have exactly one row!'; END IF; SELECT INTO r * FROM edit_commit(); - INSERT INTO chars_rev SELECT r.cid, r.iid, name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight, bloodt FROM edit_char; + INSERT INTO chars_rev SELECT r.cid, r.iid, name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight, bloodt, gender FROM edit_char; INSERT INTO chars_traits SELECT r.cid, tid, spoil FROM edit_char_traits; UPDATE chars SET latest = r.cid WHERE id = r.iid; RETURN r; diff --git a/util/updates/update_2.19.sql b/util/updates/update_2.19.sql index 1332d666..02878118 100644 --- a/util/updates/update_2.19.sql +++ b/util/updates/update_2.19.sql @@ -32,6 +32,7 @@ ALTER TABLE tags RENAME c_vns TO c_items; CREATE TYPE char_role AS ENUM ('main', 'primary', 'side', 'appears'); CREATE TYPE blood_type AS ENUM ('unknown', 'a', 'b', 'ab', 'o', 'other'); +CREATE TYPE gender AS ENUM ('unknown', 'm', 'f', 'b'); CREATE TABLE chars ( id SERIAL PRIMARY KEY, @@ -56,6 +57,7 @@ CREATE TABLE chars_rev ( height smallint NOT NULL DEFAULT 0, weight smallint NOT NULL DEFAULT 0, bloodt blood_type NOT NULL DEFAULT 'unknown', + gender gender NOT NULL DEFAULT 'unknown', main integer REFERENCES chars (id), main_spoil boolean NOT NULL DEFAULT false ); @@ -116,15 +118,32 @@ INSERT INTO traits (name, meta, state, addedby, "group") VALUES ('Hair Color', true, 2, 2, 1), ('Auburn', false, 2, 2, 1), ('Black', false, 2, 2, 1), - ('Blond', false, 2, 2, 1), + ('Blond', false, 2, 2, 1), -- 5 ('Brown', false, 2, 2, 1), ('Hairstyle', true, 2, 2, 1), ('Bun', false, 2, 2, 1), ('Odango', false, 2, 2, 1), - ('Ponytail', false, 2, 2, 1), + ('Ponytail', false, 2, 2, 1), -- 10 ('Twin Tails', false, 2, 2, 1), ('Short', false, 2, 2, 1), - ('Straight', false, 2, 2, 1); + ('Straight', false, 2, 2, 1), + ('Eyes', true, 2, 2, NULL), + ('Color', true, 2, 2, 14), -- 15 + ('Amber', false, 2, 2, 14), + ('Black', false, 2, 2, 14), + ('Red', false, 2, 2, 14), + ('Body', true, 2, 2, NULL), + ('Apparent age', true, 2, 2, 19), --20 + ('Child', false, 2, 2, 19), + ('Teen', false, 2, 2, 19), + ('Young-Adult', false, 2, 2, 19), + ('Adult', false, 2, 2, 19), + ('Old', false, 2, 2, 19), -- 25 + ('Body Type', true, 2, 2, 19), + ('Slim', false, 2, 2, 19), + ('Muscular', false, 2, 2, 19), + ('Overweight', false, 2, 2, 19), + ('Huge', false, 2, 2, 19); -- 30 INSERT INTO traits_parents (trait, parent) VALUES (2, 1), (3, 2), @@ -138,7 +157,22 @@ INSERT INTO traits_parents (trait, parent) VALUES (10, 7), (11, 10), (12, 7), - (13, 7); + (13, 7), + (15, 14), + (16, 15), + (17, 15), + (18, 15), + (20, 19), + (21, 20), + (22, 20), + (23, 20), + (24, 20), + (25, 20), + (26, 19), + (27, 26), + (28, 26), + (29, 26), + (30, 26); -- phorni! @@ -151,7 +185,7 @@ SELECT edit_char_commit(); SELECT edit_char_init(null); UPDATE edit_revision SET comments = '2nd test entry', requester = 2, ip = '0.0.0.0'; UPDATE edit_char SET name = 'Saya', original = '沙耶', "desc" = 'There is more than meets the eye!', alias = 'Cute monster', height = 140, weight = 52, s_bust = 41, s_waist = 38, s_hip = 40, b_month = 3, b_day = 15, bloodt = 'a'; -INSERT INTO edit_char_traits VALUES (4, 0), (12, 0); +INSERT INTO edit_char_traits VALUES (4, 0), (12, 2), (22, 0), (27, 0), (18, 1); SELECT edit_char_commit(); SELECT traits_chars_calc(); |