https://rt-wiki.bestpractical.com/api.php?action=feedcontributions&user=Ahall&feedformat=atomRequest Tracker Wiki - User contributions [en]2024-03-28T12:35:18ZUser contributionsMediaWiki 1.37.2https://rt-wiki.bestpractical.com/index.php?title=CodeSnippets&diff=26481CodeSnippets2017-01-13T20:38:35Z<p>Ahall: /* Some code that is still here and has no its own place */ Adjusted section title</p>
<hr />
<div>= Introduction =<br />
<br />
A '''Code snippet''' is a bit of Perl code that you can use in many places to customize RT. Scrips and templates both use Perl code for most of what they do, so I've put together some pages of Perl snippets. organized by type.<br />
<br />
* [[CustomConditionSnippets]] - snippets that you'd usually use in [[ScripCondition]]s. As conditions shouldn't change anything about tickets or users, you'll find only code to retrieve information here. This is similar to [[TemplateSnippets]].<br />
* [[CustomActionSnippets]] - [[ScripAction]]s change tickets, so here is where you'll find how to modify RT objects.<br />
* [[TemplateSnippets]] - by default in RT, [[Template]]s are used only in notification actions. In such templates, you can insert information about tickets, users, queues, transactions, and so on into outgoing emails. No changes are allowed in templates; it's all about getting data. [[CustomConditionSnippets]] may be interesting as well.<br />
<br />
= Miscellaneous Snippets =<br />
<br />
== Groups and users ==<br />
<br />
Create a user<br />
<br />
my $user = RT::User-&gt;new($RT::SystemUser);<br />
my ($id) = $user-&gt;Create(<br />
Name =&gt; 'my_user_login',<br />
Password =&gt; 'secret',<br />
RealName =&gt; 'Jhon Smith',<br />
EmailAddress =&gt; 'jhon.smith@example.com',<br />
Privileged =&gt; 0,<br />
);<br />
<br />
<br />
Load a user from the database<br />
<br />
<nowiki>my $user = RT::User-&gt;new( $RT::SystemUser );<br />
<br />
$user-&gt;Load( 'my_user_login' );<br />
# or<br />
$user-&gt;Load( 'my_user_id' );<br />
# or<br />
$user-&gt;LoadByEmail( 'my_user_email_address' );<br />
<br />
die "couldn't load user" unless $user-&gt;id;<br />
<br />
</nowiki><br />
<br />
Load user defined(public) group<br />
<br />
my $group = RT::Group-&gt;new( $RT::SystemUser );<br />
$group-&gt;LoadUserDefinedGroup( 'my group name' );<br />
die "couldn't load group" unless $group-&gt;id;<br />
<br />
<br />
List all user members of the group<br />
<br />
my $users = $group-&gt;UserMembersObj;<br />
while ( my $user = $users-&gt;Next ) {<br />
print $user-&gt;Name, "\n";<br />
}<br />
<br />
<br />
Add a user to a group<br />
<br />
<nowiki># see earlier how to load a user and a group<br />
my ($status, $msg) = $group-&gt;AddMember( $user-&gt;id );<br />
die "problem $msg" unless $status;<br />
</nowiki></div>Ahallhttps://rt-wiki.bestpractical.com/index.php?title=CodeSnippets&diff=26480CodeSnippets2017-01-13T20:26:26Z<p>Ahall: /* Introduction */ Major grammar/wording updates.</p>
<hr />
<div>= Introduction =<br />
<br />
A '''Code snippet''' is a bit of Perl code that you can use in many places to customize RT. Scrips and templates both use Perl code for most of what they do, so I've put together some pages of Perl snippets. organized by type.<br />
<br />
* [[CustomConditionSnippets]] - snippets that you'd usually use in [[ScripCondition]]s. As conditions shouldn't change anything about tickets or users, you'll find only code to retrieve information here. This is similar to [[TemplateSnippets]].<br />
* [[CustomActionSnippets]] - [[ScripAction]]s change tickets, so here is where you'll find how to modify RT objects.<br />
* [[TemplateSnippets]] - by default in RT, [[Template]]s are used only in notification actions. In such templates, you can insert information about tickets, users, queues, transactions, and so on into outgoing emails. No changes are allowed in templates; it's all about getting data. [[CustomConditionSnippets]] may be interesting as well.<br />
<br />
= Some code that is still here and has no its own place =<br />
<br />
== Groups and users ==<br />
<br />
Create a user<br />
<br />
my $user = RT::User-&gt;new($RT::SystemUser);<br />
my ($id) = $user-&gt;Create(<br />
Name =&gt; 'my_user_login',<br />
Password =&gt; 'secret',<br />
RealName =&gt; 'Jhon Smith',<br />
EmailAddress =&gt; 'jhon.smith@example.com',<br />
Privileged =&gt; 0,<br />
);<br />
<br />
<br />
Load a user from DB<br />
<br />
<nowiki>my $user = RT::User-&gt;new( $RT::SystemUser );<br />
<br />
$user-&gt;Load( 'my_user_login' );<br />
# or<br />
$user-&gt;Load( 'my_user_id' );<br />
# or<br />
$user-&gt;LoadByEmail( 'my_user_email_address' );<br />
<br />
die "couldn't load user" unless $user-&gt;id;<br />
<br />
</nowiki><br />
<br />
Load user defined(public) group<br />
<br />
my $group = RT::Group-&gt;new( $RT::SystemUser );<br />
$group-&gt;LoadUserDefinedGroup( 'my group name' );<br />
die "couldn't load group" unless $group-&gt;id;<br />
<br />
<br />
List all user members of the group<br />
<br />
my $users = $group-&gt;UserMembersObj;<br />
while ( my $user = $users-&gt;Next ) {<br />
print $user-&gt;Name, "\n";<br />
}<br />
<br />
<br />
Add a user to a group<br />
<br />
<nowiki># see earlier how to load a user and a group<br />
my ($status, $msg) = $group-&gt;AddMember( $user-&gt;id );<br />
die "problem $msg" unless $status;<br />
</nowiki></div>Ahallhttps://rt-wiki.bestpractical.com/index.php?title=TemplateSnippets&diff=26477TemplateSnippets2017-01-10T18:29:26Z<p>Ahall: /* Notification templates specifics */ Trying to get the longer code snippet to display correctly</p>
<hr />
<div>= Introduction =<br />
<br />
This page provides you with some code that can be used in notification [[Template]]s and is part of the [[CodeSnippets]] series of articles.<br />
<br />
If you want to do something that RT does in its user interface that isn't listed here,<span style="font-size:13px;"> you can take a quick look at share/html/Elements/*/ColumnMap . For example, if looking for how to create a relative due date, you'd </span><span style="font-size:13px;">look in RT__Ticket/ColumnMap for the DueRelative sub. (From Kevin Falcone)</span><br />
<br />
= Notification templates specifics =<br />
<br />
See the [[Template]] page for more on templates. This page talks about notification templates only, but there are other kinds you might want to investigate. Anyway, back to it...<br />
<br />
In notification templates, you have to enclose code in curly brackets:<br />
<br />
{ CODE HERE }<br />
<br />
Templates offer some variables you will almost certainly want to use, to access specifics about the ticket or transaction for which the template is being rendered. These are accessed like any other Perl variable. For instance, The Ticket object is stored in <code>$Ticket</code>, and the current Transaction is in <code>$Transaction</code>. These, and other available objects, offer properties and methods which are, like the variables themselves, called with standard Perl syntax:<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
When you put a variable, like the above status example, in a template, it gets printed. If your template had the above snippet, you would see the status of the ticket in the resulting output. However, you can do a lot more than just outputting a variable's contents. Here's how to append a lot of text to a local variable before you print it. Note that here, we use "my" to signify a local variable, as opposed to a variable RT makes available to us.<br />
<br />
<code><pre><br />
{ my $out = '';<br />
$out .= "append some text line\n";<br />
foreach my $element (...) {<br />
$out .= "append more data $element\n";<br />
}<br />
$out; # don't forget to put $out at the end to return it<br />
}<br />
<br />
</pre></code><br />
<br />
Please notice that we used straight Perl in the above example. So long as it's within a set of braces ({}), any valid Perl syntax is allowed. Combine this with RT's variables, and you can see how powerful templates can be.<br />
<br />
= Code snippets =<br />
<br />
== Basics ==<br />
<br />
Ticket status<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
Queue name<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;Name }<br />
<br />
Insert Queue email address for correspondence/comment<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;CorrespondAddress; }<br />
{ $Ticket-&gt;QueueObj-&gt;CommentAddress; }<br />
<br />
Puts content of the first transaction into email<br />
<br />
{ $Ticket-&gt;Transactions-&gt;First-&gt;Content }<br />
<br />
== People ==<br />
<br />
Get the email address of the user who created the ticket<br />
<br />
{ $Ticket-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the email address of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the name of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;Name }<br />
<br />
Get the name of the user who last updated the ticket<br />
<br />
{ $Ticket-&gt;LastUpdatedByObj-&gt;Name }<br />
<br />
Get the email addresses of the Requestor(s)<br />
<br />
{ $Ticket-&gt;RequestorAddresses }<br />
<br />
Get the email addresses of the users added as CC or AdminCC to the ticket<br />
<br />
{ $Ticket-&gt;CcAddresses }<br />
{ $Ticket-&gt;AdminCcAddresses }<br />
<br />
Requestors' names or other properties<br />
<br />
<nowiki>Requestors: {<br />
# 'Requestors' may be replaced with 'Cc' or 'AdminCc'<br />
my $users = $Ticket-&gt;Requestors-&gt;UserMembersObj;<br />
my $output = '';<br />
while( my $user = $users-&gt;Next ) {<br />
$output .= ', ' if $output; # comma between values<br />
$output .= $user-&gt;Name; # or any other user's property<br />
}<br />
$output;<br />
}<br />
</nowiki><br />
<br />
== Dates ==<br />
<br />
Ticket creation time as formatted string:<br />
<br />
{ $Ticket-&gt;CreatedAsString }<br />
<br />
The same:<br />
<br />
{ $Ticket-&gt;CreatedObj-&gt;AsString }<br />
<br />
The same for Transaction<br />
{ $Transaction-&gt;CreatedAsString }<br />
<br />
<p style="margin-top:1em;margin-bottom:1em;font-size:13.333333015441895px;">Show the first date that is set:</p><br />
<br />
This ticket was last active on {<br />
my $date;<br />
foreach my $method ( qw(ToldObj LastUpdatedObj CreatedObj) ) {<br />
$date = $Ticket-&gt;$method(); # get date<br />
last if $date-&gt;Unix &gt; 0; # stop on first that is set<br />
}<br />
$date-&gt;AsString;<br />
}<br />
<br />
=== Relative dates===<br />
<br />
You often want to show a ''relative'' ("friendly" or "humanized") date, ie "due in 35 minutes". The same approach will work for any of the $Ticket object's other dates, like Start, too. It and will append "ago" where the date is in the past.<br />
<br />
{ $Ticket->DueObj->AgeAsString() }<br />
<br />
This will work fine in templates invoked with rt-crontool.<br />
<br />
== Complex ==<br />
<br />
Add the number of tickets in queue:<br />
<br />
There are currently {<br />
my $tickets = RT::Tickets-&gt;new( $RT::SystemUser );<br />
$tickets-&gt;FromSQL( "Status = 'new' AND Queue = ". $Ticket-&gt;Queue );<br />
$tickets-&gt;Count;<br />
} ticket(s) awaiting processing before yours, please be patient.<br />
<br />
= Tips&amp;Tricks =<br />
<br />
Don't show content if it's empty<br />
<br />
{ if( my $tcc = $Ticket-&gt;CcAddresses ) { "Ticket Ccs: ". $tcc } }<br />
{ if( my $qcc = $Ticket-&gt;QueueObj-&gt;CcAddresses ) { "Queue Ccs: ". $qcc } }<br />
{ if( my $tacc = $Ticket-&gt;AdminCcAddresses ) { "Ticket AdminCcs: ". $tacc } }<br />
<br />
= See also =<br />
<br />
[[Template]], [[CodeSnippets]], [[CustomConditionSnippets]]</div>Ahallhttps://rt-wiki.bestpractical.com/index.php?title=TemplateSnippets&diff=26476TemplateSnippets2017-01-10T16:31:34Z<p>Ahall: /* Notification templates specifics */ Rewrote most of the text in this section, to fix grammar and explain more.</p>
<hr />
<div>= Introduction =<br />
<br />
This page provides you with some code that can be used in notification [[Template]]s and is part of the [[CodeSnippets]] series of articles.<br />
<br />
If you want to do something that RT does in its user interface that isn't listed here,<span style="font-size:13px;"> you can take a quick look at share/html/Elements/*/ColumnMap . For example, if looking for how to create a relative due date, you'd </span><span style="font-size:13px;">look in RT__Ticket/ColumnMap for the DueRelative sub. (From Kevin Falcone)</span><br />
<br />
= Notification templates specifics =<br />
<br />
See the [[Template]] page for more on templates. This page talks about notification templates only, but there are other kinds you might want to investigate. Anyway, back to it...<br />
<br />
In notification templates, you have to enclose code in curly brackets:<br />
<br />
{ CODE HERE }<br />
<br />
Templates offer some variables you will almost certainly want to use, to access specifics about the ticket or transaction for which the template is being rendered. These are accessed like any other Perl variable. For instance, The Ticket object is stored in <code>$Ticket</code>, and the current Transaction is in <code>$Transaction</code>. These, and other available objects, offer properties and methods which are, like the variables themselves, called with standard Perl syntax:<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
When you put a variable, like the above status example, in a template, it gets printed. If your template had the above snippet, you would see the status of the ticket in the resulting output. However, you can do a lot more than just outputting a variable's contents. Here's how to append a lot of text to a local variable before you print it. Note that here, we use "my" to signify a local variable, as opposed to a variable RT makes available to us.<br />
<br />
<nowiki>{ my $out = '';<br />
$out .= "append some text line\n";<br />
foreach my $element (...) {<br />
$out .= "append more data $element\n";<br />
}<br />
$out; # don't forget to put $out at the end to return it<br />
}<br />
<br />
</nowiki><br />
<br />
Please notice that we used straight Perl in the above example. So long as it's within a set of braces ({}), any valid Perl syntax is allowed. Combine this with RT's variables, and you can see how powerful templates can be.<br />
<br />
= Code snippets =<br />
<br />
== Basics ==<br />
<br />
Ticket status<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
Queue name<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;Name }<br />
<br />
Insert Queue email address for correspondence/comment<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;CorrespondAddress; }<br />
{ $Ticket-&gt;QueueObj-&gt;CommentAddress; }<br />
<br />
Puts content of the first transaction into email<br />
<br />
{ $Ticket-&gt;Transactions-&gt;First-&gt;Content }<br />
<br />
== People ==<br />
<br />
Get the email address of the user who created the ticket<br />
<br />
{ $Ticket-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the email address of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the name of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;Name }<br />
<br />
Get the name of the user who last updated the ticket<br />
<br />
{ $Ticket-&gt;LastUpdatedByObj-&gt;Name }<br />
<br />
Get the email addresses of the Requestor(s)<br />
<br />
{ $Ticket-&gt;RequestorAddresses }<br />
<br />
Get the email addresses of the users added as CC or AdminCC to the ticket<br />
<br />
{ $Ticket-&gt;CcAddresses }<br />
{ $Ticket-&gt;AdminCcAddresses }<br />
<br />
Requestors' names or other properties<br />
<br />
<nowiki>Requestors: {<br />
# 'Requestors' may be replaced with 'Cc' or 'AdminCc'<br />
my $users = $Ticket-&gt;Requestors-&gt;UserMembersObj;<br />
my $output = '';<br />
while( my $user = $users-&gt;Next ) {<br />
$output .= ', ' if $output; # comma between values<br />
$output .= $user-&gt;Name; # or any other user's property<br />
}<br />
$output;<br />
}<br />
</nowiki><br />
<br />
== Dates ==<br />
<br />
Ticket creation time as formatted string:<br />
<br />
{ $Ticket-&gt;CreatedAsString }<br />
<br />
The same:<br />
<br />
{ $Ticket-&gt;CreatedObj-&gt;AsString }<br />
<br />
The same for Transaction<br />
{ $Transaction-&gt;CreatedAsString }<br />
<br />
<p style="margin-top:1em;margin-bottom:1em;font-size:13.333333015441895px;">Show the first date that is set:</p><br />
<br />
This ticket was last active on {<br />
my $date;<br />
foreach my $method ( qw(ToldObj LastUpdatedObj CreatedObj) ) {<br />
$date = $Ticket-&gt;$method(); # get date<br />
last if $date-&gt;Unix &gt; 0; # stop on first that is set<br />
}<br />
$date-&gt;AsString;<br />
}<br />
<br />
=== Relative dates===<br />
<br />
You often want to show a ''relative'' ("friendly" or "humanized") date, ie "due in 35 minutes". The same approach will work for any of the $Ticket object's other dates, like Start, too. It and will append "ago" where the date is in the past.<br />
<br />
{ $Ticket->DueObj->AgeAsString() }<br />
<br />
This will work fine in templates invoked with rt-crontool.<br />
<br />
== Complex ==<br />
<br />
Add the number of tickets in queue:<br />
<br />
There are currently {<br />
my $tickets = RT::Tickets-&gt;new( $RT::SystemUser );<br />
$tickets-&gt;FromSQL( "Status = 'new' AND Queue = ". $Ticket-&gt;Queue );<br />
$tickets-&gt;Count;<br />
} ticket(s) awaiting processing before yours, please be patient.<br />
<br />
= Tips&amp;Tricks =<br />
<br />
Don't show content if it's empty<br />
<br />
{ if( my $tcc = $Ticket-&gt;CcAddresses ) { "Ticket Ccs: ". $tcc } }<br />
{ if( my $qcc = $Ticket-&gt;QueueObj-&gt;CcAddresses ) { "Queue Ccs: ". $qcc } }<br />
{ if( my $tacc = $Ticket-&gt;AdminCcAddresses ) { "Ticket AdminCcs: ". $tacc } }<br />
<br />
= See also =<br />
<br />
[[Template]], [[CodeSnippets]], [[CustomConditionSnippets]]</div>Ahallhttps://rt-wiki.bestpractical.com/index.php?title=TemplateSnippets&diff=26475TemplateSnippets2017-01-10T16:15:41Z<p>Ahall: Minor grammatical changes.</p>
<hr />
<div>= Introduction =<br />
<br />
This page provides you with some code that can be used in notification [[Template]]s and is part of the [[CodeSnippets]] series of articles.<br />
<br />
If you want to do something that RT does in its user interface that isn't listed here,<span style="font-size:13px;"> you can take a quick look at share/html/Elements/*/ColumnMap . For example, if looking for how to create a relative due date, you'd </span><span style="font-size:13px;">look in RT__Ticket/ColumnMap for the DueRelative sub. (From Kevin Falcone)</span><br />
<br />
= Notification templates specifics =<br />
<br />
See also [[Template]] that describe why this text is about notifications and how can it be different for other actions.<br />
<br />
In notification templates you have to enclose code into curly brackets:<br />
<br />
{ ... here goes some code ... }<br />
<br />
Ticket object is stored in <code>$Ticket</code> variable and transaction is stored in <code>$Transaction</code>, for example:<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
Each block of should result in some text (may be empty). In a simple case you just add code that results in text, like with status of a ticket above. For complex code use some local variable and append data to it:<br />
<br />
<nowiki>{ my $out = '';<br />
$out .= "append some text line\n";<br />
foreach my $element (...) {<br />
$out .= "append more data $element\n";<br />
}<br />
$out; # don't forget to put $out at the end to return it<br />
}<br />
<br />
</nowiki><br />
<br />
That's it. Enjoy templating.<br />
<br />
= Code snippets =<br />
<br />
== Basics ==<br />
<br />
Ticket status<br />
<br />
{ $Ticket-&gt;Status }<br />
<br />
Queue name<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;Name }<br />
<br />
Insert Queue email address for correspondence/comment<br />
<br />
{ $Ticket-&gt;QueueObj-&gt;CorrespondAddress; }<br />
{ $Ticket-&gt;QueueObj-&gt;CommentAddress; }<br />
<br />
Puts content of the first transaction into email<br />
<br />
{ $Ticket-&gt;Transactions-&gt;First-&gt;Content }<br />
<br />
== People ==<br />
<br />
Get the email address of the user who created the ticket<br />
<br />
{ $Ticket-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the email address of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;EmailAddress }<br />
<br />
Get the name of the user who created the transaction<br />
<br />
{ $Transaction-&gt;CreatorObj-&gt;Name }<br />
<br />
Get the name of the user who last updated the ticket<br />
<br />
{ $Ticket-&gt;LastUpdatedByObj-&gt;Name }<br />
<br />
Get the email addresses of the Requestor(s)<br />
<br />
{ $Ticket-&gt;RequestorAddresses }<br />
<br />
Get the email addresses of the users added as CC or AdminCC to the ticket<br />
<br />
{ $Ticket-&gt;CcAddresses }<br />
{ $Ticket-&gt;AdminCcAddresses }<br />
<br />
Requestors' names or other properties<br />
<br />
<nowiki>Requestors: {<br />
# 'Requestors' may be replaced with 'Cc' or 'AdminCc'<br />
my $users = $Ticket-&gt;Requestors-&gt;UserMembersObj;<br />
my $output = '';<br />
while( my $user = $users-&gt;Next ) {<br />
$output .= ', ' if $output; # comma between values<br />
$output .= $user-&gt;Name; # or any other user's property<br />
}<br />
$output;<br />
}<br />
</nowiki><br />
<br />
== Dates ==<br />
<br />
Ticket creation time as formatted string:<br />
<br />
{ $Ticket-&gt;CreatedAsString }<br />
<br />
The same:<br />
<br />
{ $Ticket-&gt;CreatedObj-&gt;AsString }<br />
<br />
The same for Transaction<br />
{ $Transaction-&gt;CreatedAsString }<br />
<br />
<p style="margin-top:1em;margin-bottom:1em;font-size:13.333333015441895px;">Show the first date that is set:</p><br />
<br />
This ticket was last active on {<br />
my $date;<br />
foreach my $method ( qw(ToldObj LastUpdatedObj CreatedObj) ) {<br />
$date = $Ticket-&gt;$method(); # get date<br />
last if $date-&gt;Unix &gt; 0; # stop on first that is set<br />
}<br />
$date-&gt;AsString;<br />
}<br />
<br />
=== Relative dates===<br />
<br />
You often want to show a ''relative'' ("friendly" or "humanized") date, ie "due in 35 minutes". The same approach will work for any of the $Ticket object's other dates, like Start, too. It and will append "ago" where the date is in the past.<br />
<br />
{ $Ticket->DueObj->AgeAsString() }<br />
<br />
This will work fine in templates invoked with rt-crontool.<br />
<br />
== Complex ==<br />
<br />
Add the number of tickets in queue:<br />
<br />
There are currently {<br />
my $tickets = RT::Tickets-&gt;new( $RT::SystemUser );<br />
$tickets-&gt;FromSQL( "Status = 'new' AND Queue = ". $Ticket-&gt;Queue );<br />
$tickets-&gt;Count;<br />
} ticket(s) awaiting processing before yours, please be patient.<br />
<br />
= Tips&amp;Tricks =<br />
<br />
Don't show content if it's empty<br />
<br />
{ if( my $tcc = $Ticket-&gt;CcAddresses ) { "Ticket Ccs: ". $tcc } }<br />
{ if( my $qcc = $Ticket-&gt;QueueObj-&gt;CcAddresses ) { "Queue Ccs: ". $qcc } }<br />
{ if( my $tacc = $Ticket-&gt;AdminCcAddresses ) { "Ticket AdminCcs: ". $tacc } }<br />
<br />
= See also =<br />
<br />
[[Template]], [[CodeSnippets]], [[CustomConditionSnippets]]</div>Ahall