diff --git a/Kernel/System/DynamicField/Driver/BaseDatabase.pm b/Kernel/System/DynamicField/Driver/BaseDatabase.pm index f67285d71a..16d6009e7c 100644 --- a/Kernel/System/DynamicField/Driver/BaseDatabase.pm +++ b/Kernel/System/DynamicField/Driver/BaseDatabase.pm @@ -466,7 +466,7 @@ sub EditFieldValueGet { { my @Data = $Param{ParamObject}->GetArray( Param => $FieldName ); - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} && !$Param{DynamicFieldConfig}->{Readonly} ) { # delete the template value pop @Data; diff --git a/Kernel/System/DynamicField/Driver/BaseDateTime.pm b/Kernel/System/DynamicField/Driver/BaseDateTime.pm index 3c9df5d8b4..d7b7114709 100644 --- a/Kernel/System/DynamicField/Driver/BaseDateTime.pm +++ b/Kernel/System/DynamicField/Driver/BaseDateTime.pm @@ -419,7 +419,7 @@ sub EditFieldValueGet { && ref $Param{ParamObject} eq 'Kernel::System::Web::Request' ) { - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { my %Data; # retrieve value parts as arrays diff --git a/Kernel/System/DynamicField/Driver/BaseEntity.pm b/Kernel/System/DynamicField/Driver/BaseEntity.pm index ba9bd4aad1..cd6eca4fb6 100644 --- a/Kernel/System/DynamicField/Driver/BaseEntity.pm +++ b/Kernel/System/DynamicField/Driver/BaseEntity.pm @@ -270,7 +270,7 @@ sub EditFieldRender { my $FieldID = $FieldName . '_' . $ValueIndex; push @SelectionHTML, $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, ID => $FieldID, SelectedID => $Value->[$ValueIndex], @@ -283,7 +283,7 @@ sub EditFieldRender { my @SelectedIDs = grep {$_} $Value->@*; push @SelectionHTML, $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, SelectedID => \@SelectedIDs, Class => $FieldClass, @@ -332,7 +332,6 @@ sub EditFieldRender { my $SelectionHTML = $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, Name => $FieldName, ID => $FieldTemplateData{FieldID}, Translation => $FieldConfig->{TranslatableValues} || 0, @@ -415,7 +414,7 @@ sub EditFieldValueGet { { my @Data = $Param{ParamObject}->GetArray( Param => $FieldName ); - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} && !$Param{DynamicFieldConfig}->{Readonly} ) { # delete the template value pop @Data; diff --git a/Kernel/System/DynamicField/Driver/BaseScript.pm b/Kernel/System/DynamicField/Driver/BaseScript.pm index 05cea62260..e96e5da71b 100644 --- a/Kernel/System/DynamicField/Driver/BaseScript.pm +++ b/Kernel/System/DynamicField/Driver/BaseScript.pm @@ -320,7 +320,9 @@ sub EditFieldValueGet { ) { $Value = $Param{ParamObject}->GetParam( Param => $FieldName ); - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + + # TODO check what happens with template data + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { my @DataAll = $Param{ParamObject}->GetArray( Param => $FieldName ); my @Data; diff --git a/Kernel/System/DynamicField/Driver/BaseSelect.pm b/Kernel/System/DynamicField/Driver/BaseSelect.pm index 1294c8dbce..177c1a1add 100644 --- a/Kernel/System/DynamicField/Driver/BaseSelect.pm +++ b/Kernel/System/DynamicField/Driver/BaseSelect.pm @@ -347,7 +347,7 @@ sub EditFieldRender { my $SelectionHTML = $Param{LayoutObject}->BuildSelection( Data => $DataValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, ID => $FieldID, SelectedID => $Value->[$ValueIndex], @@ -470,7 +470,9 @@ sub EditFieldValueGet { my @Data; # delete the template value - pop @DataAll; + if ( !$Param{DynamicFieldConfig}->{Readonly} ) { + pop @DataAll; + } for my $Item (@DataAll) { push @Data, $Item // ''; diff --git a/Kernel/System/DynamicField/Driver/BaseText.pm b/Kernel/System/DynamicField/Driver/BaseText.pm index c884257a1d..3ad6c0ef79 100644 --- a/Kernel/System/DynamicField/Driver/BaseText.pm +++ b/Kernel/System/DynamicField/Driver/BaseText.pm @@ -484,7 +484,9 @@ sub EditFieldValueGet { my @Data; # delete the template value - pop @DataAll; + if ( !$Param{DynamicFieldConfig}->{Readonly} ) { + pop @DataAll; + } # delete empty values (can happen if the user has selected the "-" entry) for my $Item (@DataAll) { diff --git a/Kernel/System/DynamicField/Driver/Checkbox.pm b/Kernel/System/DynamicField/Driver/Checkbox.pm index 0ef2619f91..f2eab93f4f 100644 --- a/Kernel/System/DynamicField/Driver/Checkbox.pm +++ b/Kernel/System/DynamicField/Driver/Checkbox.pm @@ -531,7 +531,7 @@ sub EditFieldValueGet { && ref $Param{ParamObject} eq 'Kernel::System::Web::Request' ) { - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { my @DataValues = $Param{ParamObject}->GetArray( Param => $FieldName ); my @DataUsed = $Param{ParamObject}->GetArray( Param => $FieldName . 'Used' ); diff --git a/Kernel/System/DynamicField/Driver/Date.pm b/Kernel/System/DynamicField/Driver/Date.pm index 2e689678da..3e98f94bc0 100644 --- a/Kernel/System/DynamicField/Driver/Date.pm +++ b/Kernel/System/DynamicField/Driver/Date.pm @@ -522,7 +522,7 @@ sub EditFieldValueGet { && ref $Param{ParamObject} eq 'Kernel::System::Web::Request' ) { - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { my %Data; # retrieve value parts as arrays diff --git a/Kernel/System/DynamicField/Driver/Multiselect.pm b/Kernel/System/DynamicField/Driver/Multiselect.pm index e2970df46c..bf900b901c 100644 --- a/Kernel/System/DynamicField/Driver/Multiselect.pm +++ b/Kernel/System/DynamicField/Driver/Multiselect.pm @@ -376,6 +376,7 @@ sub EditFieldRender { Class => $FieldClass, HTMLQuote => 1, Multiple => 1, + Readonly => $Param{Readonly}, ); my %FieldTemplateData = ( diff --git a/Kernel/System/DynamicField/Driver/Reference.pm b/Kernel/System/DynamicField/Driver/Reference.pm index 4d4c63669f..f0a48883c2 100644 --- a/Kernel/System/DynamicField/Driver/Reference.pm +++ b/Kernel/System/DynamicField/Driver/Reference.pm @@ -347,7 +347,7 @@ sub EditFieldRender { my $FieldID = $FieldName . '_' . $ValueIndex; push @SelectionHTML, $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, ID => $FieldID, SelectedID => $Value->[$ValueIndex], @@ -362,7 +362,7 @@ sub EditFieldRender { my @SelectedIDs = grep {$_} $Value->@*; push @SelectionHTML, $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, SelectedID => \@SelectedIDs, Class => $FieldClass, @@ -433,7 +433,6 @@ sub EditFieldRender { my $SelectionHTML = $Param{LayoutObject}->BuildSelection( Data => $PossibleValues || {}, - Disabled => $Param{Readonly}, Name => $FieldName, ID => $FieldTemplateData{FieldID}, Class => $FieldClass, @@ -516,11 +515,13 @@ sub EditFieldValueGet { && ref $Param{ParamObject} eq 'Kernel::System::Web::Request' ) { - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { my @DataAll = $Param{ParamObject}->GetArray( Param => $FieldName ); # delete the template value - pop @DataAll; + if ( !$Param{DynamicFieldConfig}->{Readonly} ) { + pop @DataAll; + } # delete empty values (can happen if the user has selected the "-" entry) $Value = [ map { $_ // '' } @DataAll ]; diff --git a/Kernel/System/DynamicField/Driver/WebService.pm b/Kernel/System/DynamicField/Driver/WebService.pm index 326c8390b9..c2c06df327 100644 --- a/Kernel/System/DynamicField/Driver/WebService.pm +++ b/Kernel/System/DynamicField/Driver/WebService.pm @@ -282,7 +282,7 @@ sub EditFieldRender { my $SelectionHTML = $Param{LayoutObject}->BuildSelection( Data => $DataValues || {}, - Disabled => $Param{Readonly}, + Readonly => $Param{Readonly}, Name => $FieldName, ID => $FieldID, SelectedID => $Value->[$ValueIndex], @@ -403,10 +403,12 @@ sub EditFieldValueGet { { my @Data = $Param{ParamObject}->GetArray( Param => $FieldName ); - if ( $Param{DynamicFieldConfig}->{Config}->{MultiValue} ) { + if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) { # delete the template value - pop @Data; + if ( !$Param{DynamicFieldConfig}->{Readonly} ) { + pop @Data; + } $Value = \@Data; }