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
|
# --
# Kernel/Output/HTML/ArticleCompose/DefaultRecipient.pm
# Copyright (C) 2015 Alexander Sulfrian <alex@spline.inf.fu-berlin.de>
# --
package Kernel::Output::HTML::ArticleCompose::DefaultRecipient;
use strict;
use warnings;
our @ObjectDependencies = qw(
Kernel::Output::HTML::Layout
Kernel::System::DefaultRecipient
Kernel::System::Log
Kernel::System::Web::Request
);
sub new {
my ( $Type, %Param ) = @_;
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
$Self->{LayoutObject} = $Param{LayoutObject};
$Self->{ResponseID} = $ParamObject->GetParam( Param => 'ResponseID' );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# check needed stuff
if ( !defined $Param{Data} ) {
my $LogObject = $Kernel::OM->Get('Kernel::System::Log');
$LogObject->Log(
Priority => 'error',
Message => 'Need Data!'
);
$Self->{LayoutObject}->FatalDie();
}
# return if not generated from template
return unless $Self->{ResponseID};
# get all DefaultRecipient
my $DefaultRecipientObject = $Kernel::OM->Get('Kernel::System::DefaultRecipient');
my %MappedDefaultRecipient = $DefaultRecipientObject->MappingList(
TemplateID => $Self->{ResponseID},
);
my %Remove = ( To => 0, Cc => 0 );
my %Addresses = ( To => [], Cc => [], Bcc => [] );
foreach my $ID ( values %MappedDefaultRecipient ) {
my %DefaultRecipient = $DefaultRecipientObject->Get(
ID => $ID,
);
for my $addr (qw(To Cc)) {
$Remove{$addr} = 1 if $DefaultRecipient{'Remove' . $addr};
}
for my $addr (qw(To Cc Bcc)) {
if ( $DefaultRecipient{ $addr } ne '' ) {
push @{$Addresses{ $addr }}, $DefaultRecipient{ $addr };
}
}
}
if ( $Remove{To} || $Remove{Cc} ) {
# remove preselected addresses
my @blocks = ();
BLOCK:
for my $block (@{$Self->{LayoutObject}{_JSOnDocumentComplete}}) {
for my $addr (qw(To Cc)) {
next BLOCK if $Remove{$addr} &&
$block =~ qr/Core\.Agent\.CustomerSearch\.AddTicketCustomer\(\s*'${addr}Customer'/;
}
push @blocks, $block;
}
$Self->{LayoutObject}{_JSOnDocumentComplete} = \@blocks;
}
# add new addresses
for my $addr (qw(To Cc Bcc)) {
for my $Address ( @{$Addresses{ $addr }} ) {
$Self->{LayoutObject}->AddJSOnDocumentComplete(
Code => 'Core.Agent.CustomerSearch.AddTicketCustomer( '
. "'${addr}Customer', "
. $Self->{LayoutObject}->JSONEncode( Data => $Address )
. ' );',
);
}
}
# set focus to text field
$Self->{LayoutObject}->AddJSOnDocumentComplete(
Code => "\$('#RichText').focus();"
);
return 1;
}
1;
|