init III
This commit is contained in:
271
Perl OTRS/Kernel/System/ProcessManagement/ActivityDialog.pm
Normal file
271
Perl OTRS/Kernel/System/ProcessManagement/ActivityDialog.pm
Normal file
@@ -0,0 +1,271 @@
|
||||
# --
|
||||
# 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::System::ProcessManagement::ActivityDialog;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Kernel::System::VariableCheck qw(:all);
|
||||
|
||||
our @ObjectDependencies = (
|
||||
'Kernel::Config',
|
||||
'Kernel::System::Log',
|
||||
);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Kernel::System::ProcessManagement::ActivityDialog - activity dialog lib
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All Process Management Activity Dialog functions.
|
||||
|
||||
=head1 PUBLIC INTERFACE
|
||||
|
||||
=head2 new()
|
||||
|
||||
Don't use the constructor directly, use the ObjectManager instead:
|
||||
|
||||
my $ActivityDialogObject = $Kernel::OM->Get('Kernel::System::ProcessManagement::ActivityDialog');
|
||||
|
||||
=cut
|
||||
|
||||
sub new {
|
||||
my ( $Type, %Param ) = @_;
|
||||
|
||||
# allocate new hash for object
|
||||
my $Self = {};
|
||||
bless( $Self, $Type );
|
||||
|
||||
return $Self;
|
||||
}
|
||||
|
||||
=head2 ActivityDialogGet()
|
||||
|
||||
Get activity dialog info
|
||||
|
||||
my $ActivityDialog = $ActivityDialogObject->ActivityDialogGet(
|
||||
ActivityDialogEntityID => 'AD1',
|
||||
Interface => ['AgentInterface'], # ['AgentInterface'] or ['CustomerInterface'] or ['AgentInterface', 'CustomerInterface'] or 'all'
|
||||
Silent => 1, # 1 or 0, default 0, if set to 1, will not log errors about not matching interfaces
|
||||
);
|
||||
|
||||
Returns:
|
||||
|
||||
$ActivityDialog = {
|
||||
Name => 'UnitTestActivity',
|
||||
Interface => 'CustomerInterface', # 'AgentInterface', 'CustomerInterface', ['AgentInterface'] or ['CustomerInterface'] or ['AgentInterface', 'CustomerInterface']
|
||||
DescriptionShort => 'AD1 Process Short',
|
||||
DescriptionLong => 'AD1 Process Long description',
|
||||
CreateTime => '07-02-2012 13:37:00',
|
||||
CreateBy => '2',
|
||||
ChangeTime => '08-02-2012 13:37:00',
|
||||
ChangeBy => '3',
|
||||
Fields => {
|
||||
DynamicField_Make => {
|
||||
Display => 2,
|
||||
DescriptionLong => 'Make Long',
|
||||
DescriptionShort => 'Make Short',
|
||||
},
|
||||
DynamicField_VWModel => {
|
||||
Display => 2,
|
||||
DescriptionLong => 'VWModel Long',
|
||||
DescriptionShort => 'VWModel Short',
|
||||
},
|
||||
DynamicField_PeugeotModel => {
|
||||
Display => 0,
|
||||
DescriptionLong => 'PeugeotModel Long',
|
||||
DescriptionShort => 'PeugeotModel Short',
|
||||
},
|
||||
StateID => {
|
||||
Display => 1,
|
||||
DescriptionLong => 'StateID Long',
|
||||
DescriptionShort => 'StateID Short',
|
||||
},
|
||||
},
|
||||
FieldOrder => [
|
||||
'StateID',
|
||||
'DynamicField_Make',
|
||||
'DynamicField_VWModelModel',
|
||||
'DynamicField_PeugeotModel'
|
||||
],
|
||||
SubmitAdviceText => 'NOTE: If you submit the form ...',
|
||||
SubmitButtonText => 'Make an inquiry',
|
||||
};
|
||||
|
||||
=cut
|
||||
|
||||
sub ActivityDialogGet {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
for my $Needed (qw(ActivityDialogEntityID Interface)) {
|
||||
if ( !defined $Param{$Needed} ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "Need $Needed!"
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $Param{Interface} ne 'all' && ref $Param{Interface} ne 'ARRAY' ) {
|
||||
$Param{Interface} = [ $Param{Interface} ];
|
||||
}
|
||||
|
||||
my $ActivityDialog = $Kernel::OM->Get('Kernel::Config')->Get('Process::ActivityDialog');
|
||||
|
||||
if ( !IsHashRefWithData($ActivityDialog) ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => 'Need ActivityDialog config!'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !IsHashRefWithData( $ActivityDialog->{ $Param{ActivityDialogEntityID} } ) ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "No Data for ActivityDialog '$Param{ActivityDialogEntityID}' found!"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
$Param{Interface} ne 'all'
|
||||
&& !IsArrayRefWithData(
|
||||
$ActivityDialog->{ $Param{ActivityDialogEntityID} }->{Interface}
|
||||
)
|
||||
)
|
||||
{
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "No Interface for ActivityDialog '$Param{ActivityDialogEntityID}' found!"
|
||||
);
|
||||
}
|
||||
|
||||
if ( $Param{Interface} ne 'all' ) {
|
||||
my $Success;
|
||||
INTERFACE:
|
||||
for my $CurrentInterface ( @{ $Param{Interface} } ) {
|
||||
if (
|
||||
grep { $CurrentInterface eq $_ }
|
||||
@{ $ActivityDialog->{ $Param{ActivityDialogEntityID} }->{Interface} }
|
||||
)
|
||||
{
|
||||
$Success = 1;
|
||||
last INTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !$Success ) {
|
||||
if ( !$Param{Silent} ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message =>
|
||||
"Not permitted Interface(s) '"
|
||||
. join( '\', \'', @{ $Param{Interface} } )
|
||||
. "' for ActivityDialog '$Param{ActivityDialogEntityID}'!"
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return $ActivityDialog->{ $Param{ActivityDialogEntityID} };
|
||||
}
|
||||
|
||||
=head2 ActivityDialogCompletedCheck()
|
||||
|
||||
Checks if an activity dialog is completed
|
||||
|
||||
my $Completed = $ActivityDialogObject->ActivityDialogCompletedCheck(
|
||||
ActivityDialogEntityID => 'AD1',
|
||||
Data => {
|
||||
Queue => 'Raw',
|
||||
DynamicField1 => 'Value',
|
||||
Subject => 'Testsubject',
|
||||
# ...
|
||||
},
|
||||
);
|
||||
|
||||
Returns:
|
||||
|
||||
$Completed = 1; # 0
|
||||
|
||||
=cut
|
||||
|
||||
sub ActivityDialogCompletedCheck {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
for my $Needed (qw(ActivityDialogEntityID Data)) {
|
||||
if ( !defined $Param{$Needed} ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "Need $Needed!"
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !IsHashRefWithData( $Param{Data} ) ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "Data has no values!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
my $ActivityDialog = $Self->ActivityDialogGet(
|
||||
ActivityDialogEntityID => $Param{ActivityDialogEntityID},
|
||||
Interface => 'all',
|
||||
);
|
||||
if ( !$ActivityDialog ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "Can't get ActivtyDialog '$Param{ActivityDialogEntityID}'!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !$ActivityDialog->{Fields} || ref $ActivityDialog->{Fields} ne 'HASH' ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Priority => 'error',
|
||||
Message => "Can't get fields for ActivtyDialog '$Param{ActivityDialogEntityID}'!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
# loop over the fields of the config activity dialog to check if the required fields are filled
|
||||
FIELDLOOP:
|
||||
for my $Field ( sort keys %{ $ActivityDialog->{Fields} } ) {
|
||||
|
||||
# Checks if Field was invisible
|
||||
next FIELDLOOP if ( !$ActivityDialog->{Fields}->{$Field}->{Display} );
|
||||
|
||||
# Checks if Field was visible but not required
|
||||
next FIELDLOOP if ( $ActivityDialog->{Fields}->{$Field}->{Display} == 1 );
|
||||
|
||||
# checks if $Data->{Field} is defined and not an empty string
|
||||
return if ( !IsStringWithData( $Param{Data}->{$Field} ) );
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=head1 TERMS AND CONDITIONS
|
||||
|
||||
This software is part of the OTRS project (L<https://otrs.org/>).
|
||||
|
||||
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 L<https://www.gnu.org/licenses/gpl-3.0.txt>.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user