%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
<& Elements/Header, Title => loc("Create a ticket") &>
<& /Elements/ListActions, actions => \@results &>
-<form action="Create.html" method="post" enctype="multipart/form-data">
+<form action="Create.html" method="post" enctype="multipart/form-data" name="TicketCreate">
<input type="hidden" class="hidden" name="id" value="new" />
+<input type="hidden" class="hidden" name="Token" value="<% $ARGS{'Token'} %>" />
+% for my $key (grep {defined $ARGS{$_}} map {+("new-$_", "$_-new")} keys %RT::Link::DIRMAP) {
+<input type="hidden" class="hidden" name="<% $key %>" value="<% $ARGS{$key} %>" />
+% }
-<table>
+<table width="100%">
<tr>
<td class="label">
<&|/l&>Queue</&>:
</td>
<td class="value">
<input type="hidden" class="hidden" name="Queue" value="<%$queue_obj->id || ''%>" />
- <strong><%$queue_obj->Name || ''%></strong> (<%$queue_obj->Description || ''%>)
+ <strong><%$queue_obj->Name || ''%></strong> <% $queue_obj->Description ? '('.$queue_obj->Description.')' : '' %>
</td>
</tr>
<% $m->callback( CallbackName => 'AfterQueue', %ARGS, QueueObj => $queue_obj ) %>
<&|/l&>Requestors</&>:
</td>
<td class="value">
-<& /Elements/EmailInput, Name => 'Requestors', Size => '20', Default => $ARGS{Requestors} || $session{CurrentUser}->EmailAddress &>
+<& /Elements/EmailInput, Name => 'Requestors', Size => '20', Default => $ARGS{Requestors} || $session{CurrentUser}->EmailAddress, AutocompleteMultiple => 1 &>
</td>
</tr>
<tr>
<&|/l&>Cc</&>:
</td>
<td class="value">
-<& /Elements/EmailInput, Name => 'Cc', Size => '20', Default => $ARGS{Cc} || '' &>
+<& /Elements/EmailInput, Name => 'Cc', Size => '20', Default => $ARGS{Cc} || '', AutocompleteMultiple => 1 &>
</td>
</tr>
<tr>
</tr>
<tr>
<td colspan="2">
- <& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $queue_obj &>
+ <& /Elements/EditCustomFields,
+ %ARGS,
+ Object => RT::Ticket->new($session{CurrentUser}),
+ CustomFields => $queue_obj->TicketCustomFields,
+ AsTable => 0,
+ &>
</td>
</tr>
-<tr>
-<td class="label">
-%# FIXME: if failed customfields validation, attachement needs to be choosen
-%# again by user.
-<&|/l&>Attach file</&>:
-</td>
-<td class="value">
-<input name="Attach" type="file" />
-</td>
-</tr>
+<& /Ticket/Elements/AddAttachments, %ARGS, QueueObj => $queue_obj &>
</table>
<table width="100%">
<tr>
my @results;
my $queue_obj = RT::Queue->new($session{'CurrentUser'});
$queue_obj->Load($Queue);
-my $CFs = $queue_obj->TicketCustomFields();
-my $ValidCFs = $m->comp(
- '/Elements/ValidateCustomFields',
- CustomFields => $CFs,
- ARGSRef => \%ARGS
-);
+
+ProcessAttachments(ARGSRef => \%ARGS);
my $skip_create = 0;
+
+{
+ my ($status, @msg) = $m->comp(
+ '/Elements/ValidateCustomFields',
+ CustomFields => $queue_obj->TicketCustomFields,
+ ARGSRef => \%ARGS
+ );
+ unless ($status) {
+ push @results, @msg;
+ $skip_create = 1;
+ }
+}
+
$m->callback( CallbackName => 'BeforeCreate', ARGSRef => \%ARGS, skip_create => \$skip_create, results => \@results );
-if ( defined($ARGS{'id'}) and $ARGS{'id'} eq 'new' ) { # new ticket?
- if ( $ValidCFs && !$skip_create ) {
+if ( !exists $ARGS{'AddMoreAttach'} and defined($ARGS{'id'}) and $ARGS{'id'} eq 'new' ) { # new ticket?
+ if ( !$skip_create ) {
$m->comp('Display.html', %ARGS);
$RT::Logger->crit("After display call; error is $@");
$m->abort();
}
- elsif ( !$ValidCFs ) {
- # Invalid CFs
- while (my $CF = $CFs->Next) {
- my $msg = $m->notes('InvalidField-' . $CF->Id) or next;
- push @results, $CF->Name . ': ' . $msg;
- }
- }
}
</%init>