Upgrade to 4.2.8
[usit-rt.git] / share / html / Elements / SelectStatus
index 7dda16e..1088e79 100644 (file)
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
 my %statuses_by_lifecycle;
 if ( @Statuses ) {
     $statuses_by_lifecycle{''} = \@Statuses;
-}
-elsif ( $TicketObj ) {
-    my @status;
-    my $current = $TicketObj->Status;
-    push @status, $current;
-
-    my $lifecycle = $TicketObj->QueueObj->Lifecycle;
+} else {
+    if ( $Object ) {
+        my $lifecycle = $Object->LifecycleObj;
+        if ($Object->_Accessible("Status", "read")) {
+            my $current = $Object->Status;
+            my @status;
+            push @status, $current;
 
-    my %has = ();
-    foreach my $next ( $lifecycle->Transitions( $current ) ) {
-        my $check = $lifecycle->CheckRight( $current => $next );
-        $has{ $check } = $TicketObj->CurrentUserHasRight( $check )
-            unless exists $has{ $check };
-        push @status, $next if $has{ $check };
+            my %has = ();
+            foreach my $next ( $lifecycle->Transitions( $current ) ) {
+                my $check = $lifecycle->CheckRight( $current => $next );
+                $has{ $check } = $Object->CurrentUserHasRight( $check )
+                    unless exists $has{ $check };
+                push @status, $next if $has{ $check };
+            }
+            $statuses_by_lifecycle{$lifecycle->Name} = \@status;
+        } else {
+            $statuses_by_lifecycle{$lifecycle->Name} = [ $lifecycle->Transitions('') ];
+        }
     }
-    $statuses_by_lifecycle{$lifecycle->Name} = \@status;
-}
-elsif ( $QueueObj ) {
-    my $lifecycle = $QueueObj->Lifecycle;
-    $statuses_by_lifecycle{$lifecycle->Name} = [ $lifecycle->Transitions('') ];
-} elsif ( %Queues ) {
-    for my $id (keys %Queues) {
-        my $queue = RT::Queue->new($session{'CurrentUser'});
-        $queue->Load($id);
-        if ($queue->id) {
-            my $lifecycle = $queue->Lifecycle;
+    for my $lifecycle ( @Lifecycles ) {
+        $statuses_by_lifecycle{$lifecycle->Name} ||= [ $lifecycle->Valid ];
+    }
+
+    if (not keys %statuses_by_lifecycle) {
+        for my $lifecycle (map { RT::Lifecycle->Load($_) } RT::Lifecycle->List($Type)) {
             $statuses_by_lifecycle{$lifecycle->Name} = [ $lifecycle->Valid ];
         }
     }
-} else {
-    for my $lifecycle (map { RT::Lifecycle->Load($_) } RT::Lifecycle->List) {
-        $statuses_by_lifecycle{$lifecycle->Name} = [ $lifecycle->Valid ];
-    }
 }
 
 if (keys %statuses_by_lifecycle) {
@@ -131,11 +127,11 @@ my $group_by_lifecycle = keys %statuses_by_lifecycle > 1;
 </%INIT>
 <%ARGS>
 $Name => undef
+$Type => undef,
 
 @Statuses => ()
-$TicketObj => undef
-$QueueObj => undef
-%Queues => ()
+$Object => undef,
+@Lifecycles => (),
 
 $Default => ''
 $SkipDeleted => 0