diff options
Diffstat (limited to 'Kernel/Output/HTML/DefaultTo.pm')
-rw-r--r-- | Kernel/Output/HTML/DefaultTo.pm | 103 |
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; |