import rt 3.8.9
[freeside.git] / rt / html / Ticket / Elements / Tabs
index 81c92e8..98ed143 100644 (file)
@@ -1,8 +1,14 @@
-%# BEGIN LICENSE BLOCK
+%# BEGIN BPS TAGGED BLOCK {{{
 %# 
-%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC 
+%#                                          <jesse@bestpractical.com>
 %# 
-%# (Except where explictly superceded by other copyright notices)
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
 %# 
 %# This work is made available to you under the terms of Version 2 of
 %# the GNU General Public License. A copy of that license should have
 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 %# General Public License for more details.
 %# 
-%# Unless otherwise specified, all modifications, corrections or
-%# extensions to this work which alter its source code become the
-%# property of Best Practical Solutions, LLC when submitted for
-%# inclusion in the work.
+%# 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., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
 %# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
 %# 
-%# END LICENSE BLOCK
+%# END BPS TAGGED BLOCK }}}
 <& /Elements/Callback, Ticket => $Ticket, actions=> $actions, tabs => $tabs, %ARGS &>
 <& /Elements/Tabs, 
     tabs => $tabs, 
 <%INIT>
 
 my $tabs = {};
-my $current_toptab = "Search/Listing.html",
-    my $searchtabs = { new => { title => loc('New Search'),
-                                path => 'Search/Listing.html?ClearRestrictions=1'}
-                        
-
-} ;
+my $current_toptab = "Search/Build.html",
+my $searchtabs = {};
 my $actions;
 
 if ( $Ticket) {
@@ -45,11 +65,17 @@ my $id   = $Ticket->id();
 
 if ( defined $session{'tickets'} ) {
 
+        # we have to update session data if we get new ItemMap
+        my $updatesession = 1 unless($session{'tickets'}->{'item_map'});
 
-my $item_map = $session{'tickets'}->ItemMap;
+        my $item_map = $session{'tickets'}->ItemMap;
 
-            # Don't $current_toptab = display prev links if we're on the first ticket
+        if ($updatesession) {
+                $session{'i'}++;
+               $session{'tickets'}->PrepForSerialization();
+        }
 
+        # Don't display prev links if we're on the first ticket
         if ($item_map->{$Ticket->Id}->{prev}) {
                 $searchtabs->{'_a'} = {
                             class => "nav",
@@ -95,9 +121,11 @@ my $ticket_page_tabs = {
       { title => loc('People'), path => "Ticket/ModifyPeople.html?id=" . $id, },
     _E => { title => loc('Links'),
             path  => "Ticket/ModifyLinks.html?id=" . $id, },
-    _F => { title => loc('Jumbo'),
-            path  => "Ticket/ModifyAll.html?id=" . $id,
-            seperator => 1
+    _F => { title => loc('Reminders'),
+            path  => "Ticket/Reminders.html?id=" . $id,
+            separator => 1, },
+    _X => { title => loc('Jumbo'),
+            path  => "Ticket/ModifyAll.html?id=" . $id, 
  },
 
 };
@@ -112,59 +140,109 @@ foreach my $tab ( sort keys %{$ticket_page_tabs} ) {
 $tabs->{'this'}->{"subtabs"} = $ticket_page_tabs;
 $current_tab = "Ticket/Display.html?id=" . $id;
 
+my %can = (
+    ModifyTicket => $Ticket->CurrentUserHasRight('ModifyTicket'),
+);
 
-
-
-
-if (    $Ticket->CurrentUserHasRight('ModifyTicket')
-     or $Ticket->CurrentUserHasRight('ReplyToTicket') ) {
-    $actions->{'A'} = { title => loc('Reply'),
-                        path  => "Ticket/Update.html?Action=Respond&id=" . $id,
+if ( $can{'ModifyTicket'} or $Ticket->CurrentUserHasRight('ReplyToTicket') ) {
+    $actions->{'F'} = {
+        title => loc('Reply'),
+        path  => "Ticket/Update.html?Action=Respond&id=" . $id,
     };
 }
 
-if ( $Ticket->CurrentUserHasRight('ModifyTicket') ) {
+if ( $can{'ModifyTicket'} ) {
     if ( $Ticket->Status ne 'resolved' ) {
-        $actions->{'B'} = {
-
+        $actions->{'G'} = {
             path => "Ticket/Update.html?Action=Comment&DefaultStatus=resolved&id=" . $id,
             title => loc('Resolve') };
     }
     if ( $Ticket->Status ne 'open' ) {
-        $actions->{'C'} = { path => "Ticket/Display.html?Status=open&id=" . $id,
+        $actions->{'A'} = { path => "Ticket/Display.html?Status=open&id=" . $id,
                             title => loc('Open it') };
     }
 }
 
 if ( $Ticket->CurrentUserHasRight('OwnTicket') ) {
-    if ( $Ticket->OwnerObj->id == $RT::Nobody->id ) {
-        $actions->{'D'} = { path => "Ticket/Display.html?Action=Take&id=" . $id,
-                            title => loc('Take') };
+    if ( $Ticket->OwnerObj->Id == $RT::Nobody->id
+         and ( $can{'ModifyTicket'} or $Ticket->CurrentUserHasRight('TakeTicket') ) )
+    {
+        $actions->{'B'} = {
+            path => "Ticket/Display.html?Action=Take&id=" . $id,
+            title => loc('Take'),
+        };
     }
-    elsif ( $Ticket->OwnerObj->id != $session{CurrentUser}->id ) {
-        $actions->{'E'} = {path => "Ticket/Display.html?Action=Steal&id=" . $id,
-                           title => loc('Steal') };
+    elsif ( $Ticket->OwnerObj->id != $session{CurrentUser}->id 
+            and ( $can{'ModifyTicket'} or $Ticket->CurrentUserHasRight('StealTicket') ) )
+    {
+        $actions->{'C'} = {
+            path => "Ticket/Display.html?Action=Steal&id=" . $id,
+            title => loc('Steal'),
+        };
     }
 }
 
-if (    $Ticket->CurrentUserHasRight('ModifyTicket')
-     or $Ticket->CurrentUserHasRight('CommentOnTicket') ) {
-    $actions->{'F'} = { title => loc('Comment'),
-                        path  => "Ticket/Update.html?Action=Comment&id=" . $id,
+if ( $can{'ModifyTicket'} or $Ticket->CurrentUserHasRight('CommentOnTicket') ) {
+    $actions->{'E'} = {
+        title => loc('Comment'),
+        path  => "Ticket/Update.html?Action=Comment&id=" . $id,
     };
 }
 }
-$tabs->{"g"} = { path      => 'Search/Listing.html',
-                 title     => loc('Search'),
-                 separator => 1,
-                 subtabs   => $searchtabs };
+
+if ( (defined $actions->{A} || defined $actions->{B} || defined $actions->{C})
+    && (defined $actions->{E} || defined $actions->{F} || defined $actions->{G}) ) { 
+    
+    if    (defined $actions->{C}) { $actions->{C}->{separator} = 1 }
+    elsif (defined $actions->{B}) { $actions->{B}->{separator} = 1 }
+    elsif (defined $actions->{A}) { $actions->{A}->{separator} = 1 }
+}
+
+my $args;
+$args= "?" . $m->comp(
+    '/Elements/QueryString',
+    Query   => $ARGS{'Query'}   || $session{'CurrentSearchHash'}->{'Query'},
+    Format  => $ARGS{'Format'}  || $session{'CurrentSearchHash'}->{'Format'},
+    OrderBy => $ARGS{'OrderBy'} || $session{'CurrentSearchHash'}->{'OrderBy'},
+    Order   => $ARGS{'Order'}   || $session{'CurrentSearchHash'}->{'Order'},
+    Page   => $ARGS{'Page'}   || $session{'CurrentSearchHash'}->{'Page'},
+    Rows    => $ARGS{'Rows'},
+  ) if ($ARGS{'Query'} or $session{'CurrentSearchHash'}->{'Query'});
+$args ||= '';
+
+$tabs->{"f"} = { path      => "Search/Build.html?NewQuery=1",
+                 title     => loc('New Search')};
+$tabs->{"g"} = { path      => "Search/Build.html$args",
+                 title     => loc('Edit Search')};
+$tabs->{"h"} = { path      => "Search/Edit.html$args",
+                 title     => loc('Advanced'),
+                 separator => 1 };
+if ($args) {
+  $tabs->{"i"} = { path      => "Search/Results.html$args",
+                   title     => loc('Show Results'),
+                   };
+  if ($current_tab =~ m{Search/Results.html}) {
+    $current_tab = "Search/Results.html$args";
+  }
+  $tabs->{"j"} = { path      => "Search/Bulk.html$args",
+                   title     => loc('Bulk Update'),
+                   };
+  if ($current_tab =~  m{Search/Bulk.html}) {
+    $current_tab = "Search/Bulk.html$args";
+  }
+  foreach my $searchtab (keys %{$searchtabs}) {
+    ($searchtab =~ /^_/) ? $tabs->{"s".$searchtab} = $searchtabs->{$searchtab} : $tabs->{"z_".$searchtab} = $searchtabs->{$searchtab};
+  }
+}
+
+
 </%INIT>
 
   
 <%ARGS>
 $Ticket => undef
 $subtabs => undef
-$current_tab => undef
-$current_subtab => undef
+$current_tab => ''
+$current_subtab => ''
 $Title => undef
 </%ARGS>