From 6ba8d34574ee3bfd07bde037a9a38c4d3027d81f Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Sun, 15 Mar 2009 22:57:18 +0000 Subject: [PATCH] Help the DataForm deal with bad data in its JSON. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/DataForm.pm | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 155543c4a..e5c095779 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -13,6 +13,7 @@ - added: Vendor payout system ( Martin Kamerbeek / Oqapi ) - fixed #9942: Upgrade script fails with ITransact driver (William McKee, Knowmad Technologies) - fixed #9943: Upgrade script fails with Payment Gateways + - fixed #9948: Data form cannot be deleted. 7.6.14 - fixed: IE6 shows Admin Bar over Asset Manager diff --git a/lib/WebGUI/Asset/Wobject/DataForm.pm b/lib/WebGUI/Asset/Wobject/DataForm.pm index db9f10e31..1fcd5c20f 100644 --- a/lib/WebGUI/Asset/Wobject/DataForm.pm +++ b/lib/WebGUI/Asset/Wobject/DataForm.pm @@ -391,12 +391,13 @@ sub _cacheFieldConfig { my $fieldData; if ($jsonData && eval { $jsonData = JSON::from_json($jsonData) ; 1 }) { # jsonData is an array in the order the fields should be - $self->{_fieldConfig} = { - map { $_->{name}, $_ } @{ $jsonData } - }; - $self->{_fieldOrder} = [ - map { $_->{name} } @{ $jsonData } - ]; + $self->{_fieldConfig} = {}; + $self->{_fieldOrder} = []; + FIELD: foreach my $field (@{ $jsonData } ) { + next FIELD unless ref $field eq 'HASH'; + $self->{_fieldConfig}->{$field->{name}} = $field; + push @{ $self->{_fieldOrder} }, $field->{name}; + } } else { $self->{_fieldConfig} = {};