[Rt-commit] [svn] r1626 - in rt/branches/3.2-SYBASE-TESTING: . html/Ticket/Elements lib/RT

jesse at pallas.eruditorum.org jesse at pallas.eruditorum.org
Mon Oct 4 16:04:43 EDT 2004


Author: jesse
Date: Mon Oct  4 16:04:43 2004
New Revision: 1626

Modified:
   rt/branches/3.2-SYBASE-TESTING/   (props changed)
   rt/branches/3.2-SYBASE-TESTING/html/Ticket/Elements/ShowMessageHeaders
   rt/branches/3.2-SYBASE-TESTING/lib/RT/Ticket_Overlay.pm
   rt/branches/3.2-SYBASE-TESTING/lib/RT/Tickets_Overlay.pm
   rt/branches/3.2-SYBASE-TESTING/releng.cnf
Log:
 r10394 at tinbook:  jesse | 2004-09-27T22:30:56.851455Z
 


Modified: rt/branches/3.2-SYBASE-TESTING/html/Ticket/Elements/ShowMessageHeaders
==============================================================================
--- rt/branches/3.2-SYBASE-TESTING/html/Ticket/Elements/ShowMessageHeaders	(original)
+++ rt/branches/3.2-SYBASE-TESTING/html/Ticket/Elements/ShowMessageHeaders	Mon Oct  4 16:04:43 2004
@@ -49,9 +49,8 @@
 % foreach my $header (@headers) {
 % next unless ($display_headers{'_all'} || $display_headers{lc($header->{'Tag'})});
 <tr>
-<td align="right" class="message-header-key"><pre><%$header->{'Tag'}%>:</pre></td>
-<td class="message-header-value"><%$header->{'Value'}%></td>
-</td>
+<td align="right" class="message-header-key"><%$header->{'Tag'}%>:</td>
+<td class="message-header-value"><%$header->{'Value'} | n%></td>
 </tr>
 % }
 </table>
@@ -59,6 +58,9 @@
 my $content = $Headers;
 $m->comp('/Elements/Callback', content => \$content, %ARGS);
 
+# apply html escaping on the original content
+# we'll display the value without escaping later (for MakeClicky et al.)
+$content = $m->interp->apply_escapes($content, 'h');
 
 my @lines = split (/\n/,$content);
 my $in_header = 0;
@@ -72,13 +74,13 @@
 
         push (@headers, { Tag => $_, Value => ''} ); 
     }
-
 }
 
 my %display_headers;
 
 map { $display_headers{lc($_)} = 1 } @$DisplayHeaders;
 
+$m->comp('/Elements/Callback', _CallbackName => 'Headers', content => \$content, headers => \@headers, display_headers => \%display_headers, %ARGS);
 
 </%INIT>
 <%ARGS>

Modified: rt/branches/3.2-SYBASE-TESTING/lib/RT/Ticket_Overlay.pm
==============================================================================
--- rt/branches/3.2-SYBASE-TESTING/lib/RT/Ticket_Overlay.pm	(original)
+++ rt/branches/3.2-SYBASE-TESTING/lib/RT/Ticket_Overlay.pm	Mon Oct  4 16:04:43 2004
@@ -300,9 +300,9 @@
 
   id 
   Queue  - Either a Queue object or a Queue Name
-  Requestor -  A reference to a list of RT::User objects, email addresses or RT user Names
-  Cc  - A reference to a list of RT::User objects, email addresses or Names
-  AdminCc  - A reference to a  list of RT::User objects, email addresses or Names
+  Requestor -  A reference to a list of  email addresses or RT user Names
+  Cc  - A reference to a list of  email addresses or Names
+  AdminCc  - A reference to a  list of  email addresses or Names
   Type -- The ticket\'s type. ignore this for now
   Owner -- This ticket\'s owner. either an RT::User object or this user\'s id
   Subject -- A string describing the subject of the ticket

Modified: rt/branches/3.2-SYBASE-TESTING/lib/RT/Tickets_Overlay.pm
==============================================================================
--- rt/branches/3.2-SYBASE-TESTING/lib/RT/Tickets_Overlay.pm	(original)
+++ rt/branches/3.2-SYBASE-TESTING/lib/RT/Tickets_Overlay.pm	Mon Oct  4 16:04:43 2004
@@ -125,6 +125,7 @@
     Filename        => ['TRANSFIELD',],
     TransactionDate => ['TRANSDATE',],
     Requestor       => ['WATCHERFIELD' => 'Requestor',],
+    Requestors       => ['WATCHERFIELD' => 'Requestor',],
     Cc              => ['WATCHERFIELD' => 'Cc',],
     AdminCc         => ['WATCHERFIELD' => 'AdminCC',],
     Watcher	    => ['WATCHERFIELD'],
@@ -589,79 +590,162 @@
 Meta Data:
   1: Field to query on
 
-=cut
 
-sub _WatcherLimit {
-  my ($self,$field,$op,$value, at rest) = @_;
-  my %rest = @rest;
+=begin testing
 
-  $self->_OpenParen;
+# Test to make sure that you can search for tickets by requestor address and
+# by requestor name.
 
-  my $groups	    = $self->NewAlias('Groups');
-  my $groupmembers  = $self->NewAlias('CachedGroupMembers');
-  my $users	    = $self->NewAlias('Users');
+my ($id,$msg);
+my $u1 = RT::User->new($RT::SystemUser);
+($id, $msg) = $u1->Create( Name => 'RequestorTestOne', EmailAddress => 'rqtest1 at example.com');
+ok ($id,$msg);
+my $u2 = RT::User->new($RT::SystemUser);
+($id, $msg) = $u2->Create( Name => 'RequestorTestTwo', EmailAddress => 'rqtest2 at example.com');
+ok ($id,$msg);
 
+my $t1 = RT::Ticket->new($RT::SystemUser);
+my ($trans);
+($id,$trans,$msg) =$t1->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u1->EmailAddress]);
+ok ($id, $msg);
 
-  #Find user watchers
-#  my $subclause = undef;
-#  my $aggregator = 'OR';
-#  if ($restriction->{'OPERATOR'} =~ /!|NOT/i ){
-#    $subclause = 'AndEmailIsNot';
-#    $aggregator = 'AND';
-#  }
+my $t2 = RT::Ticket->new($RT::SystemUser);
+($id,$trans,$msg) =$t2->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u2->EmailAddress]);
+ok ($id, $msg);
 
-  if (ref $field) { # gross hack
-    my @bundle = @$field;
-    $self->_OpenParen;
-    for my $chunk (@bundle) {
-      ($field,$op,$value, at rest) = @$chunk;
-      $self->_SQLLimit(ALIAS => $users,
-   		   FIELD => $rest{SUBKEY} || 'EmailAddress',
-   		   VALUE           => $value,
-   		   OPERATOR        => $op,
-   		   CASESENSITIVE   => 0,
-   		   @rest,
-   		  );
-    }
-    $self->_CloseParen;
-  } else {
-     $self->_SQLLimit(ALIAS => $users,
-   		   FIELD => $rest{SUBKEY} || 'EmailAddress',
-   		   VALUE           => $value,
-   		   OPERATOR        => $op,
-   		   CASESENSITIVE   => 0,
-   		   @rest,
-   		  );
-  }
 
-  # {{{ Tie to groups for tickets we care about
-  $self->_SQLLimit(ALIAS => $groups,
-		   FIELD => 'Domain',
-		   VALUE => 'RT::Ticket-Role',
-		   ENTRYAGGREGATOR => 'AND');
-
-  $self->_SQLJoin(ALIAS1 => $groups, FIELD1 => 'Instance',
-	      ALIAS2 => 'main',   FIELD2 => 'id');
-  # }}}
+my $t3 = RT::Ticket->new($RT::SystemUser);
+($id,$trans,$msg) =$t3->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u2->EmailAddress, $u1->EmailAddress]);
+ok ($id, $msg);
 
-  # If we care about which sort of watcher
-  my $meta = $FIELDS{$field};
-  my $type = ( defined $meta->[1] ? $meta->[1] : undef );
 
-  if ( $type ) {
-    $self->_SQLLimit(ALIAS => $groups,
-		     FIELD => 'Type',
-		     VALUE => $type,
-		     ENTRYAGGREGATOR => 'AND');
-  }
+my $tix1 = RT::Tickets->new($RT::SystemUser);
+$tix1->FromSQL('Requestor.EmailAddress LIKE "rqtest1" OR Requestor.EmailAddress LIKE "rqtest2"');
+
+is ($tix1->Count, 3);
+
+my $tix2 = RT::Tickets->new($RT::SystemUser);
+$tix2->FromSQL('Requestor.Name LIKE "TestOne" OR Requestor.Name LIKE "TestTwo"');
+
+is ($tix2->Count, 3);
+
+
+my $tix3 = RT::Tickets->new($RT::SystemUser);
+$tix3->FromSQL('Requestor.EmailAddress LIKE "rqtest1"');
 
-  $self->_SQLJoin (ALIAS1 => $groups,  FIELD1 => 'id',
-	       ALIAS2 => $groupmembers, FIELD2 => 'GroupId');
+is ($tix3->Count, 2);
 
-  $self->_SQLJoin( ALIAS1 => $groupmembers, FIELD1 => 'MemberId',
-	       ALIAS2 => $users, FIELD2 => 'id');
+my $tix4 = RT::Tickets->new($RT::SystemUser);
+$tix4->FromSQL('Requestor.Name LIKE "TestOne" ');
 
- $self->_CloseParen;
+is ($tix4->Count, 2);
+
+# Searching for tickets that have two requestors isn't supported
+# There's no way to differentiate "one requestor name that matches foo and bar"
+# and "two requestors, one matching foo and one matching bar"
+
+# my $tix5 = RT::Tickets->new($RT::SystemUser);
+# $tix5->FromSQL('Requestor.Name LIKE "TestOne" AND Requestor.Name LIKE "TestTwo"');
+# 
+# is ($tix5->Count, 1);
+# 
+# my $tix6 = RT::Tickets->new($RT::SystemUser);
+# $tix6->FromSQL('Requestor.EmailAddress LIKE "rqtest1" AND Requestor.EmailAddress LIKE "rqtest2"');
+# 
+# is ($tix6->Count, 1);
+
+
+=end testing
+
+=cut
+
+sub _WatcherLimit {
+    my $self  = shift;
+    my $field = shift;
+    my $op    = shift;
+    my $value = shift;
+    my %rest  = (@_);
+
+    $self->_OpenParen;
+
+    my $groups       = $self->NewAlias('Groups');
+    my $groupmembers = $self->NewAlias('CachedGroupMembers');
+    my $users        = $self->NewAlias('Users');
+
+    # If we're looking for multiple watchers of a given type,
+    # TicketSQL will be handing it to us as an array of cluases in
+    # $field
+    if ( ref $field ) {    # gross hack
+        $self->_OpenParen;
+        for my $chunk (@$field) {
+            ( $field, $op, $value, %rest ) = @$chunk;
+            $self->_SQLLimit(
+                ALIAS         => $users,
+                FIELD         => $rest{SUBKEY} || 'EmailAddress',
+                VALUE         => $value,
+                OPERATOR      => $op,
+                CASESENSITIVE => 0,
+                %rest
+            );
+        }
+        $self->_CloseParen;
+    }
+    else {
+        $self->_SQLLimit(
+            ALIAS         => $users,
+            FIELD         => $rest{SUBKEY} || 'EmailAddress',
+            VALUE         => $value,
+            OPERATOR      => $op,
+            CASESENSITIVE => 0,
+            %rest,
+        );
+    }
+
+    # {{{ Tie to groups for tickets we care about
+    $self->_SQLLimit(
+        ALIAS           => $groups,
+        FIELD           => 'Domain',
+        VALUE           => 'RT::Ticket-Role',
+        ENTRYAGGREGATOR => 'AND'
+    );
+
+    $self->_SQLJoin(
+        ALIAS1 => $groups,
+        FIELD1 => 'Instance',
+        ALIAS2 => 'main',
+        FIELD2 => 'id'
+    );
+
+    # }}}
+
+    # If we care about which sort of watcher
+    my $meta = $FIELDS{$field};
+    my $type = ( defined $meta->[1] ? $meta->[1] : undef );
+
+    if ($type) {
+        $self->_SQLLimit(
+            ALIAS           => $groups,
+            FIELD           => 'Type',
+            VALUE           => $type,
+            ENTRYAGGREGATOR => 'AND'
+        );
+    }
+
+    $self->_SQLJoin(
+        ALIAS1 => $groups,
+        FIELD1 => 'id',
+        ALIAS2 => $groupmembers,
+        FIELD2 => 'GroupId'
+    );
+
+    $self->_SQLJoin(
+        ALIAS1 => $groupmembers,
+        FIELD1 => 'MemberId',
+        ALIAS2 => $users,
+        FIELD2 => 'id'
+    );
+
+    $self->_CloseParen;
 
 }
 
@@ -865,7 +949,6 @@
     }
 
     if ($args{'FIELD'} eq 'Type') {
-    warn "We're loooking at the type";
         $self->{'looking_at_type'} = 1;
     }
 

Modified: rt/branches/3.2-SYBASE-TESTING/releng.cnf
==============================================================================
--- rt/branches/3.2-SYBASE-TESTING/releng.cnf	(original)
+++ rt/branches/3.2-SYBASE-TESTING/releng.cnf	Mon Oct  4 16:04:43 2004
@@ -1,5 +1,5 @@
 PRODUCT			        = rt
-TAG			            = 3.2.2rc1
+TAG			            = 3.2.2
 CANONICAL_REPO		    = svn+ssh://svn.bestpractical.com/svn/bps-public/rt/
 TAGS		            = tags/
 TRUNK	                = branches/3.2-RELEASE/


More information about the Rt-commit mailing list