diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 3569a492c..e7d8c9ebb 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -8,6 +8,7 @@ definition and the table schema. - Fixed a limit bug in the asset discovery service. - Fixed #8853: link to manageWorkflows is broken + - Fixed #8890: meta_loop in post form not working (United Knowledge) 7.6.1 - changed: the list of extensions for the export system to pass through diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index e6a164c6a..8b119e80e 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -12,6 +12,7 @@ package WebGUI::Asset::Post; use strict; use Tie::CPHash; +use Tie::IxHash; use WebGUI::Asset; use WebGUI::Asset::Template; use WebGUI::Asset::Post::Thread; @@ -1346,19 +1347,31 @@ sub www_edit { my @meta_loop = (); foreach my $field (keys %{ $meta }) { my $fieldType = $meta->{$field}{fieldType} || "Text"; - my $options; + my %options; + tie %options, 'Tie::IxHash'; + if ($meta->{$field}{possibleValues}){ + my $values = WebGUI::Operation::Shared::secureEval($self->session,$meta->{$field}{possibleValues}); + if (ref $values eq 'HASH') { + %options = %{$values}; + } + else{ + foreach (split(/\n/x, $meta->{$field}{possibleValues})) { + s/\s+$//x; # remove trailing spaces + $options{$_} = $_; + } + } + } # Add a "Select..." option on top of a select list to prevent from # saving the value on top of the list when no choice is made. - if($fieldType eq "selectList") { - $options = {"", $i18n->get("Select", "Asset")}; + if($fieldType eq "selectBox") { + %options = ("" => $i18n->get("Select", "Asset"),%options); } my $form = WebGUI::Form::DynamicField->new($session, name=>"metadata_".$meta->{$field}{fieldId}, uiLevel=>5, value=>$meta->{$field}{value}, extras=>qq/title="$meta->{$field}{description}"/, - possibleValues=>$meta->{$field}{possibleValues}, - options=>$options, + options=>\%options, fieldType=>$fieldType, )->toHtml; push @meta_loop, {