diff options
-rw-r--r-- | elm/CharEdit.elm | 20 | ||||
-rw-r--r-- | lib/VNWeb/Chars/Edit.pm | 1 | ||||
-rw-r--r-- | lib/VNWeb/Chars/Page.pm | 9 | ||||
-rw-r--r-- | sql/schema.sql | 6 | ||||
-rw-r--r-- | util/updates/2020-06-13-spoil-gender.sql | 4 |
5 files changed, 37 insertions, 3 deletions
diff --git a/elm/CharEdit.elm b/elm/CharEdit.elm index 6d268b21..0f75a357 100644 --- a/elm/CharEdit.elm +++ b/elm/CharEdit.elm @@ -48,6 +48,7 @@ type alias Model = , alias : String , desc : TP.Model , gender : String + , spoilGender : Maybe String , bMonth : Int , bDay : Int , age : Maybe Int @@ -90,6 +91,7 @@ init d = , alias = d.alias , desc = TP.bbcode d.desc , gender = d.gender + , spoilGender = d.spoil_gender , bMonth = d.b_month , bDay = if d.b_day == 0 then 1 else d.b_day , age = d.age @@ -133,6 +135,7 @@ encode model = , alias = model.alias , desc = model.desc.data , gender = model.gender + , spoil_gender= model.spoilGender , b_month = model.bMonth , b_day = model.bDay , age = model.age @@ -171,6 +174,7 @@ type Msg | Alias String | Desc TP.Msg | Gender String + | SpoilGender (Maybe String) | BMonth Int | BDay Int | Age (Maybe Int) @@ -213,6 +217,7 @@ update msg model = Alias s -> ({ model | alias = s }, Cmd.none) Desc m -> let (nm,nc) = TP.update m model.desc in ({ model | desc = nm }, Cmd.map Desc nc) Gender s -> ({ model | gender = s }, Cmd.none) + SpoilGender s->({model | spoilGender = s }, Cmd.none) BMonth n -> ({ model | bMonth = n }, Cmd.none) BDay n -> ({ model | bDay = n }, Cmd.none) Age s -> ({ model | age = s }, Cmd.none) @@ -332,7 +337,20 @@ view model = , formField "age::Age" [ inputNumber "age" model.age Age GCE.valAge, text " years" ] , tr [ class "newpart" ] [ td [ colspan 2 ] [ text "Body" ] ] - , formField "gender::Sex" [ inputSelect "gender" model.gender Gender [] GT.genders ] + , formField "gender::Sex" + [ inputSelect "gender" model.gender Gender [] GT.genders + , label [] [ inputCheck "" (isJust model.spoilGender) (\b -> SpoilGender <| if b then (Just "unknown") else Nothing), text " spoiler" ] + , case model.spoilGender of + Nothing -> text "" + Just gen -> span [] + [ br [] [] + , text "▲ apparent (non-spoiler) sex" + , br [] [] + , text "▼ actual (spoiler) sex" + , br [] [] + , inputSelect "" gen (\s -> SpoilGender (Just s)) [] GT.genders + ] + ] , formField "sbust::Bust" [ inputNumber "sbust" (if model.sBust == 0 then Nothing else Just model.sBust ) SBust GCE.valS_Bust, text " cm" ] , formField "swaist::Waist" [ inputNumber "swiast" (if model.sWaist == 0 then Nothing else Just model.sWaist) SWaist GCE.valS_Waist,text " cm" ] , formField "ship::Hips" [ inputNumber "ship" (if model.sHip == 0 then Nothing else Just model.sHip ) SHip GCE.valS_Hip, text " cm" ] diff --git a/lib/VNWeb/Chars/Edit.pm b/lib/VNWeb/Chars/Edit.pm index 1d26c330..f5ccca38 100644 --- a/lib/VNWeb/Chars/Edit.pm +++ b/lib/VNWeb/Chars/Edit.pm @@ -10,6 +10,7 @@ my $FORM = { alias => { required => 0, default => '', maxlength => 500 }, desc => { required => 0, default => '', maxlength => 5000 }, gender => { default => 'unknown', enum => \%GENDER }, + spoil_gender=>{ required => 0, enum => \%GENDER }, b_month => { required => 0, default => 0, uint => 1, range => [ 0, 12 ] }, b_day => { required => 0, default => 0, uint => 1, range => [ 0, 31 ] }, age => { required => 0, uint => 1, range => [ 0, 32767 ] }, diff --git a/lib/VNWeb/Chars/Page.pm b/lib/VNWeb/Chars/Page.pm index a9e06de6..7fcc6761 100644 --- a/lib/VNWeb/Chars/Page.pm +++ b/lib/VNWeb/Chars/Page.pm @@ -121,6 +121,7 @@ sub _rev_ { [ alias => 'Aliases' ], [ desc => 'Description' ], [ gender => 'Sex', fmt => \%GENDER ], + [ spoil_gender=> 'Sex (spoiler)',fmt => \%GENDER ], [ b_month => 'Birthday/month',empty => 0 ], [ b_day => 'Birthday/day', empty => 0 ], [ s_bust => 'Bust', empty => 0 ], @@ -172,6 +173,13 @@ sub chartable_ { : b_ style => 'margin-right: 10px', $c->{name}; b_ class => 'grayedout', style => 'margin-right: 10px', $c->{original} if $c->{original}; abbr_ class => "icons gen $c->{gender}", title => $GENDER{$c->{gender}}, '' if $c->{gender} ne 'unknown'; + if($view->{spoilers} == 2 && defined $c->{spoil_gender}) { + txt_ '('; + abbr_ class => "icons gen $c->{spoil_gender}", title => $GENDER{$c->{spoil_gender}}, '' if $c->{spoil_gender} ne 'unknown'; + txt_ 'unknown' if $c->{spoil_gender} eq 'unknown'; + spoil_ 2; + txt_ ')'; + } span_ $BLOOD_TYPE{$c->{bloodt}} if $c->{bloodt} ne 'unknown'; }}}; @@ -289,6 +297,7 @@ TUWF::get qr{/$RE{crev}} => sub { $inst_maxspoil||0, (map $_->{spoil}, $c->{traits}->@*), (map $_->{spoil}, $c->{vns}->@*), + defined $c->{spoil_gender} ? 2 : 0, $c->{desc} =~ /\[spoiler\]/i ? 2 : 0, # crude ); # Only display the sexual traits toggle when there are sexual traits within the current spoiler level. diff --git a/sql/schema.sql b/sql/schema.sql index eb2aa9a2..0098d482 100644 --- a/sql/schema.sql +++ b/sql/schema.sql @@ -135,7 +135,8 @@ CREATE TABLE chars ( -- dbentry_type=c main integer, -- [pub] chars.id main_spoil smallint NOT NULL DEFAULT 0, -- [pub] cup_size cup_size NOT NULL DEFAULT '', -- [pub] - age smallint -- [pub] + age smallint, -- [pub] + spoil_gender gender -- [pub] ); -- chars_hist @@ -158,7 +159,8 @@ CREATE TABLE chars_hist ( main integer, -- chars.id main_spoil smallint NOT NULL DEFAULT 0, cup_size cup_size NOT NULL DEFAULT '', - age smallint + age smallint, + spoil_gender gender ); -- chars_traits diff --git a/util/updates/2020-06-13-spoil-gender.sql b/util/updates/2020-06-13-spoil-gender.sql new file mode 100644 index 00000000..d09cd4d9 --- /dev/null +++ b/util/updates/2020-06-13-spoil-gender.sql @@ -0,0 +1,4 @@ +-- Run 'make' first to update editfunc.sql +ALTER TABLE chars ADD COLUMN spoil_gender gender; +ALTER TABLE chars_hist ADD COLUMN spoil_gender gender; +\i sql/editfunc.sql |