diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php
index 65636d0fbb8aac188a2b941c742b6edac2f737f2..21d5646e92a065605f26eefb86e1c9055ab4c2ff 100644
--- a/include/staff/ticket-view.inc.php
+++ b/include/staff/ticket-view.inc.php
@@ -118,7 +118,8 @@ if($ticket->isOverdue())
                             || $dept->isMember($thisstaff))
                         ) { ?>
                  <li><a class="no-pjax ticket-action"
-                    data-redirect="tickets.php"
+                    data-redirect="tickets.php?id=<?php echo
+                    $ticket->getId(); ?>"
                     href="#tickets/<?php echo $ticket->getId(); ?>/claim"><i
                     class="icon-chevron-sign-down"></i> <?php echo __('Claim'); ?></a>
                 <?php
diff --git a/scp/tickets.php b/scp/tickets.php
index 95720d202fe230a8e8ca1019c5fd0358adb57891..1e1a085ab48afbf63f32af2db1329b4ba037fdf3 100644
--- a/scp/tickets.php
+++ b/scp/tickets.php
@@ -30,7 +30,7 @@ $redirect = false;
 if($_REQUEST['id'] || $_REQUEST['number']) {
     if($_REQUEST['id'] && !($ticket=Ticket::lookup($_REQUEST['id'])))
          $errors['err']=sprintf(__('%s: Unknown or invalid ID.'), __('ticket'));
-    elseif($_REQUEST['number'] && !($ticket=Ticket::lookup(['number' => $_REQUEST['number']])))
+    elseif($_REQUEST['number'] && !($ticket=Ticket::lookup(array('number' => $_REQUEST['number']))))
          $errors['err']=sprintf(__('%s: Unknown or invalid number.'), __('ticket'));
     elseif(!$ticket->checkStaffPerm($thisstaff)) {
         $errors['err']=__('Access denied. Contact admin if you believe this is in error');
@@ -192,9 +192,12 @@ if($_POST && !$errors):
                     'ticket.response.' . $ticket->getId(),
                     $thisstaff->getId());
 
-                // Go back to the ticket listing page on reply
-                $ticket = null;
+                if ($ticket->isClosed())
+                    $ticket = null;
+
                 $redirect = 'tickets.php';
+                if ($ticket)
+                    $redirect = 'tickets.php?id='.$ticket->getId();
 
             } elseif(!$errors['err']) {
                 $errors['err']=sprintf('%s %s',
@@ -225,7 +228,12 @@ if($_POST && !$errors):
             $wasOpen = ($ticket->isOpen());
             if(($note=$ticket->postNote($vars, $errors, $thisstaff))) {
 
-                $msg=__('Internal note posted successfully');
+                $msg = sprintf(__('%s: %s posted successfully'),
+                        sprintf(__('Ticket #%s'),
+                            sprintf('<a href="tickets.php?id=%d"><b>%s</b></a>',
+                                $ticket->getId(), $ticket->getNumber())),
+                        __('Internal note')
+                        );
                 // Clear attachment list
                 $note_form->setSource(array());
                 $note_form->getField('attachments')->reset();
@@ -241,6 +249,9 @@ if($_POST && !$errors):
                         $thisstaff->getId());
 
                  $redirect = 'tickets.php';
+                 if ($ticket)
+                     $redirect ='tickets.php?id='.$ticket->getId();
+
             } else {
 
                 if(!$errors['err'])
@@ -414,7 +425,7 @@ if($_POST && !$errors):
                         // Drop files from the response attachments widget
                         $response_form->setSource(array());
                         $response_form->getField('attachments')->reset();
-                        unset($_SESSION[':form-data']);
+                        $_SESSION[':form-data'] = null;
                     } elseif(!$errors['err']) {
                         $errors['err']=sprintf('%s %s',
                             __('Unable to create the ticket.'),