init III
This commit is contained in:
885
Perl OTRS/Kernel/Modules/AdminCustomerCompany.pm
Normal file
885
Perl OTRS/Kernel/Modules/AdminCustomerCompany.pm
Normal file
@@ -0,0 +1,885 @@
|
||||
# --
|
||||
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
|
||||
# --
|
||||
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
|
||||
# the enclosed file COPYING for license information (GPL). If you
|
||||
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
|
||||
# --
|
||||
|
||||
package Kernel::Modules::AdminCustomerCompany;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Kernel::Language qw(Translatable);
|
||||
|
||||
our $ObjectManagerDisabled = 1;
|
||||
|
||||
use Kernel::System::VariableCheck qw(:all);
|
||||
|
||||
sub new {
|
||||
my ( $Type, %Param ) = @_;
|
||||
|
||||
# allocate new hash for object
|
||||
my $Self = {%Param};
|
||||
bless( $Self, $Type );
|
||||
|
||||
my $DynamicFieldConfigs = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldListGet(
|
||||
ObjectType => 'CustomerCompany',
|
||||
);
|
||||
|
||||
$Self->{DynamicFieldLookup} = { map { $_->{Name} => $_ } @{$DynamicFieldConfigs} };
|
||||
|
||||
return $Self;
|
||||
}
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
|
||||
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
||||
|
||||
my $Nav = $ParamObject->GetParam( Param => 'Nav' ) || 0;
|
||||
my $NavigationBarType = $Nav eq 'Agent' ? 'Customers' : 'Admin';
|
||||
my $Search = $ParamObject->GetParam( Param => 'Search' );
|
||||
$Search
|
||||
||= $ConfigObject->Get('AdminCustomerCompany::RunInitialWildcardSearch') ? '*' : '';
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
my $CustomerCompanyObject = $Kernel::OM->Get('Kernel::System::CustomerCompany');
|
||||
|
||||
my %GetParam;
|
||||
$GetParam{Source} = $ParamObject->GetParam( Param => 'Source' ) || 'CustomerCompany';
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# change
|
||||
# ------------------------------------------------------------ #
|
||||
if ( $Self->{Subaction} eq 'Change' ) {
|
||||
my $CustomerID
|
||||
= $ParamObject->GetParam( Param => 'CustomerID' ) || $ParamObject->GetParam( Param => 'ID' ) || '';
|
||||
my $Notification = $ParamObject->GetParam( Param => 'Notification' ) || '';
|
||||
my %Data = $CustomerCompanyObject->CustomerCompanyGet(
|
||||
CustomerID => $CustomerID,
|
||||
);
|
||||
$Data{CustomerCompanyID} = $CustomerID;
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
$Output .= $LayoutObject->Notify( Info => Translatable('Customer company updated!') )
|
||||
if ( $Notification && $Notification eq 'Update' );
|
||||
$Self->_Edit(
|
||||
Action => 'Change',
|
||||
Nav => $Nav,
|
||||
%Data,
|
||||
);
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# change action
|
||||
# ------------------------------------------------------------ #
|
||||
elsif ( $Self->{Subaction} eq 'ChangeAction' ) {
|
||||
|
||||
# challenge token check for write action
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
my $Note = '';
|
||||
my %Errors;
|
||||
$GetParam{CustomerCompanyID} = $ParamObject->GetParam( Param => 'CustomerCompanyID' );
|
||||
|
||||
# Get dynamic field backend object.
|
||||
my $DynamicFieldBackendObject = $Kernel::OM->Get('Kernel::System::DynamicField::Backend');
|
||||
|
||||
ENTRY:
|
||||
for my $Entry ( @{ $ConfigObject->Get( $GetParam{Source} )->{Map} } ) {
|
||||
|
||||
# check dynamic fields
|
||||
if ( $Entry->[5] eq 'dynamic_field' ) {
|
||||
|
||||
my $DynamicFieldConfig = $Self->{DynamicFieldLookup}->{ $Entry->[2] };
|
||||
|
||||
if ( !IsHashRefWithData($DynamicFieldConfig) ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "DynamicField $Entry->[2] not found!",
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
|
||||
my $ValidationResult = $DynamicFieldBackendObject->EditFieldValueValidate(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ParamObject => $ParamObject,
|
||||
Mandatory => $Entry->[4],
|
||||
);
|
||||
|
||||
if ( $ValidationResult->{ServerError} ) {
|
||||
$Errors{ $Entry->[0] } = $ValidationResult;
|
||||
}
|
||||
else {
|
||||
|
||||
# generate storable value of dynamic field edit field
|
||||
$GetParam{ $Entry->[0] } = $DynamicFieldBackendObject->EditFieldValueGet(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ParamObject => $ParamObject,
|
||||
LayoutObject => $LayoutObject,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# check remaining non-dynamic-field mandatory fields
|
||||
else {
|
||||
$GetParam{ $Entry->[0] } = $ParamObject->GetParam( Param => $Entry->[0] ) // '';
|
||||
if ( !$GetParam{ $Entry->[0] } && $Entry->[4] ) {
|
||||
$Errors{ $Entry->[0] . 'Invalid' } = 'ServerError';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( !defined $GetParam{CustomerID} ) {
|
||||
$GetParam{CustomerID} = $ParamObject->GetParam( Param => 'CustomerID' ) || '';
|
||||
}
|
||||
|
||||
# check for duplicate entries
|
||||
if ( $GetParam{CustomerCompanyID} ne $GetParam{CustomerID} ) {
|
||||
|
||||
# get CustomerCompany list
|
||||
my %List = $CustomerCompanyObject->CustomerCompanyList(
|
||||
Search => $Param{Search},
|
||||
Valid => 0,
|
||||
);
|
||||
|
||||
# check duplicate field
|
||||
if ( %List && $List{ $GetParam{CustomerID} } ) {
|
||||
$Errors{Duplicate} = 'ServerError';
|
||||
}
|
||||
}
|
||||
|
||||
# if no errors occurred
|
||||
if ( !%Errors ) {
|
||||
|
||||
# update group
|
||||
my $Update = $CustomerCompanyObject->CustomerCompanyUpdate( %GetParam, UserID => $Self->{UserID} );
|
||||
|
||||
if ($Update) {
|
||||
|
||||
my $SetDFError;
|
||||
|
||||
# set dynamic field values
|
||||
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicField');
|
||||
|
||||
ENTRY:
|
||||
for my $Entry ( @{ $ConfigObject->Get( $GetParam{Source} )->{Map} } ) {
|
||||
next ENTRY if $Entry->[5] ne 'dynamic_field';
|
||||
|
||||
my $DynamicFieldConfig = $Self->{DynamicFieldLookup}->{ $Entry->[2] };
|
||||
|
||||
if ( !IsHashRefWithData($DynamicFieldConfig) ) {
|
||||
$SetDFError .= $LayoutObject->Notify(
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Dynamic field %s not found!',
|
||||
$Entry->[2],
|
||||
)
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
|
||||
my $ValueSet = $DynamicFieldBackendObject->ValueSet(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ObjectName => $GetParam{CustomerID},
|
||||
Value => $GetParam{ $Entry->[0] },
|
||||
UserID => $Self->{UserID},
|
||||
);
|
||||
|
||||
if ( !$ValueSet ) {
|
||||
$SetDFError
|
||||
.= $LayoutObject->Notify(
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Unable to set value for dynamic field %s!',
|
||||
$Entry->[2],
|
||||
),
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
}
|
||||
|
||||
my $ContinueAfterSave = $ParamObject->GetParam( Param => 'ContinueAfterSave' ) || 0;
|
||||
|
||||
# if set DF error exists, create notification
|
||||
if ($SetDFError) {
|
||||
|
||||
# if the user would like to continue editing the customer company, just redirect to the edit screen
|
||||
if ( $ContinueAfterSave eq '1' ) {
|
||||
$Self->_Edit(
|
||||
Action => 'Change',
|
||||
Nav => $Nav,
|
||||
Errors => \%Errors,
|
||||
%GetParam,
|
||||
);
|
||||
}
|
||||
else {
|
||||
$Self->_Overview(
|
||||
Nav => $Nav,
|
||||
Search => $Search,
|
||||
%GetParam,
|
||||
);
|
||||
}
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
$Output .= $LayoutObject->Notify( Info => Translatable('Customer company updated!') );
|
||||
$Output .= $SetDFError;
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# if the user would like to continue editing the customer company, just redirect to the edit screen
|
||||
if ( $ContinueAfterSave eq '1' ) {
|
||||
my $CustomerID = $ParamObject->GetParam( Param => 'CustomerID' ) || '';
|
||||
return $LayoutObject->Redirect(
|
||||
OP =>
|
||||
"Action=$Self->{Action};Subaction=Change;CustomerID=$CustomerID;Nav=$Nav;Notification=Update"
|
||||
);
|
||||
}
|
||||
else {
|
||||
|
||||
# otherwise return to overview
|
||||
return $LayoutObject->Redirect( OP => "Action=$Self->{Action};Notification=Update" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# something went wrong
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
|
||||
$Output .= $LayoutObject->Notify( Priority => 'Error' );
|
||||
|
||||
# set notification for duplicate entry
|
||||
if ( $Errors{Duplicate} ) {
|
||||
$Output .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Customer Company %s already exists!',
|
||||
$GetParam{CustomerID},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$Self->_Edit(
|
||||
Action => 'Change',
|
||||
Nav => $Nav,
|
||||
Errors => \%Errors,
|
||||
%GetParam,
|
||||
);
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# add
|
||||
# ------------------------------------------------------------ #
|
||||
elsif ( $Self->{Subaction} eq 'Add' ) {
|
||||
$GetParam{Name} = $ParamObject->GetParam( Param => 'Name' );
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
$Self->_Edit(
|
||||
Action => 'Add',
|
||||
Nav => $Nav,
|
||||
%GetParam,
|
||||
);
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# add action
|
||||
# ------------------------------------------------------------ #
|
||||
elsif ( $Self->{Subaction} eq 'AddAction' ) {
|
||||
|
||||
# challenge token check for write action
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
my $Note = '';
|
||||
my %Errors;
|
||||
|
||||
my $CustomerCompanyKey = $ConfigObject->Get( $GetParam{Source} )->{CustomerCompanyKey};
|
||||
my $CustomerCompanyID;
|
||||
|
||||
# Get dynamic field backend object.
|
||||
my $DynamicFieldBackendObject = $Kernel::OM->Get('Kernel::System::DynamicField::Backend');
|
||||
|
||||
ENTRY:
|
||||
for my $Entry ( @{ $ConfigObject->Get( $GetParam{Source} )->{Map} } ) {
|
||||
|
||||
# check dynamic fields
|
||||
if ( $Entry->[5] eq 'dynamic_field' ) {
|
||||
|
||||
my $DynamicFieldConfig = $Self->{DynamicFieldLookup}->{ $Entry->[2] };
|
||||
|
||||
if ( !IsHashRefWithData($DynamicFieldConfig) ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "DynamicField $Entry->[2] not found!",
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
|
||||
my $ValidationResult = $DynamicFieldBackendObject->EditFieldValueValidate(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ParamObject => $ParamObject,
|
||||
Mandatory => $Entry->[4],
|
||||
);
|
||||
|
||||
if ( $ValidationResult->{ServerError} ) {
|
||||
$Errors{ $Entry->[0] } = $ValidationResult;
|
||||
}
|
||||
else {
|
||||
|
||||
# generate storable value of dynamic field edit field
|
||||
$GetParam{ $Entry->[0] } = $DynamicFieldBackendObject->EditFieldValueGet(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ParamObject => $ParamObject,
|
||||
LayoutObject => $LayoutObject,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# check remaining non-dynamic-field mandatory fields
|
||||
else {
|
||||
$GetParam{ $Entry->[0] } = $ParamObject->GetParam( Param => $Entry->[0] ) // '';
|
||||
if ( !$GetParam{ $Entry->[0] } && $Entry->[4] ) {
|
||||
$Errors{ $Entry->[0] . 'Invalid' } = 'ServerError';
|
||||
}
|
||||
}
|
||||
|
||||
# save customer company key for checking duplicate
|
||||
if ( $Entry->[2] eq $CustomerCompanyKey ) {
|
||||
$CustomerCompanyID = $GetParam{ $Entry->[0] };
|
||||
}
|
||||
}
|
||||
|
||||
# get CustomerCompany list
|
||||
my %List = $CustomerCompanyObject->CustomerCompanyList(
|
||||
Search => $Param{Search},
|
||||
Valid => 0,
|
||||
);
|
||||
|
||||
# check duplicate field
|
||||
if ( %List && $List{$CustomerCompanyID} ) {
|
||||
$Errors{Duplicate} = 'ServerError';
|
||||
}
|
||||
|
||||
# if no errors occurred
|
||||
if ( !%Errors ) {
|
||||
|
||||
# add company
|
||||
if (
|
||||
$CustomerCompanyObject->CustomerCompanyAdd(
|
||||
%GetParam,
|
||||
UserID => $Self->{UserID},
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
$Self->_Overview(
|
||||
Nav => $Nav,
|
||||
Search => $Search,
|
||||
%GetParam,
|
||||
);
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
$Output .= $LayoutObject->Notify(
|
||||
Info => Translatable('Customer company added!'),
|
||||
);
|
||||
|
||||
# set dynamic field values
|
||||
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicField');
|
||||
|
||||
ENTRY:
|
||||
for my $Entry ( @{ $ConfigObject->Get( $GetParam{Source} )->{Map} } ) {
|
||||
next ENTRY if $Entry->[5] ne 'dynamic_field';
|
||||
|
||||
my $DynamicFieldConfig = $Self->{DynamicFieldLookup}->{ $Entry->[2] };
|
||||
|
||||
if ( !IsHashRefWithData($DynamicFieldConfig) ) {
|
||||
$Output .= $LayoutObject->Notify(
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Dynamic field %s not found!',
|
||||
$Entry->[2],
|
||||
),
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
|
||||
my $ValueSet = $DynamicFieldBackendObject->ValueSet(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
ObjectName => $GetParam{CustomerID},
|
||||
Value => $GetParam{ $Entry->[0] },
|
||||
UserID => $Self->{UserID},
|
||||
);
|
||||
|
||||
if ( !$ValueSet ) {
|
||||
$Output
|
||||
.= $LayoutObject->Notify(
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Unable to set value for dynamic field %s!',
|
||||
$Entry->[2],
|
||||
),
|
||||
);
|
||||
next ENTRY;
|
||||
}
|
||||
}
|
||||
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
}
|
||||
|
||||
# something went wrong
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
|
||||
$Output .= $LayoutObject->Notify( Priority => 'Error' );
|
||||
|
||||
# set notification for duplicate entry
|
||||
if ( $Errors{Duplicate} ) {
|
||||
$Output .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Info => $LayoutObject->{LanguageObject}->Translate(
|
||||
'Customer Company %s already exists!',
|
||||
$CustomerCompanyID,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$Self->_Edit(
|
||||
Action => 'Add',
|
||||
Nav => $Nav,
|
||||
Errors => \%Errors,
|
||||
%GetParam,
|
||||
);
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# overview
|
||||
# ------------------------------------------------------------
|
||||
else {
|
||||
$Self->_Overview(
|
||||
Nav => $Nav,
|
||||
Search => $Search,
|
||||
%GetParam,
|
||||
);
|
||||
my $Output = $LayoutObject->Header();
|
||||
my $Notification = $ParamObject->GetParam( Param => 'Notification' ) || '';
|
||||
$Output .= $LayoutObject->NavigationBar(
|
||||
Type => $NavigationBarType,
|
||||
);
|
||||
$Output .= $LayoutObject->Notify( Info => Translatable('Customer company updated!') )
|
||||
if ( $Notification && $Notification eq 'Update' );
|
||||
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminCustomerCompany',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
}
|
||||
|
||||
sub _Edit {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Overview',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
$LayoutObject->Block( Name => 'ActionList' );
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionOverview',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'OverviewUpdate',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
# get config object
|
||||
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
||||
|
||||
# send parameter ReadOnly to JS object
|
||||
$LayoutObject->AddJSData(
|
||||
Key => 'ReadOnly',
|
||||
Value => $ConfigObject->{ $Param{Source} }->{ReadOnly},
|
||||
);
|
||||
|
||||
# Get valid object.
|
||||
my $ValidObject = $Kernel::OM->Get('Kernel::System::Valid');
|
||||
|
||||
$Param{'ValidOption'} = $LayoutObject->BuildSelection(
|
||||
Data => { $ValidObject->ValidList(), },
|
||||
Name => 'ValidID',
|
||||
Class => 'Modernize',
|
||||
SelectedID => $Param{ValidID},
|
||||
);
|
||||
|
||||
# Get needed objects.
|
||||
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
|
||||
my $DynamicFieldBackendObject = $Kernel::OM->Get('Kernel::System::DynamicField::Backend');
|
||||
|
||||
ENTRY:
|
||||
for my $Entry ( @{ $ConfigObject->Get( $Param{Source} )->{Map} } ) {
|
||||
if ( $Entry->[0] ) {
|
||||
|
||||
# Handle dynamic fields
|
||||
if ( $Entry->[5] eq 'dynamic_field' ) {
|
||||
|
||||
my $DynamicFieldConfig = $Self->{DynamicFieldLookup}->{ $Entry->[2] };
|
||||
|
||||
next ENTRY if !IsHashRefWithData($DynamicFieldConfig);
|
||||
|
||||
# Get HTML for dynamic field
|
||||
my $DynamicFieldHTML = $DynamicFieldBackendObject->EditFieldRender(
|
||||
DynamicFieldConfig => $DynamicFieldConfig,
|
||||
Value => $Param{ $Entry->[0] } ? $Param{ $Entry->[0] } : undef,
|
||||
Mandatory => $Entry->[4],
|
||||
LayoutObject => $LayoutObject,
|
||||
ParamObject => $ParamObject,
|
||||
|
||||
# Server error, if any
|
||||
%{ $Param{Errors}->{ $Entry->[0] } },
|
||||
);
|
||||
|
||||
# skip fields for which HTML could not be retrieved
|
||||
next ENTRY if !IsHashRefWithData($DynamicFieldHTML);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'PreferencesGeneric',
|
||||
Data => {},
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'DynamicField',
|
||||
Data => {
|
||||
Name => $DynamicFieldConfig->{Name},
|
||||
Label => $DynamicFieldHTML->{Label},
|
||||
Field => $DynamicFieldHTML->{Field},
|
||||
},
|
||||
);
|
||||
|
||||
next ENTRY;
|
||||
}
|
||||
|
||||
my $Block = 'Input';
|
||||
|
||||
# build selections or input fields
|
||||
if ( $ConfigObject->Get( $Param{Source} )->{Selections}->{ $Entry->[0] } ) {
|
||||
my $OptionRequired = '';
|
||||
if ( $Entry->[4] ) {
|
||||
$OptionRequired = 'Validate_Required';
|
||||
}
|
||||
|
||||
# build ValidID string
|
||||
$Block = 'Option';
|
||||
$Param{Option} = $LayoutObject->BuildSelection(
|
||||
Data =>
|
||||
$ConfigObject->Get( $Param{Source} )->{Selections}
|
||||
->{ $Entry->[0] },
|
||||
Name => $Entry->[0],
|
||||
Class => "$OptionRequired Modernize " .
|
||||
( $Param{Errors}->{ $Entry->[0] . 'Invalid' } || '' ),
|
||||
Translation => 0,
|
||||
SelectedID => $Param{ $Entry->[0] },
|
||||
Max => 35,
|
||||
);
|
||||
|
||||
}
|
||||
elsif ( $Entry->[0] =~ /^CustomerCompanyCountry/i ) {
|
||||
my $OptionRequired = '';
|
||||
if ( $Entry->[4] ) {
|
||||
$OptionRequired = 'Validate_Required';
|
||||
}
|
||||
|
||||
# build Country string
|
||||
my $CountryList = $Kernel::OM->Get('Kernel::System::ReferenceData')->CountryList();
|
||||
|
||||
$Block = 'Option';
|
||||
$Param{Option} = $LayoutObject->BuildSelection(
|
||||
Data => $CountryList,
|
||||
PossibleNone => 1,
|
||||
Sort => 'AlphanumericValue',
|
||||
Name => $Entry->[0],
|
||||
Class => "$OptionRequired Modernize " .
|
||||
( $Param{Errors}->{ $Entry->[0] . 'Invalid' } || '' ),
|
||||
SelectedID => defined( $Param{ $Entry->[0] } ) ? $Param{ $Entry->[0] } : 1,
|
||||
);
|
||||
}
|
||||
elsif ( $Entry->[0] =~ /^ValidID/i ) {
|
||||
my $OptionRequired = '';
|
||||
if ( $Entry->[4] ) {
|
||||
$OptionRequired = 'Validate_Required';
|
||||
}
|
||||
|
||||
# build ValidID string
|
||||
$Block = 'Option';
|
||||
$Param{Option} = $LayoutObject->BuildSelection(
|
||||
Data => { $ValidObject->ValidList(), },
|
||||
Name => $Entry->[0],
|
||||
Class => "$OptionRequired Modernize " .
|
||||
( $Param{Errors}->{ $Entry->[0] . 'Invalid' } || '' ),
|
||||
SelectedID => defined( $Param{ $Entry->[0] } ) ? $Param{ $Entry->[0] } : 1,
|
||||
);
|
||||
}
|
||||
else {
|
||||
$Param{Value} = $Param{ $Entry->[0] } || '';
|
||||
}
|
||||
|
||||
# show required flag
|
||||
if ( $Entry->[4] ) {
|
||||
$Param{MandatoryClass} = 'class="Mandatory"';
|
||||
$Param{StarLabel} = '<span class="Marker">*</span>';
|
||||
$Param{RequiredClass} = 'Validate_Required';
|
||||
}
|
||||
else {
|
||||
$Param{MandatoryClass} = '';
|
||||
$Param{StarLabel} = '';
|
||||
$Param{RequiredClass} = '';
|
||||
}
|
||||
|
||||
# show required flag
|
||||
if ( $Entry->[7] ) {
|
||||
$Param{ReadOnlyType} = 'readonly="readonly"';
|
||||
}
|
||||
else {
|
||||
$Param{ReadOnlyType} = '';
|
||||
}
|
||||
|
||||
# add form option
|
||||
if ( $Param{Type} && $Param{Type} eq 'hidden' ) {
|
||||
$Param{Preferences} .= $Param{Value};
|
||||
}
|
||||
else {
|
||||
$LayoutObject->Block(
|
||||
Name => 'PreferencesGeneric',
|
||||
Data => {
|
||||
Item => $Entry->[1],
|
||||
%Param
|
||||
},
|
||||
);
|
||||
$LayoutObject->Block(
|
||||
Name => "PreferencesGeneric$Block",
|
||||
Data => {
|
||||
%Param,
|
||||
Item => $Entry->[1],
|
||||
Name => $Entry->[0],
|
||||
Value => $Param{ $Entry->[0] },
|
||||
InvalidField => $Param{Errors}->{ $Entry->[0] . 'Invalid' } || '',
|
||||
},
|
||||
);
|
||||
if ( $Entry->[4] ) {
|
||||
$LayoutObject->Block(
|
||||
Name => "PreferencesGeneric${Block}Required",
|
||||
Data => {
|
||||
Name => $Entry->[0],
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub _Overview {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Overview',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
$LayoutObject->Block( Name => 'ActionList' );
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionSearch',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
my $CustomerCompanyObject = $Kernel::OM->Get('Kernel::System::CustomerCompany');
|
||||
|
||||
# get writable data sources
|
||||
my %CustomerCompanySource = $CustomerCompanyObject->CustomerCompanySourceList(
|
||||
ReadOnly => 0,
|
||||
);
|
||||
|
||||
# only show Add option if we have at least one writable backend
|
||||
if ( scalar keys %CustomerCompanySource ) {
|
||||
$Param{SourceOption} = $LayoutObject->BuildSelection(
|
||||
Data => { %CustomerCompanySource, },
|
||||
Name => 'Source',
|
||||
SelectedID => $Param{Source} || '',
|
||||
Class => 'Modernize',
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionAdd',
|
||||
Data => \%Param,
|
||||
);
|
||||
}
|
||||
|
||||
# if there are any registries to search, the table is filled and shown
|
||||
if ( $Param{Search} ) {
|
||||
|
||||
# get config object
|
||||
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
|
||||
|
||||
# same Limit as $Self->{CustomerCompanyMap}->{'CustomerCompanySearchListLimit'}
|
||||
# smallest Limit from all sources
|
||||
my $Limit = 400;
|
||||
SOURCE:
|
||||
for my $Count ( '', 1 .. 10 ) {
|
||||
next SOURCE if !$ConfigObject->Get("CustomerCompany$Count");
|
||||
my $CustomerUserMap = $ConfigObject->Get("CustomerCompany$Count");
|
||||
next SOURCE if !$CustomerUserMap->{CustomerCompanySearchListLimit};
|
||||
if ( $CustomerUserMap->{CustomerCompanySearchListLimit} < $Limit ) {
|
||||
$Limit = $CustomerUserMap->{CustomerCompanySearchListLimit};
|
||||
}
|
||||
}
|
||||
|
||||
my %ListAllItems = $CustomerCompanyObject->CustomerCompanyList(
|
||||
Search => $Param{Search},
|
||||
Limit => $Limit + 1,
|
||||
Valid => 0,
|
||||
);
|
||||
|
||||
if ( keys %ListAllItems <= $Limit ) {
|
||||
my $ListAllItems = keys %ListAllItems;
|
||||
$LayoutObject->Block(
|
||||
Name => 'OverviewHeader',
|
||||
Data => {
|
||||
ListAll => $ListAllItems,
|
||||
Limit => $Limit,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
my %List = $CustomerCompanyObject->CustomerCompanyList(
|
||||
Search => $Param{Search},
|
||||
Valid => 0,
|
||||
);
|
||||
|
||||
if ( keys %ListAllItems > $Limit ) {
|
||||
my $ListAllItems = keys %ListAllItems;
|
||||
my $SearchListSize = keys %List;
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'OverviewHeader',
|
||||
Data => {
|
||||
SearchListSize => $SearchListSize,
|
||||
ListAll => $ListAllItems,
|
||||
Limit => $Limit,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'OverviewResult',
|
||||
Data => \%Param,
|
||||
);
|
||||
|
||||
# get valid list
|
||||
my %ValidList = $Kernel::OM->Get('Kernel::System::Valid')->ValidList();
|
||||
|
||||
if ( !$ConfigObject->Get( $Param{Source} )->{Params}->{ForeignDB} ) {
|
||||
$LayoutObject->Block( Name => 'LocalDB' );
|
||||
}
|
||||
|
||||
# if there are results to show
|
||||
if (%List) {
|
||||
for my $ListKey ( sort { $List{$a} cmp $List{$b} } keys %List ) {
|
||||
|
||||
my %Data = $CustomerCompanyObject->CustomerCompanyGet( CustomerID => $ListKey );
|
||||
$LayoutObject->Block(
|
||||
Name => 'OverviewResultRow',
|
||||
Data => {
|
||||
%Data,
|
||||
Search => $Param{Search},
|
||||
Nav => $Param{Nav},
|
||||
},
|
||||
);
|
||||
|
||||
if ( !$ConfigObject->Get( $Param{Source} )->{Params}->{ForeignDB} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'LocalDBRow',
|
||||
Data => {
|
||||
Valid => $ValidList{ $Data{ValidID} },
|
||||
%Data,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
# otherwise it displays a no data found message
|
||||
else {
|
||||
$LayoutObject->Block(
|
||||
Name => 'NoDataFoundMsg',
|
||||
Data => {},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# if there is nothing to search it shows a message
|
||||
else
|
||||
{
|
||||
$LayoutObject->Block(
|
||||
Name => 'NoSearchTerms',
|
||||
Data => {},
|
||||
);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user