[Rt-commit] r10761 - in rtir/branches/2.3-EXPERIMENTAL/html/RTIR: Elements

ruz at bestpractical.com ruz at bestpractical.com
Thu Feb 7 17:40:33 EST 2008


Author: ruz
Date: Thu Feb  7 17:40:33 2008
New Revision: 10761

Modified:
   rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Elements/MergeWith
   rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Merge.html

Log:
* fix merge according to constituency propagation modes

Modified: rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Elements/MergeWith
==============================================================================
--- rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Elements/MergeWith	(original)
+++ rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Elements/MergeWith	Thu Feb  7 17:40:33 2008
@@ -18,8 +18,12 @@
 
 $Query ||= $m->comp('/RTIR/Elements/NewQuery', Queue => $Queue);
 unless ( $BaseQuery ) {
-    $BaseQuery = $m->comp('/RTIR/Elements/BaseQuery', Queue => $Queue);
-    $BaseQuery = join ' AND ', map "( $_ )", grep $_, $BaseQuery, " id != $id";
+    my @parts;
+    push @parts, "id != $id";
+    push @parts, $m->comp('/RTIR/Elements/BaseQuery', Queue => $Queue) if $Queue;
+    push @parts, "CF.{_RTIR_Constituency} = '". $Ticket->FirstCustomFieldValue('_RTIR_Constituency') ."'"
+        if RT->Config->Get('_RTIR_Constituency_Propagation') eq 'reject';
+    $BaseQuery = join ' AND ', map "( $_ )", grep $_, @parts;
 }
 
 </%INIT>

Modified: rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Merge.html
==============================================================================
--- rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Merge.html	(original)
+++ rtir/branches/2.3-EXPERIMENTAL/html/RTIR/Merge.html	Thu Feb  7 17:40:33 2008
@@ -48,7 +48,6 @@
     %ARGS,
     Title     => loc('Other children of the parent incident(s) of #[_1]', $id),
     Ticket    => $Ticket,
-    BaseQuery => "id != $id",
     Query     => $siblings_query,
     Rows      => 0,
     Page      => 1,
@@ -67,39 +66,54 @@
 
 <%INIT>
 my $Ticket = LoadTicket($id);
-
 $id = $ARGS{'id'} = $Ticket->id;
 
 $m->callback(CallbackName => 'Initial', %ARGS, Ticket => $Ticket);
 
+my $MergeTicket;
+$MergeTicket = LoadTicket( $SelectedTicket ) if $SelectedTicket;
+
 my (@results);
-if ( $SelectedTicket ) {
-    my $MergeTicket = LoadTicket( $SelectedTicket );
+my $checks_failure = 0;
+if ( $MergeTicket ) {
+    my @queues = sort map $_->Name, $Ticket->QueueObj, $MergeTicket->QueueObj;
+    unless ( $queues[0] eq $queues[1] or ($queues[0] eq "Incident Reports" and $queues[1] eq "Investigations") ) {
+        push @results, loc("Merge failed: Ticket #[_1] is not the right type", $MergeTicket->Id );
+        $checks_failure = 1;
+    }
+}
 
-    $m->callback(CallbackName => 'MergeTicketSelected', MergeFrom => $Ticket, MergeTo => $MergeTicket);
+if ( $MergeTicket && RT->Config->Get('_RTIR_Constituency_Propagation') eq 'reject' ) {
+    if ( lc $MergeTicket->FirstCustomFieldValue('_RTIR_Constituency')
+        ne lc $Ticket->FirstCustomFieldValue('_RTIR_Constituency')
+    ) {
+        push @results, loc("Merge failed: Tickets have different constituencies" );
+        $checks_failure = 1;
+    }
+}
 
-    my @queues = sort map {$_->Name} $Ticket->QueueObj, $MergeTicket->QueueObj;
-    if ( $queues[0] eq $queues[1] or ($queues[0] eq "Incident Reports" and $queues[1] eq "Investigations")) {
-        if ( $queues[0] ne $queues[1] && $MergeTicket->QueueObj->Name eq "Incident Reports" ) {
-            # We always want to merge into the Investigation
-            ($Ticket, $MergeTicket) = ($MergeTicket, $Ticket);
-        }
+if ( $MergeTicket && !$checks_failure ) {
 
-        $ARGS{ $Ticket->id .'-MergeInto' } = $MergeTicket->id;
+    my @queues = sort map $_->Name, $Ticket->QueueObj, $MergeTicket->QueueObj;
+    if ( $queues[0] ne $queues[1] && $queues[1] eq "Incident Reports" ) {
+        # We always want to merge into the Investigation
+        ($Ticket, $MergeTicket) = ($MergeTicket, $Ticket);
+    }
 
-        for my $t ( $Ticket, $MergeTicket ) {
-            next if $t->Owner == $t->CurrentUser->Id;
+    $m->callback(CallbackName => 'MergeTicketSelected', MergeFrom => $Ticket, MergeTo => $MergeTicket);
 
-            my ($status, $msg) = $t->SetOwner($t->CurrentUser->Id, 'Force');
-            push @results, $msg if $msg;
-        }
-        push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS);
+    $ARGS{ $Ticket->id .'-MergeInto' } = $MergeTicket->id;
 
-        $Ticket = LoadTicket($id);
-        return $m->comp('/RTIR/Display.html', id => $Ticket->id, results => \@results );
-    } else {
-        push @results, loc("Merge failed: Ticket #[_1] is not the right type", $MergeTicket->Id );
+    for my $t ( $Ticket, $MergeTicket ) {
+        next if $t->Owner == $t->CurrentUser->Id;
+
+        my ($status, $msg) = $t->SetOwner($t->CurrentUser->Id, 'Force');
+        push @results, $msg if $msg;
     }
+    push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS);
+
+    $Ticket = LoadTicket($id);
+    return $m->comp('/RTIR/Display.html', id => $Ticket->id, results => \@results );
 }
 
 my $Type = RT::IR::TicketType( Ticket => $Ticket );
@@ -109,11 +123,14 @@
 
 $Query ||= $m->comp('/RTIR/Elements/NewQuery', Queue => $Queue);
 unless ( $BaseQuery ) {
-    $BaseQuery = $m->comp('/RTIR/Elements/BaseQuery', Queue => $Queue);
-    $BaseQuery = join ' AND ', map "( $_ )", grep $_, $BaseQuery, " id != $id";
+    my @parts;
+    push @parts, "id != $id";
+    push @parts, $m->comp('/RTIR/Elements/BaseQuery', Queue => $Queue);
+    push @parts, "CF.{_RTIR_Constituency} = '". $Ticket->FirstCustomFieldValue('_RTIR_Constituency') ."'"
+        if RT->Config->Get('_RTIR_Constituency_Propagation') eq 'reject';
+    $BaseQuery = join ' AND ', map "( $_ )", grep $_, @parts;
 }
 
-
 my %defaults = (
     Format  => $Format,
     Rows    => $Rows,


More information about the Rt-commit mailing list