summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rt/html/Elements/EditCustomers7
-rw-r--r--rt/html/Ticket/Elements/EditCustomers8
-rw-r--r--rt/html/Ticket/Elements/ShowCustomers12
-rwxr-xr-xrt/lib/RT/Record.pm2
-rw-r--r--rt/lib/RT/Ticket_Overlay.pm37
5 files changed, 47 insertions, 19 deletions
diff --git a/rt/html/Elements/EditCustomers b/rt/html/Elements/EditCustomers
index 57eb9059d..68efb5f40 100644
--- a/rt/html/Elements/EditCustomers
+++ b/rt/html/Elements/EditCustomers
@@ -21,12 +21,7 @@
</tr>
<tr>
<td class="value">
-% #while (my $link = $Object->MemberOf->Next) {
-% foreach my $link (
-% grep { $_->TargetURI->Resolver->{'fstable'} eq 'cust_main' }
-% grep { $_->TargetURI->Scheme eq 'freeside' }
-% @{ $Object->_Links('Base')->ItemsArrayRef }
-% ) {
+% foreach my $link ( @{ $Object->Customers->ItemsArrayRef } ) {
<INPUT TYPE=CHECKBOX NAME="DeleteLink--<%$link->Type%>-<%$link->Target%>">
%# <& ShowLink, URI => $link->TargetURI &><br>
diff --git a/rt/html/Ticket/Elements/EditCustomers b/rt/html/Ticket/Elements/EditCustomers
index c5a6f708c..0ba6e447b 100644
--- a/rt/html/Ticket/Elements/EditCustomers
+++ b/rt/html/Ticket/Elements/EditCustomers
@@ -1,4 +1,5 @@
%# Copyright (c) 2004 Ivan Kohler <ivan-rt@420.am>
+%# Copyright (c) 2008 Freeside Internet Services, Inc.
%#
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
@@ -20,12 +21,7 @@
</tr>
<tr>
<td class="value">
-% #while (my $link = $Ticket->MemberOf->Next) {
-% foreach my $link (
-% grep { $_->TargetURI->Resolver->{'fstable'} eq 'cust_main' }
-% grep { $_->TargetURI->Scheme eq 'freeside' }
-% @{ $Ticket->_Links('Base')->ItemsArrayRef }
-% ) {
+% foreach my $link ( @{ $Ticket->Customers->ItemsArrayRef } ) {
<INPUT TYPE=CHECKBOX NAME="DeleteLink--<%$link->Type%>-<%$link->Target%>">
%# <& ShowLink, URI => $link->TargetURI &><br>
diff --git a/rt/html/Ticket/Elements/ShowCustomers b/rt/html/Ticket/Elements/ShowCustomers
index 612727ede..3acf92dd4 100644
--- a/rt/html/Ticket/Elements/ShowCustomers
+++ b/rt/html/Ticket/Elements/ShowCustomers
@@ -11,17 +11,15 @@
%# General Public License for more details.
<table>
% my $cust = 0;
-% foreach my $customerURI (
-% grep { $_->Resolver->{'fstable'} eq 'cust_main' }
-% grep { $_->Scheme eq 'freeside' }
-% map { $_->TargetURI }
-% @{ $Ticket->_Links('Base')->ItemsArrayRef }
-% ) {
+% foreach my $custResolver ( map { $_->TargetURI->Resolver }
+% @{ $Ticket->Customers->ItemsArrayRef }
+% )
+% {
% $cust++;
% my $cust_main = '';
<tr>
<td class="value">
- <A HREF="<% $customerURI->Resolver->HREF %>"><% $customerURI->Resolver->AsStringLong |n %></A>
+ <A HREF="<% $custResolver->HREF %>"><% $custResolver->AsStringLong |n %></A>
</td>
</tr>
% }
diff --git a/rt/lib/RT/Record.pm b/rt/lib/RT/Record.pm
index f7100c5f2..b32ef5553 100755
--- a/rt/lib/RT/Record.pm
+++ b/rt/lib/RT/Record.pm
@@ -74,6 +74,7 @@ our @ISA;
use base qw(RT::Base);
use RT::Date;
+use RT::I18N;
use RT::User;
use RT::Attributes;
use DBIx::SearchBuilder::Record::Cachable;
@@ -862,6 +863,7 @@ sub _DecodeLOB {
elsif ( $ContentEncoding && $ContentEncoding ne 'none' ) {
return ( $self->loc( "Unknown ContentEncoding [_1]", $ContentEncoding ) );
}
+
if ( RT::I18N::IsTextualContentType($ContentType) ) {
$Content = Encode::decode_utf8($Content) unless Encode::is_utf8($Content);
}
diff --git a/rt/lib/RT/Ticket_Overlay.pm b/rt/lib/RT/Ticket_Overlay.pm
index b4e3259f1..1916bc463 100644
--- a/rt/lib/RT/Ticket_Overlay.pm
+++ b/rt/lib/RT/Ticket_Overlay.pm
@@ -716,6 +716,43 @@ sub Create {
# }}}
+ # {{{ Deal with auto-customer association
+
+ #unless we already have (a) customer(s)...
+ unless ( $self->Customers->Count ) {
+
+ #find any requestors with customer targets
+
+ my %cust_target = ();
+
+ my @Requestors =
+ grep { $_->Customers->Count }
+ @{ $self->Requestors->UserMembersObj->ItemsArrayRef };
+
+ foreach my $Requestor ( @Requestors ) {
+ foreach my $cust_link ( @{ $Requestor->Customers->ItemsArrayRef } ) {
+ $cust_target{ $cust_link->Target } = 1;
+ }
+ }
+
+ #and then auto-associate this ticket with those customers
+
+ foreach my $cust_target ( keys %cust_target ) {
+
+ my @link = ( 'Type' => 'MemberOf',
+ #'Target' => "freeside://freeside/cust_main/$custnum",
+ 'Target' => $cust_target,
+ );
+
+ my( $val, $msg ) = $self->AddLink(@link);
+ push @non_fatal_errors, $msg;
+
+ }
+
+ }
+
+ # }}}
+
# {{{ Add all the custom fields
foreach my $arg ( keys %args ) {