[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