I am a newbie here.
I have tried to duplicate AgentTicketPhone.pm, AgentTicketPhone.tt, and Modified some codes in the Ticket.xml.
Those files are duplicated and renamed as Fatin.pm and Fatin.tt.
I managed to get all the functions worked out, except for the 'Create Button' at the bottom of the AgentTicketPhone.
The page can detect if any of the required fields were left blank, however the button is not functioning at all.
Here are the codes :
Fatin.pm
Code: Select all
# --
# Kernel/Modules/Fatin.pm - to handle phone calls
# Copyright (C) 2001-2014 xxx, 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::Modules::Fatin;
## nofilter(TidyAll::Plugin::OTRS::Perl::DBObject)
use strict;
use warnings;
use Mail::Address;
use Kernel::System::CheckItem;
use Kernel::System::CustomerUser;
use Kernel::System::LinkObject;
use Kernel::System::DynamicField;
use Kernel::System::DynamicField::Backend;
use Kernel::System::State;
use Kernel::System::StandardTemplate;
use Kernel::System::StdAttachment;
use Kernel::System::SystemAddress;
use Kernel::System::TemplateGenerator;
use Kernel::System::VariableCheck qw(:all);
use Kernel::System::Web::UploadCache;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {%Param};
bless( $Self, $Type );
# check needed objects
for my $Needed (
qw(ParamObject DBObject TicketObject LayoutObject LogObject QueueObject MainObject ConfigObject)
)
{
if ( !$Self->{$Needed} ) {
$Self->{LayoutObject}->FatalError( Message => "Got no $Needed!" );
}
}
$Self->{SystemAddress} = Kernel::System::SystemAddress->new(%Param);
$Self->{CustomerUserObject} = Kernel::System::CustomerUser->new(%Param);
$Self->{CheckItemObject} = Kernel::System::CheckItem->new(%Param);
$Self->{StateObject} = Kernel::System::State->new(%Param);
$Self->{UploadCacheObject} = Kernel::System::Web::UploadCache->new(%Param);
$Self->{LinkObject} = Kernel::System::LinkObject->new(%Param);
$Self->{HTMLUtilsObject} = Kernel::System::HTMLUtils->new(%Param);
$Self->{DynamicFieldObject} = Kernel::System::DynamicField->new(%Param);
$Self->{BackendObject} = Kernel::System::DynamicField::Backend->new(%Param);
$Self->{StandardTemplateObject} = Kernel::System::StandardTemplate->new(%Param);
# get form id
$Self->{FormID} = $Self->{ParamObject}->GetParam( Param => 'FormID' );
# create form id
if ( !$Self->{FormID} ) {
$Self->{FormID} = $Self->{UploadCacheObject}->FormIDCreate();
}
$Self->{Config} = $Self->{ConfigObject}->Get("Ticket::Frontend::$Self->{Action}");
# get the dynamic fields for this screen
$Self->{DynamicField} = $Self->{DynamicFieldObject}->DynamicFieldListGet(
Valid => 1,
ObjectType => [ 'Ticket', 'Article' ],
FieldFilter => $Self->{Config}->{DynamicField} || {},
);
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# get params
my %GetParam;
for my $Key (
qw(ArticleID LinkTicketID PriorityID NewUserID
From Subject Body NextStateID TimeUnits
Year Month Day Hour Minute
NewResponsibleID ResponsibleAll OwnerAll TypeID ServiceID SLAID
StandardTemplateID FromChatID
)
)
{
$GetParam{$Key} = $Self->{ParamObject}->GetParam( Param => $Key );
}
# ACL compatibility translation
my %ACLCompatGetParam;
$ACLCompatGetParam{OwnerID} = $GetParam{NewUserID};
# If is an action about attachments
my $IsUpload = ( $Self->{ParamObject}->GetParam( Param => 'AttachmentUpload' ) ? 1 : 0 );
# MultipleCustomer From-field
my @MultipleCustomer;
my $CustomersNumber
= $Self->{ParamObject}->GetParam( Param => 'CustomerTicketCounterFromCustomer' ) || 0;
my $Selected = $Self->{ParamObject}->GetParam( Param => 'CustomerSelected' ) || '';
# hash for check duplicated entries
my %AddressesList;
if ($CustomersNumber) {
my $CustomerCounter = 1;
for my $Count ( 1 ... $CustomersNumber ) {
my $CustomerElement
= $Self->{ParamObject}->GetParam( Param => 'CustomerTicketText_' . $Count );
my $CustomerSelected = ( $Selected eq $Count ? 'checked="checked"' : '' );
my $CustomerKey = $Self->{ParamObject}->GetParam( Param => 'CustomerKey_' . $Count )
|| '';
if ($CustomerElement) {
my $CountAux = $CustomerCounter++;
my $CustomerError = '';
my $CustomerErrorMsg = 'CustomerGenericServerErrorMsg';
my $CustomerDisabled = '';
if ( !$IsUpload ) {
$GetParam{From} .= $CustomerElement . ',';
# check email address
for my $Email ( Mail::Address->parse($CustomerElement) ) {
if ( !$Self->{CheckItemObject}->CheckEmail( Address => $Email->address() ) )
{
$CustomerErrorMsg = $Self->{CheckItemObject}->CheckErrorType()
. 'ServerErrorMsg';
$CustomerError = 'ServerError';
}
}
# check for duplicated entries
if ( defined $AddressesList{$CustomerElement} && $CustomerError eq '' ) {
$CustomerErrorMsg = 'IsDuplicatedServerErrorMsg';
$CustomerError = 'ServerError';
}
if ( $CustomerError ne '' ) {
$CustomerDisabled = 'disabled="disabled"';
$CountAux = $Count . 'Error';
}
}
push @MultipleCustomer, {
Count => $CountAux,
CustomerElement => $CustomerElement,
CustomerSelected => $CustomerSelected,
CustomerKey => $CustomerKey,
CustomerError => $CustomerError,
CustomerErrorMsg => $CustomerErrorMsg,
CustomerDisabled => $CustomerDisabled,
};
$AddressesList{$CustomerElement} = 1;
}
}
}
# get Dynamic fields form ParamObject
my %DynamicFieldValues;
# cycle trough the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
# extract the dynamic field value form the web request
$DynamicFieldValues{ $DynamicFieldConfig->{Name} }
= $Self->{BackendObject}->EditFieldValueGet(
DynamicFieldConfig => $DynamicFieldConfig,
ParamObject => $Self->{ParamObject},
LayoutObject => $Self->{LayoutObject},
);
}
# convert dynamic field values into a structure for ACLs
my %DynamicFieldACLParameters;
DYNAMICFIELD:
for my $DynamicField ( sort keys %DynamicFieldValues ) {
next DYNAMICFIELD if !$DynamicField;
next DYNAMICFIELD if !$DynamicFieldValues{$DynamicField};
$DynamicFieldACLParameters{ 'DynamicField_' . $DynamicField }
= $DynamicFieldValues{$DynamicField};
}
$GetParam{DynamicField} = \%DynamicFieldACLParameters;
# transform pending time, time stamp based on user time zone
if (
defined $GetParam{Year}
&& defined $GetParam{Month}
&& defined $GetParam{Day}
&& defined $GetParam{Hour}
&& defined $GetParam{Minute}
)
{
%GetParam = $Self->{LayoutObject}->TransformDateSelection(
%GetParam,
);
}
if ( $GetParam{FromChatID} ) {
if ( !$Self->{ConfigObject}->Get('ChatEngine::Active') ) {
return $Self->{LayoutObject}->FatalError(
Message => "Chat is not active.",
);
}
# Ok, take the chat
my %ChatParticipant = $Kernel::OM->Get('Kernel::System::Chat')->ChatParticipantCheck(
ChatID => $GetParam{FromChatID},
ChatterType => 'User',
ChatterID => $Self->{UserID},
ChatterActive => 1,
);
if ( !%ChatParticipant ) {
return $Self->{LayoutObject}->FatalError(
Message => "No permission.",
);
}
}
if ( !$Self->{Subaction} || $Self->{Subaction} eq 'Created' ) {
# header
my $Output = $Self->{LayoutObject}->Header();
$Output .= $Self->{LayoutObject}->NavigationBar();
# if there is no ticket id!
if ( $Self->{TicketID} && $Self->{Subaction} eq 'Created' ) {
# notify info
my %Ticket = $Self->{TicketObject}->TicketGet( TicketID => $Self->{TicketID} );
$Output .= $Self->{LayoutObject}->Notify(
Info => $Self->{LayoutObject}->{LanguageObject}->Translate(
'Ticket "%s" created!',
$Ticket{TicketNumber},
),
Link => $Self->{LayoutObject}->{Baselink}
. 'Action=AgentTicketZoom;TicketID='
. $Ticket{TicketID},
);
}
# store last queue screen
if (
$Self->{LastScreenOverview}
&& $Self->{LastScreenOverview} !~ /Action=Fatin/
&& $Self->{RequestedURL} !~ /Action=Fatin.*LinkTicketID=/
)
{
$Self->{SessionObject}->UpdateSessionID(
SessionID => $Self->{SessionID},
Key => 'LastScreenOverview',
Value => $Self->{RequestedURL},
);
}
# get split article if given
# get ArticleID
my %Article;
my %CustomerData;
my $ArticleFrom = '';
if ( $GetParam{ArticleID} ) {
my $Access = $Self->{TicketObject}->TicketPermission(
Type => 'ro',
TicketID => $Self->{TicketID},
UserID => $Self->{UserID}
);
if ( !$Access ) {
return $Self->{LayoutObject}->NoPermission(
Message => "You need ro permission!",
WithHeader => 'yes',
);
}
%Article = $Self->{TicketObject}->ArticleGet(
ArticleID => $GetParam{ArticleID},
DynamicFields => 0,
);
# check if article is from the same TicketID as we checked permissions for.
if ( $Article{TicketID} ne $Self->{TicketID} ) {
return $Self->{LayoutObject}->ErrorScreen(
Message => "Article does not belong to ticket $Self->{TicketID}!",
);
}
$Article{Subject} = $Self->{TicketObject}->TicketSubjectClean(
TicketNumber => $Article{TicketNumber},
Subject => $Article{Subject} || '',
);
# save article from for addresses list
$ArticleFrom = $Article{From};
# if To is present and is no a queue
# set To as article from
if ( IsStringWithData( $Article{To} ) ) {
my %Queues = $Self->{QueueObject}->QueueList();
my %QueueLookup = reverse %Queues;
if ( !defined $QueueLookup{ $Article{To} } ) {
$ArticleFrom = $Article{To};
}
}
# body preparation for plain text processing
$Article{Body} = $Self->{LayoutObject}->ArticleQuote(
TicketID => $Article{TicketID},
ArticleID => $GetParam{ArticleID},
FormID => $Self->{FormID},
UploadCacheObject => $Self->{UploadCacheObject},
AttachmentsInclude => 1,
);
if ( $Self->{LayoutObject}->{BrowserRichText} ) {
$Article{ContentType} = 'text/html';
}
else {
$Article{ContentType} = 'text/plain';
}
# show customer info
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::CustomerInfoCompose') ) {
if ( $Article{CustomerUserID} ) {
%CustomerData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $Article{CustomerUserID},
);
}
elsif ( $Article{CustomerID} ) {
%CustomerData = $Self->{CustomerUserObject}->CustomerUserDataGet(
CustomerID => $Article{CustomerID},
);
}
}
if ( $Article{CustomerUserID} ) {
my %CustomerUserList = $Self->{CustomerUserObject}->CustomerSearch(
UserLogin => $Article{CustomerUserID},
);
for my $KeyCustomerUserList ( sort keys %CustomerUserList ) {
$Article{From} = $CustomerUserList{$KeyCustomerUserList};
}
}
}
# multiple addresses list
# check email address
my $CountFrom = scalar @MultipleCustomer || 1;
my %CustomerDataFrom;
if ( $Article{CustomerUserID} ) {
%CustomerDataFrom = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $Article{CustomerUserID},
);
}
for my $Email ( Mail::Address->parse($ArticleFrom) ) {
my $CountAux = $CountFrom;
my $CustomerError = '';
my $CustomerErrorMsg = 'CustomerGenericServerErrorMsg';
my $CustomerDisabled = '';
my $CustomerSelected = ( $CountFrom eq '1' ? 'checked="checked"' : '' );
my $EmailAddress = $Email->address();
if ( !$Self->{CheckItemObject}->CheckEmail( Address => $EmailAddress ) )
{
$CustomerErrorMsg = $Self->{CheckItemObject}->CheckErrorType()
. 'ServerErrorMsg';
$CustomerError = 'ServerError';
}
# check for duplicated entries
if ( defined $AddressesList{$Email} && $CustomerError eq '' ) {
$CustomerErrorMsg = 'IsDuplicatedServerErrorMsg';
$CustomerError = 'ServerError';
}
if ( $CustomerError ne '' ) {
$CustomerDisabled = 'disabled="disabled"';
$CountAux = $CountFrom . 'Error';
}
my $CustomerKey = '';
if (
defined $CustomerDataFrom{UserEmail}
&& $CustomerDataFrom{UserEmail} eq $EmailAddress
)
{
$CustomerKey = $Article{CustomerUserID};
}
push @MultipleCustomer, {
Count => $CountAux,
CustomerElement => $Email->address(),
CustomerSelected => $CustomerSelected,
CustomerKey => $CustomerKey,
CustomerError => $CustomerError,
CustomerErrorMsg => $CustomerErrorMsg,
CustomerDisabled => $CustomerDisabled,
};
$AddressesList{$EmailAddress} = 1;
$CountFrom++;
}
# get user preferences
my %UserPreferences = $Self->{UserObject}->GetUserData(
UserID => $Self->{UserID},
);
# store the dynamic fields default values or used specific default values to be used as
# ACLs info for all fields
my %DynamicFieldDefaults;
# cycle trough the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
next DYNAMICFIELD if !IsHashRefWithData( $DynamicFieldConfig->{Config} );
next DYNAMICFIELD if !$DynamicFieldConfig->{Name};
# get default value from dynamic field config (if any)
my $DefaultValue = $DynamicFieldConfig->{Config}->{DefaultValue} || '';
# override the value from user preferences if is set
if ( $UserPreferences{ 'UserDynamicField_' . $DynamicFieldConfig->{Name} } ) {
$DefaultValue
= $UserPreferences{ 'UserDynamicField_' . $DynamicFieldConfig->{Name} };
}
next DYNAMICFIELD if $DefaultValue eq '';
next DYNAMICFIELD if ref $DefaultValue eq 'ARRAY' && !IsArrayRefWithData($DefaultValue);
$DynamicFieldDefaults{ 'DynamicField_' . $DynamicFieldConfig->{Name} } = $DefaultValue;
}
$GetParam{DynamicField} = \%DynamicFieldDefaults;
# create html strings for all dynamic fields
my %DynamicFieldHTML;
my %SplitTicketParam;
# in case of split a TicketID and ArticleID are always given, send the TicketID to calculate
# ACLs based on parent information
if ( $Self->{TicketID} && $Article{ArticleID} ) {
$SplitTicketParam{TicketID} = $Self->{TicketID};
}
# fix to bug# 8068 Field & DynamicField preselection on TicketSplit
# when splitting a ticket the selected attributes must remain in the new ticket screen
# this information will be available in the SplitTicketParam hash
if ( $SplitTicketParam{TicketID} ) {
# get information from original ticket (SplitTicket)
my %SplitTicketData = $Self->{TicketObject}->TicketGet(
TicketID => $SplitTicketParam{TicketID},
DynamicFields => 1,
UserID => $Self->{UserID},
);
# set simple IDs to pass them to the mask
for my $SplitedParam (qw(TypeID ServiceID SLAID PriorityID)) {
$SplitTicketParam{$SplitedParam} = $SplitTicketData{$SplitedParam};
}
# set StateID as NextStateID
$SplitTicketParam{NextStateID} = $SplitTicketData{StateID};
# set Owner and Responsible
$SplitTicketParam{UserSelected} = $SplitTicketData{OwnerID};
$SplitTicketParam{ResponsibleUserSelected} = $SplitTicketData{ResponsibleID};
# set additional information needed for Owner and Responsible
if ( $SplitTicketData{QueueID} ) {
$SplitTicketParam{QueueID} = $SplitTicketData{QueueID};
}
$SplitTicketParam{AllUsers} = 1;
# set the selected queue in format ID||Name
$SplitTicketParam{ToSelected}
= $SplitTicketData{QueueID} . '||' . $SplitTicketData{Queue};
for my $Key ( sort keys %SplitTicketData ) {
if ( $Key =~ /DynamicField\_(.*)/ ) {
$SplitTicketParam{DynamicField}{$1} = $SplitTicketData{$Key};
delete $SplitTicketParam{$Key};
}
}
}
# cycle through the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
my $PossibleValuesFilter;
my $IsACLReducible = $Self->{BackendObject}->HasBehavior(
DynamicFieldConfig => $DynamicFieldConfig,
Behavior => 'IsACLReducible',
);
if ($IsACLReducible) {
# get PossibleValues
my $PossibleValues = $Self->{BackendObject}->PossibleValuesGet(
DynamicFieldConfig => $DynamicFieldConfig,
);
# check if field has PossibleValues property in its configuration
if ( IsHashRefWithData($PossibleValues) ) {
# convert possible values key => value to key => key for ACLs using a Hash slice
my %AclData = %{$PossibleValues};
@AclData{ keys %AclData } = keys %AclData;
# set possible values filter from ACLs
my $ACL = $Self->{TicketObject}->TicketAcl(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
Action => $Self->{Action},
ReturnType => 'Ticket',
ReturnSubType => 'DynamicField_' . $DynamicFieldConfig->{Name},
Data => \%AclData,
UserID => $Self->{UserID},
);
if ($ACL) {
my %Filter = $Self->{TicketObject}->TicketAclData();
# convert Filer key => key back to key => value using map
%{$PossibleValuesFilter}
= map { $_ => $PossibleValues->{$_} }
keys %Filter;
}
}
}
# to store dynamic field value from database (or undefined)
my $Value;
# in case of split a TicketID and ArticleID are always given, Get the value
# from DB this cases
if ( $Self->{TicketID} && $Article{ArticleID} ) {
# select TicketID or ArticleID to get the value depending on dynamic field configuration
my $ObjectID
= $DynamicFieldConfig->{ObjectType} eq 'Ticket'
? $Self->{TicketID}
: $Article{ArticleID};
# get value stored on the database (split)
$Value = $Self->{BackendObject}->ValueGet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $ObjectID,
);
}
# otherwise (on a new ticket). Check if the user has a user specific default value for
# the dynamic field, otherwise will use Dynamic Field default value
else {
# override the value from user preferences if is set
if ( $UserPreferences{ 'UserDynamicField_' . $DynamicFieldConfig->{Name} } ) {
$Value = $UserPreferences{ 'UserDynamicField_' . $DynamicFieldConfig->{Name} };
}
}
# get field html
$DynamicFieldHTML{ $DynamicFieldConfig->{Name} }
= $Self->{BackendObject}->EditFieldRender(
DynamicFieldConfig => $DynamicFieldConfig,
PossibleValuesFilter => $PossibleValuesFilter,
Value => $Value,
LayoutObject => $Self->{LayoutObject},
ParamObject => $Self->{ParamObject},
AJAXUpdate => 1,
UpdatableFields => $Self->_GetFieldsToUpdate(),
Mandatory => $Self->{Config}->{DynamicField}->{ $DynamicFieldConfig->{Name} } == 2,
);
}
# get all attachments meta data
my @Attachments = $Self->{UploadCacheObject}->FormIDGetAllFilesMeta(
FormID => $Self->{FormID},
);
# get and format default subject and body
my $Subject = $Article{Subject};
if ( !$Subject ) {
$Subject = $Self->{LayoutObject}->Output(
Template => $Self->{Config}->{Subject} || '',
);
}
my $Body = $Article{Body} || '';
if ( !$Body ) {
$Body = $Self->{LayoutObject}->Output(
Template => $Self->{Config}->{Body} || '',
);
}
# make sure body is rich text (if body is based on config)
if ( !$GetParam{ArticleID} && $Self->{LayoutObject}->{BrowserRichText} ) {
$Body = $Self->{LayoutObject}->Ascii2RichText(
String => $Body,
);
}
# in case of ticket split set $Self->{QueueID} as the QueueID of the original ticket,
# in order to set correct ACLs on page load (initial). See bug 8687.
if (
IsHashRefWithData( \%SplitTicketParam )
&& $SplitTicketParam{QueueID}
&& !$Self->{QueueID}
)
{
$Self->{QueueID} = $SplitTicketParam{QueueID};
}
# html output
my $Services = $Self->_GetServices(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID} || 1,
);
my $SLAs = $Self->_GetSLAs(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID} || 1,
Services => $Services,
);
$Output .= $Self->_MaskPhoneNew(
QueueID => $Self->{QueueID},
NextStates => $Self->_GetNextStates(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID} || 1,
),
Priorities => $Self->_GetPriorities(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID} || 1,
),
Types => $Self->_GetTypes(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID} || 1,
),
Services => $Services,
SLAs => $SLAs,
StandardTemplates => $Self->_GetStandardTemplates(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
QueueID => $Self->{QueueID} || '',
),
Users => $Self->_GetUsers(
%GetParam,
%ACLCompatGetParam,
QueueID => $Self->{QueueID},
%SplitTicketParam,
),
ResponsibleUsers => $Self->_GetResponsibles(
%GetParam,
%ACLCompatGetParam,
QueueID => $Self->{QueueID},
%SplitTicketParam,
),
To => $Self->_GetTos(
%GetParam,
%ACLCompatGetParam,
%SplitTicketParam,
CustomerUserID => $CustomerData{UserLogin} || '',
QueueID => $Self->{QueueID},
),
From => $Article{From},
Subject => $Subject,
Body => $Body,
CustomerID => $Article{CustomerID},
CustomerUser => $Article{CustomerUserID},
CustomerData => \%CustomerData,
Attachments => \@Attachments,
LinkTicketID => $GetParam{LinkTicketID} || '',
FromChatID => $GetParam{FromChatID} || '',
# %GetParam,
%SplitTicketParam,
DynamicFieldHTML => \%DynamicFieldHTML,
MultipleCustomer => \@MultipleCustomer,
);
$Output .= $Self->{LayoutObject}->Footer();
return $Output;
}
# create new ticket and article
elsif ( $Self->{Subaction} eq 'StoreNew' ) {
my %Error;
my %StateData;
if ( $GetParam{NextStateID} ) {
%StateData = $Self->{StateObject}->StateGet(
ID => $GetParam{NextStateID},
);
}
my $NextState = $StateData{Name} || '';
my $Dest = $Self->{ParamObject}->GetParam( Param => 'Dest' ) || '';
# see if only a name has been passed
if ( $Dest && $Dest !~ m{ \A (\d+)? \| \| .+ \z }xms ) {
# see if we can get an ID for this queue name
my $DestID = $Self->{QueueObject}->QueueLookup(
Queue => $Dest,
);
if ($DestID) {
$Dest = $DestID . '||' . $Dest;
}
else {
$Dest = '';
}
}
my ( $NewQueueID, $To ) = split( /\|\|/, $Dest );
my $CustomerUser = $Self->{ParamObject}->GetParam( Param => 'CustomerUser' )
|| $Self->{ParamObject}->GetParam( Param => 'PreSelectedCustomerUser' )
|| $Self->{ParamObject}->GetParam( Param => 'SelectedCustomerUser' )
|| '';
my $SelectedCustomerUser = $Self->{ParamObject}->GetParam( Param => 'SelectedCustomerUser' )
|| '';
my $CustomerID = $Self->{ParamObject}->GetParam( Param => 'CustomerID' ) || '';
my $ExpandCustomerName = $Self->{ParamObject}->GetParam( Param => 'ExpandCustomerName' )
|| 0;
my %FromExternalCustomer;
$FromExternalCustomer{Customer}
= $Self->{ParamObject}->GetParam( Param => 'PreSelectedCustomerUser' )
|| $Self->{ParamObject}->GetParam( Param => 'CustomerUser' )
|| '';
if ( $Self->{ParamObject}->GetParam( Param => 'OwnerAllRefresh' ) ) {
$GetParam{OwnerAll} = 1;
$ExpandCustomerName = 3;
}
if ( $Self->{ParamObject}->GetParam( Param => 'ResponsibleAllRefresh' ) ) {
$GetParam{ResponsibleAll} = 1;
$ExpandCustomerName = 3;
}
if ( $Self->{ParamObject}->GetParam( Param => 'ClearFrom' ) ) {
$GetParam{From} = '';
$ExpandCustomerName = 3;
}
for my $Count ( 1 .. 2 ) {
my $Item = $Self->{ParamObject}->GetParam( Param => "ExpandCustomerName$Count" ) || 0;
if ( $Count == 1 && $Item ) {
$ExpandCustomerName = 1;
}
elsif ( $Count == 2 && $Item ) {
$ExpandCustomerName = 2;
}
}
# rewrap body if no rich text is used
if ( $GetParam{Body} && !$Self->{LayoutObject}->{BrowserRichText} ) {
$GetParam{Body} = $Self->{LayoutObject}->WrapPlainText(
MaxCharacters => $Self->{ConfigObject}->Get('Ticket::Frontend::TextAreaNote'),
PlainText => $GetParam{Body},
);
}
# attachment delete
my @AttachmentIDs = map {
my ($ID) = $_ =~ m{ \A AttachmentDelete (\d+) \z }xms;
$ID ? $ID : ();
} $Self->{ParamObject}->GetParamNames();
COUNT:
for my $Count ( reverse sort @AttachmentIDs ) {
my $Delete = $Self->{ParamObject}->GetParam( Param => "AttachmentDelete$Count" );
next COUNT if !$Delete;
$Error{AttachmentDelete} = 1;
$Self->{UploadCacheObject}->FormIDRemoveFile(
FormID => $Self->{FormID},
FileID => $Count,
);
$IsUpload = 1;
}
# attachment upload
if ( $Self->{ParamObject}->GetParam( Param => 'AttachmentUpload' ) ) {
$IsUpload = 1;
%Error = ();
$Error{AttachmentUpload} = 1;
my %UploadStuff = $Self->{ParamObject}->GetUploadAll(
Param => 'FileUpload',
);
$Self->{UploadCacheObject}->FormIDAddFile(
FormID => $Self->{FormID},
Disposition => 'attachment',
%UploadStuff,
);
}
# get all attachments meta data
my @Attachments = $Self->{UploadCacheObject}->FormIDGetAllFilesMeta(
FormID => $Self->{FormID},
);
# check pending date
if ( !$ExpandCustomerName && $StateData{TypeName} && $StateData{TypeName} =~ /^pending/i ) {
if ( !$Self->{TimeObject}->Date2SystemTime( %GetParam, Second => 0 ) ) {
if ( $IsUpload == 0 ) {
$Error{DateInvalid} = ' ServerError';
}
}
if (
$Self->{TimeObject}->Date2SystemTime( %GetParam, Second => 0 )
< $Self->{TimeObject}->SystemTime()
)
{
if ( $IsUpload == 0 ) {
$Error{DateInvalid} = ' ServerError';
}
}
}
# create html strings for all dynamic fields
my %DynamicFieldHTML;
# cycle through the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
my $PossibleValuesFilter;
my $IsACLReducible = $Self->{BackendObject}->HasBehavior(
DynamicFieldConfig => $DynamicFieldConfig,
Behavior => 'IsACLReducible',
);
if ($IsACLReducible) {
# get PossibleValues
my $PossibleValues = $Self->{BackendObject}->PossibleValuesGet(
DynamicFieldConfig => $DynamicFieldConfig,
);
# check if field has PossibleValues property in its configuration
if ( IsHashRefWithData($PossibleValues) ) {
# convert possible values key => value to key => key for ACLs using a Hash slice
my %AclData = %{$PossibleValues};
@AclData{ keys %AclData } = keys %AclData;
# set possible values filter from ACLs
my $ACL = $Self->{TicketObject}->TicketAcl(
%GetParam,
CustomerUserID => $CustomerUser || '',
Action => $Self->{Action},
ReturnType => 'Ticket',
ReturnSubType => 'DynamicField_' . $DynamicFieldConfig->{Name},
Data => \%AclData,
UserID => $Self->{UserID},
);
if ($ACL) {
my %Filter = $Self->{TicketObject}->TicketAclData();
# convert Filer key => key back to key => value using map
%{$PossibleValuesFilter}
= map { $_ => $PossibleValues->{$_} }
keys %Filter;
}
}
}
my $ValidationResult;
# do not validate on attachment upload
if ( !$IsUpload && !$ExpandCustomerName ) {
$ValidationResult = $Self->{BackendObject}->EditFieldValueValidate(
DynamicFieldConfig => $DynamicFieldConfig,
PossibleValuesFilter => $PossibleValuesFilter,
ParamObject => $Self->{ParamObject},
Mandatory =>
$Self->{Config}->{DynamicField}->{ $DynamicFieldConfig->{Name} } == 2,
);
if ( !IsHashRefWithData($ValidationResult) ) {
return $Self->{LayoutObject}->ErrorScreen(
Message =>
"Could not perform validation on field $DynamicFieldConfig->{Label}!",
Comment => 'Please contact the admin.',
);
}
# propagate validation error to the Error variable to be detected by the frontend
if ( $ValidationResult->{ServerError} ) {
$Error{ $DynamicFieldConfig->{Name} } = ' ServerError';
}
}
# get field html
$DynamicFieldHTML{ $DynamicFieldConfig->{Name} }
= $Self->{BackendObject}->EditFieldRender(
DynamicFieldConfig => $DynamicFieldConfig,
PossibleValuesFilter => $PossibleValuesFilter,
ServerError => $ValidationResult->{ServerError} || '',
ErrorMessage => $ValidationResult->{ErrorMessage} || '',
LayoutObject => $Self->{LayoutObject},
ParamObject => $Self->{ParamObject},
AJAXUpdate => 1,
UpdatableFields => $Self->_GetFieldsToUpdate(),
Mandatory => $Self->{Config}->{DynamicField}->{ $DynamicFieldConfig->{Name} } == 2,
);
}
# expand customer name
my %CustomerUserData;
if ( $ExpandCustomerName == 1 ) {
# search customer
my %CustomerUserList;
%CustomerUserList = $Self->{CustomerUserObject}->CustomerSearch(
Search => $GetParam{From},
);
# check if just one customer user exists
# if just one, fillup CustomerUserID and CustomerID
$Param{CustomerUserListCount} = 0;
for my $KeyCustomerUser ( sort keys %CustomerUserList ) {
$Param{CustomerUserListCount}++;
$Param{CustomerUserListLast} = $CustomerUserList{$KeyCustomerUser};
$Param{CustomerUserListLastUser} = $KeyCustomerUser;
}
if ( $Param{CustomerUserListCount} == 1 ) {
$GetParam{From} = $Param{CustomerUserListLast};
$Error{ExpandCustomerName} = 1;
my %CustomerUserData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $Param{CustomerUserListLastUser},
);
if ( $CustomerUserData{UserCustomerID} ) {
$CustomerID = $CustomerUserData{UserCustomerID};
}
if ( $CustomerUserData{UserLogin} ) {
$CustomerUser = $CustomerUserData{UserLogin};
$FromExternalCustomer{Customer} = $CustomerUserData{UserLogin};
}
if ( $FromExternalCustomer{Customer} ) {
my %ExternalCustomerUserData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $FromExternalCustomer{Customer},
);
$FromExternalCustomer{Email} = $ExternalCustomerUserData{UserEmail};
}
}
# if more than one customer user exist, show list
# and clean CustomerUserID and CustomerID
else {
# don't check email syntax on multi customer select
$Self->{ConfigObject}->Set( Key => 'CheckEmailAddresses', Value => 0 );
$CustomerID = '';
# clear from if there is no customer found
if ( !%CustomerUserList ) {
$GetParam{From} = '';
}
$Error{ExpandCustomerName} = 1;
}
}
# get from and customer id if customer user is given
elsif ( $ExpandCustomerName == 2 ) {
%CustomerUserData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $CustomerUser,
);
my %CustomerUserList = $Self->{CustomerUserObject}->CustomerSearch(
UserLogin => $CustomerUser,
);
for my $KeyCustomerUser ( sort keys %CustomerUserList ) {
$GetParam{From} = $CustomerUserList{$KeyCustomerUser};
}
if ( $CustomerUserData{UserCustomerID} ) {
$CustomerID = $CustomerUserData{UserCustomerID};
}
if ( $CustomerUserData{UserLogin} ) {
$CustomerUser = $CustomerUserData{UserLogin};
}
if ( $FromExternalCustomer{Customer} ) {
my %ExternalCustomerUserData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $FromExternalCustomer{Customer},
);
$FromExternalCustomer{Email} = $ExternalCustomerUserData{UserEmail};
}
$Error{ExpandCustomerName} = 1;
}
# if a new destination queue is selected
elsif ( $ExpandCustomerName == 3 ) {
$Error{NoSubmit} = 1;
$CustomerUser = $SelectedCustomerUser;
}
# 'just' no submit
elsif ( $ExpandCustomerName == 4 ) {
$Error{NoSubmit} = 1;
}
# show customer info
my %CustomerData;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::CustomerInfoCompose') ) {
if ( $CustomerUser || $SelectedCustomerUser ) {
%CustomerData = $Self->{CustomerUserObject}->CustomerUserDataGet(
User => $CustomerUser || $SelectedCustomerUser,
);
}
elsif ($CustomerID) {
%CustomerData = $Self->{CustomerUserObject}->CustomerUserDataGet(
CustomerID => $CustomerID,
);
}
}
# check email address
for my $Email ( Mail::Address->parse( $GetParam{From} ) ) {
if ( !$Self->{CheckItemObject}->CheckEmail( Address => $Email->address() ) ) {
$Error{ErrorType} = $Self->{CheckItemObject}->CheckErrorType() . 'ServerErrorMsg';
$Error{FromInvalid} = ' ServerError';
}
}
if ( !$IsUpload && !$ExpandCustomerName ) {
if ( !$GetParam{From} )
{
$Error{'FromInvalid'} = ' ServerError';
}
if ( !$GetParam{Subject} ) {
$Error{'SubjectInvalid'} = ' ServerError';
}
if ( !$NewQueueID ) {
$Error{'DestinationInvalid'} = ' ServerError';
}
if (
$Self->{ConfigObject}->Get('Ticket::Service')
&& $GetParam{SLAID}
&& !$GetParam{ServiceID}
)
{
$Error{'ServiceInvalid'} = ' ServerError';
}
# check mandatory service
if (
$Self->{ConfigObject}->Get('Ticket::Service')
&& $Self->{Config}->{ServiceMandatory}
&& !$GetParam{ServiceID}
)
{
$Error{'ServiceInvalid'} = ' ServerError';
}
# check mandatory sla
if (
$Self->{ConfigObject}->Get('Ticket::Service')
&& $Self->{Config}->{SLAMandatory}
&& !$GetParam{SLAID}
)
{
$Error{'SLAInvalid'} = ' ServerError';
}
if ( ( !$GetParam{TypeID} ) && ( $Self->{ConfigObject}->Get('Ticket::Type') ) ) {
$Error{'TypeIDInvalid'} = ' ServerError';
}
if ( !$GetParam{Body} ) {
$Error{'RichTextInvalid'} = ' ServerError';
}
if (
$Self->{ConfigObject}->Get('Ticket::Frontend::AccountTime')
&& $Self->{ConfigObject}->Get('Ticket::Frontend::NeedAccountedTime')
&& $GetParam{TimeUnits} eq ''
)
{
$Error{'TimeUnitsInvalid'} = ' ServerError';
}
}
if (%Error) {
# get and format default subject and body
my $Subject = $Self->{LayoutObject}->Output(
Template => $Self->{Config}->{Subject} || '',
);
my $Body = $Self->{LayoutObject}->Output(
Template => $Self->{Config}->{Body} || '',
);
# make sure body is rich text
if ( $Self->{LayoutObject}->{BrowserRichText} ) {
$Body = $Self->{LayoutObject}->Ascii2RichText(
String => $Body,
);
}
#set Body and Subject parameters for Output
if ( !$GetParam{Subject} ) {
$GetParam{Subject} = $Subject;
}
if ( !$GetParam{Body} ) {
$GetParam{Body} = $Body;
}
# get services
my $Services = $Self->_GetServices(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $NewQueueID || 1,
);
# reset previous ServiceID to reset SLA-List if no service is selected
if ( !$GetParam{ServiceID} || !$Services->{ $GetParam{ServiceID} } ) {
$GetParam{ServiceID} = '';
}
my $SLAs = $Self->_GetSLAs(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || $SelectedCustomerUser || '',
QueueID => $NewQueueID || 1,
Services => $Services,
);
# header
my $Output = $Self->{LayoutObject}->Header();
$Output .= $Self->{LayoutObject}->NavigationBar();
# html output
$Output .= $Self->_MaskPhoneNew(
QueueID => $Self->{QueueID},
Users => $Self->_GetUsers(
%GetParam,
%ACLCompatGetParam,
QueueID => $NewQueueID,
AllUsers => $GetParam{OwnerAll},
),
UserSelected => $GetParam{NewUserID},
ResponsibleUsers => $Self->_GetResponsibles(
%GetParam,
%ACLCompatGetParam,
QueueID => $NewQueueID,
AllUsers => $GetParam{ResponsibleAll}
),
ResponsibleUserSelected => $GetParam{NewResponsibleID},
NextStates => $Self->_GetNextStates(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || $SelectedCustomerUser || '',
QueueID => $NewQueueID || 1,
),
NextState => $NextState,
Priorities => $Self->_GetPriorities(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || $SelectedCustomerUser || '',
QueueID => $NewQueueID || 1,
),
Types => $Self->_GetTypes(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || $SelectedCustomerUser || '',
QueueID => $NewQueueID || 1,
),
Services => $Services,
SLAs => $SLAs,
StandardTemplates => $Self->_GetStandardTemplates(
%GetParam,
%ACLCompatGetParam,
QueueID => $NewQueueID || '',
),
CustomerID => $Self->{LayoutObject}->Ascii2Html( Text => $CustomerID ),
CustomerUser => $CustomerUser,
CustomerData => \%CustomerData,
To => $Self->_GetTos(
%GetParam,
%ACLCompatGetParam,
QueueID => $NewQueueID
),
ToSelected => $Dest,
Errors => \%Error,
Attachments => \@Attachments,
%GetParam,
DynamicFieldHTML => \%DynamicFieldHTML,
MultipleCustomer => \@MultipleCustomer,
FromExternalCustomer => \%FromExternalCustomer,
);
$Output .= $Self->{LayoutObject}->Footer();
return $Output;
}
# challenge token check for write action
$Self->{LayoutObject}->ChallengeTokenCheck();
# create new ticket, do db insert
my $TicketID = $Self->{TicketObject}->TicketCreate(
Title => $GetParam{Subject},
QueueID => $NewQueueID,
Subject => $GetParam{Subject},
Lock => 'unlock',
TypeID => $GetParam{TypeID},
ServiceID => $GetParam{ServiceID},
SLAID => $GetParam{SLAID},
StateID => $GetParam{NextStateID},
PriorityID => $GetParam{PriorityID},
OwnerID => 1,
CustomerNo => $CustomerID,
CustomerUser => $SelectedCustomerUser,
UserID => $Self->{UserID},
);
# set ticket dynamic fields
# cycle through the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
next DYNAMICFIELD if $DynamicFieldConfig->{ObjectType} ne 'Ticket';
# set the value
my $Success = $Self->{BackendObject}->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $TicketID,
Value => $DynamicFieldValues{ $DynamicFieldConfig->{Name} },
UserID => $Self->{UserID},
);
}
# get pre loaded attachment
my @AttachmentData = $Self->{UploadCacheObject}->FormIDGetAllFilesData(
FormID => $Self->{FormID},
);
# get submit attachment
my %UploadStuff = $Self->{ParamObject}->GetUploadAll(
Param => 'FileUpload',
);
if (%UploadStuff) {
push @AttachmentData, \%UploadStuff;
}
my $MimeType = 'text/plain';
if ( $Self->{LayoutObject}->{BrowserRichText} ) {
$MimeType = 'text/html';
# remove unused inline images
my @NewAttachmentData;
ATTACHMENT:
for my $Attachment (@AttachmentData) {
my $ContentID = $Attachment->{ContentID};
if (
$ContentID
&& ( $Attachment->{ContentType} =~ /image/i )
&& ( $Attachment->{Disposition} eq 'inline' )
)
{
my $ContentIDHTMLQuote = $Self->{LayoutObject}->Ascii2Html(
Text => $ContentID,
);
# workaround for link encode of rich text editor, see bug#5053
my $ContentIDLinkEncode = $Self->{LayoutObject}->LinkEncode($ContentID);
$GetParam{Body} =~ s/(ContentID=)$ContentIDLinkEncode/$1$ContentID/g;
# ignore attachment if not linked in body
next ATTACHMENT
if $GetParam{Body} !~ /(\Q$ContentIDHTMLQuote\E|\Q$ContentID\E)/i;
}
# remember inline images and normal attachments
push @NewAttachmentData, \%{$Attachment};
}
@AttachmentData = @NewAttachmentData;
# verify html document
$GetParam{Body} = $Self->{LayoutObject}->RichTextDocumentComplete(
String => $GetParam{Body},
);
}
my $PlainBody = $GetParam{Body};
if ( $Self->{LayoutObject}->{BrowserRichText} ) {
$PlainBody = $Self->{LayoutObject}->RichText2Ascii( String => $GetParam{Body} );
}
# check if new owner is given (then send no agent notify)
my $NoAgentNotify = 0;
if ( $GetParam{NewUserID} ) {
$NoAgentNotify = 1;
}
my $ArticleID = $Self->{TicketObject}->ArticleCreate(
NoAgentNotify => $NoAgentNotify,
TicketID => $TicketID,
ArticleType => $Self->{Config}->{ArticleType},
SenderType => $Self->{Config}->{SenderType},
From => $GetParam{From},
To => $To,
Subject => $GetParam{Subject},
Body => $GetParam{Body},
MimeType => $MimeType,
Charset => $Self->{LayoutObject}->{UserCharset},
UserID => $Self->{UserID},
HistoryType => $Self->{Config}->{HistoryType},
HistoryComment => $Self->{Config}->{HistoryComment} || '%%',
AutoResponseType => ( $Self->{ConfigObject}->Get('AutoResponseForWebTickets') )
? 'auto reply'
: '',
OrigHeader => {
From => $GetParam{From},
To => $GetParam{To},
Subject => $GetParam{Subject},
Body => $PlainBody,
},
Queue => $Self->{QueueObject}->QueueLookup( QueueID => $NewQueueID ),
);
if ( !$ArticleID ) {
return $Self->{LayoutObject}->ErrorScreen();
}
# set article dynamic fields
# cycle through the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
next DYNAMICFIELD if $DynamicFieldConfig->{ObjectType} ne 'Article';
# set the value
my $Success = $Self->{BackendObject}->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $ArticleID,
Value => $DynamicFieldValues{ $DynamicFieldConfig->{Name} },
UserID => $Self->{UserID},
);
}
# Permissions check were done earlier
if ( $GetParam{FromChatID} ) {
my $ChatObject = $Kernel::OM->Get('Kernel::System::Chat');
my %Chat = $ChatObject->ChatGet(
ChatID => $GetParam{FromChatID},
);
my @ChatMessageList = $ChatObject->ChatMessageList(
ChatID => $GetParam{FromChatID},
);
my $ChatArticleID;
if (@ChatMessageList) {
my $JSONBody = $Kernel::OM->Get('Kernel::System::JSON')->Encode(
Data => \@ChatMessageList,
);
my $ChatArticleType = 'chat-internal';
if (
$Chat{RequesterType} eq 'Customer'
|| $Chat{TargetType} eq 'Customer'
)
{
$ChatArticleType = 'chat-external';
}
$ChatArticleID = $Self->{TicketObject}->ArticleCreate(
NoAgentNotify => $NoAgentNotify,
TicketID => $TicketID,
ArticleType => $ChatArticleType,
SenderType => $Self->{Config}->{SenderType},
# From => $GetParam{From},
# To => $To,
Subject => $Kernel::OM->Get('Kernel::Language')->Translate('Chat'),
Body => $JSONBody,
MimeType => 'application/json',
Charset => $Self->{LayoutObject}->{UserCharset},
UserID => $Self->{UserID},
HistoryType => $Self->{Config}->{HistoryType},
HistoryComment => $Self->{Config}->{HistoryComment} || '%%',
Queue => $Self->{QueueObject}->QueueLookup( QueueID => $NewQueueID ),
);
}
if ($ChatArticleID) {
$ChatObject->ChatDelete(
ChatID => $GetParam{FromChatID},
);
}
}
# set owner (if new user id is given)
if ( $GetParam{NewUserID} ) {
$Self->{TicketObject}->TicketOwnerSet(
TicketID => $TicketID,
NewUserID => $GetParam{NewUserID},
UserID => $Self->{UserID},
);
# set lock
$Self->{TicketObject}->TicketLockSet(
TicketID => $TicketID,
Lock => 'lock',
UserID => $Self->{UserID},
);
}
# else set owner to current agent but do not lock it
else {
$Self->{TicketObject}->TicketOwnerSet(
TicketID => $TicketID,
NewUserID => $Self->{UserID},
SendNoNotification => 1,
UserID => $Self->{UserID},
);
}
# set responsible (if new user id is given)
if ( $GetParam{NewResponsibleID} ) {
$Self->{TicketObject}->TicketResponsibleSet(
TicketID => $TicketID,
NewUserID => $GetParam{NewResponsibleID},
UserID => $Self->{UserID},
);
}
# time accounting
if ( $GetParam{TimeUnits} ) {
$Self->{TicketObject}->TicketAccountTime(
TicketID => $TicketID,
ArticleID => $ArticleID,
TimeUnit => $GetParam{TimeUnits},
UserID => $Self->{UserID},
);
}
# write attachments
for my $Attachment (@AttachmentData) {
$Self->{TicketObject}->ArticleWriteAttachment(
%{$Attachment},
ArticleID => $ArticleID,
UserID => $Self->{UserID},
);
}
# remove pre submited attachments
$Self->{UploadCacheObject}->FormIDRemove( FormID => $Self->{FormID} );
# link tickets
if (
$GetParam{LinkTicketID}
&& $Self->{Config}->{SplitLinkType}
&& $Self->{Config}->{SplitLinkType}->{LinkType}
&& $Self->{Config}->{SplitLinkType}->{Direction}
)
{
my $Access = $Self->{TicketObject}->TicketPermission(
Type => 'ro',
TicketID => $GetParam{LinkTicketID},
UserID => $Self->{UserID}
);
if ( !$Access ) {
return $Self->{LayoutObject}->NoPermission(
Message => "You need ro permission!",
WithHeader => 'yes',
);
}
my $SourceKey = $GetParam{LinkTicketID};
my $TargetKey = $TicketID;
if ( $Self->{Config}->{SplitLinkType}->{Direction} eq 'Source' ) {
$SourceKey = $TicketID;
$TargetKey = $GetParam{LinkTicketID};
}
# link the tickets
$Self->{LinkObject}->LinkAdd(
SourceObject => 'Ticket',
SourceKey => $SourceKey,
TargetObject => 'Ticket',
TargetKey => $TargetKey,
Type => $Self->{Config}->{SplitLinkType}->{LinkType} || 'Normal',
State => 'Valid',
UserID => $Self->{UserID},
);
}
# closed tickets get unlocked
if ( $StateData{TypeName} =~ /^close/i ) {
# set lock
$Self->{TicketObject}->TicketLockSet(
TicketID => $TicketID,
Lock => 'unlock',
UserID => $Self->{UserID},
);
}
# set pending time
elsif ( $StateData{TypeName} =~ /^pending/i ) {
# set pending time
$Self->{TicketObject}->TicketPendingTimeSet(
UserID => $Self->{UserID},
TicketID => $TicketID,
%GetParam,
);
}
# get redirect screen
my $NextScreen = $Self->{UserCreateNextMask} || 'Fatin';
# redirect
return $Self->{LayoutObject}->Redirect(
OP => "Action=$NextScreen;Subaction=Created;TicketID=$TicketID",
);
}
elsif ( $Self->{Subaction} eq 'AJAXUpdate' ) {
my $Dest = $Self->{ParamObject}->GetParam( Param => 'Dest' ) || '';
my $CustomerUser = $Self->{ParamObject}->GetParam( Param => 'SelectedCustomerUser' );
my $ElementChanged = $Self->{ParamObject}->GetParam( Param => 'ElementChanged' ) || '';
my $QueueID = '';
if ( $Dest =~ /^(\d{1,100})\|\|.+?$/ ) {
$QueueID = $1;
}
# get list type
my $TreeView = 0;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::ListType') eq 'tree' ) {
$TreeView = 1;
}
my $Tos = $Self->_GetTos(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $QueueID,
);
my $NewTos;
if ($Tos) {
for my $KeyTo ( sort keys %{$Tos} ) {
$NewTos->{"$KeyTo||$Tos->{$KeyTo}"} = $Tos->{$KeyTo};
}
}
my $Users = $Self->_GetUsers(
%GetParam,
%ACLCompatGetParam,
QueueID => $QueueID,
AllUsers => $GetParam{OwnerAll},
);
my $ResponsibleUsers = $Self->_GetResponsibles(
%GetParam,
%ACLCompatGetParam,
QueueID => $QueueID,
AllUsers => $GetParam{ResponsibleAll},
);
my $NextStates = $Self->_GetNextStates(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $QueueID || 1,
);
my $Priorities = $Self->_GetPriorities(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $QueueID || 1,
);
my $Services = $Self->_GetServices(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $QueueID || 1,
);
my $SLAs = $Self->_GetSLAs(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
QueueID => $QueueID || 1,
Services => $Services,
);
my $StandardTemplates = $Self->_GetStandardTemplates(
%GetParam,
%ACLCompatGetParam,
QueueID => $QueueID || '',
);
# update Dynamic Fields Possible Values via AJAX
my @DynamicFieldAJAX;
# cycle through the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
next DYNAMICFIELD if $DynamicFieldConfig->{ObjectType} ne 'Ticket';
my $IsACLReducible = $Self->{BackendObject}->HasBehavior(
DynamicFieldConfig => $DynamicFieldConfig,
Behavior => 'IsACLReducible',
);
next DYNAMICFIELD if !$IsACLReducible;
my $PossibleValues = $Self->{BackendObject}->PossibleValuesGet(
DynamicFieldConfig => $DynamicFieldConfig,
);
# convert possible values key => value to key => key for ACLs using a Hash slice
my %AclData = %{$PossibleValues};
@AclData{ keys %AclData } = keys %AclData;
# set possible values filter from ACLs
my $ACL = $Self->{TicketObject}->TicketAcl(
%GetParam,
%ACLCompatGetParam,
CustomerUserID => $CustomerUser || '',
Action => $Self->{Action},
QueueID => $QueueID || 0,
ReturnType => 'Ticket',
ReturnSubType => 'DynamicField_' . $DynamicFieldConfig->{Name},
Data => \%AclData,
UserID => $Self->{UserID},
);
if ($ACL) {
my %Filter = $Self->{TicketObject}->TicketAclData();
# convert Filer key => key back to key => value using map
%{$PossibleValues} = map { $_ => $PossibleValues->{$_} } keys %Filter;
}
my $DataValues = $Self->{BackendObject}->BuildSelectionDataGet(
DynamicFieldConfig => $DynamicFieldConfig,
PossibleValues => $PossibleValues,
Value => $DynamicFieldValues{ $DynamicFieldConfig->{Name} },
) || $PossibleValues;
# add dynamic field to the list of fields to update
push(
@DynamicFieldAJAX,
{
Name => 'DynamicField_' . $DynamicFieldConfig->{Name},
Data => $DataValues,
SelectedID => $DynamicFieldValues{ $DynamicFieldConfig->{Name} },
Translation => $DynamicFieldConfig->{Config}->{TranslatableValues} || 0,
Max => 100,
}
);
}
my @TemplateAJAX;
# update ticket body and attachements if needed.
if ( $ElementChanged eq 'StandardTemplateID' ) {
my @TicketAttachments;
my $TemplateText;
# remove all attachments from the Upload cache
my $RemoveSuccess = $Self->{UploadCacheObject}->FormIDRemove(
FormID => $Self->{FormID},
);
if ( !$RemoveSuccess ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Form attachments could not be deleted!",
);
}
# get the template text and set new attachments if a template is selected
if ( IsPositiveInteger( $GetParam{StandardTemplateID} ) ) {
my $TemplateGenerator = Kernel::System::TemplateGenerator->new( %{$Self} );
# set template text, replace smart tags (limited as ticket is not created)
$TemplateText = $TemplateGenerator->Template(
TemplateID => $GetParam{StandardTemplateID},
UserID => $Self->{UserID},
);
# create StdAttachmentObject
my $StdAttachmentObject = Kernel::System::StdAttachment->new( %{$Self} );
# add std. attachments to ticket
my %AllStdAttachments
= $StdAttachmentObject->StdAttachmentStandardTemplateMemberList(
StandardTemplateID => $GetParam{StandardTemplateID},
);
for ( sort keys %AllStdAttachments ) {
my %AttachmentsData = $StdAttachmentObject->StdAttachmentGet( ID => $_ );
$Self->{UploadCacheObject}->FormIDAddFile(
FormID => $Self->{FormID},
Disposition => 'attachment',
%AttachmentsData,
);
}
# send a list of attachments in the upload cache back to the clientside JavaScript
# which renders then the list of currently uploaded attachments
@TicketAttachments = $Self->{UploadCacheObject}->FormIDGetAllFilesMeta(
FormID => $Self->{FormID},
);
}
@TemplateAJAX = (
{
Name => 'UseTemplateCreate',
Data => '0',
},
{
Name => 'RichText',
Data => $TemplateText || '',
},
{
Name => 'TicketAttachments',
Data => \@TicketAttachments,
KeepData => 1,
},
);
}
my $JSON = $Self->{LayoutObject}->BuildSelectionJSON(
[
{
Name => 'Dest',
Data => $NewTos,
SelectedID => $Dest,
Translation => 0,
PossibleNone => 0,
TreeView => $TreeView,
Max => 100,
},
{
Name => 'NewUserID',
Data => $Users,
SelectedID => $GetParam{NewUserID},
Translation => 0,
PossibleNone => 1,
Max => 100,
},
{
Name => 'NewResponsibleID',
Data => $ResponsibleUsers,
SelectedID => $GetParam{NewResponsibleID},
Translation => 0,
PossibleNone => 1,
Max => 100,
},
{
Name => 'NextStateID',
Data => $NextStates,
SelectedID => $GetParam{NextStateID},
Translation => 1,
Max => 100,
},
{
Name => 'PriorityID',
Data => $Priorities,
SelectedID => $GetParam{PriorityID},
Translation => 1,
Max => 100,
},
{
Name => 'ServiceID',
Data => $Services,
SelectedID => $GetParam{ServiceID},
PossibleNone => 1,
Translation => 0,
TreeView => $TreeView,
Max => 100,
},
{
Name => 'SLAID',
Data => $SLAs,
SelectedID => $GetParam{SLAID},
PossibleNone => 1,
Translation => 0,
Max => 100,
},
{
Name => 'StandardTemplateID',
Data => $StandardTemplates,
SelectedID => $GetParam{StandardTemplateID},
PossibleNone => 1,
Translation => 1,
Max => 100,
},
@DynamicFieldAJAX,
@TemplateAJAX,
],
);
return $Self->{LayoutObject}->Attachment(
ContentType => 'application/json; charset=' . $Self->{LayoutObject}->{Charset},
Content => $JSON,
Type => 'inline',
NoCache => 1,
);
}
else {
return $Self->{LayoutObject}->ErrorScreen(
Message => 'No Subaction!!',
Comment => 'Please contact your administrator',
);
}
}
sub _GetNextStates {
my ( $Self, %Param ) = @_;
my %NextStates;
if ( $Param{QueueID} || $Param{TicketID} ) {
%NextStates = $Self->{TicketObject}->TicketStateList(
%Param,
Action => $Self->{Action},
UserID => $Self->{UserID},
);
}
return \%NextStates;
}
sub _GetUsers {
my ( $Self, %Param ) = @_;
# get users
my %ShownUsers;
my %AllGroupsMembers = $Self->{UserObject}->UserList(
Type => 'Long',
Valid => 1,
);
# just show only users with selected custom queue
if ( $Param{QueueID} && !$Param{AllUsers} ) {
my @UserIDs = $Self->{TicketObject}->GetSubscribedUserIDsByQueueID(%Param);
for my $KeyGroupMember ( sort keys %AllGroupsMembers ) {
my $Hit = 0;
for my $UID (@UserIDs) {
if ( $UID eq $KeyGroupMember ) {
$Hit = 1;
}
}
if ( !$Hit ) {
delete $AllGroupsMembers{$KeyGroupMember};
}
}
}
# show all system users
if ( $Self->{ConfigObject}->Get('Ticket::ChangeOwnerToEveryone') ) {
%ShownUsers = %AllGroupsMembers;
}
# show all users who are owner or rw in the queue group
elsif ( $Param{QueueID} ) {
my $GID = $Self->{QueueObject}->GetQueueGroupID( QueueID => $Param{QueueID} );
my %MemberList = $Self->{GroupObject}->GroupMemberList(
GroupID => $GID,
Type => 'owner',
Result => 'HASH',
);
for my $KeyMember ( sort keys %MemberList ) {
if ( $AllGroupsMembers{$KeyMember} ) {
$ShownUsers{$KeyMember} = $AllGroupsMembers{$KeyMember};
}
}
}
# workflow
my $ACL = $Self->{TicketObject}->TicketAcl(
%Param,
ReturnType => 'Ticket',
ReturnSubType => 'Owner',
Data => \%ShownUsers,
UserID => $Self->{UserID},
);
return { $Self->{TicketObject}->TicketAclData() } if $ACL;
return \%ShownUsers;
}
sub _GetResponsibles {
my ( $Self, %Param ) = @_;
# get users
my %ShownUsers;
my %AllGroupsMembers = $Self->{UserObject}->UserList(
Type => 'Long',
Valid => 1,
);
# just show only users with selected custom queue
if ( $Param{QueueID} && !$Param{AllUsers} ) {
my @UserIDs = $Self->{TicketObject}->GetSubscribedUserIDsByQueueID(%Param);
for my $KeyGroupMember ( sort keys %AllGroupsMembers ) {
my $Hit = 0;
for my $UID (@UserIDs) {
if ( $UID eq $KeyGroupMember ) {
$Hit = 1;
}
}
if ( !$Hit ) {
delete $AllGroupsMembers{$KeyGroupMember};
}
}
}
# show all system users
if ( $Self->{ConfigObject}->Get('Ticket::ChangeOwnerToEveryone') ) {
%ShownUsers = %AllGroupsMembers;
}
# show all users who are responsible or rw in the queue group
elsif ( $Param{QueueID} ) {
my $GID = $Self->{QueueObject}->GetQueueGroupID( QueueID => $Param{QueueID} );
my %MemberList = $Self->{GroupObject}->GroupMemberList(
GroupID => $GID,
Type => 'responsible',
Result => 'HASH',
);
for my $KeyMember ( sort keys %MemberList ) {
if ( $AllGroupsMembers{$KeyMember} ) {
$ShownUsers{$KeyMember} = $AllGroupsMembers{$KeyMember};
}
}
}
# workflow
my $ACL = $Self->{TicketObject}->TicketAcl(
%Param,
ReturnType => 'Ticket',
ReturnSubType => 'Responsible',
Data => \%ShownUsers,
UserID => $Self->{UserID},
);
return { $Self->{TicketObject}->TicketAclData() } if $ACL;
return \%ShownUsers;
}
sub _GetPriorities {
my ( $Self, %Param ) = @_;
# get priority
my %Priorities;
if ( $Param{QueueID} || $Param{TicketID} ) {
%Priorities = $Self->{TicketObject}->TicketPriorityList(
%Param,
Action => $Self->{Action},
UserID => $Self->{UserID},
);
}
return \%Priorities;
}
sub _GetTypes {
my ( $Self, %Param ) = @_;
# get type
my %Type;
if ( $Param{QueueID} || $Param{TicketID} ) {
%Type = $Self->{TicketObject}->TicketTypeList(
%Param,
Action => $Self->{Action},
UserID => $Self->{UserID},
);
}
return \%Type;
}
sub _GetServices {
my ( $Self, %Param ) = @_;
# get service
my %Service;
# check needed
return \%Service if !$Param{QueueID} && !$Param{TicketID};
# get options for default services for unknown customers
my $DefaultServiceUnknownCustomer
= $Self->{ConfigObject}->Get('Ticket::Service::Default::UnknownCustomer');
# check if no CustomerUserID is selected
# if $DefaultServiceUnknownCustomer = 0 leave CustomerUserID empty, it will not get any services
# if $DefaultServiceUnknownCustomer = 1 set CustomerUserID to get default services
if ( !$Param{CustomerUserID} && $DefaultServiceUnknownCustomer ) {
$Param{CustomerUserID} = '<DEFAULT>';
}
# get service list
if ( $Param{CustomerUserID} ) {
%Service = $Self->{TicketObject}->TicketServiceList(
%Param,
Action => $Self->{Action},
UserID => $Self->{UserID},
);
}
return \%Service;
}
sub _GetSLAs {
my ( $Self, %Param ) = @_;
# get sla
my %SLA;
if ( $Param{ServiceID} && $Param{Services} && %{ $Param{Services} } ) {
if ( $Param{Services}->{ $Param{ServiceID} } ) {
%SLA = $Self->{TicketObject}->TicketSLAList(
%Param,
Action => $Self->{Action},
UserID => $Self->{UserID},
);
}
}
return \%SLA;
}
sub _GetTos {
my ( $Self, %Param ) = @_;
# check own selection
my %NewTos;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueOwnSelection') ) {
%NewTos = %{ $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueOwnSelection') };
}
else {
# SelectionType Queue or SystemAddress?
my %Tos;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueSelectionType') eq 'Queue' ) {
%Tos = $Self->{TicketObject}->MoveList(
%Param,
Type => 'create',
Action => $Self->{Action},
QueueID => $Self->{QueueID},
UserID => $Self->{UserID},
);
}
else {
%Tos = $Self->{DBObject}->GetTableData(
Table => 'system_address',
What => 'queue_id, id',
Valid => 1,
Clamp => 1,
);
}
# get create permission queues
my %UserGroups = $Self->{GroupObject}->GroupMemberList(
UserID => $Self->{UserID},
Type => 'create',
Result => 'HASH',
);
# build selection string
QUEUEID:
for my $QueueID ( sort keys %Tos ) {
my %QueueData = $Self->{QueueObject}->QueueGet( ID => $QueueID );
# permission check, can we create new tickets in queue
next QUEUEID if !$UserGroups{ $QueueData{GroupID} };
my $String = $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueSelectionString')
|| '<Realname> <<Email>> - Queue: <Queue>';
$String =~ s/<Queue>/$QueueData{Name}/g;
$String =~ s/<QueueComment>/$QueueData{Comment}/g;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueSelectionType') ne 'Queue' )
{
my %SystemAddressData = $Self->{SystemAddress}->SystemAddressGet(
ID => $Tos{$QueueID},
);
$String =~ s/<Realname>/$SystemAddressData{Realname}/g;
$String =~ s/<Email>/$SystemAddressData{Name}/g;
}
$NewTos{$QueueID} = $String;
}
}
# add empty selection
$NewTos{''} = '-';
return \%NewTos;
}
sub _GetStandardTemplates {
my ( $Self, %Param ) = @_;
# get create templates
my %Templates;
# check needed
return \%Templates if !$Param{QueueID} && !$Param{TicketID};
my $QueueID = $Param{QueueID} || '';
if ( !$Param{QueueID} && $Param{TicketID} ) {
# get QueueID from the ticket
my %Ticket = $Self->{TicketObject}->TicketGet(
TicketID => $Param{TicketID},
DynamicFields => 0,
UserID => $Self->{UserID},
);
$QueueID = $Ticket{QueueID} || '';
}
# fetch all std. templates
my %StandardTemplates = $Self->{QueueObject}->QueueStandardTemplateMemberList(
QueueID => $QueueID,
TemplateTypes => 1,
);
# return empty hash if there are no templates for this screen
return \%Templates if !IsHashRefWithData( $StandardTemplates{Create} );
# return just the templates for this screen
return $StandardTemplates{Create};
}
sub _MaskPhoneNew {
my ( $Self, %Param ) = @_;
$Param{FormID} = $Self->{FormID};
# get list type
my $TreeView = 0;
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::ListType') eq 'tree' ) {
$TreeView = 1;
}
# build customer search autocomplete field
$Self->{LayoutObject}->Block(
Name => 'CustomerSearchAutoComplete',
);
# build string
$Param{OptionStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{Users},
SelectedID => $Param{UserSelected},
Translation => 0,
Name => 'NewUserID',
PossibleNone => 1,
);
# build next states string
$Param{NextStatesStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{NextStates},
Name => 'NextStateID',
Translation => 1,
SelectedValue => $Param{NextState} || $Self->{Config}->{StateDefault},
);
# build to string
my %NewTo;
if ( $Param{To} ) {
for my $KeyTo ( sort keys %{ $Param{To} } ) {
$NewTo{"$KeyTo||$Param{To}->{$KeyTo}"} = $Param{To}->{$KeyTo};
}
}
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NewQueueSelectionType') eq 'Queue' ) {
$Param{ToStrg} = $Self->{LayoutObject}->AgentQueueListOption(
Class => 'Validate_Required',
Data => \%NewTo,
Multiple => 0,
Size => 0,
Name => 'Dest',
TreeView => $TreeView,
SelectedID => $Param{ToSelected},
OnChangeSubmit => 0,
);
}
else {
$Param{ToStrg} = $Self->{LayoutObject}->BuildSelection(
Class => 'Validate_Required',
Data => \%NewTo,
Name => 'Dest',
TreeView => $TreeView,
SelectedID => $Param{ToSelected},
Translation => 0,
);
}
# customer info string
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::CustomerInfoCompose') ) {
$Param{CustomerTable} = $Self->{LayoutObject}->AgentCustomerViewTable(
Data => $Param{CustomerData},
Max => $Self->{ConfigObject}->Get('Ticket::Frontend::CustomerInfoComposeMaxSize'),
);
$Self->{LayoutObject}->Block(
Name => 'CustomerTable',
Data => \%Param,
);
}
# prepare errors!
if ( $Param{Errors} ) {
for my $KeyError ( sort keys %{ $Param{Errors} } ) {
$Param{$KeyError}
= '* ' . $Self->{LayoutObject}->Ascii2Html( Text => $Param{Errors}->{$KeyError} );
}
}
# From external
my $ShowErrors = 1;
if (
defined $Param{FromExternalCustomer} &&
defined $Param{FromExternalCustomer}->{Email} &&
defined $Param{FromExternalCustomer}->{Customer}
)
{
$ShowErrors = 0;
$Self->{LayoutObject}->Block(
Name => 'FromExternalCustomer',
Data => $Param{FromExternalCustomer},
);
}
my $CustomerCounter = 0;
if ( $Param{MultipleCustomer} ) {
for my $Item ( @{ $Param{MultipleCustomer} } ) {
if ( !$ShowErrors ) {
# set empty values for errors
$Item->{CustomerError} = '';
$Item->{CustomerDisabled} = '';
$Item->{CustomerErrorMsg} = 'CustomerGenericServerErrorMsg';
}
$Self->{LayoutObject}->Block(
Name => 'MultipleCustomer',
Data => $Item,
);
$Self->{LayoutObject}->Block(
Name => $Item->{CustomerErrorMsg},
Data => $Item,
);
if ( $Item->{CustomerError} ) {
$Self->{LayoutObject}->Block(
Name => 'CustomerErrorExplantion',
);
}
$CustomerCounter++;
}
}
if ( !$CustomerCounter ) {
$Param{CustomerHiddenContainer} = 'Hidden';
}
# set customer counter
$Self->{LayoutObject}->Block(
Name => 'MultipleCustomerCounter',
Data => {
CustomerCounter => $CustomerCounter++,
},
);
if ( $Param{FromInvalid} && $Param{Errors} && !$Param{Errors}->{FromErrorType} ) {
$Self->{LayoutObject}->Block( Name => 'FromServerErrorMsg' );
}
if ( $Param{Errors}->{FromErrorType} || !$ShowErrors ) {
$Param{FromInvalid} = '';
}
my $DynamicFieldNames = $Self->_GetFieldsToUpdate(
OnlyDynamicFields => 1
);
# create a string with the quoted dynamic field names separated by commas
if ( IsArrayRefWithData($DynamicFieldNames) ) {
for my $Field ( @{$DynamicFieldNames} ) {
$Param{DynamicFieldNamesStrg} .= ",'" . $Field . "'";
}
}
# build type string
if ( $Self->{ConfigObject}->Get('Ticket::Type') ) {
$Param{TypeStrg} = $Self->{LayoutObject}->BuildSelection(
Class => 'Validate_Required' . ( $Param{Errors}->{TypeIDInvalid} || ' ' ),
Data => $Param{Types},
Name => 'TypeID',
SelectedID => $Param{TypeID},
PossibleNone => 1,
Sort => 'AlphanumericValue',
Translation => 0,
);
$Self->{LayoutObject}->Block(
Name => 'TicketType',
Data => {%Param},
);
}
# build service string
if ( $Self->{ConfigObject}->Get('Ticket::Service') ) {
if ( $Self->{Config}->{ServiceMandatory} ) {
$Param{ServiceStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{Services},
Name => 'ServiceID',
Class => 'Validate_Required ' . ( $Param{Errors}->{ServiceInvalid} || ' ' ),
SelectedID => $Param{ServiceID},
PossibleNone => 1,
TreeView => $TreeView,
Sort => 'TreeView',
Translation => 0,
Max => 200,
);
$Self->{LayoutObject}->Block(
Name => 'TicketServiceMandatory',
Data => {%Param},
);
}
else {
$Param{ServiceStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{Services},
Name => 'ServiceID',
Class => $Param{Errors}->{ServiceInvalid} || ' ',
SelectedID => $Param{ServiceID},
PossibleNone => 1,
TreeView => $TreeView,
Sort => 'TreeView',
Translation => 0,
Max => 200,
);
$Self->{LayoutObject}->Block(
Name => 'TicketService',
Data => {%Param},
);
}
if ( $Self->{Config}->{SLAMandatory} ) {
$Param{SLAStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{SLAs},
Name => 'SLAID',
SelectedID => $Param{SLAID},
Class => 'Validate_Required ' . ( $Param{Errors}->{SLAInvalid} || ' ' ),
PossibleNone => 1,
Sort => 'AlphanumericValue',
Translation => 0,
Max => 200,
);
$Self->{LayoutObject}->Block(
Name => 'TicketSLAMandatory',
Data => {%Param},
);
}
else {
$Param{SLAStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{SLAs},
Name => 'SLAID',
SelectedID => $Param{SLAID},
PossibleNone => 1,
Sort => 'AlphanumericValue',
Translation => 0,
Max => 200,
);
$Self->{LayoutObject}->Block(
Name => 'TicketSLA',
Data => {%Param},
);
}
}
# check if exists create templates regardless the queue
my %StandardTemplates = $Self->{StandardTemplateObject}->StandardTemplateList(
Valid => 1,
Type => 'Create',
);
# build text template string
if ( IsHashRefWithData( \%StandardTemplates ) ) {
$Param{StandardTemplateStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{StandardTemplates} || {},
Name => 'StandardTemplateID',
SelectedID => $Param{StandardTemplateID} || '',
PossibleNone => 1,
Sort => 'AlphanumericValue',
Translation => 1,
Max => 200,
);
$Self->{LayoutObject}->Block(
Name => 'StandardTemplate',
Data => {%Param},
);
}
# build priority string
if ( !$Param{PriorityID} ) {
$Param{Priority} = $Self->{Config}->{Priority};
}
$Param{PriorityStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{Priorities},
Name => 'PriorityID',
SelectedID => $Param{PriorityID},
SelectedValue => $Param{Priority},
Translation => 1,
);
# pending data string
$Param{PendingDateString} = $Self->{LayoutObject}->BuildDateSelection(
%Param,
Format => 'DateInputFormatLong',
YearPeriodPast => 0,
YearPeriodFuture => 5,
DiffTime => $Self->{ConfigObject}->Get('Ticket::Frontend::PendingDiffTime') || 0,
Class => $Param{Errors}->{DateInvalid},
Validate => 1,
ValidateDateInFuture => 1,
);
# show owner selection
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NewOwnerSelection') ) {
$Self->{LayoutObject}->Block(
Name => 'OwnerSelection',
Data => \%Param,
);
}
# show responsible selection
if (
$Self->{ConfigObject}->Get('Ticket::Responsible')
&& $Self->{ConfigObject}->Get('Ticket::Frontend::NewResponsibleSelection')
)
{
$Param{ResponsibleUsers}->{''} = '-';
$Param{ResponsibleOptionStrg} = $Self->{LayoutObject}->BuildSelection(
Data => $Param{ResponsibleUsers},
SelectedID => $Param{ResponsibleUserSelected},
Name => 'NewResponsibleID',
);
$Self->{LayoutObject}->Block(
Name => 'ResponsibleSelection',
Data => \%Param,
);
}
# Dynamic fields
# cycle trough the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
# skip fields that HTML could not be retrieved
next DYNAMICFIELD if !IsHashRefWithData(
$Param{DynamicFieldHTML}->{ $DynamicFieldConfig->{Name} }
);
# get the html strings form $Param
my $DynamicFieldHTML = $Param{DynamicFieldHTML}->{ $DynamicFieldConfig->{Name} };
$Self->{LayoutObject}->Block(
Name => 'DynamicField',
Data => {
Name => $DynamicFieldConfig->{Name},
Label => $DynamicFieldHTML->{Label},
Field => $DynamicFieldHTML->{Field},
},
);
# example of dynamic fields order customization
$Self->{LayoutObject}->Block(
Name => 'DynamicField_' . $DynamicFieldConfig->{Name},
Data => {
Name => $DynamicFieldConfig->{Name},
Label => $DynamicFieldHTML->{Label},
Field => $DynamicFieldHTML->{Field},
},
);
}
# show time accounting box
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::AccountTime') ) {
if ( $Self->{ConfigObject}->Get('Ticket::Frontend::NeedAccountedTime') ) {
$Self->{LayoutObject}->Block(
Name => 'TimeUnitsLabelMandatory',
Data => \%Param,
);
$Param{TimeUnitsRequired} = 'Validate_Required';
}
else {
$Self->{LayoutObject}->Block(
Name => 'TimeUnitsLabel',
Data => \%Param,
);
$Param{TimeUnitsRequired} = '';
}
$Self->{LayoutObject}->Block(
Name => 'TimeUnits',
Data => \%Param,
);
}
my $ShownOptionsBlock;
# show spell check
if ( $Self->{LayoutObject}->{BrowserSpellChecker} ) {
# check if need to call Options block
if ( !$ShownOptionsBlock ) {
$Self->{LayoutObject}->Block(
Name => 'TicketOptions',
Data => {
%Param,
},
);
# set flag to "true" in order to prevent calling the Options block again
$ShownOptionsBlock = 1;
}
$Self->{LayoutObject}->Block(
Name => 'SpellCheck',
Data => {
%Param,
},
);
}
# show customer edit link
my $OptionCustomer = $Self->{LayoutObject}->Permission(
Action => 'AdminCustomerUser',
Type => 'rw',
);
if ($OptionCustomer) {
# check if need to call Options block
if ( !$ShownOptionsBlock ) {
$Self->{LayoutObject}->Block(
Name => 'TicketOptions',
Data => {
%Param,
},
);
# set flag to "true" in order to prevent calling the Options block again
$ShownOptionsBlock = 1;
}
$Self->{LayoutObject}->Block(
Name => 'OptionCustomer',
Data => {
%Param,
},
);
}
# show attachments
ATTACHMENT:
for my $Attachment ( @{ $Param{Attachments} } ) {
if (
$Attachment->{ContentID}
&& $Self->{LayoutObject}->{BrowserRichText}
&& ( $Attachment->{ContentType} =~ /image/i )
&& ( $Attachment->{Disposition} eq 'inline' )
)
{
next ATTACHMENT;
}
$Self->{LayoutObject}->Block(
Name => 'Attachment',
Data => $Attachment,
);
}
# add rich text editor
if ( $Self->{LayoutObject}->{BrowserRichText} ) {
# use height/width defined for this screen
$Param{RichTextHeight} = $Self->{Config}->{RichTextHeight} || 0;
$Param{RichTextWidth} = $Self->{Config}->{RichTextWidth} || 0;
$Self->{LayoutObject}->Block(
Name => 'RichText',
Data => \%Param,
);
}
# Permissions have been checked before in Run()
if ( $Param{FromChatID} ) {
my @ChatMessages = $Kernel::OM->Get('Kernel::System::Chat')->ChatMessageList(
ChatID => $Param{FromChatID},
);
$Self->{LayoutObject}->Block(
Name => 'ChatArticlePreview',
Data => {
ChatMessages => \@ChatMessages,
},
);
}
# get output back
return $Self->{LayoutObject}->Output(
TemplateFile => 'Fatin',
Data => \%Param,
);
}
sub _GetFieldsToUpdate {
my ( $Self, %Param ) = @_;
my @UpdatableFields;
# set the fields that can be updatable via AJAXUpdate
if ( !$Param{OnlyDynamicFields} ) {
@UpdatableFields
= qw( TypeID Dest ServiceID SLAID NewUserID NewResponsibleID NextStateID PriorityID
StandardTemplateID
);
}
# cycle trough the activated Dynamic Fields for this screen
DYNAMICFIELD:
for my $DynamicFieldConfig ( @{ $Self->{DynamicField} } ) {
next DYNAMICFIELD if !IsHashRefWithData($DynamicFieldConfig);
my $IsACLReducible = $Self->{BackendObject}->HasBehavior(
DynamicFieldConfig => $DynamicFieldConfig,
Behavior => 'IsACLReducible',
);
next DYNAMICFIELD if !$IsACLReducible;
push @UpdatableFields, 'DynamicField_' . $DynamicFieldConfig->{Name};
}
return \@UpdatableFields;
}
1;
Fatin.tt
Code: Select all
# --
# Fatin.tt - provides HTML form for phone
# Copyright (C) 2001-2014 xxx, 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.
# --
[% InsertTemplate("AgentCustomerSearch.tt") %]
<div class="MainBox ARIARoleMain FormScreen">
[% IF Data.TicketID %]
<h1>[% Translate("Split Into New Phone Ticket") | html %]</h1>
[% ELSIF Data.FromChatID %]
<h1>[% Translate("Save Chat Into New Phone Ticket") | html %]</h1>
[% ELSE %]
<h1>[% Translate("Create New Phone Ticket") | html %]</h1>
[% END %]
<p class="AsteriskExplanation">[% Translate("All fields marked with an asterisk (*) are mandatory.") | html %]</p>
<div class="LayoutFixedSidebar SidebarLast">
<div class="SidebarColumn">
[% RenderBlockStart("CustomerTable") %]
<div id="CustomerInfo" class="WidgetSimple">
<div class="Header">
<h2>[% Translate("Customer Information") | html %]</h2>
</div>
<div class="Content">
[% Data.CustomerTable %]
</div>
</div>
[% RenderBlockEnd("CustomerTable") %]
</div>
<div class="ContentColumn">
<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" name="compose" id="NewPhoneTicket" class="Validate PreventMultipleSubmits">
<input type="hidden" name="Action" value="[% Env("Action") %]"/>
<input type="hidden" name="Subaction" value="StoreNew"/>
<input type="hidden" name="FormID" value="[% Data.FormID | html %]"/>
<input type="hidden" name="ExpandCustomerName" id="ExpandCustomerName" value="0"/>
<input type="hidden" name="OwnerAll" id="OwnerAll" value="[% Data.OwnerAll | html %]"/>
<input type="hidden" name="ResponsibleAll" id="ResponsibleAll" value="[% Data.ResponsibleAll | html %]"/>
<input type="hidden" name="PreSelectedCustomerUser" id="PreSelectedCustomerUser" value=""/>
<input type="hidden" name="SelectedCustomerUser" id="SelectedCustomerUser" value="[% Data.CustomerUser | html %]"/>
<input type="hidden" name="TicketID" value="[% Data.TicketID | html %]"/>
<input type="hidden" name="LinkTicketID" value="[% Data.LinkTicketID | html %]"/>
<input type="hidden" name="FromChatID" value="[% Data.FromChatID | html %]"/>
<fieldset class="TableLike">
# example template for customizations, see hidden form at the end of the file
# <label>[% Translate("Templates") | html %]:</label>
# <div class="Field">
# <button type="button" onclick="$('#Template1').submit()" value="[% Translate("Example Template") | html %]">[% Translate("Example Template") | html %]</button>
# </div>
# <div class="Clear"></div>
[% RenderBlockStart("TicketType") %]
<label class="Mandatory" for="TypeID"><span class="Marker">*</span> [% Translate("Type") | html %]:</label>
<div class="Field">
[% Data.TypeStrg %]
<div id="TypeIDError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
<div id="TypeIDServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#TypeID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'TypeID', ['Dest', 'NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketType") %]
<label for="FromCustomer" class="Mandatory"><span class="Marker">*</span>[% Translate("Customer user") | html %]:</label>
<div class="Field">
<input id="FromCustomer" type="text" name="FromCustomer" value="" class="CustomerAutoComplete W75pc [% Data.FromInvalid | html %]" autocomplete="off" />
<div id="FromCustomerServerError" class="TooltipErrorMessage">
[% RenderBlockStart("FromServerErrorMsg") %]
<p>[% Translate("Please include at least one customer for the ticket.") | html %]</p>
[% RenderBlockEnd("FromServerErrorMsg") %]
</div>
</div>
<div class="Clear"></div>
<div class="Field [% Data.CustomerHiddenContainer | html %]">
<div class="CustomerTicketTemplateFromCustomer SpacingTopSmall Hidden">
<input name="CustomerSelected" title="[% Translate("Select this customer as the main customer.") | html %]" id="CustomerSelected" class="CustomerTicketRadio" type="radio" value=""/>
<input name="CustomerKey" id="CustomerKey" class="CustomerKey" type="hidden" value=""/>
<input class="CustomerTicketText Radio" title="[% Translate("Customer user") | html %]" name="CustomerTicketText" id="CustomerTicketText" type="text" value="" readonly="readonly" />
<a href="#" id="RemoveCustomerTicket" class="RemoveButton CustomerTicketRemove">
<i class="fa fa-minus-square-o"></i>
<span class="InvisibleText">[% Translate("Remove Ticket Customer User") | html %]</span>
</a>
</div>
<div id="TicketCustomerContentFromCustomer" class="CustomerContainer">
[% RenderBlockStart("MultipleCustomer") %]
<div class="SpacingTopSmall ">
<input name="CustomerSelected" title="[% Translate("Select this customer as the main customer.") | html %]" id="CustomerSelected" class="CustomerTicketRadio" type="radio" value="[% Data.Count | html %]" [% Data.CustomerSelected | html %] [% Data.CustomerDisabled | html %] />
<input name="CustomerKey_[% Data.Count | html %]" id="CustomerKey_[% Data.Count | html %]" class="CustomerKey" type="hidden" value="[% Data.CustomerKey | html %]"/>
<input class="CustomerTicketText Radio [% Data.CustomerError | html %]" title="[% Translate("Customer user") | html %]" name="CustomerTicketText_[% Data.Count %]" id="CustomerTicketText_[% Data.Count %]" type="text" value="[% Data.CustomerElement | html %]" readonly="readonly" />
<a href="#" id="RemoveCustomerTicket_[% Data.Count %]" class="RemoveButton CustomerTicketRemove">
<i class="fa fa-minus-square-o"></i>
<span class="InvisibleText">[% Translate("Remove Ticket Customer User") | html %]</span>
</a>
[% RenderBlockStart("CustomerErrorExplantion") %]
<p class="Explanation Error">[% Translate("Please remove this entry and enter a new one with the correct value.") | html %]</p>
[% RenderBlockEnd("CustomerErrorExplantion") %]
<div id="CustomerTicketText_[% Data.Count %]ServerError" class="TooltipErrorMessage">
[% RenderBlockStart("CustomerGenericServerErrorMsg") %]
<p>[% Translate("This field is required.") | html %]</p>
[% RenderBlockEnd("CustomerGenericServerErrorMsg") %]
[% RenderBlockStart("InvalidConfigServerErrorMsg") %]
<p>[% Translate("This email address is not allowed due to the system configuration.") | html %]</p>
[% RenderBlockEnd("InvalidConfigServerErrorMsg") %]
[% RenderBlockStart("InvalidMXServerErrorMsg") %]
<p>[% Translate("This email address failed MX check.") | html %]</p>
[% RenderBlockEnd("InvalidMXServerErrorMsg") %]
[% RenderBlockStart("InvalidDNSServerErrorMsg") %]
<p>[% Translate("DNS problem, please check your configuration and the error log.") | html %]</p>
[% RenderBlockEnd("InvalidDNSServerErrorMsg") %]
[% RenderBlockStart("InvalidSyntaxServerErrorMsg") %]
<p>[% Translate("The syntax of this email address is incorrect.") | html %]</p>
[% RenderBlockEnd("InvalidSyntaxServerErrorMsg") %]
[% RenderBlockStart("IsDuplicatedServerErrorMsg") %]
<p>[% Translate("This address already exists on the address list.") | html %]</p>
[% RenderBlockEnd("IsDuplicatedServerErrorMsg") %]
</div>
</div>
[% RenderBlockEnd("MultipleCustomer") %]
</div>
[% RenderBlockStart("MultipleCustomerCounter") %]
<input name="CustomerTicketCounterFromCustomer" id="CustomerTicketCounterFromCustomer" type="hidden" value="[% Data.CustomerCounter | html %]"/>
[% RenderBlockEnd("MultipleCustomerCounter") %]
</div>
<div class="Clear"></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('.CustomerTicketRadio').bind('change', function () {
var CustomerKey;
if ( $(this).attr('checked') ){
CustomerKey = $( '#CustomerKey_' +$(this).val() ).val();
// get customer tickets
Core.Agent.CustomerSearch.ReloadCustomerInfo(CustomerKey);
}
return false;
});
$('.CustomerTicketRemove').bind('click', function () {
Core.Agent.CustomerSearch.RemoveCustomerTicket( $(this) );
return false;
});
//]]></script>
[% END %]
[% RenderBlockStart("FromExternalCustomer") %]
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
Core.Agent.CustomerSearch.AddTicketCustomer( 'FromCustomer', "[% Data.Email | html %]", "[% Data.Customer | html %]", true );
//]]></script>
[% END %]
[% RenderBlockEnd("FromExternalCustomer") %]
<label for="CustomerID">[% Translate("CustomerID") | html %]:</label>
<div class="Field">
<input type="text" name="CustomerID" id="CustomerID" value="[% Data.CustomerID | html %]" class="W75pc"/>
</div>
<div class="Clear"></div>
<label class="Mandatory" for="Dest"><span class="Marker">*</span> [% Translate("To queue") | html %]:</label>
<div class="Field">
[% Data.ToStrg %]
<div id="DestError" class="TooltipErrorMessage" ><p>[% Translate("This field is required.") | html %]</p></div>
<div id="DestServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#Dest').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'Dest', ['TypeID', 'NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockStart("TicketService") %]
<label for="ServiceID">[% Translate("Service") | html %]:</label>
<div class="Field">
[% Data.ServiceStrg %]
<div id="ServiceIDServerError" class="TooltipErrorMessage"><p>[% Translate("Service invalid.") | html %]</p></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#ServiceID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'ServiceID', ['TypeID', 'Dest', 'NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketService") %]
[% RenderBlockStart("TicketServiceMandatory") %]
<label class="Mandatory" for="ServiceID"><span class="Marker">*</span> [% Translate("Service") | html %]:</label>
<div class="Field">
[% Data.ServiceStrg %]
<div id="ServiceIDError" class="TooltipErrorMessage" ><p>[% Translate("This field is required.") | html %]</p></div>
<div id="ServiceIDServerError" class="TooltipErrorMessage"><p>[% Translate("Service invalid.") | html %]</p></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#ServiceID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'ServiceID', ['TypeID', 'Dest', 'NewUserID', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketServiceMandatory") %]
[% RenderBlockStart("TicketSLA") %]
<label for="SLAID">[% Translate("Service Level Agreement") | html %]:</label>
<div class="Field">
[% Data.SLAStrg %]
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#SLAID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'SLAID', ['TypeID', 'Dest', 'NewUserID', 'NewResponsibleID', 'ServiceID', 'NextStateID', 'PriorityID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketSLA") %]
[% RenderBlockStart("TicketSLAMandatory") %]
<label class="Mandatory" for="SLAID"><span class="Marker">*</span> [% Translate("Service Level Agreement") | html %]:</label>
<div class="Field">
[% Data.SLAStrg %]
<div id="SLAIDError" class="TooltipErrorMessage" ><p>[% Translate("This field is required.") | html %]</p></div>
<div id="SLAIDServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#SLAID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'SLAID', ['TypeID', 'Dest', 'NewUserID', 'NewResponsibleID', 'ServiceID', 'NextStateID', 'PriorityID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketSLAMandatory") %]
[% RenderBlockStart("OwnerSelection") %]
<label for="NewUserID">[% Translate("Owner") | html %]:</label>
<div class="Field">
[% Data.OptionStrg %]
<a href="#" id="OwnerSelectionGetAll" class="GetAllAJAX" title="[% Translate("Get all") | html %]">
<span>[% Translate("Get all") | html %]</span>
<i class="fa fa-refresh"></i>
</a>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#OwnerSelectionGetAll').bind('click', function (Event) {
$('#OwnerAll').val('1'); // Needed? Why?
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'OwnerAll', ['NewUserID'], function() {
$('#NewUserID').focus();
});
return false;
});
$('#NewUserID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'NewUserID', [ 'TypeID', 'Dest', 'NewResponsibleID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("OwnerSelection") %]
[% RenderBlockStart("ResponsibleSelection") %]
<label for="NewResponsibleID">[% Translate("Responsible") | html %]:</label>
<div class="Field">
[% Data.ResponsibleOptionStrg %]
<a href="#" id="ResponsibleSelectionGetAll" class="GetAllAJAX" title="[% Translate("Get all") | html %]">
<span>[% Translate("Get all") | html %]</span>
<i class="fa fa-refresh"></i>
</a>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#ResponsibleSelectionGetAll').bind('click', function (Event) {
$('#ResponsibleAll').val('1'); // Needed? Why?
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'ResponsibleAll', ['NewResponsibleID'], function() {
$('#NewResponsibleID').focus();
});
return false;
});
$('#NewResponsibleID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'NewResponsibleID', [ 'TypeID', 'Dest', 'NewUserID', 'NextStateID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("ResponsibleSelection") %]
<label class="Mandatory" for="Subject"><span class="Marker">*</span> [% Translate("Subject") | html %]:</label>
<div class="Field">
<input class="W75pc Validate_Required [% Data.SubjectInvalid | html %]" type="text" name="Subject" id="Subject" value="[% Data.Subject | html %]"/>
<div id="SubjectError" class="TooltipErrorMessage">
<p>[% Translate("This field is required.") | html %]</p>
</div>
<div id="SubjectServerError" class="TooltipErrorMessage">
<p>[% Translate("This field is required.") | html %]</p>
</div>
</div>
<div class="Clear"></div>
[% RenderBlockStart("TicketOptions") %]
<label>[% Translate("Options") | html %]:</label>
<div class="Field">
<!-- OutputFilterHook_TicketOptionsBegin -->
[% RenderBlockStart("SpellCheck") %]
<a href="#" id="OptionSpellCheck">[ [% Translate("Spell check") | html %] ]</a>
[% RenderBlockEnd("SpellCheck") %]
[% RenderBlockStart("OptionCustomer") %]
<a href="#" id="OptionCustomer">[ [% Translate("Customer user") | html %] ]</a>
[% RenderBlockEnd("OptionCustomer") %]
<!-- OutputFilterHook_TicketOptionsEnd -->
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TicketOptions") %]
<!-- OutputFilterHook_NoTicketOptionsFallback -->
[% RenderBlockStart("StandardTemplate") %]
<label for="StandardTemplateID">[% Translate("Text Template") | html %]:</label>
<div class="Field">
[% Data.StandardTemplateStrg %]
<p class="FieldExplanation">[% Translate("Setting a template will overwrite any text or attachment.") %]</p>
</div>
<div class="Clear"></div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#StandardTemplateID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'StandardTemplateID', ['RichTextField']);
return false;
});
//]]></script>
[% END %]
[% RenderBlockEnd("StandardTemplate") %]
<label class="Mandatory" for="RichText"><span class="Marker">*</span> [% Translate("Text") | html %]:</label>
<div id="RichTextField" class="RichTextField">
[% RenderBlockStart("RichText") %]
[% InsertTemplate("RichTextEditor.tt") %]
[% RenderBlockEnd("RichText") %]
<textarea id="RichText" class="RichText Validate_Required [% Data.RichTextInvalid | html %]" name="Body" title="Message body" rows="15" cols="[% Config("Ticket::Frontend::TextAreaNote") %]">[% Data.Body | html %]</textarea>
<div id="RichTextError" class="TooltipErrorMessage">
<p>[% Translate("This field is required.") | html %]</p>
</div>
<div id="RichTextServerError" class="TooltipErrorMessage">
<p>[% Translate("This field is required.") | html %]</p>
</div>
</div>
<div class="Clear"></div>
<label>[% Translate("Attachment") | html %]:</label>
<div class="Field">
<ul>
[% RenderBlockStart("Attachment") %]
<li>
[% Data.Filename | html %] ([% Data.Filesize | html %])
<button type="button" id="AttachmentDeleteButton[% Data.FileID | html %]" name="AttachmentDeleteButton[% Data.FileID | html %]" value="[% Translate("Delete") | html %]" class="SpacingLeft">[% Translate("Delete") | html %]</button>
<input type="hidden" id="AttachmentDelete[% Data.FileID | html %]" name="AttachmentDelete[% Data.FileID | html %]" />
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#AttachmentDeleteButton[% Data.FileID | html %]').bind('click', function () {
var $Form = $('#AttachmentDeleteButton[% Data.FileID | html %]').closest('form');
$('#AttachmentDelete[% Data.FileID | html %]').val(1);
Core.Form.Validate.DisableValidation($Form);
$Form.trigger('submit');
});
//]]></script>
[% END %]
</li>
[% RenderBlockEnd("Attachment") %]
<li>
<input id="FileUpload" name="FileUpload" type="file" size="40" />
<input type="hidden" id="AttachmentUpload" name="AttachmentUpload" value="0" />
</li>
</ul>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#FileUpload').bind('change', function () {
var $Form = $('#FileUpload').closest('form');
Core.Form.Validate.DisableValidation($Form);
$Form.find('#AttachmentUpload').val('1').end().submit();
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockStart("ChatArticlePreview") %]
<label>[% Translate("Chat protocol") | html %]:</label>
<div class="Field">
<div class="ChatProtocol">
[% INCLUDE "ChatDisplay.tt" %]
</div>
<p class="FieldExplanation">[% Translate('The chat will be appended as a separate article.') | html %]
</div>
<div class="Clear"></div>
[% RenderBlockEnd("ChatArticlePreview") %]
<label for="NextStateID">[% Translate("Next ticket state") | html %]:</label>
<div class="Field">
[% Data.NextStatesStrg %]
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#NextStateID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'NextStateID', [ 'TypeID', 'Dest', 'NewUserID','NewResponsibleID', 'PriorityID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
<label>[% Translate("Pending Date") | html %] ([% Translate("for pending* states") | html %]):</label>
<div class="Field">
[% Data.PendingDateString %]
<div id="DayError" class="TooltipErrorMessage"><p>[% Translate("Date invalid!") | html %]</p></div>
<div id="HourError" class="TooltipErrorMessage"><p>[% Translate("Date invalid!") | html %]</p></div>
</div>
<div class="Clear"></div>
<label for="PriorityID">[% Translate("Priority") | html %]:</label>
<div class="Field">
[% Data.PriorityStrg %]
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#PriorityID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewPhoneTicket'), 'AJAXUpdate', 'PriorityID', [ 'TypeID', 'Dest', 'NewUserID','NewResponsibleID', 'NextStateID', 'ServiceID', 'SLAID', 'SignKeyID', 'CryptKeyID', 'To', 'Cc', 'Bcc', 'StandardTemplateID' [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
</div>
<div class="Clear"></div>
[% RenderBlockStart("DynamicField") %]
<div class="Row Row_DynamicField_[% Data.Name | html %]">
[% Data.Label %]
<div class="Field">
[% Data.Field %]
</div>
<div class="Clear"></div>
</div>
[% RenderBlockEnd("DynamicField") %]
# example of how to use fixed dynamic field blocks for customizations
# Note: Field1 and Field2 are the names of the fields and had to be replaced with the actual
# field names
#[% RenderBlockStart("DynamicField_Field1") %]
# <div class="Row Row_DynamicField_[% Data.Name | html %]">
# [% Data.Label %]
# <div class="Field">
# [% Data.Field %]
# </div>
# <div class="Clear"></div>
# </div>
#[% RenderBlockEnd("DynamicField_Field1") %]
#[% RenderBlockStart("DynamicField_Field2") %]
# <div class="Row Row_DynamicField_[% Data.Name | html %]">
# [% Data.Label %]
# <div class="Field">
# [% Data.Field %]
# </div>
# <div class="Clear"></div>
# </div>
#[% RenderBlockEnd("DynamicField_Field2") %]
[% RenderBlockStart("TimeUnitsLabel") %]
<label for="TimeUnits">[% Translate("Time units") | html %] [% Translate(Config("Ticket::Frontend::TimeUnits")) | html %]:</label>
[% RenderBlockEnd("TimeUnitsLabel") %]
[% RenderBlockStart("TimeUnitsLabelMandatory") %]
<label class="Mandatory" for="TimeUnits"><span class="Marker">*</span> [% Translate("Time units") | html %] [% Translate(Config("Ticket::Frontend::TimeUnits")) | html %]:</label>
[% RenderBlockEnd("TimeUnitsLabelMandatory") %]
[% RenderBlockStart("TimeUnits") %]
<div class="Field">
<input type="text" class="W50pc Validate_TimeUnits [% Data.TimeUnitsRequired | html %] [% Data.TimeUnitsInvalid | html %]" name="TimeUnits" id="TimeUnits" value="[% Data.TimeUnits | html %]" />
<div id="TimeUnitsError" class="TooltipErrorMessage"><p>[% Translate("Invalid time!") | html %]</p></div>
<div id="TimeUnitsServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
</div>
<div class="Clear"></div>
[% RenderBlockEnd("TimeUnits") %]
<div class="Field SpacingTop">
<button class="Primary CallForAction" id="submitRichText" accesskey="g" title="[% Translate("Create") | html %] (g)" type="submit" value="[% Translate("Create") | html %]"><span><i class="fa fa-check-square-o"></i> [% Translate("Create") | html %]</span></button>
</div>
</fieldset>
</form>
</div>
</div>
<div id="CustomerTickets"></div>
</div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
Core.Agent.TicketAction.Init();
Core.Config.Set('Localization.Delete', [% Translate("Delete") | JSON %]);
//]]></script>
[% END %]
# example template form for customizations
#<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template1">
# <input type="hidden" name="Action" value="[% Env("Action") %]"/>
# <input type="hidden" name="Subaction" value="StoreNew"/>
# <input type="hidden" name="FormID" value="[% Data.FormID | html %]"/>
# <input type="hidden" name="ExpandCustomerName" value="1"/>
# <input type="hidden" name="Subject" value="Example Subject"/>
# <input type="hidden" name="Body" value="Name:
#Product:
#Comment:"/>
#</form>
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<otrs_config version="1.0" init="Application">
<ConfigItem Name="Ticket::Hook" Required="1" Valid="1">
<Description Translatable="1">The identifier for a ticket, e.g. Ticket#, Call#, MyTicket#. The default is Ticket#.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">Ticket#</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::HookDivider" Required="1" Valid="1">
<Description Translatable="1">The divider between TicketHook and ticket number. E.g ': '.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SubjectSize" Required="1" Valid="1">
<Description Translatable="1">Max size of the subjects in an email reply.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SubjectRe" Required="1" Valid="1">
<Description Translatable="1">The text at the beginning of the subject in an email reply, e.g. RE, AW, or AS.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">Re</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SubjectFwd" Required="1" Valid="1">
<Description Translatable="1">The text at the beginning of the subject when an email is forwarded, e.g. FW, Fwd, or WG.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">Fwd</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SubjectFormat" Required="1" Valid="1">
<Description Translatable="1">The format of the subject. 'Left' means '[TicketHook#:12345] Some Subject', 'Right' means 'Some Subject [TicketHook#:12345]', 'None' means 'Some Subject' and no ticket number. In the last case you should enable PostmasterFollowupSearchInRaw or PostmasterFollowUpSearchInReferences to recognize followups based on email headers and/or body.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="Left">
<Item Key="Left">Left</Item>
<Item Key="Right">Right</Item>
<Item Key="None">None</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::MergeDynamicFields" Required="1" Valid="1">
<Description Translatable="1">A list of dynamic fields that are merged into the main ticket during a merge operation. Only dynamic fields that are empty in the main ticket will be set.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomQueue" Required="1" Valid="1">
<Description Translatable="1">Name of custom queue. The custom queue is a queue selection of your preferred queues and can be selected in the preferences settings.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">My Queues</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomService" Required="1" Valid="1">
<Description Translatable="1">Name of custom service. The custom service is a service selection of your preferred services and can be selected in the preferences settings.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">My Services</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::NewArticleIgnoreSystemSender" Required="1" Valid="1">
<Description Translatable="1">Ignore article with system sender type for new article feature (e. g. auto responses or email notifications).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ChangeOwnerToEveryone" Required="1" Valid="1">
<Description Translatable="1">Changes the owner of tickets to everyone (useful for ASP). Normally only agent with rw permissions in the queue of the ticket will be shown.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Responsible" Required="0" Valid="1">
<Description Translatable="1">Enables ticket responsible feature, to keep track of a specific ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="1">Yes</Item>
<Item Key="0">No</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ResponsibleAutoSet" Required="0" Valid="1">
<Description Translatable="1">Automatically sets the owner of a ticket as the responsible for it (if ticket responsible feature is enabled).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="1">Yes</Item>
<Item Key="0">No</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Type" Required="1" Valid="1">
<Description Translatable="1">Allows defining new types for ticket (if ticket type feature is enabled).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Service" Required="1" Valid="1">
<Description Translatable="1">Allows defining services and SLAs for tickets (e. g. email, desktop, network, ...), and escalation attributes for SLAs (if ticket service/SLA feature is enabled).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Service::KeepChildren" Required="1" Valid="1">
<Description Translatable="1">Retains all services in listings even if they are children of invalid elements.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Service::Default::UnknownCustomer" Required="1" Valid="1">
<Description Translatable="1">Allows default services to be selected also for non existing customers.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ArchiveSystem" Required="1" Valid="1">
<Description Translatable="1">Activates the ticket archive system to have a faster system by moving some tickets out of the daily scope. To search for these tickets, the archive flag has to be enabled in the ticket search.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ArchiveSystem::RemoveSeenFlags" Required="1" Valid="1">
<Description Translatable="1">Controls if the ticket and article seen flags are removed when a ticket is archived.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ArchiveSystem::RemoveTicketWatchers" Required="1" Valid="1">
<Description Translatable="1">Removes the ticket watcher information when a ticket is archived.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomerArchiveSystem" Required="1" Valid="1">
<Description Translatable="1">Activates the ticket archive system search in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
<Item Key="2">Yes, but hide archived tickets</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::NumberGenerator" Required="1" Valid="1">
<Description Translatable="1">Selects the ticket number generator module. "AutoIncrement" increments the ticket number, the SystemID and the counter are used with SystemID.counter format (e.g. 1010138, 1010139). With "Date" the ticket numbers will be generated by the current date, the SystemID and the counter. The format looks like Year.Month.Day.SystemID.counter (e.g. 200206231010138, 200206231010139). With "DateChecksum" the counter will be appended as checksum to the string of date and SystemID. The checksum will be rotated on a daily basis. The format looks like Year.Month.Day.SystemID.Counter.CheckSum (e.g. 2002070110101520, 2002070110101535). "Random" generates randomized ticket numbers in the format "SystemID.Random" (e.g. 100057866352, 103745394596).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option Location="Kernel/System/Ticket/Number/*.pm" SelectedID="Kernel::System::Ticket::Number::DateChecksum"></Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::NumberGenerator::CheckSystemID" Required="1" Valid="1">
<Description Translatable="1">Checks the SystemID in ticket number detection for follow-ups (use "No" if SystemID has been changed after using the system).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="1">Yes</Item>
<Item Key="0">No</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::NumberGenerator::MinCounterSize" Required="1" Valid="1">
<Description Translatable="1">Sets the minimal ticket counter size (if "AutoIncrement" was selected as TicketNumberGenerator). Default is 5, this means the counter starts from 10000.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="^[0-9]$">5</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::NumberGenerator::Date::UseFormattedCounter" Required="1" Valid="1">
<Description Translatable="1">Enables the minimal ticket counter size (if "Date" was selected as TicketNumberGenerator).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CounterLog" Required="1" Valid="1">
<Description Translatable="1">Log file for the ticket counter.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex=""><OTRS_CONFIG_Home>/var/log/TicketCounter.log</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::IndexModule" Required="1" Valid="1">
<Description Translatable="1">IndexAccelerator: to choose your backend TicketViewAccelerator module. "RuntimeDB" generates each queue view on the fly from ticket table (no performance problems up to approx. 60.000 tickets in total and 6.000 open tickets in the system). "StaticDB" is the most powerful module, it uses an extra ticket-index table that works like a view (recommended if more than 80.000 and 6.000 open tickets are stored in the system). Use the script "bin/otrs.RebuildTicketIndex.pl" for initial index update.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option Location="Kernel/System/Ticket/IndexAccelerator/*.pm" SelectedID="Kernel::System::Ticket::IndexAccelerator::RuntimeDB">
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::StorageModule" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Saves the attachments of articles. "DB" stores all data in the database (not recommended for storing big attachments). "FS" stores the data on the filesystem; this is faster but the webserver should run under the OTRS user. You can switch between the modules even on a system that is already in production without any loss of data.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option Location="Kernel/System/Ticket/ArticleStorage*.pm" SelectedID="Kernel::System::Ticket::ArticleStorageDB">
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::StorageModule::CheckAllBackends" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Specifies whether all storage backends should be checked when looking for attachements. This is only required for installations where some attachements are in the file system, and others in the database.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="ArticleDir" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Specifies the directory to store the data in, if "FS" was selected for TicketStorageModule.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex=""><OTRS_CONFIG_Home>/var/article</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###100-ArchiveRestore" Required="0" Valid="1">
<Description Translatable="1">Restores a ticket from the archive (only if the event is a state change, from closed to any open available state).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ArchiveRestore</Item>
<Item Key="Event">TicketStateUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###110-AcceleratorUpdate" Required="0" Valid="1">
<Description Translatable="1">Updates the ticket index accelerator.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TicketAcceleratorUpdate</Item>
<Item Key="Event">TicketStateUpdate|TicketQueueUpdate|TicketLockUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###120-ForceOwnerResetOnMove" Required="0" Valid="0">
<Description Translatable="1">Resets and unlocks the owner of a ticket if it was moved to another queue.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ForceOwnerReset</Item>
<Item Key="Event">TicketQueueUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###130-ForceStateChangeOnLock" Required="0" Valid="0">
<Description Translatable="1">Forces to choose a different ticket state (from current) after lock action. Define the current state as key, and the next state after lock action as content.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ForceState</Item>
<Item Key="Event">TicketLockUpdate</Item>
<Item Key="new">open</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###140-ResponsibleAutoSet" Required="0" Valid="1">
<Description Translatable="1">Automatically sets the responsible of a ticket (if it is not set yet) after the first owner update.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ResponsibleAutoSet</Item>
<Item Key="Event">TicketOwnerUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###150-TicketPendingTimeReset" Required="0" Valid="1">
<Description Translatable="1">Sets the PendingTime of a ticket to 0 if the state is changed to a non-pending state.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TicketPendingTimeReset</Item>
<Item Key="Event">TicketStateUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###500-NotificationEvent" Required="0" Valid="1">
<Description Translatable="1">Sends the notifications which are configured in the admin interface under "Notfication (Event)".</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::NotificationEvent</Item>
<Item Key="Transaction">1</Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###900-EscalationIndex" Required="0" Valid="1">
<Description Translatable="1">Updates the ticket escalation index after a ticket attribute got updated.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TicketEscalationIndex</Item>
<Item Key="Event">TicketSLAUpdate|TicketQueueUpdate|TicketStateUpdate|TicketCreate|ArticleCreate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="OTRSEscalationEvents::DecayTime" Required="0" Valid="1">
<Description Translatable="1">The duration in minutes after emitting an event, in which the new escalation notify and start events are suppressed.</Description>
<Group>Ticket</Group>
<SubGroup>Core</SubGroup>
<Setting>
<String Regex="^[0-9]+$">1440</String>
</Setting>
</ConfigItem>
<!-- 900-EscalationStopEvents must come after 900-EscalationIndex -->
<ConfigItem Name="Ticket::EventModulePost###900-EscalationStopEvents" Required="0" Valid="1">
<Description Translatable="1">Ticket event module that triggers the escalation stop events.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TriggerEscalationStopEvents</Item>
<Item Key="Event">TicketSLAUpdate|TicketQueueUpdate|TicketStateUpdate|ArticleCreate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###910-ForceUnlockOnMove" Required="0" Valid="1">
<Description Translatable="1">Forces to unlock tickets after being moved to another queue.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ForceUnlock</Item>
<Item Key="Event">TicketQueueUpdate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###920-TicketArticleNewMessageUpdate" Required="0" Valid="1">
<Description Translatable="1">Update Ticket "Seen" flag if every article got seen or a new Article got created.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TicketNewMessageUpdate</Item>
<Item Key="Event">ArticleCreate|ArticleFlagSet</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerCompany::EventModulePost###110-UpdateTickets" Required="0" Valid="1">
<Description Translatable="1">Event module that updates tickets after an update of the Customer.</Description>
<Group>Ticket</Group>
<SubGroup>Core::CustomerCompany</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::CustomerCompany::Event::TicketUpdate</Item>
<Item Key="Event">CustomerCompanyUpdate</Item>
<Item Key="Transaction">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerUser::EventModulePost###120-UpdateTickets" Required="0" Valid="1">
<Description Translatable="1">Event module that updates tickets after an update of the Customer User.</Description>
<Group>Ticket</Group>
<SubGroup>Core::CustomerCompany</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::CustomerUser::Event::TicketUpdate</Item>
<Item Key="Event">CustomerUserUpdate</Item>
<Item Key="Transaction">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFieldFromCustomerUser::Mapping" Required="0" Valid="0">
<Description Translatable="1">Define a mapping between variables of the customer user data (keys) and dynamic fields of a ticket (values). The purpose is to store customer user data in ticket dynamic fields. The dynamic fields must be present in the system and should be enabled for AgentTicketFreeText, so that they can be set/updated manually by the agent. They mustn't be enabled for Fatin, AgentTicketEmail and AgentTicketCustomer. If they were, they would have precedence over the automatically set values. To use this mapping, you have to also activate the next setting below.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="UserFirstname">CustomerFirstname</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###930-DynamicFieldFromCustomerUser" Required="0" Valid="0">
<Description Translatable="1">This event module stores attributes from CustomerUser as DynamicFields tickets. Please see the setting above for how to configure the mapping.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::DynamicFieldFromCustomerUser</Item>
<Item Key="Event">(TicketCreate|TicketCustomerUpdate)</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomModule###001-CustomModule" Required="0" Valid="0">
<Description Translatable="1">Overloads (redefines) existing functions in Kernel::System::Ticket. Used to easily add customizations.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String Regex="">Kernel::System::Ticket::Custom</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SearchIndexModule" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Helps to extend your articles full-text search (From, To, Cc, Subject and Body search). Runtime will do full-text searches on live data (it works fine for up to 50.000 tickets). StaticDB will strip all articles and will build an index after article creation, increasing fulltext searches about 50%. To create an initial index use "bin/otrs.RebuildFulltextIndex.pl".</Description>
<Group>Ticket</Group>
<SubGroup>Core::FulltextSearch</SubGroup>
<Setting>
<Option Location="Kernel/System/Ticket/ArticleSearchIndex/*.pm" SelectedID="Kernel::System::Ticket::ArticleSearchIndex::RuntimeDB">
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SearchIndex::Attribute" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Basic fulltext index settings. Execute "bin/otrs.RebuildFulltextIndex.pl" in order to generate a new index.</Description>
<Group>Ticket</Group>
<SubGroup>Core::FulltextSearch</SubGroup>
<Setting>
<Hash>
<Item Key="WordCountMax">1000</Item>
<Item Key="WordLengthMin">3</Item>
<Item Key="WordLengthMax">30</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SearchIndex::Filters" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Fulltext index regex filters to remove parts of the text.</Description>
<Group>Ticket</Group>
<SubGroup>Core::FulltextSearch</SubGroup>
<Setting>
<Array>
<Item><![CDATA[[,\&\<\>\?"\!\*\|;\[\]\(\)\+\$\^=]]]></Item>
<Item><![CDATA[^[':.]|[':.]$]]></Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::SearchIndex::StopWords" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Stop words for fulltext index. These words will be removed.</Description>
<Group>Ticket</Group>
<SubGroup>Core::FulltextSearch</SubGroup>
<Setting>
<Hash>
<Item Key="der">1</Item>
<Item Key="die">1</Item>
<Item Key="das">1</Item>
<Item Key="und">1</Item>
<Item Key="in">1</Item>
<Item Key="vom">1</Item>
<Item Key="zu">1</Item>
<Item Key="im">1</Item>
<Item Key="den">1</Item>
<Item Key="auf">1</Item>
<Item Key="als">1</Item>
<Item Key="the">1</Item>
<Item Key="of">1</Item>
<Item Key="and">1</Item>
<Item Key="in">1</Item>
<Item Key="to">1</Item>
<Item Key="a">1</Item>
<Item Key="is">1</Item>
<Item Key="for">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###98-ArticleSearchIndex" Required="0" Valid="1">
<Description Translatable="1">Builds an article index right after the article's creation.</Description>
<Group>Ticket</Group>
<SubGroup>Core::FulltextSearch</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::ArticleSearchIndex</Item>
<Item Key="Event">(ArticleCreate|ArticleUpdate)</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview###Small" Required="0" Valid="1">
<Description Translatable="1">Allows having a small format ticket overview (CustomerInfo => 1 - shows also the customer information).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketOverviewSmall</Item>
<Item Key="Name">Small</Item>
<Item Key="NameShort">S</Item>
<Item Key="ModulePriority">100</Item>
<Item Key="CustomerInfo">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::OverviewSmall###ColumnHeader" Required="0" Valid="1">
<Description Translatable="1">Shows either the last customer article's subject or the ticket title in the small format overview.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Option SelectedID="LastCustomerSubject">
<Item Key="LastCustomerSubject">LastCustomerSubject</Item>
<Item Key="TicketTitle">TicketTitle</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview###Medium" Required="0" Valid="1">
<Description Translatable="1">Allows having a medium format ticket overview (CustomerInfo => 1 - shows also the customer information).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketOverviewMedium</Item>
<Item Key="Name">Medium</Item>
<Item Key="NameShort">M</Item>
<Item Key="ModulePriority">200</Item>
<Item Key="CustomerInfo">0</Item>
<Item Key="TicketActionsPerTicket">1</Item>
<Item Key="OverviewMenuModules">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview###Preview" Required="0" Valid="1">
<Description Translatable="1">Shows a preview of the ticket overview (CustomerInfo => 1 - shows also Customer-Info, CustomerInfoMaxSize max. size in characters of Customer-Info).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketOverviewPreview</Item>
<Item Key="Name">Preview</Item>
<Item Key="NameShort">L</Item>
<Item Key="ModulePriority">300</Item>
<Item Key="CustomerInfo">0</Item>
<Item Key="CustomerInfoMaxSize">18</Item>
<Item Key="DefaultPreViewLines">25</Item>
<Item Key="DefaultViewNewLine">90</Item>
<Item Key="StripEmptyLines">0</Item>
<Item Key="TicketActionsPerTicket">1</Item>
<Item Key="OverviewMenuModules">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview::PreviewArticleSenderTypes" Required="0" Valid="0">
<Description Translatable="1">Defines which article sender types should be shown in the preview of a ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
<Item Key="agent">1</Item>
<Item Key="system">1</Item>
<Item Key="customer">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview::PreviewArticleLimit" Required="1" Valid="1">
<Description Translatable="1">Sets the count of articles visible in preview mode of ticket overviews.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<String Regex="^[0-9]$">5</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Overview::PreviewArticleTypeExpanded" Required="0" Valid="0">
<Description Translatable="1">Defines wich article type should be expanded when entering the overview. If nothing defined, latest article will be expanded.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PendingDiffTime" Required="1" Valid="1">
<Description Translatable="1">Time in seconds that gets added to the actual time if setting a pending-state (default: 86400 = 1 day).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^\d+$">86400</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MaxQueueLevel" Required="1" Valid="1">
<Description Translatable="1">Define the max depth of queues.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String>5</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ListType" Required="1" Valid="1">
<Description Translatable="1">Shows existing parent/child queue lists in the system in the form of a tree or a list.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="tree">
<Item Key="tree">tree</Item>
<Item Key="list">list</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Watcher" Required="1" Valid="1">
<Description Translatable="1">Enables or disables the ticket watcher feature, to keep track of tickets without being the owner nor the responsible.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketWatcher</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::WatcherGroup" Required="0" Valid="0">
<Description Translatable="1">Enables ticket watcher feature only for the listed groups.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketWatcher</SubGroup>
<Setting>
<Array>
<Item>admin</Item>
<Item>users</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::BulkFeature" Required="1" Valid="1">
<Description Translatable="1">Enables ticket bulk action feature for the agent frontend to work on more than one ticket at a time.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketBulkAction</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::BulkFeatureGroup" Required="0" Valid="0">
<Description Translatable="1">Enables ticket bulk action feature only for the listed groups.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketBulkAction</SubGroup>
<Setting>
<Array>
<Item>admin</Item>
<Item>users</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PlainView" Required="1" Valid="1">
<Description Translatable="1">Shows a link to see a zoomed email ticket in plain text.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ZoomExpand" Required="1" Valid="1">
<Description Translatable="1">Shows all the articles of the ticket (expanded) in the zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ZoomExpandSort" Required="1" Valid="1">
<Description Translatable="1">Shows the articles sorted normally or in reverse, under ticket zoom in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="reverse">
<Item Key="reverse">reverse</Item>
<Item Key="normal">normal</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ZoomAttachmentDisplayCount" Required="1" Valid="1">
<Description Translatable="1">Shows a count of icons in the ticket zoom, if the article has attachments.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="20">
<Item Key="1">01</Item>
<Item Key="2">02</Item>
<Item Key="3">03</Item>
<Item Key="4">04</Item>
<Item Key="5">05</Item>
<Item Key="6">06</Item>
<Item Key="7">07</Item>
<Item Key="8">08</Item>
<Item Key="9">09</Item>
<Item Key="10">10</Item>
<Item Key="11">11</Item>
<Item Key="12">12</Item>
<Item Key="13">13</Item>
<Item Key="14">14</Item>
<Item Key="15">15</Item>
<Item Key="16">16</Item>
<Item Key="17">17</Item>
<Item Key="18">18</Item>
<Item Key="19">19</Item>
<Item Key="20">20</Item>
<Item Key="21">21</Item>
<Item Key="22">22</Item>
<Item Key="23">23</Item>
<Item Key="24">24</Item>
<Item Key="25">25</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ZoomTimeDisplay" Required="1" Valid="1">
<Description Translatable="1">Displays the accounted time for an article in the ticket zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::UseArticleColors" Required="1" Valid="1">
<Description Translatable="1">Shows colors for different article types in the article table.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::TicketArticleFilter" Required="1" Valid="1">
<Description Translatable="1">Activates the article filter in the zoom view to specify which articles should be shown.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::HistoryOrder" Required="1" Valid="1">
<Description Translatable="1">Shows the ticket history (reverse ordered) in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewHistory</SubGroup>
<Setting>
<Option SelectedID="normal">
<Item Key="reverse">reverse</Item>
<Item Key="normal">normal</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::HistoryTypes###000-Framework" Required="1" Valid="1">
<Description Translatable="1">Controls how to display the ticket history entries as readable values.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewHistory</SubGroup>
<Setting>
<Hash>
<Item Key="AddNote" Translatable="1">Added note (%s)</Item>
<Item Key="ArchiveFlagUpdate" Translatable="1">Archive state changed: "%s"</Item>
<Item Key="Bounce" Translatable="1">Bounced to "%s".</Item>
<Item Key="CustomerUpdate" Translatable="1">Updated: %s</Item>
<Item Key="EmailAgent" Translatable="1">Email sent to customer.</Item>
<Item Key="EmailCustomer" Translatable="1">Added email. %s</Item>
<Item Key="EscalationResponseTimeNotifyBefore" Translatable="1">Escalation response time forewarned</Item>
<Item Key="EscalationResponseTimeStart" Translatable="1">Escalation response time in effect</Item>
<Item Key="EscalationResponseTimeStop" Translatable="1">Escalation response time finished</Item>
<Item Key="EscalationSolutionTimeNotifyBefore" Translatable="1">Escalation solution time forewarned</Item>
<Item Key="EscalationSolutionTimeStart" Translatable="1">Escalation solution time in effect</Item>
<Item Key="EscalationSolutionTimeStop" Translatable="1">Escalation solution time finished</Item>
<Item Key="EscalationUpdateTimeNotifyBefore" Translatable="1">Escalation update time forewarned</Item>
<Item Key="EscalationUpdateTimeStart" Translatable="1">Escalation update time in effect</Item>
<Item Key="EscalationUpdateTimeStop" Translatable="1">Escalation update time finished</Item>
<Item Key="FollowUp" Translatable="1">FollowUp for [%s]. %s</Item>
<Item Key="Forward" Translatable="1">Forwarded to "%s".</Item>
<Item Key="Lock" Translatable="1">Locked ticket.</Item>
<Item Key="LoopProtection" Translatable="1">Loop-Protection! No auto-response sent to "%s".</Item>
<Item Key="Misc" Translatable="1">%s</Item>
<Item Key="Move" Translatable="1">Ticket moved into Queue "%s" (%s) from Queue "%s" (%s).</Item>
<Item Key="NewTicket" Translatable="1">New Ticket [%s] created (Q=%s;P=%s;S=%s).</Item>
<Item Key="OwnerUpdate" Translatable="1">New owner is "%s" (ID=%s).</Item>
<Item Key="PhoneCallAgent" Translatable="1">Agent called customer.</Item>
<Item Key="PhoneCallCustomer" Translatable="1">Customer called us.</Item>
<Item Key="PriorityUpdate" Translatable="1">Changed priority from "%s" (%s) to "%s" (%s).</Item>
<Item Key="Remove" Translatable="1">%s</Item>
<Item Key="ResponsibleUpdate" Translatable="1">New responsible is "%s" (ID=%s).</Item>
<Item Key="SendAgentNotification" Translatable="1">"%s"-notification sent to "%s".</Item>
<Item Key="SendAnswer" Translatable="1">Email sent to "%s".</Item>
<Item Key="SendAutoFollowUp" Translatable="1">AutoFollowUp sent to "%s".</Item>
<Item Key="SendAutoReject" Translatable="1">AutoReject sent to "%s".</Item>
<Item Key="SendAutoReply" Translatable="1">AutoReply sent to "%s".</Item>
<Item Key="SendCustomerNotification" Translatable="1">Notification sent to "%s".</Item>
<Item Key="ServiceUpdate" Translatable="1">Updated Service to %s (ID=%s).</Item>
<Item Key="SetPendingTime" Translatable="1">Updated: %s</Item>
<Item Key="SLAUpdate" Translatable="1">Updated SLA to %s (ID=%s).</Item>
<Item Key="StateUpdate" Translatable="1">Old: "%s" New: "%s"</Item>
<Item Key="Subscribe" Translatable="1">Added subscription for user "%s".</Item>
<Item Key="SystemRequest" Translatable="1">System Request (%s).</Item>
<Item Key="TicketDynamicFieldUpdate" Translatable="1">Updated: %s=%s;%s=%s;%s=%s;</Item>
<Item Key="TicketLinkAdd" Translatable="1">Added link to ticket "%s".</Item>
<Item Key="TicketLinkDelete" Translatable="1">Deleted link to ticket "%s".</Item>
<Item Key="TimeAccounting" Translatable="1">%s time unit(s) accounted. Now total %s time unit(s).</Item>
<Item Key="TitleUpdate" Translatable="1">Title updated: Old: "%s", New: "%s"</Item>
<Item Key="TypeUpdate" Translatable="1">Updated Type to %s (ID=%s).</Item>
<Item Key="Unlock" Translatable="1">Unlocked ticket.</Item>
<Item Key="Unsubscribe" Translatable="1">Removed subscription for user "%s".</Item>
<Item Key="WebRequestCustomer" Translatable="1">Customer request via web.</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::TextAreaEmail" Required="1" Valid="1">
<Description Translatable="1">Permitted width for compose email windows.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">82</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::TextAreaNote" Required="1" Valid="1">
<Description Translatable="1">Permitted width for compose note windows.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">78</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::InformAgentMaxSize" Required="1" Valid="1">
<Description Translatable="1">Max size (in rows) of the informed agents box in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="3">
<Item Key="3">03</Item>
<Item Key="5">05</Item>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::InvolvedAgentMaxSize" Required="1" Valid="1">
<Description Translatable="1">Max size (in rows) of the involved agents box in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="3">
<Item Key="3">03</Item>
<Item Key="5">05</Item>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerInfoCompose" Required="1" Valid="1">
<Description Translatable="1">Shows the customer user information (phone and email) in the compose screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerInfoComposeMaxSize" Required="1" Valid="1">
<Description Translatable="1">Max size (in characters) of the customer information table (phone and email) in the compose screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">22</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerInfoZoom" Required="1" Valid="1">
<Description Translatable="1">Shows the customer user's info in the ticket zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerInfoZoomMaxSize" Required="1" Valid="1">
<Description Translatable="1">Maximum size (in characters) of the customer information table in the ticket zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">22</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::DynamicFieldsZoomMaxSizeSidebar" Required="1" Valid="1">
<Description Translatable="1">Maximum length (in characters) of the dynamic field in the sidebar of the ticket zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">18</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::DynamicFieldsZoomMaxSizeArticle" Required="1" Valid="1">
<Description Translatable="1">Maximum length (in characters) of the dynamic field in the article of the ticket zoom view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">160</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverviewSortable" Required="0" Valid="1">
<Description Translatable="1">Controls if customers have the ability to sort their tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::TicketOverview</SubGroup>
<Setting>
<Option SelectedID="">
<Item Key="">No</Item>
<Item Key="Sortable">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerDisableCompanyTicketAccess" Required="1" Valid="1">
<Description Translatable="1">This option will deny the access to customer company tickets, which are not created by the customer user.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverviewCustomEmptyText" Required="0" Valid="0">
<Description Translatable="1">Custom text for the page shown to customers that have no tickets yet (if you need those text translated add them to a custom translation module).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Hash>
<Item Key="Title">Welcome!</Item>
<Item Key="Text">Please click the button below to create your first ticket.</Item>
<Item Key="Button">Create your first ticket</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverview###ColumnHeader" Required="0" Valid="1">
<Description Translatable="1">Shows either the last customer article's subject or the ticket title in the small format overview.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::TicketOverview</SubGroup>
<Setting>
<Option SelectedID="TicketTitle">
<Item Key="LastCustomerSubject">LastCustomerSubject</Item>
<Item Key="TicketTitle">TicketTitle</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverview###Owner" Required="1" Valid="1">
<Description Translatable="1">Show the current owner in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::TicketOverview</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverview###Queue" Required="1" Valid="1">
<Description Translatable="1">Show the current queue in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::TicketOverview</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketOverview###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket overview screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::TicketOverview</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###StripEmptyLines" Required="1" Valid="1">
<Description Translatable="1">Strips empty lines on the ticket preview in the queue view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###ViewAllPossibleTickets" Required="1" Valid="1">
<Description Translatable="1">Shows all both ro and rw queues in the queue view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###HighlightAge1" Required="1" Valid="1">
<Description Translatable="1">Sets the age in minutes (first level) for highlighting queues that contain untouched tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<String Regex="^[0-9]{1,7}$">1440</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###HighlightAge2" Required="1" Valid="1">
<Description Translatable="1">Sets the age in minutes (second level) for highlighting queues that contain untouched tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<String Regex="^[0-9]{1,7}$">2880</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###Blink" Required="0" Valid="1">
<Description Translatable="1">Activates a blinking mechanism of the queue that contains the oldest ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###QueueSort" Required="0" Valid="0">
<Description Translatable="1">Sorts the tickets (ascendingly or descendingly) when a single queue is selected in the queue view and after the tickets are sorted by priority. Values: 0 = ascending (oldest on top, default), 1 = descending (youngest on top). Use the QueueID for the key and 0 or 1 for value.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Hash>
<Item Key="7">1</Item>
<Item Key="3">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default sort criteria for all queues displayed in the queue view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###PreSort::ByPriority" Required="1" Valid="1">
<Description Translatable="1">Defines if a pre-sorting by priority should be done in the queue view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default sort order for all queues in the queue view, after priority sort.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###StripEmptyLines" Required="1" Valid="1">
<Description Translatable="1">Strips empty lines on the ticket preview in the service view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###ViewAllPossibleTickets" Required="1" Valid="1">
<Description Translatable="1">Shows all both ro and rw tickets in the service view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###ServiceSort" Required="0" Valid="0">
<Description Translatable="1">Sorts the tickets (ascendingly or descendingly) when a single queue is selected in the service view and after the tickets are sorted by priority. Values: 0 = ascending (oldest on top, default), 1 = descending (youngest on top). Use the ServiceID for the key and 0 or 1 for value.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Hash>
<Item Key="7">1</Item>
<Item Key="3">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default sort criteria for all services displayed in the service view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###PreSort::ByPriority" Required="1" Valid="1">
<Description Translatable="1">Defines if a pre-sorting by priority should be done in the service view.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default sort order for all services in the service view, after priority sort.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewService</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AccountTime" Required="1" Valid="1">
<Description Translatable="1">Activates time accounting.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::TimeUnits" Required="1" Valid="1">
<Description Translatable="1">Sets the prefered time units (e.g. work units, hours, minutes).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex=""> (work units)</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NeedAccountedTime" Required="1" Valid="1">
<Description Translatable="1">Defines if time accounting is mandatory in the agent interface. If activated, a note must be entered for all ticket actions (no matter if the note itself is configured as active or is originally mandatory for the individual ticket action screen).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::BulkAccountedTime" Required="1" Valid="1">
<Description Translatable="1">Defines if time accounting must be set to all tickets in bulk action.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NeedSpellCheck" Required="1" Valid="1">
<Description Translatable="1">Defines if composed messages have to be spell checked in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketStatusView###ViewableTicketsPage" Required="1" Valid="1">
<Description Translatable="1">Shows all open tickets (even if they are locked) in the status view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewStatus</SubGroup>
<Setting>
<String Regex="">50</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketStatusView###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in the status view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewStatus</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketStatusView###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order (after priority sort) in the status view of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewStatus</SubGroup>
<Setting>
<Option SelectedID="Down">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEscalationView###TicketPermission" Required="1" Valid="1">
<Description Translatable="1">Defines the required permission to show a ticket in the escalation view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEscalation</SubGroup>
<Setting>
<Option SelectedID="rw">
<Item Key="rw">RW</Item>
<Item Key="ro">RO</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEscalationView###ViewableTicketsPage" Required="1" Valid="1">
<Description Translatable="1">Shows all open tickets (even if they are locked) in the escalation view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEscalation</SubGroup>
<Setting>
<String Regex="">50</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEscalationView###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in the escalation view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEscalation</SubGroup>
<Setting>
<Option SelectedID="EscalationTime">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEscalationView###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order (after priority sort) in the escalation view of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEscalation</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###ExtendedSearchCondition" Required="1" Valid="1">
<Description Translatable="1">Allows extended search conditions in ticket search of the agent interface. With this feature you can search e. g. with this kind of conditions like "(key1&&key2)" or "(key1||key2)".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchLimit" Required="1" Valid="1">
<Description Translatable="1">Maximum number of tickets to be displayed in the result of a search in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String Regex="^[0-9]{1,8}$">2000</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchPageShown" Required="1" Valid="1">
<Description Translatable="1">Number of tickets to be displayed in each page of a search result in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String Regex="">40</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchViewableTicketLines" Required="1" Valid="1">
<Description Translatable="1">Number of lines (per ticket) that are shown by the search utility in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String Regex="">10</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting of the ticket search result of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order in the ticket search result of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="Down">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchArticleCSVTree" Required="1" Valid="1">
<Description Translatable="1">Exports the whole article tree in search result (it can affect the system performance).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchCSVData" Required="1" Valid="1">
<Description Translatable="1">Data used to export the search result in CSV format.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Array>
<Item Translatable="1">TicketNumber</Item>
<Item Translatable="1">Age</Item>
<Item Translatable="1">Created</Item>
<Item Translatable="1">Closed</Item>
<Item Translatable="1">FirstLock</Item>
<Item Translatable="1">FirstResponse</Item>
<Item Translatable="1">State</Item>
<Item Translatable="1">Priority</Item>
<Item Translatable="1">Queue</Item>
<Item Translatable="1">Lock</Item>
<Item Translatable="1">Owner</Item>
<Item Translatable="1">UserFirstname</Item>
<Item Translatable="1">UserLastname</Item>
<Item Translatable="1">CustomerID</Item>
<Item Translatable="1">CustomerName</Item>
<Item Translatable="1">From</Item>
<Item Translatable="1">Subject</Item>
<Item Translatable="1">AccountedTime</Item>
<Item Translatable="1">ArticleTree</Item>
<Item Translatable="1">SolutionInMin</Item>
<Item Translatable="1">SolutionDiffInMin</Item>
<Item Translatable="1">FirstResponseInMin</Item>
<Item Translatable="1">FirstResponseDiffInMin</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###ArticleCreateTime" Required="0" Valid="1">
<Description Translatable="1">Includes article create times in the ticket search of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###Fulltext" Required="0" Valid="1">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketNumber" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###Title" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###From" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###To" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###Cc" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###Subject" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###Body" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###CustomerID" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###CustomerUserLogin" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###StateIDs" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Array></Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###QueueIDs" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Array></Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketCreateTimePoint" Required="0" Valid="0">
<Description Translatable="1">Default data to use on attribute for ticket search screen. Example: "TicketCreateTimePointFormat=year;TicketCreateTimePointStart=Last;TicketCreateTimePoint=2;".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketCreateTimeSlot" Required="0" Valid="0">
<Description Translatable="1">Default data to use on attribute for ticket search screen. Example: "TicketCreateTimeStartYear=2010;TicketCreateTimeStartMonth=10;TicketCreateTimeStartDay=4;TicketCreateTimeStopYear=2010;TicketCreateTimeStopMonth=11;TicketCreateTimeStopDay=3;".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketChangeTimePoint" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketChangeTimeSlot" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketCloseTimePoint" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketCloseTimeSlot" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketEscalationTimePoint" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###TicketEscalationTimeSlot" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###ArticleCreateTimePoint" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###ArticleCreateTimeSlot" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###SearchInArchive" Required="0" Valid="0">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<String></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Search###Ticket" Required="0" Valid="1">
<Description Translatable="1">Search backend router.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::SearchRouter</SubGroup>
<Setting>
<Hash>
<Item Key="^AgentTicket">Action=AgentTicketSearch;Subaction=AJAX</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketLockedView###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in the locked ticket view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewLocked</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketLockedView###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order in the ticket locked view of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewLocked</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsibleView###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in the responsible view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsibleView###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order in the responsible view of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketWatchView###SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in the watch view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewWatch</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketWatchView###Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order in the watch view of the agent interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewWatch</SubGroup>
<Setting>
<Option SelectedID="Up">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket free text screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="">rw</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket free text screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket free text screen of the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket free text screen of the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket free text screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of a ticket in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###StateDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket free text screen of the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Subject" Required="0" Valid="1">
<Description Translatable="1">Defines the default subject of a note in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="">[% Translate("Note") | html %]</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Body" Required="0" Valid="1">
<Description Translatable="1">Defines the default body of a note in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">1</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket free text screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket free text screen action, which gets used for ticket history.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket free text screen action, which gets used for ticket history.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="">%%FreeText</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket phone outbound screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="">phone</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket phone outbound screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="">phone</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###SenderType" Required="1" Valid="1">
<Description Translatable="1">Defines the default sender type for phone tickets in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="">agent</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###Subject" Required="1" Valid="1">
<Description Translatable="1">Defines the default subject for phone tickets in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="">[% Translate("Phone call") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###Body" Required="1" Valid="1">
<Description Translatable="1">Defines the default note body text for phone tickets in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###State" Required="0" Valid="1">
<Description Translatable="1">Defines the default ticket next state after adding a phone note in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">closed successful</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###StateType" Required="1" Valid="1">
<Description Translatable="1">Next possible ticket states after adding a phone note in the ticket phone outbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending auto</Item>
<Item>pending reminder</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the history type for the ticket phone outbound screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="">PhoneCallAgent</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket phone outbound screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket phone inbound screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="">phone</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket phone inbound screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="">phone</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###SenderType" Required="1" Valid="1">
<Description Translatable="1">Defines the default sender type for phone tickets in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="">customer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###Subject" Required="1" Valid="1">
<Description Translatable="1">Defines the default subject for phone tickets in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="">[% Translate("Phone call") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###Body" Required="1" Valid="1">
<Description Translatable="1">Defines the default note body text for phone tickets in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###State" Required="0" Valid="1">
<Description Translatable="1">Defines the default ticket next state after adding a phone note in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###StateType" Required="1" Valid="1">
<Description Translatable="1">Next possible ticket states after adding a phone note in the ticket phone inbound screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending auto</Item>
<Item>pending reminder</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the history type for the ticket phone inbound screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="">PhoneCallCustomer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket phone inbound screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NewOwnerSelection" Required="1" Valid="1">
<Description Translatable="1">Shows an owner selection in phone and email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NewResponsibleSelection" Required="1" Valid="1">
<Description Translatable="1">Show a responsible selection in phone and email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NewQueueSelectionType" Required="1" Valid="1">
<Description Translatable="1">Defines the receipent target of the phone ticket and the sender of the email ticket ("Queue" shows all queues, "SystemAddress" displays all system addresses) in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="Queue">
<Item Key="Queue">Queue</Item>
<Item Key="SystemAddress">SystemAddress</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NewQueueSelectionString" Required="1" Valid="1">
<Description Translatable="1">Determines the strings that will be shown as receipent (To:) of the phone ticket and as sender (From:) of the email ticket in the agent interface. For Queue as NewQueueSelectionType "<Queue>" shows the names of the queues and for SystemAddress "<Realname> <<Email>>" shows the name and email of the receipent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex=""><Queue></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::NewQueueOwnSelection" Required="0" Valid="0">
<Description Translatable="1">Determines which options will be valid of the recepient (phone ticket) and the sender (email ticket) in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Hash>
<Item Key="1">First Queue!</Item>
<Item Key="2">Second Queue!</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ShowCustomerTickets" Required="1" Valid="1">
<Description Translatable="1">Shows customer history tickets in Fatin, AgentTicketEmail and AgentTicketCustomer.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="NewTicketInNewWindow::Enabled" Required="1" Valid="1">
<Description Translatable="1">If enabled, TicketPhone and TicketEmail will be open in new windows.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###Priority" Required="1" Valid="1">
<Description Translatable="1">Sets the default priority for new phone tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Sets the default article type for new phone tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex="">phone</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###SenderType" Required="1" Valid="1">
<Description Translatable="1">Sets the default sender type for new phone ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex="">customer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin::AllowMultipleFrom" Required="1" Valid="1">
<Description Translatable="1">Controls if more than one from entry can be set in the new phone ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###Subject" Required="1" Valid="1">
<Description Translatable="1">Sets the default subject for new phone tickets (e.g. 'Phone call') in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###Body" Required="1" Valid="1">
<Description Translatable="1">Sets the default note text for new telephone tickets. E.g 'New ticket via call' in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###StateDefault" Required="1" Valid="1">
<Description Translatable="1">Sets the default next state for new phone tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###StateType" Required="1" Valid="1">
<Description Translatable="1">Determines the next possible ticket states, after the creation of a new phone ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending auto</Item>
<Item>pending reminder</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the history type for the phone ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex="">PhoneCallCustomer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Defines the history comment for the phone ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###SplitLinkType" Required="0" Valid="1">
<Description Translatable="1">Sets the default link type of splitted tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Hash>
<Item Key="LinkType">ParentChild</Item>
<Item Key="Direction">Target</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###Priority" Required="1" Valid="1">
<Description Translatable="1">Sets the default priority for new email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Sets the default article type for new email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex="">email-external</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###SenderType" Required="1" Valid="1">
<Description Translatable="1">Sets the default sender type for new email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex="">agent</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###Subject" Required="1" Valid="1">
<Description Translatable="1">Sets the default subject for new email tickets (e.g. 'email Outbound') in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###Body" Required="1" Valid="1">
<Description Translatable="1">Sets the default text for new email tickets in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###StateDefault" Required="1" Valid="1">
<Description Translatable="1">Sets the default next ticket state, after the creation of an email ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###StateType" Required="1" Valid="1">
<Description Translatable="1">Determines the next possible ticket states, after the creation of a new email ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending auto</Item>
<Item>pending reminder</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the history type for the email ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex="">EmailAgent</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Defines the history comment for the email ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the close ticket screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="">close</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the close ticket screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the close ticket screen of the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the close ticket screen of the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket close screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of a ticket in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Array>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">closed successful</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the close ticket screen of the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="">[% Translate("Close") | html %]</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">0</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the close ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the close ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the close ticket screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="">%%Close</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket note screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="">note</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket note screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket note screen of the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket note screen of the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket note screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of a ticket in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###StateDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket note screen of the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="">[% Translate("Note") | html %]</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">1</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket note screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket note screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket note screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="">%%Note</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="">owner</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket owner screen of a zoomed ticket in the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket owner screen of a zoomed ticket in the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket owner screen of a zoomed ticket in the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of the ticket in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket owner screen of a zoomed ticket in the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="">[% Translate("Owner Update") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">0</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket owner screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket owner screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket owner screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="">%%Owner</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="">pending</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket pending screen of a zoomed ticket in the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket pending screen of a zoomed ticket in the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket pending screen of a zoomed ticket in the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of the ticket in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Array>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">pending reminder</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket pending screen of a zoomed ticket in the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="">[% Translate("Pending") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">0</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket pending screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket pending screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket pending screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="">%%Pending</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="">priority</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket priority screen of a zoomed ticket in the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket priority screen of a zoomed ticket in the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket priority screen of a zoomed ticket in the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of the ticket in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket priority screen of a zoomed ticket in the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="">[% Translate("Priority Update") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">0</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Priority" Required="0" Valid="1">
<Description Translatable="1">Shows the ticket priority options in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket priority screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket priority screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket priority screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="">%%Priority</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket responsible screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="">responsible</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket responsible screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket responsible screen of the agent interface (Ticket::Type needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Service" Required="0" Valid="1">
<Description Translatable="1">Sets the service in the ticket responsible screen of the agent interface (Ticket::Service needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Queue" Required="0" Valid="1">
<Description Translatable="1">Sets the queue in the ticket responsible screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###OwnerMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if ticket owner must be selected by the agent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of a ticket in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket responsible screen of the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="">[% Translate("Responsible Update") | html %]!</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###InvolvedAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the involved agents on this ticket, in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###InformAgent" Required="0" Valid="0">
<Description Translatable="1">Shows a list of all the possible agents (all agents with note permissions on the queue/ticket) to determine who should be informed about this note, in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the available note types for this ticket mask. If the option is deselected, ArticleTypeDefault is used and the option is removed from the mask.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">0</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###Title" Required="0" Valid="1">
<Description Translatable="1">Shows the title fields in the ticket responsible screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###HistoryType" Required="0" Valid="1">
<Description Translatable="1">Defines the history type for the ticket responsible screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="">AddNote</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###HistoryComment" Required="0" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket responsible screen action, which gets used for ticket history in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="">%%Responsible</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Automatically lock and set owner to current Agent after selecting for an Bulk Action.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###TicketType" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket type in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###Owner" Required="0" Valid="1">
<Description Translatable="1">Sets the ticket owner in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###Responsible" Required="0" Valid="1">
<Description Translatable="1">Sets the responsible agent of the ticket in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###State" Required="0" Valid="1">
<Description Translatable="1">If a note is added by an agent, sets the state of a ticket in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after adding a note, in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###StateDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default next state of a ticket after adding a note, in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###Priority" Required="0" Valid="1">
<Description Translatable="1">Shows the ticket priority options in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###PriorityDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket priority in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket bulk screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<String Regex="">note-internal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBulk###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the different note types that will be used in the system.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBulk</SubGroup>
<Setting>
<Hash>
<Item Key="note-internal">1</Item>
<Item Key="note-external">1</Item>
<Item Key="note-report">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MoveType" Required="1" Valid="1">
<Description Translatable="1">Determines if the list of possible queues to move to ticket into should be displayed in a dropdown list or in a new window in the agent interface. If "New Window" is set you can add a move note to the ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="form">
<Item Key="link">New Window</Item>
<Item Key="form">Dropdown</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Automatically lock and set owner to current Agent after opening the move ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###State" Required="0" Valid="1">
<Description Translatable="1">Allows to set a new ticket state in the move ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after being moved to another queue, in the move ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###Priority" Required="0" Valid="0">
<Description Translatable="1">Shows the ticket priority options in the move ticket screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###Note" Required="0" Valid="1">
<Description Translatable="1">Allows adding notes in the ticket free text screen of the agent interface. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###NoteMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if note must be filled in by the agent. Can be overwritten by Ticket::Frontend::NeedAccountedTime.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBounce###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket bounce screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBounce</SubGroup>
<Setting>
<String Regex="">bounce</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBounce###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket bounce screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBounce</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBounce###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after being bounced, in the ticket bounce screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBounce</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">closed successful</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketBounce###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next state of a ticket after being bounced, in the ticket bounce screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBounce</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::BounceText" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket bounced notification for customer/sender in the ticket bounce screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewBounce</SubGroup>
<Setting>
<TextArea>Your email with ticket number "<OTRS_TICKET>" is bounced to "<OTRS_BOUNCE_TO>". Contact this address for further information.</TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket compose screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<String Regex="">compose</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket compose screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket if it is composed / answered in the ticket compose screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next possible states after composing / answering a ticket in the ticket compose screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
<Item>pending auto</Item>
<Item>pending reminder</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the different article types that will be used in the system.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Array>
<Item>email-external</Item>
<Item>email-internal</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ResponseFormat" Required="1" Valid="1">
<Description Translatable="1">Defines the format of responses in the ticket compose screen of the agent interface ([% Data.OrigFrom | html %] is From 1:1, [% Data.OrigFromName | html %] is only realname of From).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<TextArea>[% Data.Salutation | html %]
[% Data.StdResponse | html %]
[% Data.Signature | html %]
[% Data.Created | Localize("TimeShort") %] - [% Data.OrigFromName | html %] [% Translate("wrote") | html %]:
[% Data.Body | html %]
</TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Quote" Required="0" Valid="1">
<Description Translatable="1">Defines the used character for plaintext email quotes in the ticket compose screen of the agent interface. If this is empty or inactive, original emails will not be quoted but appended to the response.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<String Regex="">></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ComposeAddCustomerAddress" Required="1" Valid="1">
<Description Translatable="1">Adds customers email addresses to recipients in the ticket compose screen of the agent interface. The customers email address won't be added if the article type is email-internal.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ComposeReplaceSenderAddress" Required="1" Valid="1">
<Description Translatable="1">Replaces the original sender with current customer's email address on compose answer in the ticket compose screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ComposeExcludeCcRecipients" Required="1" Valid="1">
<Description Translatable="1">Uses Cc recipients in reply Cc list on compose an email answer in the ticket compose screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket forward screen in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<String Regex="">forward</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket forward screen of the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###StateDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default next state of a ticket after being forwarded, in the ticket forward screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">closed successful</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###StateType" Required="0" Valid="1">
<Description Translatable="1">Defines the next possible states after forwarding a ticket in the ticket forward screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###ArticleTypeDefault" Required="0" Valid="1">
<Description Translatable="1">Defines the default type of forwarded message in the ticket forward screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<String Regex="">email-external</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###ArticleTypes" Required="0" Valid="1">
<Description Translatable="1">Specifies the different article types that will be used in the system.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<Array>
<Item>email-external</Item>
<Item>email-internal</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMerge###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to use the ticket merge screen of a zoomed ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<String Regex="">rw</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMerge###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required in the ticket merge screen of a zoomed ticket in the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCustomer###Permission" Required="1" Valid="1">
<Description Translatable="1">Required permissions to change the customer of a ticket in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCustomer</SubGroup>
<Setting>
<String Regex="">customer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCustomer###RequiredLock" Required="0" Valid="1">
<Description Translatable="1">Defines if a ticket lock is required to change the customer of a ticket in the agent interface (if the ticket isn't locked yet, the ticket gets locked and the current agent will be set automatically as its owner).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCustomer</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MergeText" Required="1" Valid="1">
<Description Translatable="1">When tickets are merged, the customer can be informed per email by setting the check box "Inform Sender". In this text area, you can define a pre-formatted text which can later be modified by the agents.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<TextArea>Your email with ticket number "<OTRS_TICKET>" is merged to "<OTRS_MERGE_TO_TICKET>".</TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AutomaticMergeSubject" Required="1" Valid="1">
<Description Translatable="1">When tickets are merged, a note will be added automatically to the ticket which is no longer active. Here you can define the subject of this note (this subject cannot be changed by the agent).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<String Regex="">Ticket Merged</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AutomaticMergeText" Required="1" Valid="1">
<Description Translatable="1">When tickets are merged, a note will be added automatically to the ticket which is no longer active. Here you can define the body of this note (this text cannot be changed by the agent).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<TextArea>Merged Ticket <OTRS_TICKET> to <OTRS_MERGE_TO_TICKET>.</TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ViewableSenderTypes" Required="1" Valid="1">
<Description Translatable="1">Defines the default viewable sender types of a ticket (default: customer).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>'customer'</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ViewableLocks" Required="1" Valid="1">
<Description Translatable="1">Defines the viewable locks of a ticket. Default: unlock, tmp_lock.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>'unlock'</Item>
<Item>'tmp_lock'</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::ViewableStateType" Required="1" Valid="1">
<Description Translatable="1">Defines the valid state types for a ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>new</Item>
<Item>open</Item>
<Item>pending reminder</Item>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::UnlockStateType" Required="1" Valid="1">
<Description Translatable="1">Defines the valid states for unlocked tickets. To unlock tickets the script "bin/otrs.UnlockTickets.pl" can be used.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>new</Item>
<Item>open</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::PendingNotificationOnlyToOwner" Required="1" Valid="1">
<Description Translatable="1">Sends reminder notifications of unlocked ticket after reaching the reminder date (only sent to ticket owner).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::PendingNotificationNotToResponsible" Required="1" Valid="1">
<Description Translatable="1">Disables sending reminder notifications to the responsible agent of a ticket (Ticket::Responsible needs to be activated).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::PendingReminderStateType" Required="1" Valid="1">
<Description Translatable="1">Defines the state type of the reminder for pending tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>pending reminder</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::PendingAutoStateType" Required="1" Valid="1">
<Description Translatable="1">Determines the possible states for pending tickets that changed state after reaching time limit.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>pending auto</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::StateAfterPending" Required="1" Valid="1">
<Description Translatable="1">Defines which states should be set automatically (Content), after the pending time of state (Key) has been reached.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<Hash>
<Item Key="pending auto close+">closed successful</Item>
<Item Key="pending auto close-">closed unsuccessful</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerDBLink" Required="1" Valid="1">
<Description Translatable="1">Defines an external link to the database of the customer (e.g. 'http://yourhost/customer.php?CID=[% Data.CustomerID %]' or '').</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<!--
<String Regex="">[% Env("CGIHandle") %]?Action=AgentTicketCustomer;TicketID=[% Data.TicketID | html %]</String>
-->
<String Regex="">[% Env("CGIHandle") %]?Action=AgentCustomerInformationCenter;CustomerID=[% Data.CustomerID | uri %]</String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerDBLinkTarget" Required="1" Valid="1">
<Description Translatable="1">Defines the target attribute in the link to external customer database. E.g. 'target="cdb"'.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerDBLinkClass" Required="1" Valid="1">
<Description Translatable="1">Defines the target attribute in the link to external customer database. E.g. 'AsPopup PopupType_TicketAction'.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###1-Ticket::AgentTicketQueue" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">Queue view</Item>
<Item Key="Link">Action=AgentTicketQueue</Item>
<Item Key="Action">AgentTicketQueue</Item>
<Item Key="AccessKey">q</Item>
<Item Key="CssClass">QueueView</Item>
<Item Key="Icon">fa fa-folder</Item>
<Item Key="Priority">1010010</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###2-Ticket::AgentTicketStatus" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">Status view</Item>
<Item Key="Link">Action=AgentTicketStatusView</Item>
<Item Key="Action">AgentTicketStatusView</Item>
<Item Key="AccessKey">S</Item>
<Item Key="CssClass">StatusView</Item>
<Item Key="Icon">fa fa-list-ol</Item>
<Item Key="Priority">1010020</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###3-Ticket::AgentTicketEscalation" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">Escalation view</Item>
<Item Key="Link">Action=AgentTicketEscalationView</Item>
<Item Key="Action">AgentTicketEscalationView</Item>
<Item Key="AccessKey">w</Item>
<Item Key="CssClass">EscalationView</Item>
<Item Key="Icon">fa fa-exclamation</Item>
<Item Key="Priority">1010030</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###4-Ticket::Fatin" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">New phone ticket</Item>
<Item Key="Link">Action=Fatin</Item>
<Item Key="Action">Fatin</Item>
<Item Key="AccessKey"></Item>
<Item Key="CssClass">PhoneTicket</Item>
<Item Key="Icon">fa fa-phone</Item>
<Item Key="Priority">1020010</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###5-Ticket::AgentTicketEmail" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">New email ticket</Item>
<Item Key="Link">Action=AgentTicketEmail</Item>
<Item Key="Action">AgentTicketEmail</Item>
<Item Key="AccessKey"></Item>
<Item Key="CssClass">EmailTicket</Item>
<Item Key="Icon">fa fa-envelope</Item>
<Item Key="Priority">1020020</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###6-Ticket::AgentTicketProcess" Required="0" Valid="0">
<Description Translatable="1">Toolbar Item for a shortcut.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarLink</Item>
<Item Key="Name">New process ticket</Item>
<Item Key="Link">Action=AgentTicketProcess</Item>
<Item Key="Action">AgentTicketProcess</Item>
<Item Key="AccessKey">p</Item>
<Item Key="CssClass">ProcessTicket</Item>
<Item Key="Icon">fa fa-th-large</Item>
<Item Key="Priority">1020030</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###6-Ticket::TicketResponsible" Required="0" Valid="1">
<Description Translatable="1">Agent interface notification module to see the number of tickets an agent is responsible for.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarTicketResponsible</Item>
<Item Key="CssClass">Responsible</Item>
<Item Key="CssClassNew">Responsible New</Item>
<Item Key="CssClassReached">Responsible Reached</Item>
<Item Key="Icon">fa fa-user</Item>
<Item Key="IconNew">fa fa-user</Item>
<Item Key="IconReached">fa fa-user</Item>
<Item Key="AccessKey">r</Item>
<Item Key="AccessKeyNew"></Item>
<Item Key="AccessKeyReached"></Item>
<Item Key="Priority">1030010</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###7-Ticket::TicketWatcher" Required="0" Valid="1">
<Description Translatable="1">Agent interface notification module to see the number of watched tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarTicketWatcher</Item>
<Item Key="CssClass">Watcher</Item>
<Item Key="CssClassNew">Watcher New</Item>
<Item Key="CssClassReached">Watcher Reached</Item>
<Item Key="Icon">fa fa-eye</Item>
<Item Key="IconNew">fa fa-eye</Item>
<Item Key="IconReached">fa fa-eye</Item>
<Item Key="AccessKey"></Item>
<Item Key="AccessKeyNew"></Item>
<Item Key="AccessKeyReached"></Item>
<Item Key="Priority">1030020</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###8-Ticket::TicketLocked" Required="0" Valid="1">
<Description Translatable="1">Agent interface notification module to check the used charset.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarTicketLocked</Item>
<Item Key="CssClass">Locked</Item>
<Item Key="CssClassNew">Locked New</Item>
<Item Key="CssClassReached">Locked Reached</Item>
<Item Key="Icon">fa fa-lock</Item>
<Item Key="IconNew">fa fa-lock</Item>
<Item Key="IconReached">fa fa-lock</Item>
<Item Key="AccessKey">k</Item>
<Item Key="AccessKeyNew"></Item>
<Item Key="AccessKeyReached"></Item>
<Item Key="Priority">1030030</Item>
</Hash>
</Setting>
</ConfigItem>
<!-- TODO: check if the counter is really needed, otherwise the module can be removed and use
the standard link module
-->
<ConfigItem Name="Frontend::ToolBarModule###8-Ticket::AgentTicketService" Required="0" Valid="0">
<Description Translatable="1">Agent interface notification module to see the number of tickets in My Services.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarTicketService</Item>
<Item Key="CssClass">ServiceView</Item>
<Item Key="Icon">fa fa-wrench</Item>
<Item Key="Priority">1030035</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###9-Ticket::TicketSearchProfile" Required="0" Valid="0">
<Description Translatable="1">Agent interface module to access search profiles via nav bar.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarTicketSearchProfile</Item>
<Item Key="Description">Search-Template</Item>
<Item Key="Name">Search-Template</Item>
<Item Key="Block">ToolBarSearchProfile</Item>
<Item Key="MaxWidth">40</Item>
<Item Key="Priority">1990010</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###10-Ticket::TicketSearchFulltext" Required="0" Valid="0">
<Description Translatable="1">Agent interface module to access fulltext search via nav bar.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarGeneric</Item>
<Item Key="Description">Fulltext search</Item>
<Item Key="Name">Fulltext-Search</Item>
<Item Key="Block">ToolBarSearchFulltext</Item>
<Item Key="Size">10</Item>
<Item Key="CSS">Core.Agent.Toolbar.FulltextSearch.css</Item>
<Item Key="Priority">1990020</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###11-CICSearchCustomerID" Required="0" Valid="0">
<Description Translatable="1">Agent interface module to access CIC search via nav bar.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarGeneric</Item>
<Item Key="Description">CustomerID Search</Item>
<Item Key="Name">CustomerID search</Item>
<Item Key="Block">ToolBarCICSearchCustomerID</Item>
<Item Key="Size">10</Item>
<Item Key="CSS">Core.Agent.Toolbar.CICSearch.css</Item>
<Item Key="Priority">1990030</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::ToolBarModule###11-CICSearchCustomerUser" Required="0" Valid="0">
<Description Translatable="1">Agent interface module to access CIC search via nav bar.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ToolBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ToolBarGeneric</Item>
<Item Key="Description">CustomerUser Search</Item>
<Item Key="Name">Customer user search</Item>
<Item Key="Block">ToolBarCICSearchCustomerUser</Item>
<Item Key="Size">10</Item>
<Item Key="CSS">Core.Agent.Toolbar.CICSearch.css</Item>
<Item Key="Priority">1990040</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::HeaderMetaModule###2-TicketSearch" Required="0" Valid="1">
<Description Translatable="1">Module to generate html OpenSearch profile for short ticket search in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleMetaHead</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::HeaderMetaTicketSearch</Item>
<Item Key="Action">AgentTicketSearch</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::NotifyModule###5-Ticket::TicketEscalation" Required="0" Valid="0">
<Description Translatable="1">Module to show notifications and escalations (ShownMax: max. shown escalations, EscalationInMinutes: Show ticket which will escalation in, CacheTime: Cache of calculated escalations in seconds).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleNotify</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::NotificationAgentTicketEscalation</Item>
<Item Key="ShownMax">25</Item>
<Item Key="EscalationInMinutes">120</Item>
<Item Key="CacheTime">40</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CustomerUser::Item###15-OpenTickets" Required="0" Valid="1">
<Description Translatable="1">Customer item (icon) which shows the open tickets of this customer as info block. Setting CustomerUserLogin to 1 searches for tickets based on login name rather than CustomerID.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::CustomerUserGenericTicket</Item>
<Item Key="Attributes">StateType=Open;</Item>
<Item Key="CustomerUserLogin">0</Item>
<Item Key="CSS">Core.Agent.CustomerUser.OpenTicket.css</Item>
<Item Key="CSSClassOpenTicket">OpenTicket</Item>
<Item Key="CSSClassNoOpenTicket">NoOpenTicket</Item>
<Item Key="Target">_blank</Item>
<Item Key="Text" Translatable="1">Open tickets (customer)</Item>
<Item Key="Action">AgentTicketSearch</Item>
<Item Key="Subaction">Search</Item>
<Item Key="IconNameOpenTicket">fa-exclamation-circle</Item>
<Item Key="IconNameNoOpenTicket">fa-check-circle</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CustomerUser::Item###16-OpenTicketsForCustomerUserLogin" Required="0" Valid="0">
<Description Translatable="1">Customer item (icon) which shows the open tickets of this customer as info block. Setting CustomerUserLogin to 1 searches for tickets based on login name rather than CustomerID.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::CustomerUserGenericTicket</Item>
<Item Key="Attributes">StateType=Open;</Item>
<Item Key="CustomerUserLogin">1</Item>
<Item Key="CSS">Core.Agent.CustomerUser.OpenTicket.css</Item>
<Item Key="CSSClassOpenTicket">OpenTicket</Item>
<Item Key="CSSClassNoOpenTicket">NoOpenTicket</Item>
<Item Key="Target">_blank</Item>
<Item Key="Text" Translatable="1">Open tickets (customer user)</Item>
<Item Key="Action">AgentTicketSearch</Item>
<Item Key="Subaction">Search</Item>
<Item Key="IconNameOpenTicket">fa-exclamation-circle</Item>
<Item Key="IconNameNoOpenTicket">fa-check-circle</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CustomerUser::Item###17-ClosedTickets" Required="0" Valid="0">
<Description Translatable="1">Customer item (icon) which shows the closed tickets of this customer as info block. Setting CustomerUserLogin to 1 searches for tickets based on login name rather than CustomerID.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::CustomerUserGenericTicket</Item>
<Item Key="Attributes">StateType=Closed;</Item>
<Item Key="CustomerUserLogin">0</Item>
<Item Key="CSS">Core.Agent.CustomerUser.OpenTicket.css</Item>
<Item Key="CSSClassOpenTicket">OpenTicket</Item>
<Item Key="CSSClassNoOpenTicket">NoOpenTicket</Item>
<Item Key="Target">_blank</Item>
<Item Key="Text" Translatable="1">Closed tickets (customer)</Item>
<Item Key="Action">AgentTicketSearch</Item>
<Item Key="Subaction">Search</Item>
<Item Key="IconNameOpenTicket">fa-power-off</Item>
<Item Key="IconNameNoOpenTicket">fa-power-off</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CustomerUser::Item###18-ClosedTicketsForCustomerUserLogin" Required="0" Valid="0">
<Description Translatable="1">Customer item (icon) which shows the closed tickets of this customer as info block. Setting CustomerUserLogin to 1 searches for tickets based on login name rather than CustomerID.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::CustomerUserGenericTicket</Item>
<Item Key="Attributes">StateType=Closed;</Item>
<Item Key="CustomerUserLogin">1</Item>
<Item Key="CSS">Core.Agent.CustomerUser.OpenTicket.css</Item>
<Item Key="CSSClassOpenTicket">OpenTicket</Item>
<Item Key="CSSClassNoOpenTicket">NoOpenTicket</Item>
<Item Key="Target">_blank</Item>
<Item Key="Text" Translatable="1">Closed tickets (customer user)</Item>
<Item Key="Action">AgentTicketSearch</Item>
<Item Key="Subaction">Search</Item>
<Item Key="IconNameOpenTicket">fa-power-off</Item>
<Item Key="IconNameNoOpenTicket">fa-power-off</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleViewModule###1-PGP" Required="1" Valid="1">
<Description Translatable="1">Agent interface article notification module to check PGP.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleViewModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleCheckPGP</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleViewModule###1-SMIME" Required="1" Valid="1">
<Description Translatable="1">Agent interface module to check incoming emails in the Ticket-Zoom-View if the S/MIME-key is available and true.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleViewModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleCheckSMIME</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticlePreViewModule###1-PGP" Required="1" Valid="1">
<Description Translatable="1">Agent interface article notification module to check PGP.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleViewModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleCheckPGP</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticlePreViewModule###1-SMIME" Required="1" Valid="1">
<Description Translatable="1">Agent interface article notification module to check S/MIME.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleViewModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleCheckSMIME</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleComposeModule###1-SignEmail" Required="1" Valid="1">
<Description Translatable="1">Module to compose signed messages (PGP or S/MIME).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleComposeModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleComposeSign</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleComposeModule###2-CryptEmail" Required="1" Valid="1">
<Description Translatable="1">Module to crypt composed messages (PGP or S/MIME).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleComposeModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleComposeCrypt</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleAttachmentModule###1-Download" Required="1" Valid="1">
<Description Translatable="1">Shows a link to download article attachments in the zoom view of the article in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleAttachmentModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleAttachmentDownload</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ArticleAttachmentModule###2-HTML-Viewer" Required="1" Valid="1">
<Description Translatable="1">Shows a link to access article attachments via a html online viewer in the zoom view of the article in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ArticleAttachmentModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ArticleAttachmentHTMLViewer</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###000-Back" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to go back in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Back</Item>
<Item Key="Description" Translatable="1">Back</Item>
<Item Key="Action"></Item>
<Item Key="Link">[% Env("LastScreenOverview") %];TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###100-Lock" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to lock/unlock tickets in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuLock</Item>
<Item Key="Name">Lock</Item>
<Item Key="Action">AgentTicketLock</Item>
<Item Key="Target"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###200-History" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to access the history of a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">History</Item>
<Item Key="Description" Translatable="1">Show the ticket history</Item>
<Item Key="Action">AgentTicketHistory</Item>
<Item Key="Link">Action=AgentTicketHistory;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketHistory</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###210-Print" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to print a ticket or an article in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Print</Item>
<Item Key="Description" Translatable="1">Print this ticket</Item>
<Item Key="Action">AgentTicketPrint</Item>
<Item Key="Link">Action=AgentTicketPrint;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="LinkParam">target="print"</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###300-Priority" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to see the priority of a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Priority</Item>
<Item Key="Description" Translatable="1">Change the ticket priority</Item>
<Item Key="Action">AgentTicketPriority</Item>
<Item Key="Link">Action=AgentTicketPriority;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###310-FreeText" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to add a free text field in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Free Fields</Item>
<Item Key="Description" Translatable="1">Change the free fields for this ticket</Item>
<Item Key="Action">AgentTicketFreeText</Item>
<Item Key="Link">Action=AgentTicketFreeText;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###320-Link" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu that allows linking a ticket with another object in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Link</Item>
<Item Key="Description" Translatable="1">Link this ticket to other objects</Item>
<Item Key="Action">AgentLinkObject</Item>
<Item Key="Link">Action=AgentLinkObject;SourceObject=Ticket;SourceKey=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###400-Owner" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to see the owner of a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Owner</Item>
<Item Key="Description" Translatable="1">Change the owner for this ticket</Item>
<Item Key="Action">AgentTicketOwner</Item>
<Item Key="Link">Action=AgentTicketOwner;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###410-Responsible" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to see the responsible agent of a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuResponsible</Item>
<Item Key="Name">Responsible</Item>
<Item Key="Description" Translatable="1">Change the responsible person for this ticket</Item>
<Item Key="Action">AgentTicketResponsible</Item>
<Item Key="Link">Action=AgentTicketResponsible;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###420-Customer" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to see the customer who requested the ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Customer</Item>
<Item Key="Description" Translatable="1">Change the customer for this ticket</Item>
<Item Key="Action">AgentTicketCustomer</Item>
<Item Key="Link">Action=AgentTicketCustomer;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###420-Note" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to add a note in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Note</Item>
<Item Key="Description" Translatable="1">Add a note to this ticket</Item>
<Item Key="Action">AgentTicketNote</Item>
<Item Key="Link">Action=AgentTicketNote;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###425-Phone Call Outbound" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to add a note in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Phone Call Outbound</Item>
<Item Key="Description" Translatable="1">Phone Call Outbound</Item>
<Item Key="Action">AgentTicketPhoneOutbound</Item>
<Item Key="Link">Action=AgentTicketPhoneOutbound;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###426-Phone Call Inbound" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to add a note in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Phone Call Inbound</Item>
<Item Key="Description" Translatable="1">Phone Call Inbound</Item>
<Item Key="Action">AgentTicketPhoneInbound</Item>
<Item Key="Link">Action=AgentTicketPhoneInbound;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###430-Merge" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu that allows merging tickets in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Merge</Item>
<Item Key="Description" Translatable="1">Merge into a different ticket</Item>
<Item Key="Action">AgentTicketMerge</Item>
<Item Key="Link">Action=AgentTicketMerge;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###440-Pending" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to set a ticket as pending in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Pending</Item>
<Item Key="Description" Translatable="1">Set this ticket to pending</Item>
<Item Key="Action">AgentTicketPending</Item>
<Item Key="Link">Action=AgentTicketPending;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###448-Watch" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu for subscribing / unsubscribing from a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuTicketWatcher</Item>
<Item Key="Action">AgentTicketWatcher</Item>
<Item Key="Name">Watch</Item>
<Item Key="Target"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###450-Close" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to close a ticket in the ticket zoom view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Close</Item>
<Item Key="Description" Translatable="1">Close this ticket</Item>
<Item Key="Action">AgentTicketClose</Item>
<Item Key="Link">Action=AgentTicketClose;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###460-Delete" Required="0" Valid="0">
<Description Translatable="1">Shows a link in the menu to delete a ticket in the ticket zoom view of the agent interface. Additional access control to show or not show this link can be done by using Key "Group" and Content like "rw:group1;move_into:group2".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Delete</Item>
<Item Key="Action">AgentTicketMove</Item>
<Item Key="Description" Translatable="1">Delete this ticket</Item>
<Item Key="Link">Action=AgentTicketMove;TicketID=[% Data.TicketID %];DestQueue=Delete</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MenuModule###470-Spam" Required="0" Valid="0">
<Description Translatable="1">Shows a link to set a ticket as spam in the ticket zoom view of the agent interface. Additional access control to show or not show this link can be done by using Key "Group" and Content like "rw:group1;move_into:group2".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Spam</Item>
<Item Key="Action">AgentTicketMove</Item>
<Item Key="Description" Translatable="1">Mark as Spam!</Item>
<Item Key="Link">Action=AgentTicketMove;TicketID=[% Data.TicketID %];DestQueue=Delete</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::OverviewMenuModule###001-Sort" Required="0" Valid="1">
<Description Translatable="1">Shows a select of ticket attributes to order the queue view ticket list. The possible selections can be configured via 'TicketOverviewMenuSort###SortAttributes'.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::OverviewMenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketOverviewMenuSort</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="TicketOverviewMenuSort###SortAttributes" Required="0" Valid="1">
<Description Translatable="1">Defines from which ticket attributes the agent can select the result order.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::OverviewMenuModule</SubGroup>
<Setting>
<Hash>
<Item Key="Age">1</Item>
<Item Key="Title">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###100-Lock" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to lock / unlock a ticket in the ticket overviews of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuLock</Item>
<Item Key="Name">Lock</Item>
<Item Key="Action">AgentTicketLock</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###200-Zoom" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to zoom a ticket in the ticket overviews of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Zoom</Item>
<Item Key="Action">AgentTicketZoom</Item>
<Item Key="Description" Translatable="1">Look into a ticket!</Item>
<Item Key="Link">Action=AgentTicketZoom;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###210-History" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to see the history of a ticket in every ticket overview of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">History</Item>
<Item Key="Action">AgentTicketHistory</Item>
<Item Key="Description" Translatable="1">Show the ticket history</Item>
<Item Key="Link">Action=AgentTicketHistory;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketHistory</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###300-Priority" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to set the priority of a ticket in every ticket overview of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Priority</Item>
<Item Key="Action">AgentTicketPriority</Item>
<Item Key="Description" Translatable="1">Change the priority for this ticket</Item>
<Item Key="Link">Action=AgentTicketPriority;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###420-Note" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to add a note to a ticket in every ticket overview of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Note</Item>
<Item Key="Action">AgentTicketNote</Item>
<Item Key="Description" Translatable="1">Add a note to this ticket</Item>
<Item Key="Link">Action=AgentTicketNote;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###440-Close" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to close a ticket in every ticket overview of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Close</Item>
<Item Key="Action">AgentTicketClose</Item>
<Item Key="Description" Translatable="1">Close this ticket</Item>
<Item Key="Link">Action=AgentTicketClose;TicketID=[% Data.TicketID | html %]</Item>
<Item Key="Target"></Item>
<Item Key="PopupType">TicketAction</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###445-Move" Required="0" Valid="1">
<Description Translatable="1">Shows a link in the menu to move a ticket in every ticket overview of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuMove</Item>
<Item Key="Name">Move</Item>
<Item Key="Action">AgentTicketMove</Item>
<Item Key="Description" Translatable="1">Change queue!</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###450-Delete" Required="0" Valid="0">
<Description Translatable="1">Shows a link in the menu to delete a ticket in every ticket overview of the agent interface. Additional access control to show or not show this link can be done by using Key "Group" and Content like "rw:group1;move_into:group2".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Delete</Item>
<Item Key="Action">AgentTicketMove</Item>
<Item Key="Description" Translatable="1">Delete this ticket</Item>
<Item Key="Link">Action=AgentTicketMove;TicketID=[% Data.TicketID %];DestQueue=Delete</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::PreMenuModule###460-Spam" Required="0" Valid="0">
<Description Translatable="1">Shows a link in the menu to set a ticket as spam in every ticket overview of the agent interface. Additional access control to show or not show this link can be done by using Key "Group" and Content like "rw:group1;move_into:group2".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::MenuModulePre</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::TicketMenuGeneric</Item>
<Item Key="Name">Spam</Item>
<Item Key="Action">AgentTicketMove</Item>
<Item Key="Description" Translatable="1">Mark as Spam!</Item>
<Item Key="Link">Action=AgentTicketMove;TicketID=[% Data.TicketID %];DestQueue=Delete</Item>
<Item Key="Target"></Item>
<Item Key="PopupType"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="System::Permission" Required="1" Valid="1">
<Description Translatable="1">Standard available permissions for agents within the application. If more permissions are needed, they can be entered here. Permissions must be defined to be effective. Some other good permissions have also been provided built-in: note, close, pending, customer, freetext, move, compose, responsible, forward, and bounce. Make sure that "rw" is always the last registered permission.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Array>
<Item>ro</Item>
<Item>move_into</Item>
<Item>create</Item>
<Item>note</Item>
<Item>owner</Item>
<Item>priority</Item>
<Item>rw</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Permission###1-OwnerCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check the owner of a ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Permission::OwnerCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Permission###2-ResponsibleCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check the agent responsible of a ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Permission::ResponsibleCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Permission###3-GroupCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check if a user is in a special group. Access is granted, if the user is in the specified group and has ro and rw permissions.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Permission::GroupCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Permission###4-WatcherCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check the watcher agents of a ticket.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Permission::WatcherCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerTicket::Permission###1-GroupCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check the group permissions for the access to customer tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::CustomerPermission::GroupCheck</Item>
<Item Key="Required">1</Item>
<Item Key="Granted">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerTicket::Permission###2-CustomerUserIDCheck" Required="0" Valid="1">
<Description Translatable="1">Grants access, if the customer ID of the ticket matches the customer user's ID and the customer user has group permissions on the queue the ticket is in.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::CustomerPermission::CustomerUserIDCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerTicket::Permission###3-CustomerIDCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check customer permissions.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::CustomerPermission::CustomerIDCheck</Item>
<Item Key="Required">0</Item>
<Item Key="Granted">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::DefineEmailFrom" Required="1" Valid="1">
<Description Translatable="1">Defines how the From field from the emails (sent from answers and email tickets) should look like.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="SystemAddressName">
<Item Key="SystemAddressName">System Address Display Name</Item>
<Item Key="AgentNameSystemAddressName">Agent Name + FromSeparator + System Address Display Name</Item>
<Item Key="AgentName">Agent Name</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::DefineEmailFromSeparator" Required="1" Valid="1">
<Description Translatable="1">Defines the separator between the agents real name and the given queue email address.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<String>via</String>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0100-TicketPendingReminder" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket pending reminder overview of the agent interface . "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Reminder Tickets</Item>
<Item Key="Description">All tickets with a reminder set where the reminder date has been reached</Item>
<Item Key="Attributes">TicketPendingTimeOlderMinutes=1;StateType=pending reminder;SortBy=PendingTime;OrderBy=Down;</Item>
<Item Key="Filter">Locked</Item>
<Item Key="Time">UntilTime</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">rw</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0110-TicketEscalation" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket escalation overview of the agent interface . "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Escalated Tickets</Item>
<Item Key="Description">All escalated tickets</Item>
<Item Key="Attributes">TicketEscalationTimeOlderMinutes=1;SortBy=EscalationTime;OrderBy=Down;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">EscalationTime</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">rw</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0120-TicketNew" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the new tickets overview of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">New Tickets</Item>
<Item Key="Description">All new tickets, these tickets have not been worked on yet</Item>
<Item Key="Attributes">StateType=new;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">Age</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">rw</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0130-TicketOpen" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket pending reminder overview of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Open Tickets / Need to be answered</Item>
<Item Key="Description">All open tickets, these tickets have already been worked on, but need a response</Item>
<Item Key="Attributes">StateType=open;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">Age</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">rw</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0250-TicketStats" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket stats of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketStatsGeneric</Item>
<Item Key="Title">7 Day Stats</Item>
<Item Key="Changed">1</Item>
<Item Key="Closed">1</Item>
<Item Key="Permission">rw</Item>
<Item Key="Block">ContentSmall</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">30</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0260-TicketCalendar" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket calendar of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardCalendar</Item>
<Item Key="Title">Upcoming Events</Item>
<Item Key="Permission">rw</Item>
<Item Key="OwnerOnly"></Item>
<Item Key="Block">ContentSmall</Item>
<Item Key="Limit">6</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTL">2</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0270-TicketQueueOverview" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the queue overview widget of the agent interface. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "QueuePermissionGroup" is not mandatory, queues are only listed if they belong to this permission group if you enable it. "States" is a list of states, the key is the sort order of the state in the widget. "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketQueueOverview</Item>
<Item Key="Title" Translatable="1">Ticket Queue Overview</Item>
<Item Key="Description" Translatable="1">Provides a matrix overview of the tickets per state per queue.</Item>
<Item Key="Permission">rw</Item>
<Item Key="QueuePermissionGroup">users</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="Sort">SortBy=Age;OrderBy=Up</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="States">
<Hash>
<Item Key="1">new</Item>
<Item Key="4">open</Item>
<Item Key="6">pending reminder</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardBackend###0280-DashboardEventsTicketCalendar" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket stats of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardEventsTicketCalendar</Item>
<Item Key="Title" Translatable="1">Events Ticket Calendar</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">0</Item>
<Item Key="CacheTTL">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar###CalendarWidth" Required="1" Valid="1">
<Description Translatable="1">Defines the calendar width in percent. Default is 95%.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<String Regex="^\d+$">95</String>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar###Queues" Required="1" Valid="1">
<Description Translatable="1">Defines queues that's tickets are used for displaying as calendar events.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<Array>
<Item>Raw</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar::DynamicFieldStartTime" Required="0" Valid="1">
<Description Translatable="1">Define dynamic field name for start time. This field has to be manually added to the system as Ticket: "Date / Time" and must be activated in ticket creation screens and/or in any other ticket action screens.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<String>TicketCalendarStartTime</String>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar::DynamicFieldEndTime" Required="0" Valid="1">
<Description Translatable="1">Define dynamic field name for end time. This field has to be manually added to the system as Ticket: "Date / Time" and must be activated in ticket creation screens and/or in any other ticket action screens.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<String>TicketCalendarEndTime</String>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar::DynamicFieldsForEvents" Required="1" Valid="1">
<Description Translatable="1">Defines the dynamic fields that are used for displaying on calendar events.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<Array>
<Item>TicketCalendarStartTime</Item>
<Item>TicketCalendarEndTime</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="DashboardEventsTicketCalendar::TicketFieldsForEvents" Required="1" Valid="1">
<Description Translatable="1">Defines the ticket fields that are going to be displayed calendar events. The "Key" defines the field or ticket attribute and the "Content" defines the display name.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::EventsTicketCalendar</SubGroup>
<Setting>
<Hash>
<Item Key="CustomerID">Customer ID</Item>
<Item Key="CustomerUserID">Customer user</Item>
<Item Key="Priority">Priority</Item>
<Item Key="Queue">Queue</Item>
<Item Key="SLA">SLA</Item>
<Item Key="Service">Service</Item>
<Item Key="State">State</Item>
<Item Key="Title">Title</Item>
<Item Key="Type">Type</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="OnlyValuesOnTicket" Required="1" Valid="1">
<Description Translatable="1">Defines if the list for filters should be retrieve just from current tickets in system. Just for clarification, Customers list will always came from system's tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard::TicketFilters</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0050-CIC-CustomerUserList" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the customer user list overview of the agent interface . "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Framework</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardCustomerUserList</Item>
<Item Key="Title" Translatable="1">Customer Users</Item>
<Item Key="Description" Translatable="1">All customer users of a CustomerID</Item>
<Item Key="Attributes"></Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket pending reminder overview of the agent interface . "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Reminder Tickets</Item>
<Item Key="Description">All tickets with a reminder set where the reminder date has been reached</Item>
<Item Key="Attributes">TicketPendingTimeOlderMinutes=1;StateType=pending reminder;SortBy=PendingTime;OrderBy=Down;</Item>
<Item Key="Filter">Locked</Item>
<Item Key="Time">UntilTime</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket escalation overview of the agent interface . "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Escalated Tickets</Item>
<Item Key="Description">All escalated tickets</Item>
<Item Key="Attributes">TicketEscalationTimeOlderMinutes=1;SortBy=EscalationTime;OrderBy=Down;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">EscalationTime</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the new tickets overview of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">New Tickets</Item>
<Item Key="Description">All new tickets, these tickets have not been worked on yet</Item>
<Item Key="Attributes">StateType=new;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">Age</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the ticket pending reminder overview of the agent interface. "Limit" is the number of entries shown by default. "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed for DefaultColumns. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardTicketGeneric</Item>
<Item Key="Title">Open Tickets / Need to be answered</Item>
<Item Key="Description">All open tickets, these tickets have already been worked on, but need a response</Item>
<Item Key="Attributes">StateType=open;</Item>
<Item Key="Filter">All</Item>
<Item Key="Time">Age</Item>
<Item Key="Limit">10</Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentLarge</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
<Item Key="DefaultColumns">
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">1</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">1</Item>
<Item Key="Owner">1</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">1</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">1</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentCustomerInformationCenter::Backend###0500-CIC-CustomerIDStatus" Required="0" Valid="1">
<Description Translatable="1">Parameters for the dashboard backend of the customer id status widget of the agent interface . "Group" is used to restrict the access to the plugin (e. g. Group: admin;group1;group2;). "Default" determines if the plugin is enabled by default or if the user needs to enable it manually. "CacheTTLLocal" is the cache time in minutes for the plugin.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Dashboard</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::DashboardCustomerIDStatus</Item>
<Item Key="Title" Translatable="1">Company Status</Item>
<Item Key="Description" Translatable="1">Company Status</Item>
<Item Key="Attributes"></Item>
<Item Key="Permission">ro</Item>
<Item Key="Block">ContentSmall</Item>
<Item Key="Group"></Item>
<Item Key="Default">1</Item>
<Item Key="CacheTTLLocal">0.5</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###NewTicketNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the NewTicketNotify object in the preferences view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">New ticket notification</Item>
<Item Key="Desc" Translatable="1">Send me a notification if there is a new ticket in my queues/services.</Item>
<Item Key="Key" Translatable="1">Send new ticket notifications if subscribed to</Item>
<Item Key="Data">
<Hash>
<Item Key="0" Translatable="1">No Notification</Item>
<Item Key="MyQueues" Translatable="1">My Queues</Item>
<Item Key="MyServices" Translatable="1">My Services</Item>
<Item Key="MyQueuesOrMyServices" Translatable="1">My Queues or My Services</Item>
<Item Key="MyQueuesAndMyServices" Translatable="1">My Queues and My Services</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendNewTicketNotification</Item>
<Item Key="Prio">1000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###FollowUpNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the FollowUpNotify object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">Ticket follow up notification</Item>
<Item Key="Desc" Translatable="1">Send me a notification if a customer sends a follow up and I'm the owner of the ticket or the ticket is unlocked and is in one of my queues/services.</Item>
<Item Key="Key" Translatable="1">Send ticket follow up notifications if subscribed to</Item>
<Item Key="Data">
<Hash>
<Item Key="0" Translatable="1">No Notification</Item>
<Item Key="MyQueues" Translatable="1">My Queues</Item>
<Item Key="MyServices" Translatable="1">My Services</Item>
<Item Key="MyQueuesOrMyServices" Translatable="1">My Queues or My Services</Item>
<Item Key="MyQueuesAndMyServices" Translatable="1">My Queues and My Services</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendFollowUpNotification</Item>
<Item Key="Prio">2000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###LockTimeoutNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the LockTimeoutNotify object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">Ticket lock timeout notification</Item>
<Item Key="Desc" Translatable="1">Send me a notification if a ticket is unlocked by the system.</Item>
<Item Key="Key" Translatable="1">Send ticket lock timeout notifications</Item>
<Item Key="Data">
<Hash>
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendLockTimeoutNotification</Item>
<Item Key="Prio">3000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###MoveNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the MoveNotify object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">Ticket move notification</Item>
<Item Key="Desc" Translatable="1">Send me a notification if a ticket is moved into one of "My Queues".</Item>
<Item Key="Key" Translatable="1">Send ticket move notifications</Item>
<Item Key="Data">
<Hash>
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendMoveNotification</Item>
<Item Key="Prio">4000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###ServiceUpdateNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the ServiceUpdateNotify object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">Service update notification</Item>
<Item Key="Desc" Translatable="1">Send me a notification if the service of a ticket is changed to a service in "My Services" and the ticket is in a queue where I have read permissions.</Item>
<Item Key="Key" Translatable="1">Send service update notifications</Item>
<Item Key="Data">
<Hash>
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendServiceUpdateNotification</Item>
<Item Key="Prio">4000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###WatcherNotify" Required="0" Valid="1">
<Description Translatable="1">Parameters for the WatcherNotify object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesTicketWatcher</Item>
<Item Key="Column">Email Settings</Item>
<Item Key="Label" Translatable="1">Ticket watch notification</Item>
<Item Key="Desc" Translatable="1">Send me the same notifications for my watched tickets that the ticket owners will get.</Item>
<Item Key="Key" Translatable="1">Send ticket watch notifications</Item>
<Item Key="Data">
<Hash>
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserSendWatcherNotification</Item>
<Item Key="Prio">5000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###CustomQueue" Required="0" Valid="1">
<Description Translatable="1">Parameters for the CustomQueue object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesCustomQueue</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">My Queues</Item>
<Item Key="Desc" Translatable="1">Your queue selection of your favorite queues. You also get notified about those queues via email if enabled.</Item>
<Item Key="Key" Translatable="1">My Queues</Item>
<Item Key="Prio">1000</Item>
<Item Key="Permission">ro</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###CustomService" Required="0" Valid="1">
<Description Translatable="1">Parameters for the CustomService object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesCustomService</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">My Services</Item>
<Item Key="Desc" Translatable="1">Your service selection of your favorite services. You also get notified about those services via email if enabled.</Item>
<Item Key="Key" Translatable="1">My Services</Item>
<Item Key="Prio">1000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###RefreshTime" Required="0" Valid="1">
<Description Translatable="1">Parameters for the RefreshTime object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Overview Refresh Time</Item>
<Item Key="Desc" Translatable="1">If enabled, the different overviews (Dashboard, LockedView, QueueView) will automatically refresh after the specified time.</Item>
<Item Key="Key" Translatable="1">Refresh Overviews after</Item>
<Item Key="Data">
<Hash>
<Item Key="0">off</Item>
<Item Key="2"> 2 minutes</Item>
<Item Key="5"> 5 minutes</Item>
<Item Key="7"> 7 minutes</Item>
<Item Key="10">10 minutes</Item>
<Item Key="15">15 minutes</Item>
</Hash>
</Item>
<Item Key="DataSelected">0</Item>
<Item Key="PrefKey">UserRefreshTime</Item>
<Item Key="Prio">2000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###TicketOverviewSmallPageShown" Required="0" Valid="1">
<Description Translatable="1">Parameters for the pages (in which the tickets are shown) of the small ticket overview.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Ticket Overview "Small" Limit</Item>
<Item Key="Key" Translatable="1">Ticket limit per page for Ticket Overview "Small"</Item>
<Item Key="Data">
<Hash>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
<Item Key="35">35</Item>
</Hash>
</Item>
<Item Key="DataSelected">25</Item>
<Item Key="PrefKey">UserTicketOverviewSmallPageShown</Item>
<Item Key="Prio">8000</Item>
<Item Key="Active">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###TicketOverviewFilterSettings" Required="0" Valid="1">
<Description Translatable="1">Parameters for .</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesColumnFilters</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Enabled filters.</Item>
<Item Key="Key" Translatable="1">Column ticket filters for Ticket Overviews type "Small".</Item>
<Item Key="PrefKey">UserFilterColumnsEnabled</Item>
<Item Key="Prio">8100</Item>
<Item Key="Active">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###TicketOverviewMediumPageShown" Required="0" Valid="1">
<Description Translatable="1">Parameters for the pages (in which the tickets are shown) of the medium ticket overview.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Ticket Overview "Medium" Limit</Item>
<Item Key="Key" Translatable="1">Ticket limit per page for Ticket Overview "Medium"</Item>
<Item Key="Data">
<Hash>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
<Item Key="35">35</Item>
</Hash>
</Item>
<Item Key="DataSelected">20</Item>
<Item Key="PrefKey">UserTicketOverviewMediumPageShown</Item>
<Item Key="Prio">8100</Item>
<Item Key="Active">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###TicketOverviewPreviewPageShown" Required="0" Valid="1">
<Description Translatable="1">Parameters for the pages (in which the tickets are shown) of the ticket preview overview.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Ticket Overview "Preview" Limit</Item>
<Item Key="Key" Translatable="1">Ticket limit per page for Ticket Overview "Preview"</Item>
<Item Key="Data">
<Hash>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
<Item Key="35">35</Item>
</Hash>
</Item>
<Item Key="DataSelected">15</Item>
<Item Key="PrefKey">UserTicketOverviewPreviewPageShown</Item>
<Item Key="Prio">8200</Item>
<Item Key="Active">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###CreateNextMask" Required="0" Valid="1">
<Description Translatable="1">Parameters for the CreateNextMask object in the preference view of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Screen after new ticket</Item>
<Item Key="Key" Translatable="1">Show this screen after I created a new ticket</Item>
<Item Key="Data">
<Hash>
<Item Key="">CreateTicket</Item>
<Item Key="AgentTicketZoom">TicketZoom</Item>
</Hash>
</Item>
<Item Key="DataSelected"></Item>
<Item Key="PrefKey">UserCreateNextMask</Item>
<Item Key="Prio">3000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="QueuePreferences###Comment2" Required="0" Valid="0">
<Description Translatable="1">Parameters of the example queue attribute Comment2.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Queue::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::QueuePreferencesGeneric</Item>
<Item Key="Label">Comment2</Item>
<Item Key="Desc">Define the queue comment 2.</Item>
<Item Key="Block">TextArea</Item>
<Item Key="Cols">50</Item>
<Item Key="Rows">5</Item>
<Item Key="PrefKey">Comment2</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ServicePreferences###Comment2" Required="0" Valid="0">
<Description Translatable="1">Parameters of the example service attribute Comment2.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Service::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::ServicePreferencesGeneric</Item>
<Item Key="Label">Comment2</Item>
<Item Key="Desc">Define the service comment 2.</Item>
<Item Key="Block">TextArea</Item>
<Item Key="Cols">50</Item>
<Item Key="Rows">5</Item>
<Item Key="PrefKey">Comment2</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="SLAPreferences###Comment2" Required="0" Valid="0">
<Description Translatable="1">Parameters of the example SLA attribute Comment2.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::SLA::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::SLAPreferencesGeneric</Item>
<Item Key="Label">Comment2</Item>
<Item Key="Desc">Define the sla comment 2.</Item>
<Item Key="Block">TextArea</Item>
<Item Key="Cols">50</Item>
<Item Key="Rows">5</Item>
<Item Key="PrefKey">Comment2</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerNotifyJustToRealCustomer" Required="1" Valid="1">
<Description Translatable="1">Sends customer notifications just to the mapped customer. Normally, if no customer is mapped, the latest customer sender gets the notification.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="AgentSelfNotifyOnAction" Required="1" Valid="1">
<Description Translatable="1">Specifies if an agent should receive email notification of his own actions.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###NextScreenAfterNewTicket" Required="1" Valid="1">
<Description Translatable="1">Determines the next screen after new customer ticket in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="CustomerTicketOverview">
<Item Key="CustomerTicketOverview">CustomerTicketOverview</Item>
<Item Key="CustomerTicketZoom">CustomerTicketZoom</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###Priority" Required="1" Valid="1">
<Description Translatable="1">Allows customers to set the ticket priority in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###PriorityDefault" Required="1" Valid="1">
<Description Translatable="1">Defines the default priority of new customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###Queue" Required="1" Valid="1">
<Description Translatable="1">Allows customers to set the ticket queue in the customer interface. If this is set to 'No', QueueDefault should be configured.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###QueueDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default queue for new customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::QueueValidate</ValidateModule>
<Setting>
<String Regex="">Postmaster</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###TicketType" Required="1" Valid="1">
<Description Translatable="1">Allows customers to set the ticket type in the customer interface. If this is set to 'No', TicketTypeDefault should be configured.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###TicketTypeDefault" Required="0" Valid="0">
<Description Translatable="1">Defines the default ticket type for new customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex="">default</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###Service" Required="1" Valid="1">
<Description Translatable="1">Allows customers to set the ticket service in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###SLA" Required="1" Valid="1">
<Description Translatable="1">Allows customers to set the ticket SLA in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###ServiceMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if service must be selected by the customer.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###SLAMandatory" Required="0" Valid="1">
<Description Translatable="1">Sets if SLA must be selected by the customer.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###StateDefault" Required="1" Valid="1">
<Description Translatable="1">Defines the default state of new customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">new</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Defines the default type for article in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex="">webrequest</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###SenderType" Required="1" Valid="1">
<Description Translatable="1">Sender type for new tickets from the customer inteface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex="">customer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the default history type in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex="">WebRequestCustomer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Comment for new history entries in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPanelSelectionType" Required="1" Valid="1">
<Description Translatable="1">Defines the receipent target of the tickets ("Queue" shows all queues, "SystemAddress" displays all system addresses) in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Option SelectedID="Queue">
<Item Key="Queue">Queue</Item>
<Item Key="SystemAddress">SystemAddress</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPanelSelectionString" Required="0" Valid="1">
<Description Translatable="1">Determines the strings that will be shown as receipent (To:) of the ticket in the customer interface. For Queue as CustomerPanelSelectionType, "<Queue>" shows the names of the queues, and for SystemAddress, "<Realname> <<Email>>" shows the name and email of the receipent.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex=""><Queue></String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPanelOwnSelection" Required="0" Valid="0">
<Description Translatable="1">Determines which queues will be valid for ticket's recepients in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Hash>
<Item Key="Junk">First Queue</Item>
<Item Key="Misc">Second Queue</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPanel::NewTicketQueueSelectionModule" Required="1" Valid="1">
<Description Translatable="1">Module for To-selection in new ticket screen in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<String Regex="">Kernel::Output::HTML::CustomerNewTicketQueueSelectionGeneric</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###NextScreenAfterFollowUp" Required="1" Valid="1">
<Description Translatable="1">Determines the next screen after the follow up screen of a zoomed ticket in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="CustomerTicketOverview">
<Item Key="CustomerTicketOverview">CustomerTicketOverview</Item>
<Item Key="CustomerTicketZoom">CustomerTicketZoom</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###ArticleType" Required="1" Valid="1">
<Description Translatable="1">Defines the default type of the note in the ticket zoom screen of the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="">webrequest</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###SenderType" Required="1" Valid="1">
<Description Translatable="1">Defines the default sender type for tickets in the ticket zoom screen of the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="">customer</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###HistoryType" Required="1" Valid="1">
<Description Translatable="1">Defines the history type for the ticket zoom action, which gets used for ticket history in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="">FollowUp</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###HistoryComment" Required="1" Valid="1">
<Description Translatable="1">Defines the history comment for the ticket zoom action, which gets used for ticket history in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###Priority" Required="1" Valid="1">
<Description Translatable="1">Allows customers to change the ticket priority in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###PriorityDefault" Required="1" Valid="1">
<Description Translatable="1">Defines the default priority of follow up customer tickets in the ticket zoom screen in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###State" Required="1" Valid="1">
<Description Translatable="1">Allows choosing the next compose state for customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###StateDefault" Required="1" Valid="1">
<Description Translatable="1">Defines the default next state for a ticket after customer follow up in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###StateType" Required="1" Valid="1">
<Description Translatable="1">Defines the next possible states for customer tickets in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Array>
<Item>open</Item>
<Item>closed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###AttributesView" Required="1" Valid="1">
<Description Translatable="1">Shows the activated ticket attributes in the customer interface (0 = Disabled and 1 = Enabled).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Hash>
<Item Key="Queue">1</Item>
<Item Key="Type">0</Item>
<Item Key="Priority">1</Item>
<Item Key="State">1</Item>
<Item Key="Service">0</Item>
<Item Key="SLA">0</Item>
<Item Key="Owner">0</Item>
<Item Key="Responsible">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomerTicketSearch::SearchLimit" Required="1" Valid="1">
<Description Translatable="1">Maximum number of tickets to be displayed in the result of a search in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<String Regex="^[0-9]{1,8}$">5000</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomerTicketSearch::SearchPageShown" Required="1" Valid="1">
<Description Translatable="1">Number of tickets to be displayed in each page of a search result in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">40</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomerTicketSearch::SortBy::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket attribute for ticket sorting in a ticket search of the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="Age">
<Item Key="Age">Age</Item>
<Item Key="TicketNumber">TicketNumber</Item>
<Item Key="Title">Title</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Priority">Priority</Item>
<Item Key="EscalationTime">EscalationTime</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::CustomerTicketSearch::Order::Default" Required="1" Valid="1">
<Description Translatable="1">Defines the default ticket order of a search result in the customer interface. Up: oldest on top. Down: latest on top.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="Down">
<Item Key="Down">Down</Item>
<Item Key="Up">Up</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###ExtendedSearchCondition" Required="1" Valid="1">
<Description Translatable="1">Allows extended search conditions in ticket search of the customer interface. With this feature you can search w. g. with this kind of conditions like "(key1&&key2)" or "(key1||key2)".</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###SearchArticleCSVTree" Required="1" Valid="1">
<Description Translatable="1">Exports the whole article tree in search result (it can affect the system performance).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###SearchCSVData" Required="1" Valid="1">
<Description Translatable="1">Data used to export the search result in CSV format.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Array>
<Item>TicketNumber</Item>
<Item>Age</Item>
<Item>Created</Item>
<Item>Closed</Item>
<Item>State</Item>
<Item>Priority</Item>
<Item>Lock</Item>
<Item>CustomerID</Item>
<Item>CustomerName</Item>
<Item>From</Item>
<Item>Subject</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPreferencesGroups###ShownTickets" Required="0" Valid="1">
<Description Translatable="1">Defines all the parameters for the ShownTickets object in the customer preferences of the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">User Profile</Item>
<Item Key="Label" Translatable="1">Number of displayed tickets</Item>
<Item Key="Key" Translatable="1">Tickets per page</Item>
<Item Key="Data">
<Hash>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
</Hash>
</Item>
<Item Key="DataSelected">25</Item>
<Item Key="PrefKey">UserShowTickets</Item>
<Item Key="Prio">4000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerPreferencesGroups###RefreshTime" Required="0" Valid="1">
<Description Translatable="1">Defines all the parameters for the RefreshTime object in the customer preferences of the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">User Profile</Item>
<Item Key="Label" Translatable="1">Ticket overview</Item>
<Item Key="Key" Translatable="1">Refresh interval</Item>
<Item Key="Data">
<Hash>
<Item Key="">off</Item>
<Item Key="2"> 2 minutes</Item>
<Item Key="5"> 5 minutes</Item>
<Item Key="7"> 7 minutes</Item>
<Item Key="10">10 minutes</Item>
<Item Key="15">15 minutes</Item>
</Hash>
</Item>
<Item Key="PrefKey">UserRefreshTime</Item>
<Item Key="DataSelected"></Item>
<Item Key="Prio">4000</Item>
<Item Key="Active">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CommonObject###QueueObject" Required="1" Valid="1">
<Description Translatable="1">Path of the file that stores all the settings for the QueueObject object for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="">Kernel::System::Queue</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CommonObject###TicketObject" Required="1" Valid="1">
<Description Translatable="1">Path of the file that stores all the settings for the TicketObject for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="">Kernel::System::Ticket</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CommonParam###Action" Required="1" Valid="1">
<Description Translatable="1">Defines the default used Frontend-Module if no Action parameter given in the url on the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="">AgentDashboard</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CommonParam###QueueID" Required="1" Valid="1">
<Description Translatable="1">Default queue ID used by the system in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">0</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::CommonParam###TicketID" Required="1" Valid="1">
<Description Translatable="1">Default ticket ID used by the system in the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::CommonObject###QueueObject" Required="1" Valid="1">
<Description Translatable="1">Path of the file that stores all the settings for the QueueObject object for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<String Regex="">Kernel::System::Queue</String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::CommonObject###TicketObject" Required="1" Valid="1">
<Description Translatable="1">Path of the file that stores all the settings for the TicketObject for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<String Regex="">Kernel::System::Ticket</String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::CommonParam###Action" Required="1" Valid="1">
<Description Translatable="1">Defines the default used Frontend-Module if no Action parameter given in the url on the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<String Regex="">CustomerTicketOverview</String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::CommonParam###TicketID" Required="1" Valid="1">
<Description Translatable="1">Default ticket ID used by the system in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer</SubGroup>
<Setting>
<String Regex=""></String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::HeaderMetaModule###2-TicketSearch" Required="0" Valid="1">
<Description Translatable="1">Module to generate html OpenSearch profile for short ticket search in the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleMetaHead</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::CustomerHeaderMetaTicketSearch</Item>
<Item Key="Action">CustomerTicketSearch</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketQueue" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Overview of all open Tickets</Description>
<Title>QueueView</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Overview of all open Tickets</Description>
<Name Translatable="1">Queue view</Name>
<Link>Action=AgentTicketQueue</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>o</AccessKey>
<Prio>100</Prio>
</NavBar>
<NavBar>
<Description Translatable="1"></Description>
<Type>Menu</Type>
<Block>ItemArea</Block>
<Name Translatable="1">Tickets</Name>
<Link>Action=AgentTicketQueue</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<AccessKey>t</AccessKey>
<Prio>200</Prio>
</NavBar>
<Loader>
<CSS>Core.AgentTicketQueue.css</CSS>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketService" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Overview of all open Tickets</Description>
<Title>ServiceView</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Overview of all open Tickets</Description>
<Name Translatable="1">Service view</Name>
<Link>Action=AgentTicketService</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>O</AccessKey>
<Prio>105</Prio>
</NavBar>
<Loader>
<CSS>Core.AgentTicketService.css</CSS>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###Fatin" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Create new phone ticket</Description>
<Title>New phone ticket</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Create new phone ticket (inbound)</Description>
<Name Translatable="1">New phone ticket</Name>
<Link>Action=Fatin</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>n</AccessKey>
<Prio>200</Prio>
</NavBar>
<Loader>
<JavaScript>Core.Agent.CustomerSearch.js</JavaScript>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPhoneOutbound" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Phone Call</Description>
<Title>Phone-Ticket</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPhoneInbound" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Incoming Phone Call</Description>
<Title>Phone-Ticket</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketEmail" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Create new email ticket</Description>
<Title>New email ticket</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Create new email ticket and send this out (outbound)</Description>
<Name Translatable="1">New email ticket</Name>
<Link>Action=AgentTicketEmail</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>m</AccessKey>
<Prio>210</Prio>
</NavBar>
<Loader>
<JavaScript>Core.Agent.CustomerSearch.js</JavaScript>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketSearch" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Search Ticket</Description>
<Title>Search</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Search Tickets</Description>
<Name Translatable="1">Search</Name>
<Link>Action=AgentTicketSearch</Link>
<!-- Use a timeout because otherwise the propagating click event would immediately close the dialog again. -->
<LinkOption>onclick="window.setTimeout(function(){Core.Agent.Search.OpenSearchDialog('AgentTicketSearch');}, 0); return false;"</LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>s</AccessKey>
<Prio>300</Prio>
</NavBar>
<Loader>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketLockedView" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Locked Tickets</Description>
<Title>Locked Tickets</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<CSS>Core.AgentTicketQueue.css</CSS>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketResponsibleView" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Responsible Tickets</Description>
<Title>Responsible Tickets</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketWatchView" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Watched Tickets</Description>
<Title>Watched Tickets</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<CSS>Core.AgentTicketQueue.css</CSS>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentCustomerSearch" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>AgentCustomerSearch</Description>
<Title>AgentCustomerSearch</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentUserSearch" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>AgentUserSearch</Description>
<Title>AgentUserSearch</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketStatusView" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Overview of all open tickets</Description>
<Title>Status view</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Overview of all open Tickets.</Description>
<Name Translatable="1">Status view</Name>
<Link>Action=AgentTicketStatusView</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>v</AccessKey>
<Prio>110</Prio>
</NavBar>
<Loader>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketEscalationView" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Overview of all escalated tickets</Description>
<Title>Escalation view</Title>
<NavBarName>Ticket</NavBarName>
<NavBar>
<Description Translatable="1">Overview Escalated Tickets</Description>
<Name Translatable="1">Escalation view</Name>
<Link>Action=AgentTicketEscalationView</Link>
<LinkOption></LinkOption>
<NavBar>Ticket</NavBar>
<Type></Type>
<Block></Block>
<AccessKey>e</AccessKey>
<Prio>120</Prio>
</NavBar>
<Loader>
<CSS>Core.AllocationList.css</CSS>
<JavaScript>Core.UI.AllocationList.js</JavaScript>
<JavaScript>Core.Agent.TableFilters.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketZoom" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Zoom</Description>
<Title>Zoom</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<CSS>Core.Agent.TicketProcess.css</CSS>
<JavaScript>thirdparty/jquery-tablesorter-2.0.5/jquery.tablesorter.js</JavaScript>
<JavaScript>Core.UI.Table.Sort.js</JavaScript>
<JavaScript>Core.Agent.TicketZoom.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketAttachment" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Title></Title>
<NavBarName>Ticket</NavBarName>
<Description>To download attachments</Description>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPlain" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket plain view of an email</Description>
<Title>Plain</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketNote" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Note</Description>
<Title>Note</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketMerge" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Merge</Description>
<Title>Merge</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPending" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Pending</Description>
<Title>Pending</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketWatcher" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>A TicketWatcher Module</Description>
<NavBarName>Ticket-Watcher</NavBarName>
<Title>Ticket-Watcher</Title>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPriority" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Priority</Description>
<Title>Priority</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketLock" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Lock</Description>
<Title>Lock</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketMove" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Move</Description>
<Title>Move</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###NextScreen" Required="1" Valid="1">
<Description Translatable="1">Determines the next screen after the ticket is moved. LastScreenOverview will return the last overview screen (e.g. search results, queueview, dashboard). TicketZoom will return to the TicketZoom.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Option SelectedID="TicketZoom">
<Item Key="TicketZoom">TicketZoom</Item>
<Item Key="LastScreenOverview">LastScreenOverview</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###Subject" Required="0" Valid="1">
<Description Translatable="1">Sets the default subject for notes added in the ticket move screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<String Regex="">[% Translate("Change Queue") | html %]</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###Body" Required="0" Valid="1">
<Description Translatable="1">Sets the default body text for notes added in the ticket move screen of the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<TextArea></TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketHistory" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket History</Description>
<Title>History</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketOwner" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Owner</Description>
<Title>Owner</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketResponsible" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Responsible</Description>
<Title>Responsible</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketCompose" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Compose email Answer</Description>
<Title>Compose</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.CustomerSearch.js</JavaScript>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketBounce" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Compose Bounce Email</Description>
<Title>Bounce</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketForward" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Forward Email</Description>
<Title>Forward</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.CustomerSearch.js</JavaScript>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketCustomer" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Customer</Description>
<Title>Customer</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.CustomerSearch.js</JavaScript>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketClose" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Close</Description>
<Title>Close</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketFreeText" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket FreeText</Description>
<Title>Free Fields</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketPrint" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket Print</Description>
<Title>Print</Title>
<NavBarName>Ticket</NavBarName>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AgentTicketBulk" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket bulk module</Description>
<Title>Bulk-Action</Title>
<NavBarName>Ticket</NavBarName>
<Loader>
<JavaScript>Core.Agent.TicketAction.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminACL" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Access Control Lists (ACL)</Title>
<NavBarName>Admin</NavBarName>
<Loader>
<CSS>Core.Agent.Admin.ACL.css</CSS>
<JavaScript>Core.Agent.Admin.ACL.js</JavaScript>
</Loader>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Access Control Lists (ACL)</Name>
<Description Translatable="1">Configure and manage ACLs.</Description>
<Block>Ticket</Block>
<Prio>750</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminQueue" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Queues</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Queues</Name>
<Description Translatable="1">Create and manage queues.</Description>
<Block>Queue</Block>
<Prio>100</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminTemplate" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title>Templates</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Templates</Name>
<Description Translatable="1">Create and manage templates.</Description>
<Block>Queue</Block>
<Prio>200</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminQueueTemplates" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Templates <-> Queues</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Templates <-> Queues</Name>
<Description Translatable="1">Link templates to queues.</Description>
<Block>Queue</Block>
<Prio>300</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminAutoResponse" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Auto Responses</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Auto Responses</Name>
<Description Translatable="1">Create and manage responses that are automatically sent.</Description>
<Block>Queue</Block>
<Prio>400</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminQueueAutoResponse" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title>Auto Responses <-> Queues</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Auto Responses <-> Queues</Name>
<Description Translatable="1">Link queues to auto responses.</Description>
<Block>Queue</Block>
<Prio>500</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminAttachment" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Attachments</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Attachments</Name>
<Description Translatable="1">Create and manage attachments.</Description>
<Block>Queue</Block>
<Prio>600</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminTemplateAttachment" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Attachments <-> Templates</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Attachments <-> Templates</Name>
<Description Translatable="1">Link attachments to templates.</Description>
<Block>Queue</Block>
<Prio>700</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminSalutation" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Salutations</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Salutations</Name>
<Description Translatable="1">Create and manage salutations.</Description>
<Block>Queue</Block>
<Prio>800</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminSignature" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Signatures</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Signatures</Name>
<Description Translatable="1">Create and manage signatures.</Description>
<Block>Queue</Block>
<Prio>900</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminSystemAddress" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Email Addresses</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Email Addresses</Name>
<Description Translatable="1">Set sender email addresses for this system.</Description>
<Block>Email</Block>
<Prio>300</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminNotification" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Agent Notifications</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Agent Notifications</Name>
<Description Translatable="1">Manage notifications that are sent to agents.</Description>
<Block>Ticket</Block>
<Prio>400</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminNotificationEvent" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Notifications (Event)</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Notifications (Event)</Name>
<Description Translatable="1">Create and manage event based notifications.</Description>
<Block>Ticket</Block>
<Prio>400</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminService" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Services</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Services</Name>
<Description Translatable="1">Create and manage services.</Description>
<Block>Ticket</Block>
<Prio>900</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminSLA" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Service Level Agreements</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Service Level Agreements</Name>
<Description Translatable="1">Create and manage Service Level Agreements (SLAs).</Description>
<Block>Ticket</Block>
<Prio>1000</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminType" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Types</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Types</Name>
<Description Translatable="1">Create and manage ticket types.</Description>
<Block>Ticket</Block>
<Prio>700</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminState" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">States</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">States</Name>
<Description Translatable="1">Create and manage ticket states.</Description>
<Block>Ticket</Block>
<Prio>800</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminPriority" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Priorities</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Priorities</Name>
<Description Translatable="1">Create and manage ticket priorities.</Description>
<Block>Ticket</Block>
<Prio>850</Prio>
</NavBarModule>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminGenericAgent" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">GenericAgent</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">GenericAgent</Name>
<Description Translatable="1">Manage tasks triggered by event or time based execution.</Description>
<Block>System</Block>
<Prio>300</Prio>
</NavBarModule>
<Loader>
<JavaScript>Core.Agent.Admin.GenericAgent.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###900-GenericAgent" Required="0" Valid="1">
<Description Translatable="1">Event module registration. For more performance you can define a trigger event (e. g. Event => TicketCreate).</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::GenericAgent</Item>
<Item Key="Transaction">1</Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::UnlockOnAway" Required="1" Valid="1">
<Description Translatable="1">Unlock tickets whenever a note is added and the owner is out of office.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="1">Yes</Item>
<Item Key="0">No</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Events###Ticket" Required="1" Valid="1">
<Description Translatable="1">List of all ticket events to be displayed in the GUI.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin</SubGroup>
<Setting>
<Array>
<Item>TicketCreate</Item>
<Item>TicketDelete</Item>
<Item>TicketTitleUpdate</Item>
<Item>TicketUnlockTimeoutUpdate</Item>
<Item>TicketQueueUpdate</Item>
<Item>TicketTypeUpdate</Item>
<Item>TicketServiceUpdate</Item>
<Item>TicketSLAUpdate</Item>
<Item>TicketCustomerUpdate</Item>
<Item>TicketPendingTimeUpdate</Item>
<Item>TicketLockUpdate</Item>
<Item>TicketArchiveFlagUpdate</Item>
<Item>TicketStateUpdate</Item>
<Item>TicketOwnerUpdate</Item>
<Item>TicketResponsibleUpdate</Item>
<Item>TicketPriorityUpdate</Item>
<Item>HistoryAdd</Item>
<Item>HistoryDelete</Item>
<Item>TicketAccountTime</Item>
<Item>TicketMerge</Item>
<Item>TicketSubscribe</Item>
<Item>TicketUnsubscribe</Item>
<Item>TicketFlagSet</Item>
<Item>TicketFlagDelete</Item>
<Item>TicketSlaveLinkAdd</Item>
<Item>TicketSlaveLinkDelete</Item>
<Item>TicketMasterLinkDelete</Item>
<Item>EscalationResponseTimeNotifyBefore</Item>
<Item>EscalationUpdateTimeNotifyBefore</Item>
<Item>EscalationSolutionTimeNotifyBefore</Item>
<Item>EscalationResponseTimeStart</Item>
<Item>EscalationUpdateTimeStart</Item>
<Item>EscalationSolutionTimeStart</Item>
<Item>EscalationResponseTimeStop</Item>
<Item>EscalationUpdateTimeStop</Item>
<Item>EscalationSolutionTimeStop</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Events###Article" Required="1" Valid="1">
<Description Translatable="1">List of all article events to be displayed in the GUI.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin</SubGroup>
<Setting>
<Array>
<Item>ArticleCreate</Item>
<Item>ArticleUpdate</Item>
<Item>ArticleSend</Item>
<Item>ArticleBounce</Item>
<Item>ArticleAgentNotification</Item>
<Item>ArticleCustomerNotification</Item>
<Item>ArticleAutoResponse</Item>
<Item>ArticleFlagSet</Item>
<Item>ArticleFlagDelete</Item>
<Item>ArticleAgentNotification</Item>
<Item>ArticleCustomerNotification</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Events###Queue" Required="1" Valid="1">
<Description Translatable="1">List of all queue events to be displayed in the GUI.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin</SubGroup>
<Setting>
<Array>
<Item>QueueCreate</Item>
<Item>QueueUpdate</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Queue::EventModulePost###130-UpdateQueue" Required="0" Valid="1">
<Description Translatable="1">Event module that performs an update statement on TicketIndex to rename the queue name there if needed and if StaticDB is actually used.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Queue</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Queue::Event::TicketAcceleratorUpdate</Item>
<Item Key="Event">QueueUpdate</Item>
<Item Key="Transaction">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Admin::AdminNotificationEvent###RichText" Required="0" Valid="1">
<Description Translatable="1">Uses richtext for viewing and editing notification events.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::AdminNotificationEvent</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Admin::AdminNotificationEvent###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::AdminNotificationEvent</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Admin::AdminNotificationEvent###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Admin::AdminNotificationEvent</SubGroup>
<Setting>
<String Regex="^\d+%?$">320</String>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketOverview" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Overview of customer tickets</Description>
<NavBarName>Ticket</NavBarName>
<Title>Overview</Title>
<NavBar>
<Description Translatable="1">Tickets</Description>
<Name Translatable="1">Tickets</Name>
<Block></Block>
<Type>Menu</Type>
<NavBar>Ticket</NavBar>
<Link>Action=CustomerTicketOverview;Subaction=MyTickets</Link>
<LinkOption></LinkOption>
<AccessKey>m</AccessKey>
<Prio>100</Prio>
</NavBar>
<NavBar>
<Description Translatable="1">My Tickets</Description>
<Name Translatable="1">My Tickets</Name>
<Block></Block>
<Type>Submenu</Type>
<NavBar>Ticket</NavBar>
<Link>Action=CustomerTicketOverview;Subaction=MyTickets</Link>
<LinkOption></LinkOption>
<AccessKey></AccessKey>
<Prio>110</Prio>
</NavBar>
<NavBar>
<Description Translatable="1">Company Tickets</Description>
<Name Translatable="1">Company Tickets</Name>
<Block></Block>
<Type>Submenu</Type>
<NavBar>Ticket</NavBar>
<Link>Action=CustomerTicketOverview;Subaction=CompanyTickets</Link>
<LinkOption></LinkOption>
<AccessKey>M</AccessKey>
<Prio>120</Prio>
</NavBar>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketMessage" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Create tickets</Description>
<NavBarName>Ticket</NavBarName>
<Title>New Ticket</Title>
<NavBar>
<Description Translatable="1">Create new Ticket</Description>
<Name Translatable="1">New Ticket</Name>
<Block></Block>
<Type>Submenu</Type>
<NavBar>Ticket</NavBar>
<Link>Action=CustomerTicketMessage</Link>
<LinkOption></LinkOption>
<AccessKey>n</AccessKey>
<Prio>100</Prio>
</NavBar>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketZoom" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Ticket zoom view</Description>
<NavBarName>Ticket</NavBarName>
<Title>Zoom</Title>
<Loader>
<JavaScript>Core.Customer.TicketZoom.js</JavaScript>
<JavaScript>Core.UI.Popup.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketPrint" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Customer Ticket Print Module</Description>
<NavBarName></NavBarName>
<Title>Print</Title>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketAttachment" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>To download attachments</Description>
<NavBarName></NavBarName>
<Title></Title>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="CustomerFrontend::Module###CustomerTicketSearch" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the customer interface.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Description>Customer ticket search</Description>
<NavBarName>Ticket</NavBarName>
<Title>Search</Title>
<NavBar>
<Description Translatable="1">Search</Description>
<Name Translatable="1">Search</Name>
<Block></Block>
<Type>Submenu</Type>
<NavBar>Ticket</NavBar>
<Link>Action=CustomerTicketSearch</Link>
<LinkOption></LinkOption>
<AccessKey>s</AccessKey>
<Prio>300</Prio>
</NavBar>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Acl::Module###1-Ticket::Acl::Module" Required="0" Valid="0">
<Description Translatable="1">ACL module that allows closing parent tickets only if all its children are already closed ("State" shows which states are not available for the parent ticket until all child tickets are closed).</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Acl::CloseParentAfterClosedChilds</Item>
<Item Key="State">
<Array>
<Item>closed successful</Item>
<Item>closed unsuccessful</Item>
</Array>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="TicketACL::Default::Action" Required="1" Valid="1">
<Description Translatable="1">Default ACL values for ticket actions.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel1Match" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in first level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Properties">Properties</Item>
<Item Key="PropertiesDatabase">PropertiesDatabase</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel1Change" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in first level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Possible">Possible</Item>
<Item Key="PossibleAdd">PossibleAdd</Item>
<Item Key="PossibleNot">PossibleNot</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel2::Possible" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in second level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Ticket">Ticket</Item>
<Item Key="Action">Action</Item>
<Item Key="ActivityDialog">ActivityDialog</Item>
<Item Key="Process">Process</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel2::PossibleAdd" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in second level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Ticket">Ticket</Item>
<Item Key="Action">Action</Item>
<Item Key="ActivityDialog">ActivityDialog</Item>
<Item Key="Process">Process</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel2::PossibleNot" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in second level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="Ticket">Ticket</Item>
<Item Key="Action">Action</Item>
<Item Key="ActivityDialog">ActivityDialog</Item>
<Item Key="Process">Process</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel2::Properties" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in second level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="User">User</Item>
<Item Key="CustomerUser">CustomerUser</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Service">Service</Item>
<Item Key="Type">Type</Item>
<Item Key="Priority">Priority</Item>
<Item Key="SLA">SLA</Item>
<Item Key="State">State</Item>
<Item Key="Owner">Owner</Item>
<Item Key="Process">Process</Item>
<Item Key="Responsible">Responsible</Item>
<Item Key="DynamicField">DynamicField</Item>
<Item Key="Frontend">Frontend</Item>
<Item Key="Ticket">Ticket</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel2::PropertiesDatabase" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available in second level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="User">User</Item>
<Item Key="CustomerUser">CustomerUser</Item>
<Item Key="Queue">Queue</Item>
<Item Key="Service">Service</Item>
<Item Key="Type">Type</Item>
<Item Key="Priority">Priority</Item>
<Item Key="SLA">SLA</Item>
<Item Key="State">State</Item>
<Item Key="Owner">Owner</Item>
<Item Key="Process">Process</Item>
<Item Key="Responsible">Responsible</Item>
<Item Key="DynamicField">DynamicField</Item>
<Item Key="Ticket">Ticket</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="ACLKeysLevel3::Actions###100-Default" Required="0" Valid="1">
<Description Translatable="1">Defines which items are available for 'Action' in third level of the ACL structure.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Array>
<Item>AgentTicketBounce</Item>
<Item>AgentTicketClose</Item>
<Item>AgentTicketCompose</Item>
<Item>AgentTicketCustomer</Item>
<Item>AgentTicketForward</Item>
<Item>AgentTicketFreeText</Item>
<Item>AgentTicketHistory</Item>
<Item>AgentTicketLink</Item>
<Item>AgentTicketLock</Item>
<Item>AgentTicketMerge</Item>
<Item>AgentTicketMove</Item>
<Item>AgentTicketNote</Item>
<Item>AgentTicketOwner</Item>
<Item>AgentTicketPending</Item>
<Item>Fatin</Item>
<Item>AgentTicketPhoneInbound</Item>
<Item>AgentTicketPhoneOutbound</Item>
<Item>AgentTicketPrint</Item>
<Item>AgentTicketPriority</Item>
<Item>AgentTicketResponsible</Item>
<Item>AgentTicketWatcher</Item>
<Item>AgentTicketZoom</Item>
<Item>AgentLinkObject</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="ACL::CacheTTL" Required="1" Valid="1">
<Description Translatable="1">Cache time in seconds for the DB ACL backend.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<String Regex="">3600</String><!-- default 1 hour -->
</Setting>
</ConfigItem>
<ConfigItem Name="TicketACL::Debug::Enabled" Required="1" Valid="1">
<Description Translatable="1">If enabled debugging information for ACLs is logged.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="TicketACL::Debug::LogPriority" Required="0" Valid="0">
<Description Translatable="1">Defines the priority in which the information is logged and presented.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Option SelectedID="debug">
<Item Key="debug">Debug</Item>
<Item Key="info">Info</Item>
<Item Key="notice">Notice</Item>
<Item Key="error">Error</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="TicketACL::Debug::Filter###00-Default" Required="0" Valid="0">
<Description Translatable="1">Filter for debugging ACLs. Note: More ticket attributes can be added in the format <OTRS_TICKET_Attribute> e.g. <OTRS_TICKET_Priority>.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketACL</SubGroup>
<Setting>
<Hash>
<Item Key="ACLName"></Item>
<Item Key="<OTRS_TICKET_TicketNumber>"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterMaxEmails" Required="1" Valid="1">
<Description Translatable="1">Maximal auto email responses to own email-address a day (Loop-Protection).</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">40</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMasterMaxEmailSize" Required="1" Valid="1">
<Description Translatable="1">Maximal size in KBytes for mails that can be fetched via POP3/POP3S/IMAP/IMAPS (KBytes).</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="^[0-9]{1,6}$">16384</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMasterReconnectMessage" Required="1" Valid="1">
<Description Translatable="1">The "bin/PostMasterMailAccount.pl" will reconnect to POP3/POP3S/IMAP/IMAPS host after the specified count of messages.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">20</String>
</Setting>
</ConfigItem>
<ConfigItem Name="LoopProtectionModule" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Default loop protection module.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option Location="Kernel/System/PostMaster/LoopProtection/*.pm" SelectedID="Kernel::System::PostMaster::LoopProtection::DB"></Option>
</Setting>
</ConfigItem>
<ConfigItem Name="LoopProtectionLog" Required="1" Valid="1" ConfigLevel="200">
<Description Translatable="1">Path for the log file (it only applies if "FS" was selected for LoopProtectionModule and it is mandatory).</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex=""><OTRS_CONFIG_Home>/var/log/LoopProtection</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterAutoHTML2Text" Required="1" Valid="1">
<Description Translatable="1">Converts HTML mails into text messages.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpSearchInReferences" Required="1" Valid="1">
<Description Translatable="1">Executes follow up checks on In-Reply-To or References headers for mails that don't have a ticket number in the subject.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpSearchInBody" Required="1" Valid="1">
<Description Translatable="1">Executes follow up mail body checks in mails that don't have a ticket number in the subject.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpSearchInAttachment" Required="1" Valid="1">
<Description Translatable="1">Executes follow up mail attachments checks in mails that don't have a ticket number in the subject.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpSearchInRaw" Required="1" Valid="1">
<Description Translatable="1">Executes follow up plain/raw mail checks in mails that don't have a ticket number in the subject.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterUserID" Required="1" Valid="1">
<Description Translatable="1">Specifies user id of the postmaster data base.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="^[0-9]{1,3}$">1</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterDefaultQueue" Required="1" Valid="1">
<Description Translatable="1">Defines the postmaster default queue.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<ValidateModule>Kernel::System::SysConfig::QueueValidate</ValidateModule>
<Setting>
<String Regex="">Raw</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterDefaultPriority" Required="1" Valid="1">
<Description Translatable="1">Defines the default priority of new tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<ValidateModule>Kernel::System::SysConfig::PriorityValidate</ValidateModule>
<Setting>
<String Regex="">3 normal</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterDefaultState" Required="1" Valid="1">
<Description Translatable="1">Defines the default state of new tickets.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">new</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpState" Required="1" Valid="1">
<Description Translatable="1">Defines the state of a ticket if it gets a follow-up.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpStateClosed" Required="0" Valid="0">
<Description Translatable="1">Defines the state of a ticket if it gets a follow-up and the ticket was already closed.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<ValidateModule>Kernel::System::SysConfig::StateValidate</ValidateModule>
<Setting>
<String Regex="">open</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterFollowUpOnUnlockAgentNotifyOnlyToOwner" Required="1" Valid="1">
<Description Translatable="1">Sends agent follow-up notification only to the owner, if a ticket is unlocked (the default is to send the notification to all agents).</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="0">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterHeaderFieldCount" Required="1" Valid="1">
<Description Translatable="1">Defines the number of header fields in frontend modules for add and update postmaster filters. It can be up to 99 fields.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="^[0-9]{1,2}$">12</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostmasterX-Header" Required="1" Valid="1">
<Description Translatable="1">Defines all the X-headers that should be scanned.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Array>
<Item>From</Item>
<Item>To</Item>
<Item>Cc</Item>
<Item>Reply-To</Item>
<Item>ReplyTo</Item>
<Item>Subject</Item>
<Item>Message-ID</Item>
<Item>Message-Id</Item>
<Item>Resent-To</Item>
<Item>Resent-From</Item>
<Item>Precedence</Item>
<Item>Mailing-List</Item>
<Item>List-Id</Item>
<Item>List-Archive</Item>
<Item>Errors-To</Item>
<Item>References</Item>
<Item>In-Reply-To</Item>
<Item>Auto-Submitted</Item>
<Item>X-Loop</Item>
<Item>X-Spam-Flag</Item>
<Item>X-Spam-Level</Item>
<Item>X-Spam-Score</Item>
<Item>X-Spam-Status</Item>
<Item>X-No-Loop</Item>
<Item>X-Priority</Item>
<Item>Importance</Item>
<Item>X-Mailer</Item>
<Item>User-Agent</Item>
<Item>Organization</Item>
<Item>X-Original-To</Item>
<Item>Delivered-To</Item>
<Item>Envelope-To</Item>
<Item>Return-Path</Item>
<Item>X-OTRS-Owner</Item>
<Item>X-OTRS-OwnerID</Item>
<Item>X-OTRS-Responsible</Item>
<Item>X-OTRS-ResponsibleID</Item>
<Item>X-OTRS-Loop</Item>
<Item>X-OTRS-Priority</Item>
<Item>X-OTRS-Queue</Item>
<Item>X-OTRS-Lock</Item>
<Item>X-OTRS-Ignore</Item>
<Item>X-OTRS-State</Item>
<Item>X-OTRS-State-PendingTime</Item>
<Item>X-OTRS-Type</Item>
<Item>X-OTRS-Service</Item>
<Item>X-OTRS-SLA</Item>
<Item>X-OTRS-CustomerNo</Item>
<Item>X-OTRS-CustomerUser</Item>
<Item>X-OTRS-SenderType</Item>
<Item>X-OTRS-ArticleType</Item>
<Item>X-OTRS-FollowUp-Priority</Item>
<Item>X-OTRS-FollowUp-Queue</Item>
<Item>X-OTRS-FollowUp-Lock</Item>
<Item>X-OTRS-FollowUp-State</Item>
<Item>X-OTRS-FollowUp-State-PendingTime</Item>
<Item>X-OTRS-FollowUp-Type</Item>
<Item>X-OTRS-FollowUp-Service</Item>
<Item>X-OTRS-FollowUp-SLA</Item>
<Item>X-OTRS-FollowUp-SenderType</Item>
<Item>X-OTRS-FollowUp-ArticleType</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###1-Match" Required="0" Valid="0">
<Description Translatable="1">Module to filter and manipulate incoming messages. Block/ignore all spam email with From: noreply@ address.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::Match</Item>
<Item Key="StopAfterMatch">0</Item>
<Item Key="Match">
<Hash>
<Item Key="From">noreply@</Item>
</Hash>
</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-Ignore">yes</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###2-Match" Required="0" Valid="0">
<Description Translatable="1">Module to filter and manipulate incoming messages. Get a 4 digit number to ticket free text, use regex in Match e. g. From => '(.+?)@.+?', and use () as [***] in Set =>.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::Match</Item>
<Item Key="StopAfterMatch">0</Item>
<Item Key="Match">
<Hash>
<Item Key="Subject">SomeNumber:(\d\d\d\d)</Item>
</Hash>
</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-DynamicField-TicketFreeKey1">SomeNumber</Item>
<Item Key="X-OTRS-DynamicField-TicketFreeText1">[***]</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###3-NewTicketReject" Required="0" Valid="0">
<Description Translatable="1">Blocks all the incoming emails that do not have a valid ticket number in subject with From: @example.com address.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::NewTicketReject</Item>
<Item Key="StopAfterMatch">0</Item>
<Item Key="Match">
<Hash>
<Item Key="From">@example.com</Item>
</Hash>
</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-Ignore">yes</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule::NewTicketReject::Sender" Required="0" Valid="0">
<Description Translatable="1">Defines the sender for rejected emails.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="">noreply@example.com</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule::NewTicketReject::Subject" Required="1" Valid="1">
<Description Translatable="1">Defines the subject for rejected emails.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="">Email Rejected</String>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule::NewTicketReject::Body" Required="1" Valid="1">
<Description Translatable="1">Defines the body text for rejected emails.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<TextArea>
Dear Customer,
Unfortunately we could not detect a valid ticket number
in your subject, so this email can't be processed.
Please create a new ticket via the customer panel.
Thanks for your help!
Your Helpdesk Team
</TextArea>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###4-CMD" Required="0" Valid="0">
<Description Translatable="1">CMD example setup. Ignores emails where external CMD returns some output on STDOUT (email will be piped into STDIN of some.bin).</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::CMD</Item>
<Item Key="CMD">/usr/bin/some.bin</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-Ignore">yes</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###5-SpamAssassin" Required="0" Valid="0">
<Description Translatable="1">Spam Assassin example setup. Ignores emails that are marked with SpamAssassin.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::CMD</Item>
<Item Key="CMD">/usr/bin/spamassassin | grep -i "X-Spam-Status: yes"</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-Ignore">yes</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###6-SpamAssassin" Required="0" Valid="0">
<Description Translatable="1">Spam Assassin example setup. Moves marked mails to spam queue.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::CMD</Item>
<Item Key="CMD">/usr/bin/spamassassin | grep -i "X-Spam-Status: yes"</Item>
<Item Key="Set">
<Hash>
<Item Key="X-OTRS-Queue">spam</Item>
</Hash>
</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###000-MatchDBSource" Required="1" Valid="1">
<Description Translatable="1">Module to use database filter storage.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::MatchDBSource</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PostFilterModule###000-FollowUpArticleTypeCheck" Required="0" Valid="1">
<Description Translatable="1">Module to check if arrived emails should be marked as email-internal (because of original forwarded internal email). ArticleType and SenderType define the values for the arrived email/article.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::FollowUpArticleTypeCheck</Item>
<Item Key="ArticleType">email-internal</Item>
<Item Key="SenderType">customer</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###000-ExternalTicketNumberRecognition1" Required="0" Valid="0">
<Description Translatable="1">Recognize if a ticket is a follow up to an existing ticket using an external ticket number.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::ExternalTicketNumberRecognition</Item>
<Item Key="Name">Some Description</Item>
<Item Key="FromAddressRegExp">\s*@example.com</Item>
<Item Key="NumberRegExp">\s*Incident-(\d.*)\s*</Item>
<Item Key="SearchInSubject">1</Item>
<Item Key="SearchInBody">1</Item>
<Item Key="TicketStateTypes">new;open</Item>
<Item Key="DynamicFieldName">Name_X</Item>
<Item Key="SenderType">system</Item>
<Item Key="ArticleType">note-report</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###000-ExternalTicketNumberRecognition2" Required="0" Valid="0">
<Description Translatable="1">Recognize if a ticket is a follow up to an existing ticket using an external ticket number.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::ExternalTicketNumberRecognition</Item>
<Item Key="Name">Some Description</Item>
<Item Key="FromAddressRegExp">\s*@example.com</Item>
<Item Key="NumberRegExp">\s*Incident-(\d.*)\s*</Item>
<Item Key="SearchInSubject">1</Item>
<Item Key="SearchInBody">1</Item>
<Item Key="TicketStateTypes">new;open</Item>
<Item Key="DynamicFieldName">Name_X</Item>
<Item Key="SenderType">system</Item>
<Item Key="ArticleType">note-report</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###000-ExternalTicketNumberRecognition3" Required="0" Valid="0">
<Description Translatable="1">Recognize if a ticket is a follow up to an existing ticket using an external ticket number.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::ExternalTicketNumberRecognition</Item>
<Item Key="Name">Some Description</Item>
<Item Key="FromAddressRegExp">\s*@example.com</Item>
<Item Key="NumberRegExp">\s*Incident-(\d.*)\s*</Item>
<Item Key="SearchInSubject">1</Item>
<Item Key="SearchInBody">1</Item>
<Item Key="TicketStateTypes">new;open</Item>
<Item Key="DynamicFieldName">Name_X</Item>
<Item Key="SenderType">system</Item>
<Item Key="ArticleType">note-report</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="PostMaster::PreFilterModule###000-ExternalTicketNumberRecognition4" Required="0" Valid="0">
<Description Translatable="1">Recognize if a ticket is a follow up to an existing ticket using an external ticket number.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::PostMaster::Filter::ExternalTicketNumberRecognition</Item>
<Item Key="Name">Some Description</Item>
<Item Key="FromAddressRegExp">\s*@example.com</Item>
<Item Key="NumberRegExp">\s*Incident-(\d.*)\s*</Item>
<Item Key="SearchInSubject">1</Item>
<Item Key="SearchInBody">1</Item>
<Item Key="TicketStateTypes">new;open</Item>
<Item Key="DynamicFieldName">Name_X</Item>
<Item Key="SenderType">system</Item>
<Item Key="ArticleType">note-report</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="SendNoAutoResponseRegExp" Required="1" Valid="1">
<Description Translatable="1">If this regex matches, no message will be send by the autoresponder.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<String Regex="">(MAILER-DAEMON|postmaster|abuse)@.+?\..+?</String>
</Setting>
</ConfigItem>
<ConfigItem Name="AutoResponseForWebTickets" Required="1" Valid="1">
<Description Translatable="1">If this option is set to 'Yes', tickets created via the web interface, via Customers or Agents, will receive an autoresponse if configured. If this option is set to 'No', no autoresponses will be sent.</Description>
<Group>Ticket</Group>
<SubGroup>Core::PostMaster</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">No</Item>
<Item Key="1">Yes</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="LinkObject::PossibleLink###0200" Required="0" Valid="1">
<Description Translatable="1">Links 2 tickets with a "Normal" type link.</Description>
<Group>Ticket</Group>
<SubGroup>Core::LinkObject</SubGroup>
<Setting>
<Hash>
<Item Key="Object1">Ticket</Item>
<Item Key="Object2">Ticket</Item>
<Item Key="Type">Normal</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="LinkObject::PossibleLink###0201" Required="0" Valid="1">
<Description Translatable="1">Links 2 tickets with a "ParentChild" type link.</Description>
<Group>Ticket</Group>
<SubGroup>Core::LinkObject</SubGroup>
<Setting>
<Hash>
<Item Key="Object1">Ticket</Item>
<Item Key="Object2">Ticket</Item>
<Item Key="Type">ParentChild</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="LinkObject::IgnoreLinkedTicketStateTypes" Required="0" Valid="1">
<Description Translatable="1">Defines, which tickets of which ticket state types should not be listed in linked ticket lists.</Description>
<Group>Ticket</Group>
<SubGroup>Core::LinkObject</SubGroup>
<Setting>
<Array>
<Item>merged</Item>
<Item>removed</Item>
</Array>
</Setting>
</ConfigItem>
<ConfigItem Name="Stats::DynamicObjectRegistration###Ticket" Required="0" Valid="1">
<Description Translatable="1">Module to generate ticket statistics.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Stats</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Stats::Dynamic::Ticket</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Stats::DynamicObjectRegistration###TicketList" Required="0" Valid="1">
<Description Translatable="1">Determines if the statistics module may generate ticket lists.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Stats</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Stats::Dynamic::TicketList</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Stats::DynamicObjectRegistration###TicketAccountedTime" Required="0" Valid="1">
<Description Translatable="1">Module to generate accounted time ticket statistics.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Stats</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Stats::Dynamic::TicketAccountedTime</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Stats::DynamicObjectRegistration###TicketSolutionResponseTime" Required="0" Valid="1">
<Description Translatable="1">Module to generate ticket solution and response time statistics.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Stats</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Stats::Dynamic::TicketSolutionResponseTime</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::HTMLArticleHeightDefault" Required="1" Valid="1">
<Description Translatable="1">Set the default height (in pixels) of inline HTML articles in AgentTicketZoom.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="^[0-9]{1,4}$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::HTMLArticleHeightMax" Required="1" Valid="1">
<Description Translatable="1">Set the maximum height (in pixels) of inline HTML articles in AgentTicketZoom.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="^[0-9]{1,5}$">2500</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MaxArticlesZoomExpand" Required="1" Valid="1">
<Description Translatable="1">The maximal number of articles expanded on a single page in AgentTicketZoom.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="^[0-9]{1,5}$">400</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::MaxArticlesPerPage" Required="1" Valid="1">
<Description Translatable="1">The maximal number of articles shown on a single page in AgentTicketZoom.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<String Regex="^[0-9]{1,5}$">1000</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::ZoomRichTextForce" Required="1" Valid="1">
<Description Translatable="1">Show article as rich text even if rich text writing is disabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Option SelectedID="1">
<Item Key="0">Based on global RichText setting</Item>
<Item Key="1">Always show RichText if available</Item>
</Option>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicField" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields GUI</Title>
<NavBarName>Admin</NavBarName>
<NavBarModule>
<Module>Kernel::Output::HTML::NavBarModuleAdmin</Module>
<Name Translatable="1">Dynamic Fields</Name>
<Description Translatable="1">Create and manage dynamic fields.</Description>
<Block>Ticket</Block>
<Prio>1000</Prio>
</NavBarModule>
<Loader>
<CSS>Core.Agent.Admin.DynamicField.css</CSS>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="PreferencesGroups###DynamicFieldsOverviewPageShown" Required="0" Valid="1">
<Description Translatable="1">Parameters for the pages (in which the dynamic fields are shown) of the dynamic fields overview.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Agent::Preferences</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::PreferencesGeneric</Item>
<Item Key="Column">Other Settings</Item>
<Item Key="Label" Translatable="1">Dynamic Fields Overview Limit</Item>
<Item Key="Key" Translatable="1">Dynamic fields limit per page for Dynamic Fields Overview</Item>
<Item Key="Data">
<Hash>
<Item Key="10">10</Item>
<Item Key="15">15</Item>
<Item Key="20">20</Item>
<Item Key="25">25</Item>
<Item Key="30">30</Item>
<Item Key="35">35</Item>
</Hash>
</Item>
<Item Key="DataSelected">25</Item>
<Item Key="PrefKey">AdminDynamicFieldsOverviewPageShown</Item>
<Item Key="Prio">8000</Item>
<Item Key="Active">0</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicFieldText" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields Text Backend GUI</Title>
<Loader>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
<JavaScript>Core.Agent.Admin.DynamicFieldText.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicFieldCheckbox" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields Checkbox Backend GUI</Title>
<Loader>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicFieldDropdown" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields Drop-down Backend GUI</Title>
<Loader>
<CSS>Core.Agent.Admin.DynamicField.css</CSS>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
<JavaScript>Core.Agent.Admin.DynamicFieldDropdown.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicFieldDateTime" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields Date Time Backend GUI</Title>
<Loader>
<CSS>Core.Agent.Admin.DynamicField.css</CSS>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
<JavaScript>Core.Agent.Admin.DynamicFieldDateTime.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::Module###AdminDynamicFieldMultiselect" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration for the agent interface.</Description>
<Group>DynamicFields</Group>
<SubGroup>Frontend::Admin::ModuleRegistration</SubGroup>
<Setting>
<FrontendModuleReg>
<Group>admin</Group>
<Description>Admin</Description>
<Title Translatable="1">Dynamic Fields Multiselect Backend GUI</Title>
<Loader>
<CSS>Core.Agent.Admin.DynamicField.css</CSS>
<JavaScript>Core.Agent.Admin.DynamicField.js</JavaScript>
<JavaScript>Core.Agent.Admin.DynamicFieldMultiselect.js</JavaScript>
</Loader>
</FrontendModuleReg>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::ObjectType###Article" Required="0" Valid="1">
<Description Translatable="1">DynamicField object registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::ObjectType::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Article</Item>
<Item Key="Module">Kernel::System::DynamicField::ObjectType::Article</Item>
<Item Key="Prio">100</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::ObjectType###Ticket" Required="0" Valid="1">
<Description Translatable="1">DynamicField object registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::ObjectType::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Ticket</Item>
<Item Key="Module">Kernel::System::DynamicField::ObjectType::Ticket</Item>
<Item Key="Prio">110</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###Text" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Text</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::Text</Item>
<Item Key="ConfigDialog">AdminDynamicFieldText</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###TextArea" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Textarea</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::TextArea</Item>
<Item Key="ConfigDialog">AdminDynamicFieldText</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###Checkbox" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Checkbox</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::Checkbox</Item>
<Item Key="ConfigDialog">AdminDynamicFieldCheckbox</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###Dropdown" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Dropdown</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::Dropdown</Item>
<Item Key="ConfigDialog">AdminDynamicFieldDropdown</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###DateTime" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Date / Time</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::DateTime</Item>
<Item Key="ConfigDialog">AdminDynamicFieldDateTime</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###Date" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Date</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::Date</Item>
<Item Key="ConfigDialog">AdminDynamicFieldDateTime</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DynamicFields::Driver###Multiselect" Required="0" Valid="1">
<Description Translatable="1">DynamicField backend registration.</Description>
<Group>DynamicFields</Group>
<SubGroup>DynamicFields::Driver::Registration</SubGroup>
<Setting>
<Hash>
<Item Key="DisplayName" Translatable="1">Multiselect</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::Multiselect</Item>
<Item Key="ConfigDialog">AdminDynamicFieldMultiselect</Item>
<Item Key="ItemSeparator">, </Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket close screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketCompose###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket compose screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewCompose</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket email screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket free text screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket forward screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMove###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket move screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMove</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket note screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket owner screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket pending screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket phone screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket phone inbound screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket phone outbound screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket priority screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket responsible screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketMessage###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields options shown in the ticket message screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required. NOTE. If you want to display these fields also in the ticket zoom of the customer interface, you have to enable them in CustomerTicketZoom###DynamicField.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewNew</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::OverviewSmall###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket small format overview screen of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::OverviewMedium###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket medium format overview screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::OverviewPreview###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket preview format overview screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::TicketOverview</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketZoom###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the sidebar of the ticket zoom screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewZoom</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket zoom screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketZoom###FollowUpDynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields options shown in the ticket reply section in the ticket zoom screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewZoom</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPrint###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket print screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPrint</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketPrint###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket print screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewPrint</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket search screen of the agent interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and shown by default.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###Defaults###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Defines the default shown ticket search attribute for ticket search screen. Example: "Key" must have the name of the Dynamic Field in this case 'X', "Content" must have the value of the Dynamic Field depending on the Dynamic Field type, Text: 'a text', Dropdown: '1', Date/Time: 'Search_DynamicField_XTimeSlotStartYear=1974; Search_DynamicField_XTimeSlotStartMonth=01; Search_DynamicField_XTimeSlotStartDay=26; Search_DynamicField_XTimeSlotStartHour=00; Search_DynamicField_XTimeSlotStartMinute=00; Search_DynamicField_XTimeSlotStartSecond=00; Search_DynamicField_XTimeSlotStopYear=2013; Search_DynamicField_XTimeSlotStopMonth=01; Search_DynamicField_XTimeSlotStopDay=26; Search_DynamicField_XTimeSlotStopHour=23; Search_DynamicField_XTimeSlotStopMinute=59; Search_DynamicField_XTimeSlotStopSecond=59;' and or 'Search_DynamicField_XTimePointFormat=week; Search_DynamicField_XTimePointStart=Before; Search_DynamicField_XTimePointValue=7';.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###SearchCSVDynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic Fields used to export the search result in CSV format.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###DynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket search screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###SearchOverviewDynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic fields shown in the ticket search overview results screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::CustomerTicketSearch###SearchCSVDynamicField" Required="0" Valid="1">
<Description Translatable="1">Dynamic Fields used to export the search result in CSV format.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Customer::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::EventModulePost###TicketDynamicFieldDefault" Required="0" Valid="0">
<Description Translatable="1">Event module registration. For more performance you can define a trigger event (e. g. Event => TicketCreate). This is only possible if all Ticket dynamic fields need the same event.</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::TicketDynamicFieldDefault</Item>
<Item Key="Transaction">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element1" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name">Field1</Item>
<Item Key="Value">Default</Item>
<Item Key="Event">TicketCreate</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element2" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element3" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element4" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element5" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element6" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element7" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element8" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element9" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element10" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element11" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element12" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element13" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element14" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element15" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::TicketDynamicFieldDefault###Element16" Required="0" Valid="0">
<Description Translatable="1">Configures a default TicketDynamicField setting. "Name" defines the dynamic field which should be used, "Value" is the data that will be set, and "Event" defines the trigger event. Please check the developer manual (http://doc.otrs.org/), chapter "Ticket Event Module".</Description>
<Group>Ticket</Group>
<SubGroup>Core::TicketDynamicFieldDefault</SubGroup>
<Setting>
<Hash>
<Item Key="Name"></Item>
<Item Key="Value"></Item>
<Item Key="Event"></Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketNote###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewNote</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketOwner###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewOwner</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPending###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPending</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEmail###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEmailNew</SubGroup>
<Setting>
<String Regex="^\d+%?$">320</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::Fatin###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneNew</SubGroup>
<Setting>
<String Regex="^\d+%?$">320</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="^\d+%?$">475</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneInbound###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneInbound</SubGroup>
<Setting>
<String Regex="^\d+%?$">200</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="^\d+%?$">475</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPhoneOutbound###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPhoneOutbound</SubGroup>
<Setting>
<String Regex="^\d+%?$">200</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketClose###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewClose</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketFreeText###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewFreeText</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketPriority###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewPriority</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsible###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketForward###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewForward</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMerge###RichTextWidth" Required="0" Valid="1">
<Description Translatable="1">Defines the width for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<String Regex="^\d+%?$">620</String>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketMerge###RichTextHeight" Required="0" Valid="1">
<Description Translatable="1">Defines the height for the rich text editor component for this screen. Enter number (pixels) or percent value (relative).</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewMerge</SubGroup>
<Setting>
<String Regex="^\d+%?$">100</String>
</Setting>
</ConfigItem>
<ConfigItem Name="StandardTemplate::Types" Required="0" Valid="1">
<Description Translatable="1">Defines the list of types for templates.</Description>
<Group>Ticket</Group>
<SubGroup>Core::Ticket</SubGroup>
<Setting>
<Hash>
<Item Key="Answer">Answer</Item>
<Item Key="Create">Create</Item>
<Item Key="Forward">Forward</Item>
<Item Key="PhoneCall">Phone call</Item>
<Item Key="Note">Note</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="DefaultOverviewColumns" Required="1" Valid="1">
<Description Translatable="1">General ticket data shown in the ticket overviews (fall-back). Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note that TicketNumber can not be disabled, because it is necessary.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketStatusView###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the status view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewStatus</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketQueue###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the queue view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the responsible view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewResponsible</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketWatchView###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the watch view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewWatch</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketLockedView###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the locked view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewLocked</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketEscalationView###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the escalation view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewEscalation</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">2</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketSearch###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the ticket search result view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewSearch</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">1</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Ticket::Frontend::AgentTicketService###DefaultColumns" Required="0" Valid="1">
<Description Translatable="1">Columns that can be filtered in the service view of the agent interface. Possible settings: 0 = Disabled, 1 = Available, 2 = Enabled by default. Note: Only Ticket attributes and Dynamic Fields (DynamicField_NameX) are allowed.</Description>
<Group>Ticket</Group>
<SubGroup>Frontend::Agent::Ticket::ViewQueue</SubGroup>
<Setting>
<Hash>
<Item Key="Age">2</Item>
<Item Key="Changed">1</Item>
<Item Key="CustomerID">2</Item>
<Item Key="CustomerName">1</Item>
<Item Key="CustomerUserID">1</Item>
<Item Key="EscalationResponseTime">1</Item>
<Item Key="EscalationSolutionTime">1</Item>
<Item Key="EscalationTime">1</Item>
<Item Key="EscalationUpdateTime">1</Item>
<Item Key="TicketNumber">2</Item>
<Item Key="Lock">2</Item>
<Item Key="Owner">2</Item>
<Item Key="PendingTime">1</Item>
<Item Key="Queue">2</Item>
<Item Key="Responsible">1</Item>
<Item Key="Priority">1</Item>
<Item Key="Service">2</Item>
<Item Key="State">2</Item>
<Item Key="SLA">1</Item>
<Item Key="Title">2</Item>
<Item Key="Type">1</Item>
</Hash>
</Setting>
</ConfigItem>
<ConfigItem Name="Frontend::NavBarModule###7-AgentTicketService" Required="0" Valid="1">
<Description Translatable="1">Frontend module registration (disable AgentTicketService link if Ticket Serivice feature is not used).</Description>
<Group>Framework</Group>
<SubGroup>Frontend::Agent::NavBarModule</SubGroup>
<Setting>
<Hash>
<Item Key="Module">Kernel::Output::HTML::NavBarAgentTicketService</Item>
</Hash>
</Setting>
</ConfigItem>
</otrs_config>