rt 4.2.15
[freeside.git] / rt / share / html / index.html
index d6e0b79..e61f146 100755 (executable)
@@ -30,7 +30,7 @@ If you need commercial support, please contact us at sales@bestpractical.com.
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
@@ -90,38 +90,73 @@ $m->callback( ARGSRef => \%ARGS, results => \@results, CallbackName => 'Initial'
               skip_create => \$skip_create );
 
 if ( $ARGS{'QuickCreate'} ) {
+
+   ProcessAttachments(ARGSRef => \%ARGS);
+
     my $QueueObj = RT::Queue->new($session{'CurrentUser'});
     $QueueObj->Load($ARGS{Queue}) or Abort(loc("Queue could not be loaded."));
     
     my $CFs = $QueueObj->TicketCustomFields();
     
-    my $ValidCFs = $m->comp(
+    my ($ValidCFs, @msg) = $m->comp(
         '/Elements/ValidateCustomFields',
-        CustomFields => $CFs,
-        ARGSRef => \%ARGS
+        CustomFields        => $CFs,
+        ARGSRef             => \%ARGS,
+        ValidateUnsubmitted => 1,
     );
 
 
+    my $created;
     if ( $ValidCFs && !$skip_create ) {
         my ($t, $msg) = CreateTicket( 
-                        Queue => $ARGS{'Queue'},
-                        Owner => $ARGS{'Owner'},
-                        Status => $ARGS{'Status'}||'new',
-                        # yes! it's Requestors, not Requestor
-                        Requestors => $ARGS{'Requestors'},
-                        From => $session{'CurrentUser'}->EmailAddress,
-                        Content => $ARGS{'Content'},
-                        Subject => $ARGS{'Subject'});
-        if ( $t && $t->Id && RT->Config->Get('DisplayAfterQuickCreate', $session{'CurrentUser'}) ) {
-          RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Ticket/Display.html?id=". $t->Id);
-        } else {
-          push @results, $msg;
+                          Queue => $ARGS{'Queue'},
+                          Owner => $ARGS{'Owner'},
+                          Status => $ARGS{'Status'},
+                          # yes! it's Requestors, not Requestor
+                          Requestors => $ARGS{'Requestors'},
+                          Content => $ARGS{'Content'},
+                          Subject => $ARGS{'Subject'},
+                          Token   => $ARGS{'Token'},
+                        );
+        push @results, $msg;
+
+        if ( $t && $t->Id ) {
+            $created = 1;
+            if ( RT->Config->Get('DisplayTicketAfterQuickCreate', $session{'CurrentUser'}) ) {
+                MaybeRedirectForResults(
+                    Actions   => \@results,
+                    Path      => '/Ticket/Display.html',
+                    Arguments => { id => $t->Id },
+                );
+            }
         }
     }
     elsif ( !$ValidCFs ) {
-        push @results, "can't quickly create ticket in queue " .
-            $QueueObj->Name . ' because some custom fields need to be set, please go to normal ticket creation page to do that.';
+        push @results, loc("Can't quickly create ticket in queue [_1] because custom fields are required.  Please finish by using the normal ticket creation page.", $QueueObj->Name);
+        push @results, @msg;
+
+        MaybeRedirectForResults(
+            Actions     => \@results,
+            Path        => "/Ticket/Create.html",
+            Arguments   => {
+                (map { $_ => $ARGS{$_} } qw(Queue Owner Status Content Subject)),
+                Requestors => $ARGS{Requestors},
+                # From is set above when CFs are OK, but not here since we're
+                # not calling CreateTicket() directly.  The proper place to set
+                # a default for From, if desired in the future, is in
+                # CreateTicket() itself, or at least /Ticket/Display.html
+                # (which processes /Ticket/Create.html).  From is rarely used
+                # overall.
+            },
+        );
     }
+
+    $session{QuickCreate} = \%ARGS unless $created;
+
+    MaybeRedirectForResults(
+        Actions   => \@results,
+        Path      => '/',
+    );
 }