diff options
author | Yorhel <git@yorhel.nl> | 2015-10-03 10:15:53 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2015-10-03 10:15:53 +0200 |
commit | b75eff0f2cce2050c98ec946aac28b390020fdc5 (patch) | |
tree | 2e34fdd690cb06b5f5cb12dbecaa3919e0d16ec6 /lib/VNDB/Handler/Staff.pm | |
parent | 30caa944332fbbb9f6f5a4805f5beeee2b8a506c (diff) |
Handle JSON data natively when processing form data
No more need for extra json_encode/json_decode calls, and the
form_compare() function is more lenient w.r.t. integer/string
comparison.
This is the improvement I described in commit
ed86cfd12b0bed7352e2be525b8e63cb4d6d5448
Diffstat (limited to 'lib/VNDB/Handler/Staff.pm')
-rw-r--r-- | lib/VNDB/Handler/Staff.pm | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/VNDB/Handler/Staff.pm b/lib/VNDB/Handler/Staff.pm index fb4a22b3..58cd6299 100644 --- a/lib/VNDB/Handler/Staff.pm +++ b/lib/VNDB/Handler/Staff.pm @@ -189,7 +189,7 @@ sub edit { my %b4 = !$sid ? () : ( (map { $_ => $s->{$_} } qw|name original gender lang desc l_wp l_site l_twitter l_anidb ihid ilock|), primary => $s->{aid}, - aliases => json_encode [ + aliases => [ map +{ aid => $_->{id}, name => $_->{name}, orig => $_->{original} }, sort { $a->{name} cmp $b->{name} } @{$s->{aliases}} ], @@ -220,24 +220,20 @@ sub edit { ); if(!$frm->{_err}) { - my $aliases = json_decode $frm->{aliases}; - $aliases = [ sort { $a->{name} cmp $b->{name} } @$aliases ]; + my $aliases = [ sort { $a->{name} cmp $b->{name} } @{$frm->{aliases}} ]; my %old_aliases = $sid ? ( map +($_->{id} => 1), @{$self->dbStaffAliasIds($sid)} ) : (); $frm->{primary} = 0 unless exists $old_aliases{$frm->{primary}}; # reset aid to zero for newly added aliases. $_->{aid} *= $old_aliases{$_->{aid}} ? 1 : 0 for (sort { $a->{name} cmp $b->{name} } @$aliases); - $frm->{aliases} = json_encode $aliases; + $frm->{aliases} = $aliases; $frm->{ihid} = $frm->{ihid} ?1:0; $frm->{ilock} = $frm->{ilock}?1:0; $frm->{aid} = $frm->{primary} if $sid; $frm->{desc} = $self->bbSubstLinks($frm->{desc}); + return $self->resRedirect("/s$sid", 'post') if $sid && !form_compare(\%b4, $frm); - return $self->resRedirect("/s$sid", 'post') - if $sid && !first { ($frm->{$_}//'') ne ($b4{$_}//'') } keys %b4; - - $frm->{aliases} = $aliases; my $nrev = $self->dbItemEdit ('s' => $sid ? $s->{cid} : undef, %$frm); return $self->resRedirect("/s$nrev->{iid}.$nrev->{rev}", 'post'); } @@ -256,7 +252,7 @@ sub edit { [ hidden => short => 'name' ], [ hidden => short => 'original' ], [ hidden => short => 'primary' ], - [ hidden => short => 'aliases' ], + [ json => short => 'aliases' ], $sid && @{$s->{aliases}} ? [ static => content => mt('_staffe_form_different') ] : (), [ static => label => mt('_staffe_form_names'), content => sub { |