1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
# --
# Copyright (C) 2001-2017 OTRS AG, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::Output::HTML::CustomerNewTicket::QueueSelectionGeneric;
use strict;
use warnings;
our $ObjectManagerDisabled = 1;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# get needed objects
for my $Needed (qw( UserID SystemAddress)) {
$Self->{$Needed} = $Param{$Needed} || die "Got no $Needed!";
}
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# get needed objects
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
my $QueueObject = $Kernel::OM->Get('Kernel::System::Queue');
# check if own selection is configured
my %NewTos;
if ( $ConfigObject->{CustomerPanelOwnSelection} ) {
for my $Queue ( sort keys %{ $ConfigObject->{CustomerPanelOwnSelection} } ) {
my $Value = $ConfigObject->{CustomerPanelOwnSelection}->{$Queue};
if ( $Queue =~ /^\d+$/ ) {
$NewTos{$Queue} = $Value;
}
else {
if ( $QueueObject->QueueLookup( Queue => $Queue ) ) {
$NewTos{ $QueueObject->QueueLookup( Queue => $Queue ) } = $Value;
}
else {
$NewTos{$Queue} = $Value;
}
}
}
# check create permissions
my %Queues = $TicketObject->MoveList(
%{ $Param{ACLParams} },
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
for my $QueueID ( sort keys %NewTos ) {
if ( !$Queues{$QueueID} ) {
delete $NewTos{$QueueID};
}
}
}
else {
# SelectionType Queue or SystemAddress?
my %Tos;
if ( $ConfigObject->Get('CustomerPanelSelectionType') eq 'Queue' ) {
%Tos = $TicketObject->MoveList(
%{ $Param{ACLParams} },
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
}
else {
my %Queues = $TicketObject->MoveList(
%{ $Param{ACLParams} },
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
my %SystemTos = $Kernel::OM->Get('Kernel::System::DB')->GetTableData(
Table => 'system_address',
What => 'queue_id, id',
Valid => 1,
Clamp => 1,
);
for my $QueueID ( sort keys %Queues ) {
if ( $SystemTos{$QueueID} ) {
$Tos{$QueueID} = $Queues{$QueueID};
}
}
}
%NewTos = %Tos;
# build selection string
for my $QueueID ( sort keys %NewTos ) {
my %QueueData = $QueueObject->QueueGet( ID => $QueueID );
my $String = $ConfigObject->Get('CustomerPanelSelectionString')
|| '<Realname> <<Email>> - Queue: <Queue>';
$String =~ s/<Queue>/$QueueData{Name}/g;
$String =~ s/<QueueComment>/$QueueData{Comment}/g;
if ( $ConfigObject->Get('CustomerPanelSelectionType') ne 'Queue' ) {
my %SystemAddressData = $Self->{SystemAddress}->SystemAddressGet( ID => $QueueData{SystemAddressID} );
$String =~ s/<Realname>/$SystemAddressData{Realname}/g;
$String =~ s/<Email>/$SystemAddressData{Name}/g;
}
$NewTos{$QueueID} = $String;
}
}
return %NewTos;
}
1;
|