diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 3f4014f7e..74faabaea 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -3,6 +3,7 @@ - fix: Cannot delete private message (Diona Kidd, Knowmad Technologies) - fix: Delete this entry link in data form header broken - fix: Image uploads fail when not using preload.perl + - fix: Workflow activities don't pick up new default values 7.4.10 - fix: Graphs aren't sized properly using GraphicsMagick diff --git a/lib/WebGUI/Workflow/Activity.pm b/lib/WebGUI/Workflow/Activity.pm index 0e109506a..591000aca 100644 --- a/lib/WebGUI/Workflow/Activity.pm +++ b/lib/WebGUI/Workflow/Activity.pm @@ -297,15 +297,21 @@ sub new { my $main = $session->db->getRow("WorkflowActivity","activityId", $activityId); return undef unless $main->{activityId}; $class = $main->{className}; - my $cmd = "use ".$class; - eval ($cmd); - if ($@) { - $session->errorHandler->error("Couldn't compile workflow activity package: ".$class.". Root cause: ".$@); - return undef; - } + (my $module = "$class.pm") =~ s{'|::}{/}g; + unless (eval { require $module; 1 }) { + $session->errorHandler->error("Couldn't compile workflow activity package: ".$class.". Root cause: ".$@); + return undef; + } my $sub = $session->db->buildHashRef("select name,value from WorkflowActivityData where activityId=?",[$activityId]); my %data = (%{$main}, %{$sub}); - bless {_session=>$session, _id=>$activityId, _data=>\%data}, $class; + for my $definition (reverse @{$class->definition($session)}) { + for my $property (keys %{$definition->{properties}}) { + if(!defined $data{$property} || $data{$property} eq '' && $definition->{properties}{$property}{defaultValue}) { + $data{$property} = $definition->{properties}{$property}{defaultValue}; + } + } + } + bless {_session=>$session, _id=>$activityId, _data=>\%data}, $class; } #-------------------------------------------------------------------