summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/global.pl1
-rw-r--r--data/lang.txt52
-rw-r--r--data/script.js10
-rw-r--r--lib/VNDB/DB/Chars.pm4
-rw-r--r--lib/VNDB/Handler/Chars.pm17
-rw-r--r--util/sql/func.sql4
-rw-r--r--util/updates/update_2.19.sql44
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();