# -- # Kernel/Output/HTML/LayoutTicket.pm - provides generic ticket HTML output # Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/ # -- # $Id: LayoutTicket.pm,v 1.15 2007/04/03 18:36:31 martin Exp $ # -- # 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 http://www.gnu.org/licenses/gpl.txt. # -- package Kernel::Output::HTML::LayoutTicket; use strict; use vars qw(@ISA $VERSION); $VERSION = '$Revision: 1.15 $'; $VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/; sub TicketStdResponseString { my $Self = shift; my %Param = @_; # check needed stuff foreach (qw(StdResponsesRef TicketID ArticleID)) { if (!$Param{$_}) { return "Need $_ in TicketStdResponseString()"; } } # get StdResponsesStrg if ($Self->{ConfigObject}->Get('Ticket::Frontend::StdResponsesMode') eq 'Form') { # build html string $Param{StdResponsesStrg} .= '
'. ''. ''. ''. $Self->OptionStrgHashRef( Name => 'ResponseID', Data => $Param{StdResponsesRef}, ). '
'; } else { my %StdResponses = %{$Param{StdResponsesRef}}; foreach (sort { $StdResponses{$a} cmp $StdResponses{$b} } keys %StdResponses) { # build html string $Param{StdResponsesStrg} .= "\n
  • {Baselink}"."Action=AgentTicketCompose&". "ResponseID=$_&TicketID=$Param{TicketID}&ArticleID=$Param{ArticleID}\" ". 'onmouseover="window.status=\'$Text{"Compose"}\'; return true;" '. 'onmouseout="window.status=\'\';">'. # html quote $Self->Ascii2Html(Text => $StdResponses{$_})."
  • \n"; } } return $Param{StdResponsesStrg}; } sub AgentCustomerView { my $Self = shift; my %Param = @_; $Param{Table} = $Self->AgentCustomerViewTable(%Param); # create & return output return $Self->Output(TemplateFile => 'AgentCustomerView', Data => \%Param); } sub AgentCustomerViewTable { my $Self = shift; my %Param = @_; my $ShownType = 1; my @MapNew = (); if (ref($Param{Data}) ne 'HASH') { $Self->FatalError(Message => 'Need Hash ref in Data param'); } elsif (ref($Param{Data}) eq 'HASH' && !%{$Param{Data}}) { return '$Text{"none"}'; } my $Map = $Param{Data}->{Config}->{Map}; if ($Map) { @MapNew = (@{$Map}); } # check if customer company support is enabled if ($Param{Data}->{Config}->{CustomerCompanySupport}) { my $Map2 = $Param{Data}->{CompanyConfig}->{Map}; if ($Map2) { push (@MapNew, @{$Map2}); } } if ($Param{Type} && $Param{Type} eq 'Lite') { $ShownType = 2; # check if min one lite view item is configured, if not, use # the normal view also my $Used = 0; foreach my $Field (@MapNew) { if ($Field->[3] == 2) { $Used = 1; } } if (!$Used) { $ShownType = 1; } } # build html table foreach my $Field (@MapNew) { if ($Field->[3] && $Field->[3] >= $ShownType && $Param{Data}->{$Field->[0]}) { my %Record = (); if ($Field->[6]) { $Record{LinkStart} = "[6]\">"; $Record{LinkStop} = ""; } if ($Field->[0]) { $Record{ValueShort} = $Self->Ascii2Html(Text => $Param{Data}->{$Field->[0]}, Max => $Param{Max}); } $Self->Block( Name => 'CustomerRow', Data => { %{$Param{Data}}, Key => $Field->[1], Value => $Param{Data}->{$Field->[0]}, %Record, }, ); } } # create & return output return $Self->Output(TemplateFile => 'AgentCustomerTableView', Data => \%Param); } # AgentQueueListOption() # # !! DONT USE THIS FUNCTION !! Use BuildSelection() instead. # # Due to compatibility reason this function is still in use and will be removed # in a further release. sub AgentQueueListOption { my $Self = shift; my %Param = @_; my $Size = $Param{Size} ? "size='$Param{Size}'" : ''; my $MaxLevel = defined($Param{MaxLevel}) ? $Param{MaxLevel} : 10; my $SelectedID = defined($Param{SelectedID}) ? $Param{SelectedID} : ''; my $Selected = defined($Param{Selected}) ? $Param{Selected} : ''; my $SelectedIDRefArray = $Param{SelectedIDRefArray} || ''; my $Multiple = $Param{Multiple} ? 'multiple' : ''; my $OnChangeSubmit = defined($Param{OnChangeSubmit}) ? $Param{OnChangeSubmit} : ''; if ($OnChangeSubmit) { $OnChangeSubmit = " onchange=\"submit()\""; } else { $OnChangeSubmit = ''; } if ($Param{OnChange}) { $OnChangeSubmit = " onchange=\"$Param{OnChange}\""; } # just show a simple list if ($Self->{ConfigObject}->Get('Ticket::Frontend::ListType') eq 'list') { $Param{'MoveQueuesStrg'} = $Self->OptionStrgHashRef( %Param, HTMLQuote => 0, ); return $Param{MoveQueuesStrg}; } # build tree list $Param{MoveQueuesStrg} = '\n"; return $Param{MoveQueuesStrg}; } sub AgentFreeText { my $Self = shift; my %Param = @_; my %NullOption = (); my %SelectData = (); my %Ticket = (); my %Config = (); if ($Param{NullOption}) { # $NullOption{''} = '-'; $SelectData{Size} = 3; $SelectData{Multiple} = 1; } if ($Param{Ticket}) { %Ticket = %{$Param{Ticket}}; } if ($Param{Config}) { %Config = %{$Param{Config}}; } my %Data = (); foreach (1..16) { # key if (ref($Config{"TicketFreeKey$_"}) eq 'HASH' && %{$Config{"TicketFreeKey$_"}}) { my $Counter = 0; my $LastKey = ''; foreach (keys %{$Config{"TicketFreeKey$_"}}) { $Counter++; $LastKey = $_; } if ($Counter == 1 && $Param{NullOption}) { if ($LastKey) { $Data{"TicketFreeKeyField$_"} = $Config{"TicketFreeKey$_"}->{$LastKey}; } } elsif ($Counter > 1) { $Data{"TicketFreeKeyField$_"} = $Self->OptionStrgHashRef( Data => { %NullOption, %{$Config{"TicketFreeKey$_"}}, }, Name => "TicketFreeKey$_", SelectedID => $Ticket{"TicketFreeKey$_"}, SelectedIDRefArray => $Ticket{"TicketFreeKey$_"}, LanguageTranslation => 0, HTMLQuote => 1, %SelectData, ); } else { if ($LastKey) { $Data{"TicketFreeKeyField$_"} = $Config{"TicketFreeKey$_"}->{$LastKey}. ''; } } } else { if (defined($Ticket{"TicketFreeKey$_"})) { if (ref($Ticket{"TicketFreeKey$_"}) eq 'ARRAY') { if ($Ticket{"TicketFreeKey$_"}->[0]) { $Ticket{"TicketFreeKey$_"} = $Ticket{"TicketFreeKey$_"}->[0]; } else { $Ticket{"TicketFreeKey$_"} = ''; } } $Data{"TicketFreeKeyField$_"} = ''; } else { $Data{"TicketFreeKeyField$_"} = ''; } } # value if (ref($Config{"TicketFreeText$_"}) eq 'HASH') { $Data{"TicketFreeTextField$_"} = $Self->OptionStrgHashRef( Data => { %NullOption, %{$Config{"TicketFreeText$_"}}, }, Name => "TicketFreeText$_", SelectedID => $Ticket{"TicketFreeText$_"}, SelectedIDRefArray => $Ticket{"TicketFreeText$_"}, LanguageTranslation => 0, HTMLQuote => 1, %SelectData, ); } else { if (defined($Ticket{"TicketFreeText$_"})) { if (ref($Ticket{"TicketFreeText$_"}) eq 'ARRAY') { if ($Ticket{"TicketFreeText$_"}->[0]) { $Ticket{"TicketFreeText$_"} = $Ticket{"TicketFreeText$_"}->[0]; } else { $Ticket{"TicketFreeText$_"} = ''; } } $Data{"TicketFreeTextField$_"} = ''; } else { $Data{"TicketFreeTextField$_"} = ''; } } $Data{"TicketFreeTextField$_"} .= '$Text{"$Data{"TicketFreeTextField'.$_.' invalid"}"}'; } return %Data; } sub AgentFreeDate { my $Self = shift; my %Param = @_; my %NullOption = (); my %SelectData = (); my %Ticket = (); my %Config = (); if ($Param{NullOption}) { $SelectData{Size} = 3; $SelectData{Multiple} = 1; } if ($Param{Ticket}) { %Ticket = %{$Param{Ticket}}; } if ($Param{Config}) { %Config = %{$Param{Config}}; } my %Data = (); foreach my $Count (1..6) { my %TimePeriod = (); if ($Self->{ConfigObject}->Get('TicketFreeTimePeriod'.$Count)) { %TimePeriod = %{$Self->{ConfigObject}->Get('TicketFreeTimePeriod'.$Count)}; } $Data{'TicketFreeTime'.$Count} = $Self->BuildDateSelection( %Param, %Ticket, Prefix => 'TicketFreeTime'.$Count, Format => 'DateInputFormatLong', DiffTime => $Self->{ConfigObject}->Get('TicketFreeTimeDiff'.$Count) || 0, %TimePeriod, ); } return %Data; } sub TicketArticleFreeText { my $Self = shift; my %Param = @_; my %NullOption = (); my %SelectData = (); my %Article = (); my %Config = (); if ($Param{NullOption}) { $SelectData{Size} = 3; $SelectData{Multiple} = 1; } if ($Param{Article}) { %Article = %{$Param{Article}}; } if ($Param{Config}) { %Config = %{$Param{Config}}; } my %Data = (); foreach (1..3) { # key if (ref($Config{"ArticleFreeKey$_"}) eq 'HASH' && %{$Config{"ArticleFreeKey$_"}}) { my $Counter = 0; my $LastKey = ''; foreach (keys %{$Config{"ArticleFreeKey$_"}}) { $Counter++; $LastKey = $_; } if ($Counter == 1 && $Param{NullOption}) { if ($LastKey) { $Data{"ArticleFreeKeyField$_"} = $Config{"ArticleFreeKey$_"}->{$LastKey}; } } elsif ($Counter > 1) { $Data{"ArticleFreeKeyField$_"} = $Self->OptionStrgHashRef( Data => { %NullOption, %{$Config{"ArticleFreeKey$_"}}, }, Name => "ArticleFreeKey$_", SelectedID => $Article{"ArticleFreeKey$_"}, SelectedIDRefArray => $Article{"ArticleFreeKey$_"}, LanguageTranslation => 0, HTMLQuote => 1, %SelectData, ); } else { if ($LastKey) { $Data{"ArticleFreeKeyField$_"} = $Config{"ArticleFreeKey$_"}->{$LastKey}. ''; } } } else { if (defined($Article{"ArticleFreeKey$_"})) { if (ref($Article{"ArticleFreeKey$_"}) eq 'ARRAY') { if ($Article{"ArticleFreeKey$_"}->[0]) { $Article{"ArticleFreeKey$_"} = $Article{"ArticleFreeKey$_"}->[0]; } else { $Article{"ArticleFreeKey$_"} = ''; } } $Data{"ArticleFreeKeyField$_"} = ''; } else { $Data{"ArticleFreeKeyField$_"} = ''; } } # value if (ref($Config{"ArticleFreeText$_"}) eq 'HASH') { $Data{"ArticleFreeTextField$_"} = $Self->OptionStrgHashRef( Data => { %NullOption, %{$Config{"ArticleFreeText$_"}}, }, Name => "ArticleFreeText$_", SelectedID => $Article{"ArticleFreeText$_"}, SelectedIDRefArray => $Article{"ArticleFreeText$_"}, LanguageTranslation => 0, HTMLQuote => 1, %SelectData, ); } else { if (defined($Article{"ArticleFreeText$_"})) { if (ref($Article{"ArticleFreeText$_"}) eq 'ARRAY') { if ($Article{"ArticleFreeText$_"}->[0]) { $Article{"ArticleFreeText$_"} = $Article{"ArticleFreeText$_"}->[0]; } else { $Article{"ArticleFreeText$_"} = ''; } } $Data{"ArticleFreeTextField$_"} = ''; } else { $Data{"ArticleFreeTextField$_"} = ''; } } } return %Data; } sub CustomerFreeDate { my $Self = shift; my %Param = @_; my %NullOption = (); my %SelectData = (); my %Ticket = (); my %Config = (); if ($Param{NullOption}) { $SelectData{Size} = 3; $SelectData{Multiple} = 1; } if ($Param{Ticket}) { %Ticket = %{$Param{Ticket}}; } if ($Param{Config}) { %Config = %{$Param{Config}}; } my %Data = (); foreach my $Count (1..6) { my %TimePeriod = (); if ($Self->{ConfigObject}->Get('TicketFreeTimePeriod'.$Count)) { %TimePeriod = %{$Self->{ConfigObject}->Get('TicketFreeTimePeriod'.$Count)}; } $Data{'TicketFreeTime'.$Count} = $Self->BuildDateSelection( Area => 'Customer', %Param, %Ticket, Prefix => 'TicketFreeTime'.$Count, Format => 'DateInputFormatLong', DiffTime => $Self->{ConfigObject}->Get('TicketFreeTimeDiff'.$Count) || 0, %TimePeriod, ); } return %Data; } 1;