[Rt-commit] r5473 - in rtir/branches/2.0-TESTING: . html/RTIR html/RTIR/Elements html/RTIR/Incident lib/RT/Action

ruz at bestpractical.com ruz at bestpractical.com
Tue Jun 27 13:46:50 EDT 2006


Author: ruz
Date: Tue Jun 27 13:46:46 2006
New Revision: 5473

Modified:
   rtir/branches/2.0-TESTING/   (props changed)
   rtir/branches/2.0-TESTING/html/RTIR/Advanced.html
   rtir/branches/2.0-TESTING/html/RTIR/Display.html
   rtir/branches/2.0-TESTING/html/RTIR/Edit.html
   rtir/branches/2.0-TESTING/html/RTIR/Elements/NewReports
   rtir/branches/2.0-TESTING/html/RTIR/Incident/Display.html
   rtir/branches/2.0-TESTING/html/RTIR/Incident/Edit.html
   rtir/branches/2.0-TESTING/html/RTIR/Incident/Elements/ReplyForm
   rtir/branches/2.0-TESTING/html/RTIR/Incident/ShowChildren.html
   rtir/branches/2.0-TESTING/lib/RT/Action/RTIR_SetIncidentResolution.pm

Log:
* merge latests changes from 1.9 branch

 r1466 at cubic-pc (orig r5362):  ruz | 2006-06-15 02:51:36 +0400
  r1461 at cubic-pc:  cubic | 2006-06-15 01:16:24 +0400
  * add resolution CF to edit page
 
 r1467 at cubic-pc (orig r5363):  ruz | 2006-06-15 02:51:47 +0400
  r1462 at cubic-pc:  cubic | 2006-06-15 02:31:48 +0400
  * drop resolution on re-open
 
 r1468 at cubic-pc (orig r5364):  ruz | 2006-06-15 02:51:57 +0400
  r1463 at cubic-pc:  cubic | 2006-06-15 02:32:13 +0400
  * allow edit resolution on any reply
 
 r1470 at cubic-pc (orig r5365):  ruz | 2006-06-15 03:10:43 +0400
  r1469 at cubic-pc:  cubic | 2006-06-15 03:19:03 +0400
  * don't allow to edit status from advanced page
 
 r1529 at cubic-pc (orig r5396):  ruz | 2006-06-16 20:49:29 +0400
 
 r1531 at cubic-pc (orig r5467):  ruz | 2006-06-26 18:10:59 +0400
  r1530 at cubic-pc:  cubic | 2006-06-26 18:18:01 +0400
  * use StrictLinkACL config option to get rid of taking or stealling
    tickets before linking
 


Modified: rtir/branches/2.0-TESTING/html/RTIR/Advanced.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Advanced.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Advanced.html	Tue Jun 27 13:46:46 2006
@@ -12,7 +12,47 @@
 <input type="hidden" name="id" value="<% $Ticket->Id %>" />
 
 <&| /Widgets/TitleBox, title => loc('Edit basics') &>
-<& /Ticket/Elements/EditBasics, TicketObj => $Ticket &>
+<table>
+  <tr>
+    <td class="label"><&|/l&>Subject</&>:</td>
+    <td class="value"><input name="Subject" value="<% $Ticket->Subject %>" size="50" /></td>
+  </tr>
+  <tr>
+    <td class="label"><&|/l&>Queue</&>:</td>
+    <td class="value"><& /Elements/SelectQueue, Name => 'Queue', Default => $Ticket->Queue &></td>
+  </tr>
+
+  <tr>
+    <td class="label"><&|/l&>Time Estimated</&>:</td>
+    <td class="value">
+      <input name="TimeEstimated" value="<% $Ticket->TimeEstimated %>" size="5" />
+      <& /Elements/SelectTimeUnits, Name =>'TimeEstimated' &>
+    </td>
+  </tr>
+  <tr>
+    <td class="label"><&|/l&>Time Worked</&>:</td>
+    <td class="value">
+      <input name="TimeWorked" value="<% $Ticket->TimeWorked %>" size="5" />
+      <& /Elements/SelectTimeUnits, Name =>'TimeWorked' &>
+    </td>
+  </tr>
+  <tr>
+    <td class="label"><&|/l&>Time Left</&>:</td>
+    <td class="value">
+      <input name="TimeLeft" value="<% $Ticket->TimeLeft %>" size="5" />
+      <& /Elements/SelectTimeUnits, Name =>'TimeLeft' &>
+    </td>
+  </tr>
+
+  <tr>
+    <td class="label"><&|/l&>Priority</&>:</td>
+    <td class="value"><input name="Priority" value="<% $Ticket->Priority %>" size="5" /></td>
+  </tr>
+  <tr>
+    <td class="label"><&|/l&>Final Priority</&>:</td>
+    <td class="value"><input name="FinalPriority" value="<% $Ticket->FinalPriority %>" size="5" /></td>
+  </tr>
+</table>
 </&>
 
 <&| /Widgets/TitleBox, title => loc('Edit Links') &>

Modified: rtir/branches/2.0-TESTING/html/RTIR/Display.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Display.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Display.html	Tue Jun 27 13:46:46 2006
@@ -251,7 +251,11 @@
     $ARGS{UpdateAttachments} = delete $session{'Attachments'};
     push @results, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef => \%ARGS );
     push @results, ProcessTicketBasics(  TicketObj => $Ticket, ARGSRef => \%ARGS );
+
+    my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
     push @results, ProcessTicketLinks(   TicketObj => $Ticket, ARGSRef => \%ARGS );
+    RT->Config->Set( StrictLinkACL => $strict_acl );
+
     push @results, ProcessTicketDates(   TicketObj => $Ticket, ARGSRef => \%ARGS );
 
     my $newstate = $Ticket->FirstCustomFieldValue('_RTIR_State');

Modified: rtir/branches/2.0-TESTING/html/RTIR/Edit.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Edit.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Edit.html	Tue Jun 27 13:46:46 2006
@@ -236,7 +236,11 @@
 if ( $SaveChanges && !$OnlySearchForPeople ) {
     my $oldstate = RT::IR::Ticket::FirstCustomFieldValue( $Ticket, '_RTIR_State' );
     push @results, ProcessTicketWatchers( TicketObj => $Ticket, ARGSRef => \%ARGS );
+
+    my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
     push @results, ProcessTicketLinks(    TicketObj => $Ticket, ARGSRef => \%ARGS );
+    RT->Config->Set( StrictLinkACL => $strict_acl );
+
     push @results, ProcessTicketDates(    TicketObj => $Ticket, ARGSRef => \%ARGS );
 
     # XXX: edit page has no message box or attachments form

Modified: rtir/branches/2.0-TESTING/html/RTIR/Elements/NewReports
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Elements/NewReports	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Elements/NewReports	Tue Jun 27 13:46:46 2006
@@ -22,7 +22,7 @@
 %# 
 %# 
 %# END LICENSE BLOCK
-<& /Widgets/TitleBoxStart, 
+<&| /Widgets/TitleBox, 
 	title_href  => RT->Config->Get('WebPath') ."/RTIR/Search/Results.html?$EscapedQueue\&$QueryString",
 	title_class => 'inverse',
 	title       => $title, 
@@ -43,8 +43,7 @@
 
 <a href="<% RT->Config->Get('WebPath') %>/RTIR/Report/BulkReject.html?<% $EscapedQueue %>&<% $QueryString %>">[<%loc("Bulk Reject")%>]</a>
 
-<& /Widgets/TitleBoxEnd &>
-
+</&>
 
 <%INIT>
 my $title = loc("New unlinked Incident Reports...");

Modified: rtir/branches/2.0-TESTING/html/RTIR/Incident/Display.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Incident/Display.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Incident/Display.html	Tue Jun 27 13:46:46 2006
@@ -236,40 +236,49 @@
 }
 Abort('No incident specified') unless $id;
 
+my $take_or_steal = sub {
+    my $owner = $_[0]->Owner;
+    return () if $owner == $session{'CurrentUser'}->id;
+    my $action = 'Steal';
+    $action = 'Take' if $owner == $RT::Nobody->id;
+    my ($res, $msg) = $_[0]->$action();
+    return $msg || ();
+};
+
 my $deleted_links = 0;
 my $DoLinks = sub {
-    my $TicketObj = shift;
-    my $Target = shift;
+    my ($child, $parent) = @_;
 
     my %args = ();
 
     # Blocks or Incedent Reports can have multiple incidents
-    my ($Type) = $m->comp( "/RTIR/Elements/Type", TicketObj => $TicketObj );
+    my ($Type) = $m->comp( '/RTIR/Elements/Type', TicketObj => $child );
     unless( $Type eq 'Block' || $Type eq 'Report' ) {
-        # XXX: Can we ever get here?
-        my $query = "Queue = 'Incidents' AND HasMember = ". $TicketObj->Id ." AND id != ". $Target->id;
-        my $incidents = new RT::Tickets( $session{'CurrentUser'} );
+        my $query = "Queue = 'Incidents' AND HasMember = ". $child->Id ." AND id != ". $parent->id;
+        my $incidents = RT::Tickets->new( $session{'CurrentUser'} );
         $incidents->FromSQL( $query );
         while ( my $incident = $incidents->Next ) {
             $deleted_links = 1;
-            $args{'DeleteLink-'. $TicketObj->id .'-MemberOf-'. $incident->id } = '';
+            $args{'DeleteLink-'. $child->id .'-MemberOf-'. $incident->id } = '';
         }
     }
 
     my @results;
-    # If we own one end than take or steal other end of the link
-    for my $obj( $Target, $TicketObj ) {
-        next if $obj->Owner == $session{'CurrentUser'}->id;
-        my $action = 'Steal';
-        $action = 'Take' if $obj->Owner == $RT::Nobody->id;
-        my ($res, $msg) = $obj->$action();
-        push @results, $msg;
+
+    # if we don't own any of ends, take or steal parent
+    unless ( $parent->Owner == $session{'CurrentUser'}->id
+             || $child->Owner == $session{'CurrentUser'}->id )
+    {
+        push @results, $take_or_steal->( $parent );
     }
 
-    $args{ $TicketObj->Id .'-MemberOf' } = $Target->Id;
-    push @results, ProcessTicketLinks( TicketObj => $TicketObj, ARGSRef => \%args );
+    # turn off strict check localy
+    my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
+    $args{ $child->Id .'-MemberOf' } = $parent->Id;
+    push @results, ProcessTicketLinks( TicketObj => $child, ARGSRef => \%args );
+    RT->Config->Set( StrictLinkACL => $strict_acl );
 
-    return map { loc("Ticket [_1]: [_2]", $TicketObj->Id, $_) } @results;
+    return map { loc("Ticket [_1]: [_2]", $child->Id, $_) } @results;
 };
 
 my $TicketObj;

Modified: rtir/branches/2.0-TESTING/html/RTIR/Incident/Edit.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Incident/Edit.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Incident/Edit.html	Tue Jun 27 13:46:46 2006
@@ -112,6 +112,15 @@
 	 Rows => 1 &>
     </td>
   </tr>
+  <tr>
+    <td class="label"><&|/l&>Resolution</&>:</td>
+    <td class="value">
+      <& /RTIR/Elements/EditRTIRField,
+         TicketObj => $Ticket,
+	     Name => 'Resolution',
+	     Rows => 1 &>
+    </td>
+  </tr>
 </table>
 
 <& /Widgets/TitleBoxEnd &>
@@ -154,7 +163,11 @@
     push @results, ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS);
     push @results, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS);
     push @results, ProcessTicketDates( TicketObj => $Ticket, ARGSRef => \%ARGS);
+
+    my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
     push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS);
+    RT->Config->Set( StrictLinkACL => $strict_acl );
+
     $ARGS{UpdateAttachments} = $session{'Attachments'};
    	push @results, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef=>\%ARGS );
 }

Modified: rtir/branches/2.0-TESTING/html/RTIR/Incident/Elements/ReplyForm
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Incident/Elements/ReplyForm	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Incident/Elements/ReplyForm	Tue Jun 27 13:46:46 2006
@@ -15,7 +15,6 @@
 </select>
 </td></tr>
 
-% if ( $Status =~ /^(?:resolved|rejected)$/ ) {
 <tr><td class="label"><&|/l&>Resolution</&>:</td>
 <td class="value">
 <& /RTIR/Elements/EditRTIRField,
@@ -28,7 +27,6 @@
     ),
     Rows      => 1,
 &></td></tr>
-% }
 
 <tr><td class="label"><&|/l&>Owner</&>:</td><td>
 <& /Elements/SelectOwner,

Modified: rtir/branches/2.0-TESTING/html/RTIR/Incident/ShowChildren.html
==============================================================================
--- rtir/branches/2.0-TESTING/html/RTIR/Incident/ShowChildren.html	(original)
+++ rtir/branches/2.0-TESTING/html/RTIR/Incident/ShowChildren.html	Tue Jun 27 13:46:46 2006
@@ -63,7 +63,10 @@
 if( $ARGS{'Unlink'} ) {
     # translate the checkbox args to what ProcessTicketLinks expects
     $ARGS{'DeleteLink-'. $_ .'-MemberOf-'} = 1 for @SelectedTickets;
+
+    my $strict_acl = RT->Config->Set( StrictLinkACL => 0 );
     push @results, ProcessTicketLinks( TicketObj => $Incident, ARGSRef => \%ARGS );
+    RT->Config->Set( StrictLinkACL => $strict_acl );
 }
 
 unless ( $Incident->CurrentUserHasRight('ShowTicket') ) {

Modified: rtir/branches/2.0-TESTING/lib/RT/Action/RTIR_SetIncidentResolution.pm
==============================================================================
--- rtir/branches/2.0-TESTING/lib/RT/Action/RTIR_SetIncidentResolution.pm	(original)
+++ rtir/branches/2.0-TESTING/lib/RT/Action/RTIR_SetIncidentResolution.pm	Tue Jun 27 13:46:46 2006
@@ -21,17 +21,26 @@
     my $self = shift;
 
     my $t = $self->TicketObj;
+    my $cf = RT::CustomField->new( $self->TransactionObj->CurrentUser );
+    $cf->LoadByNameAndQueue( Queue => $t->QueueObj->Id, Name => '_RTIR_Resolution' );
+    return 1 unless $cf->Id;
 
     my $status = $t->Status;
-    return 1 unless $t->QueueObj->IsInactiveStatus( $t->Status );
+    if ( $t->QueueObj->IsActiveStatus( $status ) ) {
+        # on re-open, drop resolution
+        my $txn = $self->TransactionObj; my $type = $txn->Type;
+        return 1 unless $type eq "Status" || ( $type eq "Set" && $txn->Field eq "Status" );
+        return 1 unless $t->QueueObj->IsInactiveStatus( $txn->OldValue );
+        return 1 unless my $value = $t->FirstCustomFieldValue( $cf->id );
+        $t->DeleteCustomFieldValue( Field => $cf->id, Value => $value );
+        return 1;
+    }
+
+    return 1 unless $t->QueueObj->IsInactiveStatus( $status );
 
     my $value = RT->Config->Get("_RTIR_Resolution_${status}_default");
     return 1 unless $value;
 
-    my $cf = RT::CustomField->new( $self->TransactionObj->CurrentUser );
-    $cf->LoadByNameAndQueue( Queue => $t->QueueObj->Id, Name => '_RTIR_Resolution' );
-    return 1 unless $cf->Id;
-
     return 1 if $t->FirstCustomFieldValue( $cf->id );
 
     my ($res, $msg) = $t->AddCustomFieldValue( Field => $cf->id, Value => $value );


More information about the Rt-commit mailing list