[rt-users] Set CustomField value on 'Quick ticket creation'

Jim Meyer purp at acm.org
Mon Feb 6 21:07:26 EST 2006


Hello!

On Mon, 2006-02-06 at 17:58 +0800, Stephen Fung wrote:
> Is it possible to set the value of a global custom field by using the 
> 'Quick ticket creation' form?
> 
> I've modified the form to show that custom field but I found the custom 
> field is not updated while the ticket is created.

I'd toss those modifications and make a scrip (either global or for that
queue only) which on ticket creation (OnCreate) uses the user-defined
bits to set the proper value. You can access the Custom Field from
within the TicketObj like so:

my $cf_name = 'My Custom Field';
my $default_value = 'Foo';

my $queue_obj = $self->TicketObj->QueueObj;
my $cf_obj = RT::CustomField->new($queue_obj->CurrentUser);
$cf_obj->LoadByNameAndQueue(Name => $cf_name, 
                            Queue => $queue_obj->id);
unless( $cf_obj->id ) {
  $RT::Logger->warning("$cf_name doesn't exist for Queue ". 
      $queue_obj->Name);
  return undef;
}

# Get the first CF value for this ticket/field combo
my $cf_val = $self->TicketObj->FirstCustomFieldValue($cf_obj->id);

# Set the CF value
my($st, $msg) = 
    $self->TicketObj->AddCustomFieldValue(
        Field => $cf_obj->id,
        Value => $default_value,
        RecordTransaction =>1                    
    );

Credit for this bit of code goes to my cohort, Russell Dumornay, who
puzzled out what was needed to do this trick.

Cheers!

--j
-- 
Jim Meyer, Geek at Large                                    purp at acm.org




More information about the rt-users mailing list