summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler/Staff.pm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2015-10-03 10:15:53 +0200
committerYorhel <git@yorhel.nl>2015-10-03 10:15:53 +0200
commitb75eff0f2cce2050c98ec946aac28b390020fdc5 (patch)
tree2e34fdd690cb06b5f5cb12dbecaa3919e0d16ec6 /lib/VNDB/Handler/Staff.pm
parent30caa944332fbbb9f6f5a4805f5beeee2b8a506c (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.pm14
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 {