[rt-commit] [svn] r548 - in rt/branches: . autrijus-3.1/html/Admin/Elements autrijus-3.1/html/Elements autrijus-3.1/html/Ticket autrijus-3.1/html/Ticket/Elements autrijus-3.1/lib/RT autrijus-3.1/lib/RT/Interface

autrijus at fsck.com autrijus at fsck.com
Thu Mar 11 05:10:18 EST 2004


Author: autrijus
Date: Thu Mar 11 05:10:17 2004
New Revision: 548

Added:
   rt/branches/autrijus-3.1/html/Elements/ShowCustomFields
Modified:
   rt/branches/   (props changed)
   rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields
   rt/branches/autrijus-3.1/html/Admin/Elements/ObjectCustomFields
   rt/branches/autrijus-3.1/html/Admin/Elements/QueueTabs
   rt/branches/autrijus-3.1/html/Ticket/Create.html
   rt/branches/autrijus-3.1/html/Ticket/Elements/ShowCustomFields
   rt/branches/autrijus-3.1/html/Ticket/Elements/ShowTransaction
   rt/branches/autrijus-3.1/html/Ticket/Update.html
   rt/branches/autrijus-3.1/lib/RT/CustomField_Overlay.pm
   rt/branches/autrijus-3.1/lib/RT/CustomFields_Overlay.pm
   rt/branches/autrijus-3.1/lib/RT/Interface/Web.pm
   rt/branches/autrijus-3.1/lib/RT/Queue_Overlay.pm
   rt/branches/autrijus-3.1/lib/RT/Record.pm
   rt/branches/autrijus-3.1/lib/RT/Ticket_Overlay.pm
   rt/branches/autrijus-3.1/lib/RT/Transaction_Overlay.pm
Log:
* QueueTicketTxn CFs.


Modified: rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields	Thu Mar 11 05:10:17 2004
@@ -31,6 +31,7 @@
 <FORM METHOD=GET ACTION="CustomFields.html">
 <INPUT TYPE=HIDDEN NAME="id" VALUE="<% $Object->Id %>">
 <INPUT TYPE=HIDDEN NAME="ObjectType" VALUE="<% $ObjectType %>">
+<INPUT TYPE=HIDDEN NAME="SubType" VALUE="<% $SubType %>">
 <input type="checkbox" name="FindDisabledCustomFields"> <&|/l&>Include disabled custom fields in listing.</&>
 <input type=submit value="<&|/l&>Go!</&>">
 </FORM>
@@ -38,6 +39,7 @@
 <FORM ACTION="CustomFields.html" METHOD=POST>
 <INPUT TYPE=HIDDEN NAME="id" VALUE="<% $Object->Id %>">
 <INPUT TYPE=HIDDEN NAME="ObjectType" VALUE="<% $ObjectType %>">
+<INPUT TYPE=HIDDEN NAME="SubType" VALUE="<% $SubType %>">
 <INPUT TYPE=HIDDEN NAME="UpdateCFs" VALUE="1">
 
 % if ($Object->Id) {
@@ -59,14 +61,15 @@
 my @results;
 my (@GlobalCFs, @UnassignedCFs);
 
-if (!$Object->CurrentUserHasRight('AssignCustomFields')) {
+my $id = $Object->Id;
+if ($id and !$Object->CurrentUserHasRight('AssignCustomFields')) {
     $m->print('<P><i>', loc('(No custom fields)'), '</i></P>');
     return;
 }
 
-# by "RT::Queue" fields on UI we really mean "RT::Ticket" fields.
 my $lookup = $ObjectType;
-$lookup = 'RT::Queue-RT::Ticket' if $lookup eq 'RT::Queue';
+$lookup .= "-$SubType" if $SubType;
+
 $CustomFields->LimitToLookupType($lookup);
 $CustomFields->OrderBy( FIELD => 'Name' );
 
@@ -77,7 +80,6 @@
     $caption = loc("Enabled Custom Fields");
 }
 
-my $id = $Object->Id;
 my ($GlobalCFs, $ObjectCFs);
 $ObjectCFs = RT::ObjectCustomFields->new($session{'CurrentUser'});
 $ObjectCFs->UnLimit;
@@ -179,4 +181,5 @@
 $UpdateCFs => 0
 $Object
 $ObjectType
+$SubType => ''
 </%ARGS>

Modified: rt/branches/autrijus-3.1/html/Admin/Elements/ObjectCustomFields
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Elements/ObjectCustomFields	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Elements/ObjectCustomFields	Thu Mar 11 05:10:17 2004
@@ -25,17 +25,17 @@
 <& $ObjectTabs,
 $id ? (
     id => $Object->id, 
-    current_tab => "Admin/$Types/CustomFields.html?id=".$id, 
-    current_subtab => "Admin/$Types/CustomFields.html?id=".$id, 
+    current_tab => "Admin/$Types/CustomFields.html?$sub_type_url&id=".$id, 
+    current_subtab => "Admin/$Types/CustomFields.html?$sub_type_url&id=".$id, 
     "${Type}Obj" => $Object,
 ) : (
-    current_tab => "Admin/$Types/CustomFields.html",
-    current_subtab => "Admin/$Types/CustomFields.html",
+    current_tab => "Admin/$Types/CustomFields.html?$sub_type_url",
+    current_subtab => "Admin/$Types/CustomFields.html?$sub_type_url",
 ),
     Title => $title
     &>
 
-<& /Admin/Elements/EditCustomFields, title => $title, Object => $Object, %ARGS &>
+<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, Object => $Object &>
 <%INIT>
 $ObjectType =~ /^RT::(Queue|User|Group)$/
     or Abort(loc("Object of type [_1] cannot take custom fields", $ObjectType));
@@ -49,8 +49,12 @@
 my $title = ($id ? loc('Edit Custom Fields for [_1]', $Object->Name)
 		 : loc("Modify Custom Fields which apply to all [_1]", loc($Types)));
 
+my $sub_type_url;
+$sub_type_url = "SubType=$SubType" if $SubType;
+
 </%INIT>
 <%ARGS>
 $id => undef
 $ObjectType
+$SubType => undef
 </%ARGS>

Modified: rt/branches/autrijus-3.1/html/Admin/Elements/QueueTabs
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Elements/QueueTabs	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Elements/QueueTabs	Thu Mar 11 05:10:17 2004
@@ -49,8 +49,12 @@
 				path => "Admin/Queues/Templates.html?id=".$id,
 			      },
 
-                 G => { title => loc('Custom Fields'),
-                        path => 'Admin/Queues/CustomFields.html?id='.$id,
+                 G1 => { title => loc('CF: Tickets'),
+                        path => 'Admin/Queues/CustomFields.html?SubType=RT::Ticket&id='.$id,
+                        },
+
+                 G2 => { title => loc('CF: TicketTxns'),
+                        path => 'Admin/Queues/CustomFields.html?SubType=RT::Ticket-RT::Transaction&id='.$id,
                         },
 
 		 H => { title => loc('Group Rights'),
@@ -69,8 +73,11 @@
   $tabs->{"B"} = { title => loc('New queue'),
   		     	path => "Admin/Queues/Modify.html?Create=1",
 			   };
-  $tabs->{"C"} = { title => loc('Custom Fields'),
-  		     	path => "Admin/Queues/CustomFields.html",
+  $tabs->{"C1"} = { title => loc('CF: Tickets'),
+  		     	path => "Admin/Queues/CustomFields.html?SubType=RT::Ticket",
+			   };
+  $tabs->{"C2"} = { title => loc('CF: TicketTxns'),
+  		     	path => "Admin/Queues/CustomFields.html?SubType=RT::Ticket-RT::Transaction",
 			separator => 1,
 			   };
 }

Added: rt/branches/autrijus-3.1/html/Elements/ShowCustomFields
==============================================================================
--- (empty file)
+++ rt/branches/autrijus-3.1/html/Elements/ShowCustomFields	Thu Mar 11 05:10:17 2004
@@ -0,0 +1,46 @@
+%# BEGIN LICENSE BLOCK
+%# 
+%# Copyright (c) 1996-2003 Jesse Vincent <jesse at bestpractical.com>
+%# 
+%# (Except where explictly superceded by other copyright notices)
+%# 
+%# 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
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# Unless otherwise specified, all modifications, corrections or
+%# extensions to this work which alter its source code become the
+%# property of Best Practical Solutions, LLC when submitted for
+%# inclusion in the work.
+%# 
+%# 
+%# END LICENSE BLOCK
+<table>
+% my @entry_fields;
+% while (my $CustomField = $CustomFields->Next()) {
+% my $Values = $Object->CustomFieldValues($CustomField->Id);
+  <tr>
+    <td class="label"><%$CustomField->Name%>:</td>
+    <td class="value">
+% while (my $Value = $Values->Next()) {
+<%$Value->Content%><br>        
+% }
+% unless ($Values->Count()) {
+<i><&|/l&>(no value)</&></i>
+% }
+    </td>
+  </tr>
+% }
+</table>
+<%INIT>
+my $CustomFields = $Object->CustomFields;
+</%INIT>
+<%ARGS>
+$Object => undef
+</%ARGS>

Modified: rt/branches/autrijus-3.1/html/Ticket/Create.html
==============================================================================
--- rt/branches/autrijus-3.1/html/Ticket/Create.html	(original)
+++ rt/branches/autrijus-3.1/html/Ticket/Create.html	Thu Mar 11 05:10:17 2004
@@ -189,6 +189,22 @@
 <& /Elements/TitleBoxEnd &>
 <BR>
 
+% if ($TxnCFs->Count) {
+<& /Elements/TitleBoxStart, title => loc('Transaction Custom Fields'), 
+	title_class=> 'inverse',  
+	titleright => '', color=> "#333366" &>
+<TABLE BORDER=0>
+% while (my $CF = $TxnCFs->Next()) {
+<TR>
+<TD ALIGN=RIGHT><% $CF->Name %>:</TD>
+<TD><& /Elements/EditCustomField, CustomField => $CF, NamePrefix => "TransactionCustomField-" &></TD>
+<TD ALIGN=RIGHT><em><% $CF->FriendlyType %></em></TD>
+</TD></TR>
+% }
+</TABLE>
+<& /Elements/TitleBoxEnd &>
+% }
+
 </TD>
 </TR>
 </TABLE>
@@ -206,7 +222,8 @@
 
 my $QueueObj = new RT::Queue($session{'CurrentUser'});
 $QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded."));
-my $CFs = $QueueObj->CustomFields();
+my $CFs = $QueueObj->TicketCustomFields();
+my $TxnCFs = $QueueObj->TicketTransactionCustomFields();
 
 if ($QueueObj->DefaultDueIn) {
     my $default_due = RT::Date->new($session{'CurrentUser'});

Modified: rt/branches/autrijus-3.1/html/Ticket/Elements/ShowCustomFields
==============================================================================
--- rt/branches/autrijus-3.1/html/Ticket/Elements/ShowCustomFields	(original)
+++ rt/branches/autrijus-3.1/html/Ticket/Elements/ShowCustomFields	Thu Mar 11 05:10:17 2004
@@ -21,26 +21,7 @@
 %# 
 %# 
 %# END LICENSE BLOCK
-<table>
-% my @entry_fields;
-% while (my $CustomField = $CustomFields->Next()) {
-% my $Values = $Ticket->CustomFieldValues($CustomField->Id);
-  <tr>
-    <td class="label"><%$CustomField->Name%>:</td>
-    <td class="value">
-% while (my $Value = $Values->Next()) {
-<%$Value->Content%><br>        
-% }
-% unless ($Values->Count()) {
-<i><&|/l&>(no value)</&></i>
-% }
-    </td>
-  </tr>
-% }
-</table>
-<%INIT>
-my $CustomFields = $Ticket->QueueObj->CustomFields();
-</%INIT>
+<& /Elements/ShowCustomFields, Object => $Ticket &>
 <%ARGS>
 $Ticket => undef
 </%ARGS>

Modified: rt/branches/autrijus-3.1/html/Ticket/Elements/ShowTransaction
==============================================================================
--- rt/branches/autrijus-3.1/html/Ticket/Elements/ShowTransaction	(original)
+++ rt/branches/autrijus-3.1/html/Ticket/Elements/ShowTransaction	Thu Mar 11 05:10:17 2004
@@ -33,6 +33,14 @@
 <TD><%$TimeTaken%>&nbsp;</TD>
 <TD ALIGN="RIGHT"><font size=-1><%$titlebar_commands|n%></font></TD>
 </TR>
+% if ($Transaction->CustomFieldValues->Count) {
+<TR class="<% $RowNum%2 ? 'oddline' : 'evenline'%>" >
+<TD BGCOLOR="<%$bgcolor%>">&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+<TD COLSPAN=4>
+<& /Elements/ShowCustomFields, Object => $Transaction &>
+</TD></TR>
+% }
 <%PERL>
 
 unless ($Collapsed) {

Modified: rt/branches/autrijus-3.1/html/Ticket/Update.html
==============================================================================
--- rt/branches/autrijus-3.1/html/Ticket/Update.html	(original)
+++ rt/branches/autrijus-3.1/html/Ticket/Update.html	Thu Mar 11 05:10:17 2004
@@ -40,6 +40,7 @@
 <&|/l&>Owner</&>:  
 <& /Elements/SelectOwner, Name=>"Owner", Default => ($ARGS{'Owner'} || $TicketObj->OwnerObj->Id()), QueueObj => $TicketObj->QueueObj, TicketObj => $TicketObj &>
 <&|/l&>Worked</&>: <input size=4 name="UpdateTimeWorked" value="<% $ARGS{UpdateTimeWorked}%>"> <&|/l&>minutes</&></td></tr>
+
 <tr><td align=right><&|/l&>Update Type</&>:</td>
 <td><select name="UpdateType">
 % if ($CanComment) {
@@ -73,6 +74,16 @@
 </TR>
 <TR>
 % } # end of if
+
+% if (my $TxnCFs = $TicketObj->TransactionCustomFields) {
+%    while (my $CF = $TxnCFs->Next()) {
+<TR>
+<TD ALIGN=RIGHT><% $CF->Name %>:</TD>
+<TD><& /Elements/EditCustomField, CustomField => $CF, NamePrefix => "TransactionCustomField-" &><em><% $CF->FriendlyType %></em></TD>
+</TD></TR>
+%    } # end if while
+% } # end of if
+
 <tr><td align=right><&|/l&>Attach</&>:</td><td><input name="Attach" type="file"><INPUT TYPE=SUBMIT NAME="AddMoreAttach" VALUE="<&|/l&>Add More Files</&>"><input type="hidden" name="UpdateAttach" value="1">
 </td></tr>
 <tr><td align="right" valign="top"><&|/l&>Message</&>:</td><td>
@@ -174,6 +185,7 @@
     $m->comp('Display.html', TicketObj => $TicketObj, %ARGS);
     return;
 }
+
 </%INIT>
 
 <%ARGS>

Modified: rt/branches/autrijus-3.1/lib/RT/CustomField_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/CustomField_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/CustomField_Overlay.pm	Thu Mar 11 05:10:17 2004
@@ -691,6 +691,7 @@
     my $self = shift;
     qw(
 	RT::Queue-RT::Ticket
+	RT::Queue-RT::Ticket-RT::Transaction
 	RT::User
 	RT::Group
     );

Modified: rt/branches/autrijus-3.1/lib/RT/CustomFields_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/CustomFields_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/CustomFields_Overlay.pm	Thu Mar 11 05:10:17 2004
@@ -63,8 +63,8 @@
 sub LimitToGlobalOrQueue {
     my $self = shift;
     my $queue = shift;
-    $self->LimitToQueue($queue);
-    $self->LimitToGlobal();
+    $self->LimitToGlobalOrObjectId( $queue );
+    $self->LimitToLookupType( 'RT::Queue-RT::Ticket' );
 }
 
 # }}}

Modified: rt/branches/autrijus-3.1/lib/RT/Interface/Web.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/Interface/Web.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/Interface/Web.pm	Thu Mar 11 05:10:17 2004
@@ -335,9 +335,8 @@
         MIMEObj         => $MIMEObj
     );
   foreach my $arg (%ARGS) {
-        if ($arg =~ /^CustomField-(\d+)(.*?)$/) {
-            next if ($arg =~ /-Magic$/);
-            $create_args{"CustomField-".$1} = $ARGS{"$arg"};
+        if ($arg =~ /^((?:Transaction)?CustomField-\d+).*?(?<!-Magic)$/) {
+            $create_args{$1} = $ARGS{$arg};
         }
     }
     my ( $id, $Trans, $ErrMsg ) = $Ticket->Create(%create_args);
@@ -450,6 +449,8 @@
                 TimeTaken    => $args{ARGSRef}->{'UpdateTimeWorked'}
             );
             push ( @{ $args{Actions} }, $Description );
+	    print "I see $Object coming up\n";
+	    $Object->UpdateCustomFields( ARGSRef => $args{ARGSRef} ) if $Object;
         }
         elsif ( $args{ARGSRef}->{'UpdateType'} eq 'response' ) {
             my ( $Transaction, $Description, $Object ) = $args{TicketObj}->Correspond(
@@ -459,6 +460,8 @@
                 TimeTaken    => $args{ARGSRef}->{'UpdateTimeWorked'}
             );
             push ( @{ $args{Actions} }, $Description );
+	    print "I see $Object coming down\n";
+	    $Object->UpdateCustomFields( ARGSRef => $args{ARGSRef} ) if $Object;
         }
         else {
             push ( @{ $args{'Actions'} },

Modified: rt/branches/autrijus-3.1/lib/RT/Queue_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/Queue_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/Queue_Overlay.pm	Thu Mar 11 05:10:17 2004
@@ -434,7 +434,19 @@
 
     my $cfs = RT::CustomFields->new( $self->CurrentUser );
     if ( $self->CurrentUserHasRight('SeeQueue') ) {
-        $cfs->LimitToGlobalOrQueue( $self->Id );
+	$cfs->LimitToGlobalOrObjectId( $self->Id );
+	$cfs->LimitToLookupType( 'RT::Queue-RT::Ticket' );
+    }
+    return ($cfs);
+}
+
+sub TicketTransactionCustomFields {
+    my $self = shift;
+
+    my $cfs = RT::CustomFields->new( $self->CurrentUser );
+    if ( $self->CurrentUserHasRight('SeeQueue') ) {
+	$cfs->LimitToGlobalOrObjectId( $self->Id );
+	$cfs->LimitToLookupType( 'RT::Queue-RT::Ticket-RT::Transaction' );
     }
     return ($cfs);
 }
@@ -1010,7 +1022,7 @@
     }
     return (
         $args{'Principal'}->HasRight(
-            Object => $self,
+            Object => $self->Id ? $self : $RT::System,
             Right    => $args{'Right'}
           )
     );

Modified: rt/branches/autrijus-3.1/lib/RT/Record.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/Record.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/Record.pm	Thu Mar 11 05:10:17 2004
@@ -982,18 +982,16 @@
     my $self  = shift;
     my $field = shift;
 
-    my $cf = RT::CustomField->new($self->CurrentUser);
-
-    if ($field =~ /^\d+$/) {
-        $cf->LoadById($field);
-    } else {
-	# $cf->LoadByNameAndQueue(Name => $field, Queue => $self->QueueObj->Id);
-	die "LoadByNameAndQueue not yet ported to Object";
-    }
     my $cf_values = RT::ObjectCustomFieldValues->new( $self->CurrentUser );
-    $cf_values->LimitToCustomField($cf->id);
     $cf_values->LimitToObject($self);
     $cf_values->OrderBy( FIELD => 'id' );
+
+    if (length $field) {
+	$field =~ /^\d+$/ or die "LoadByNameAndQueue impossible for Record.pm";
+	my $cf = RT::CustomField->new($self->CurrentUser);
+        $cf->LoadById($field);
+	$cf_values->LimitToCustomField($cf->id);
+    }
 
     # @values is a CustomFieldValues object;
     return ($cf_values);

Modified: rt/branches/autrijus-3.1/lib/RT/Ticket_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/Ticket_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/Ticket_Overlay.pm	Thu Mar 11 05:10:17 2004
@@ -630,6 +630,7 @@
 
 
         if ( $self->Id && $Trans ) {
+	    $TransObj->UpdateCustomFields( ARGSRef => \%args );
             $ErrStr = $self->loc( "Ticket [_1] created in queue '[_2]'", $self->Id, $QueueObj->Name );
             $ErrStr = join ( "\n", $ErrStr, @non_fatal_errors );
 
@@ -3877,6 +3878,11 @@
 }
 
 # }}}
+
+sub TransactionCustomFields {
+    my $self = shift;
+    return $self->QueueObj->TicketTransactionCustomFields;
+}
 
 sub _LookupTypes {
     "RT::Queue-RT::Ticket";

Modified: rt/branches/autrijus-3.1/lib/RT/Transaction_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/Transaction_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/Transaction_Overlay.pm	Thu Mar 11 05:10:17 2004
@@ -873,4 +873,27 @@
     return $self->loc($type);
 }
 
+sub UpdateCustomFields {
+    my ($self, %args) = @_;
+    my $args_ref = $args{ARGSRef} or return;
+
+    foreach my $arg ( keys %$args_ref ) {
+        $arg =~ /^(?:Transaction)?CustomField-(\d+).*?(?<!-Magic)$/ or next;
+	my $cfid = $1;
+	my $values = $args_ref->{$arg};
+	foreach my $value ( ref($values) ? @$values : $values ) {
+	    next unless length($value);
+	    $self->_AddCustomFieldValue(
+		Field => $cfid,
+		Value => $value,
+		RecordTransaction => 0,
+	    );
+	}
+    }
+}
+
+sub _LookupTypes {
+    "RT::Queue-RT::Ticket-RT::Transaction";
+}
+
 1;



More information about the Rt-commit mailing list