summaryrefslogtreecommitdiffstats
path: root/Kernel/Output/HTML/DefaultTo.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Output/HTML/DefaultTo.pm')
-rw-r--r--Kernel/Output/HTML/DefaultTo.pm103
1 files changed, 103 insertions, 0 deletions
diff --git a/Kernel/Output/HTML/DefaultTo.pm b/Kernel/Output/HTML/DefaultTo.pm
new file mode 100644
index 0000000..1d09b40
--- /dev/null
+++ b/Kernel/Output/HTML/DefaultTo.pm
@@ -0,0 +1,103 @@
+# --
+# Kernel/Output/HTML/DefaultTo.pm
+# Copyright (C) 2015 Alexander Sulfrian <alex@spline.inf.fu-berlin.de>
+# --
+
+package Kernel::Output::HTML::DefaultTo;
+
+use strict;
+use warnings;
+
+our @ObjectDependencies = qw(
+ Kernel::System::Log
+ Kernel::System::DefaultTo
+);
+
+sub new {
+ my ( $Type, %Param ) = @_;
+
+ # allocate new hash for object
+ my $Self = {};
+ $Self->{LayoutObject} = $Param{LayoutObject} || die "Got no LayoutObject!";
+ $Self->{LogObject} = $Kernel::OM->Get('Kernel::System::Log');
+ $Self->{DefaultToObject} = $Kernel::OM->Get('Kernel::System::DefaultTo');
+ bless( $Self, $Type );
+
+ return $Self;
+}
+
+sub Run {
+ my ( $Self, %Param ) = @_;
+ return if !$Self->{LayoutObject};
+
+ for (qw(LogObject LayoutObject DefaultToObject)) {
+ return if !$Self->{$_};
+ }
+
+ # check needed stuff
+ if ( !defined $Param{Data} ) {
+ $Self->{LogObject}->Log(
+ Priority => 'error',
+ Message => 'Need Data!'
+ );
+ $Self->{LayoutObject}->FatalDie();
+ }
+
+ my $BlockData = $Self->{LayoutObject}->{BlockData};
+
+ # get ticket data
+ my $Ticket;
+ BLOCK:
+ for my $block ( @$BlockData ) {
+ if ( $block->{Name} eq 'TicketBack' ) {
+ $Ticket = $block->{Data};
+ last BLOCK;
+ }
+ }
+
+ # return if not generated from template
+ return unless $Ticket->{TemplateID};
+
+ # get all DefaultTo
+ my %MappedDefaultTo = $Self->{DefaultToObject}->MappingList(
+ TemplateID => $Ticket->{TemplateID},
+ );
+
+ my $RemoveDefault = 0;
+ my @Addresses = ();
+ foreach my $ID ( values %MappedDefaultTo ) {
+ my %DefaultTo = $Self->{DefaultToObject}->Get(
+ ID => $ID,
+ );
+
+ $RemoveDefault = 1 if $DefaultTo{RemoveDefault};
+ if ( $DefaultTo{AddNew} ) {
+ push @Addresses, $DefaultTo{NewAddress};
+ }
+ }
+
+ if ( $RemoveDefault ) {
+ # remove preselected "To" address
+ for my $block ( @$BlockData ) {
+ if ( $block->{Name} eq 'PreFilledToRow' ) {
+ $block->{Data} = undef;
+ }
+ }
+
+ $Self->{LayoutObject}->{BlockData} = $BlockData;
+ }
+
+ # add new addresses
+ foreach my $Address ( @Addresses ) {
+ $Self->{LayoutObject}->Block(
+ Name => 'PreFilledToRow',
+ Data => {
+ Email => $Address,
+ },
+ );
+ }
+
+ return $Param{Data};
+}
+
+1;