worked out the kinks in editParameter, more work to do on editParameterOption

This commit is contained in:
Colin Kuskie 2008-04-20 03:03:47 +00:00
parent 8d03655bdb
commit 034543586a

View file

@ -646,9 +646,11 @@ sub setCollateral {
=head2 setParamData ($paramData) =head2 setParamData ($paramData)
Set the product's parameter data as a perl data structure. This is stored in the Set the product's parameter data as a perl data structure. This is
db as JSON. stored in the db as JSON. This adds a revision to the Product, since
rather than the internally stored JSON. parameters and options are stored directly in the asset table.
Returns a copy to the new version of the Product Asset.
=head2 $paramData =head2 $paramData
@ -662,8 +664,8 @@ sub setParamData {
my $self = shift; my $self = shift;
my $paramData = shift; my $paramData = shift;
my $json = JSON::to_json($paramData); my $json = JSON::to_json($paramData);
$self->addRevision({parameters => $json}); my $newSelf = $self->addRevision({parameters => $json});
return 1; return $newSelf;
} }
@ -936,17 +938,19 @@ sub www_editParameterSave {
my $paramData = $self->getParamData; my $paramData = $self->getParamData;
if (($origname ne "new") and ($origname ne $param)) { if (($origname ne "new") and ($origname ne $param)) {
$self->session->errorHandler->warn('Rename');
##Rename existing data ##Rename existing data
my @options = @{ $paramData->{$origname} }; my @options = @{ $paramData->{$origname} };
$paramData->{$param} = \@options; $paramData->{$param} = \@options;
delete $paramData->{$origname}; delete $paramData->{$origname};
$self->setParamData($paramData); my $newSelf = $self->setParamData($paramData);
return $self->editParameter($param); return $newSelf->www_editParameter($param);
} }
elsif ($origname eq "new") { elsif ($origname eq "new") {
$self->session->errorHandler->warn('New');
$paramData->{$param} = []; $paramData->{$param} = [];
$self->setParamData($paramData); my $newSelf = $self->setParamData($paramData);
return $self->editParameterOptions($param); return $newSelf->www_editParameterOptions($param);
} }
} }
@ -954,12 +958,12 @@ sub www_editParameterSave {
sub www_editParameterOptions { sub www_editParameterOptions {
my $self = shift; my $self = shift;
return $self->session->privilege->insufficient() unless ($self->canEdit); return $self->session->privilege->insufficient() unless ($self->canEdit);
return 1;
my $session = $self->session; my $session = $self->session;
my $param = shift || $self->session->form->get('name'); my $param = shift || $self->session->form->get('name');
my $paramData = $self->getParamData; my $paramData = $self->getParamData;
if (! exists $paramData->{$param}) { if (! exists $paramData->{$param}) {
return $self->editParameter($param); $self->session->errorHandler->warn('Not in param data');
return $self->www_editParameter($param);
} }
my $option = $paramData->{$param}; my $option = $paramData->{$param};
my $i18n = WebGUI::International->new($self->session,'Asset_Product'); my $i18n = WebGUI::International->new($self->session,'Asset_Product');
@ -968,7 +972,7 @@ sub www_editParameterOptions {
-name => "func", -name => "func",
-value => "editParameterOptionSave", -value => "editParameterOptionSave",
); );
$f->readonly( $f->readOnly(
-name => 'name', -name => 'name',
-value => $param, -value => $param,
); );
@ -1011,13 +1015,13 @@ sub www_editParameterOptionsSave {
my @options = @{ $paramData->{$origname} }; my @options = @{ $paramData->{$origname} };
$paramData->{$param} = \@options; $paramData->{$param} = \@options;
delete $paramData->{$origname}; delete $paramData->{$origname};
$self->setParamData($paramData); my $newSelf = $self->setParamData($paramData);
return $self->editParameter($param); return $newSelf->www_editParameter($param);
} }
elsif ($origname eq "new") { elsif ($origname eq "new") {
$paramData->{$param} = []; $paramData->{$param} = [];
$self->setParamData($paramData); my $newSelf = $self->setParamData($paramData);
return $self->editParameterOptions($param); return $newSelf->www_editParameterOptions($param);
} }
} }