CVars: beim Autovivifien gültigen Wert für selects forçieren
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 11 Jun 2014 11:33:57 +0000 (13:33 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 11 Jun 2014 13:11:01 +0000 (15:11 +0200)
SL/DB/CustomVariableConfig.pm
SL/DB/Helper/CustomVariables.pm

index 203f83a..32b0b1c 100644 (file)
@@ -5,6 +5,8 @@ package SL::DB::CustomVariableConfig;
 
 use strict;
 
+use List::MoreUtils qw(any);
+
 use SL::DB::MetaSetup::CustomVariableConfig;
 use SL::DB::Manager::CustomVariableConfig;
 use SL::DB::Helper::ActsAsList;
@@ -87,4 +89,11 @@ sub has_flag {
   return $self->processed_flags()->{$flag};
 }
 
+sub type_dependant_default_value {
+  my ($self) = @_;
+
+  return $self->default_value if $self->type ne 'select';
+  return (any { $_ eq $self->default_value } @{ $self->processed_options }) ? $self->default_value : $self->processed_options->[0];
+}
+
 1;
index 737c163..921e707 100644 (file)
@@ -196,7 +196,7 @@ sub _new_cvar {
   # value needs config
   $inherited_value
    ? $cvar->value($inherited_value)
-   : $cvar->value($params{config}->default_value);
+   : $cvar->value($params{config}->type_dependant_default_value);
   return $cvar;
 }