[itsm] bug in ImportExport?

Cyrille Bollu cyrille.bollu at belnet.be
Tue Apr 30 10:42:12 GMT 2013


Hi list,

I'm playing with the ImportExport module, trying to add a new format 
backend.

I think I've found a bug:

In the Run() function in "Modules/AdminImportExport.pm", under subAction 
"TemplateEdit4", when creating the form input fields for the format 
attribute's value, the following code is used:

             for my $Item ( @{$MappingFormatAttributes} ) {

                 # create form input
                 my $InputString = 
$Self->{LayoutObject}->ImportExportFormInputCreate(
                     Item   => $Item,
                     Prefix => 'Format::' . $AtributteRowCounter . '::',
                     Value  => $MappingFormatData->{ $Item->{Key} },
                 );

                 # output attribute row
                 $Self->{LayoutObject}->Block(
                     Name => 'TemplateEdit4MapNumberColumn',
                     Data => {
                         Name      => $Item->{Name},
                         InputStrg => $InputString,
                         Counter   => $AtributteRowCounter,
                     },
                 );
             }

Where no "Name" parameter is passed to the 
$Self->{LayoutObject}->ImportExportFormInputCreate() function.

This causes the FormInputCreate() function in 
"Output/HTML/ImportExportLayoutText.pm" to create a field with a name 
containing the prefix twice:

     # prepare data
     my $ID = ( $Param{Prefix} || '' ) . ( $Param{Item}->{Key} );
     my $Name = ( $Param{Prefix} || '' ) . ( $Param{Name} || $ID );
     my $Class = ( $SizeClass || '' ) . ( $Param{Class} || '' );

     my $String
         = "<input id=\"$ID\" type=\"text\" name=\"$Name\" 
class=\"$Class\" ";

While the FormDataGet() function tries to get text fields' value by a 
name containing the prefix only once:

     $Param{Prefix} ||= '';

     # get form data
     my $FormData = $Self->{ParamObject}->GetParam(
         Param => $Param{Prefix} . $Param{Item}->{Key},
     );

So, this effectively prevents the user of text fields in the mapping 
definition.

I fixed it here as follow:

                 # create form input
                 my $InputString = 
$Self->{LayoutObject}->ImportExportFormInputCreate(
                     Item   => $Item,
++                Name => $Item->{Name},
                     Prefix => 'Format::' . $AtributteRowCounter . '::',
                     Value  => $MappingFormatData->{ $Item->{Key} },
                 );

Does it make sense for you?

Br,

Cyrille



More information about the itsm mailing list