import rt 3.6.4
[freeside.git] / rt / html / Ticket / Display.html
index dd4c093..1c0aa41 100644 (file)
@@ -2,7 +2,7 @@
 %# 
 %# COPYRIGHT:
 %#  
-%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC 
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
 %#                                          <jesse@bestpractical.com>
 %# 
 %# (Except where explicitly superseded by other copyright notices)
@@ -22,7 +22,9 @@
 %# 
 %# You should have received a copy of the GNU General Public License
 %# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/copyleft/gpl.html.
 %# 
 %# 
 %# CONTRIBUTION SUBMISSION POLICY:
     Title => loc("#[_1]: [_2]", $TicketObj->Id, $TicketObj->Subject) &>
 
 <& /Elements/ListActions, actions => \@Actions &>
-
-<& /Elements/TitleBoxStart, title => loc('Ticket metadata'), contentbg =>
-'#ffffff' &>
+<& /Elements/Callback, _CallbackName => 'BeforeShowSummary', Ticket => $TicketObj, %ARGS &>
+<&| /Widgets/TitleBox, title => loc('Ticket metadata') &>
 <& /Ticket/Elements/ShowSummary,  Ticket => $TicketObj, Attachments => $attachments &>
-<& /Elements/TitleBoxEnd &>
+</&>
 
-<BR>
+<br />
 
 <& /Elements/Callback, _CallbackName => 'BeforeShowHistory', Ticket => $TicketObj, %ARGS &>
 
@@ -71,7 +72,8 @@
       
       &> 
 
-  
+<& /Elements/Callback, _CallbackName => 'AfterShowHistory', Ticket => $TicketObj, %ARGS &>
+
 <%ARGS>
 $id => undef
 $Create => undef
@@ -119,6 +121,10 @@ if ($ARGS{'id'} eq 'new') {
        }
     }
 
+    $m->comp('/Elements/Callback', _CallbackName => 'BeforeProcessArguments',
+         TicketObj => $TicketObj, Tickets => $Tickets, 
+         ActionsRef => \@Actions, ARGSRef => \%ARGS);
+
     if (defined $ARGS{'Action'}) {
        if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
            my $action = $1;
@@ -128,30 +134,46 @@ if ($ARGS{'id'} eq 'new') {
     }
 
     $ARGS{'UpdateContent'} =~ s/\r\n/\n/g if defined $ARGS{'UpdateContent'};
-    if ( $ARGS{'UpdateTimeWorked'} ||
-        $session{'Attachments'} || 
-        (   defined $ARGS{'UpdateContent'}
-             && $ARGS{'UpdateContent'} ne ''
-            && $ARGS{'UpdateContent'} ne "-- \n"
-            . $session{'CurrentUser'}->UserObj->Signature )) {
-       $ARGS{UpdateAttachments} = $session{'Attachments'};
-       ProcessUpdateMessage( ARGSRef   => \%ARGS,
-                             Actions   => \@Actions,
-                             TicketObj => $TicketObj );
-       delete $session{'Attachments'};
+    if ( $ARGS{'UpdateTimeWorked'} || (
+        defined $ARGS{'UpdateContent'}
+        && $ARGS{'UpdateContent'} ne ''
+           && $ARGS{'UpdateContent'} ne "-- \n"
+              . $session{'CurrentUser'}->UserObj->Signature ) )
+    {
+           $ARGS{UpdateAttachments} = $session{'Attachments'};
+           ProcessUpdateMessage(
+            ARGSRef   => \%ARGS,
+                       Actions   => \@Actions,
+                       TicketObj => $TicketObj,
+        );
+           delete $session{'Attachments'};
     }
     #Process status updates
+    my @PeopleActions = ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj=>$TicketObj);
     my @BasicActions = ProcessTicketBasics(ARGSRef => \%ARGS, TicketObj=>$TicketObj);
     my @results = ProcessTicketLinks( TicketObj => $TicketObj, ARGSRef => \%ARGS);
 
-    push (@Actions, @BasicActions, @results);
+    push (@Actions, @PeopleActions, @BasicActions, @results);
 }
 
-
-
 $m->comp('/Elements/Callback', _CallbackName => 'BeforeDisplay',
-        TicketObj => \$TicketObj, Tickets => \$Tickets, ARGSRef => \%ARGS);
-
+        TicketObj => \$TicketObj,
+     Tickets => \$Tickets,
+     Actions => \@Actions,
+     ARGSRef => \%ARGS,
+);
+
+# This code does automatic redirection if any updates happen. 
+
+if (@Actions) {
+    # We've done something, so we need to clear the decks to avoid 
+    # resubmission on refresh.
+    # But we need to store Actions somewhere too, so we don't lose them.
+    $session{"Actions"} = \@Actions;
+    RT::Interface::Web::Redirect($RT::WebURL."Ticket/Display.html?id=".$TicketObj->id);
+} else {
+    @Actions = @{ delete $session{"Actions"} || [] };
+}
 
 my $attachments = $m->comp('Elements/FindAttachments', Ticket => $TicketObj, Tickets => $Tickets);
 my $attachment_content = $m->comp('Elements/LoadTextAttachments', Ticket => $TicketObj);