[rt-users] Back to my Dynamic template choosing Scrip problem...
Landon Stewart
lstewart at iweb.com
Mon Oct 7 14:52:08 EDT 2013
>
> On 3 October 2013 04:27, Ruslan Zakirov <ruz at bestpractical.com> wrote:
>
>> Hi,
>>
>> You can do this by inserting custom TemplateObj method into
>> RT/Action/SendMail.pm
>>
>> It should be like this:
>> 1) behave like original method, so copy it from lib/RT/Action.pm
>> 2) change template on call when Ticket and Txn are available
>> 3) mark that change was done
>>
>> For example:
>>
>> sub TemplateObj {
>> my $self = shift;
>> return $self->{TemplateObj} if !$self->{TemplateObj}
>> || $self->{our_custom_code_has_made_the_change};
>>
>> my $ticket = $self->TicketObj;
>> return $self->{TemplateObj} unless $ticket;
>>
>> my $orig_name = $self->{TemplateObj}->Name;
>>
>> my $lang = $ticket->FirstCustomFieldValue('Language');
>> my $case_type = $ticket->FirstCustomFieldValue('Category');
>> foreach my $name ("$orig_name $case_type $lang", "$orig_name
>> $case_type $lang") {
>> my $tmp = RT::Template->new( $self->CurrentUser );
>> $tmp->Load( $name ); # queue should be here and fallback to
>> global!
>> unless ($tmp->id) {
>> RT->Logger->debug("No custom template $name");
>> } else {
>> $self->{TemplateObj} = $tmp;
>> }
>> }
>> $self->{our_custom_code_has_made_the_change} = 1;
>> return $self->{TemplateObj};
>> }
>>
>> On 4 October 2013 11:47, Landon Stewart <lstewart at iweb.com> wrote:
> Hi Ruslan,
>
> Firstly, thank you! This worked remarkably well. I customized things a
> little to have it not be used unless it's the right type of notification
> etc but otherwise it was pretty much right on and works well. My Scrips
> are all now deleted and there's just one in there now for this purpose and
> the template is properly selected based on the criteria used to make the
> $name variable.
>
> I have one question however… What is the reason for the foreach loop in
> this code you provided.
>
One update to this… I had to add a line to stop the sub from overriding if
the TransactionObj->Type is not Create
my $ticket = $self->TicketObj;
return $self->{TemplateObj} unless $ticket;
*return $self->{TemplateObj} unless $trans->Type eq "Create";*
Without this the template is overridden on correspondence as well.
--
Landon Stewart :: lstewart at iweb.com
Lead Specialist, Abuse and Security Management
Spécialiste principal, gestion des abus et sécurité
http://iweb.com :: +1 (888) 909-4932
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20131007/cf4ec1c3/attachment.htm>
More information about the rt-users
mailing list