-# Initial data for a fresh RT3 Installation.
+# Initial data for a fresh RT installation.
@Users = (
{ Name => 'root',
CorrespondAddress => "",
CommentAddress => "", },
{ Name => '___Approvals',
+ Lifecycle => 'approvals',
Description => 'A system-internal queue for the approvals system',
Disabled => 2, } );
Description => 'Sends mail to the administrative Ccs', # loc
ExecModule => 'Notify',
Argument => 'AdminCc' },
-
+ { Name => 'Notify Owner and AdminCcs', # loc
+ Description => 'Sends mail to the Owner and administrative Ccs', # loc
+ ExecModule => 'Notify',
+ Argument => 'Owner,AdminCc' },
+ { Name => 'Notify Owner or AdminCcs', # loc
+ Description => 'Sends mail to the Owner if set, otherwise administrative Ccs', # loc
+ ExecModule => 'NotifyOwnerOrAdminCc',
+ },
{ Name => 'Notify Requestors and Ccs as Comment', # loc
Description => 'Send mail to requestors and Ccs as a comment', # loc
ExecModule => 'NotifyAsComment',
Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
ExecModule => 'NotifyAsComment',
Argument => 'OtherRecipients' },
-# deprecated
-# { Name => 'Notify Other Recipients', # loc
-# Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
-# ExecModule => 'Notify',
-# Argument => 'OtherRecipients' },
+# deprecated? now default create scrips use it in 4.2
+ { Name => 'Notify Other Recipients', # loc
+ Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
+ ExecModule => 'Notify',
+ Argument => 'OtherRecipients' },
{ Name => 'User Defined', # loc
Description => 'Perform a user-defined action', # loc
{ Name => 'Extract Subject Tag', # loc
Description => 'Extract tags from a Transaction\'s subject and add them to the Ticket\'s subject.', # loc
ExecModule => 'ExtractSubjectTag' },
-
+ { Name => 'Send Forward', # loc
+ Description => 'Send forwarded message', # loc
+ ExecModule => 'SendForward', },
#freeside
{ Name => 'Set Priority',
Description => 'Set ticket priority',
ApplicableTransTypes => 'Correspond',
ExecModule => 'AnyTransaction', },
+ {
+
+ Name => 'On Forward', # loc
+ Description => 'Whenever a ticket or transaction is forwarded', # loc
+ ApplicableTransTypes => 'Forward Transaction,Forward Ticket',
+ ExecModule => 'AnyTransaction', },
+
+ {
+
+ Name => 'On Forward Ticket', # loc
+ Description => 'Whenever a ticket is forwarded', # loc
+ ApplicableTransTypes => 'Forward Ticket',
+ ExecModule => 'AnyTransaction', },
+
+ {
+
+ Name => 'On Forward Transaction', # loc
+ Description => 'Whenever a transaction is forwarded', # loc
+ ApplicableTransTypes => 'Forward Transaction',
+ ExecModule => 'AnyTransaction', },
+
{
Name => 'On Comment', # loc
},
#freeside
- { Name => 'On Custom Field Transaction',
- Description => 'When a custom field is changed',
- ExecModule => 'CustomFieldTransaction',
- ApplicableTransTypes => 'Any',
- },
- { Name => 'On Custom Field Change',
- Description => 'When a custom field is changed to some value',
- ExecModule => 'CustomFieldChange',
- ApplicableTransTypes => 'Any',
- },
+ #{ Name => 'On Custom Field Transaction',
+ # Description => 'When a custom field is changed',
+ # ExecModule => 'CustomFieldTransaction',
+ # ApplicableTransTypes => 'Any',
+ #},
+ #{ Name => 'On Custom Field Change',
+ # Description => 'When a custom field is changed to some value',
+ # ExecModule => 'CustomFieldChange',
+ # ApplicableTransTypes => 'Any',
+ #},
);
Content => '', },
{ Queue => '0',
Name => 'Autoreply', # loc
- Description => 'Default Autoresponse template', # loc
+ Description => 'Plain text Autoresponse template', # loc
Content => 'Subject: AutoReply: {$Ticket->Subject}
This message has been automatically generated in response to the
creation of a trouble ticket regarding:
- "{$Ticket->Subject()}",
+ "{$Ticket->Subject()}",
a summary of which appears below.
There is no need to reply to this message right now. Your ticket has been
-assigned an ID of [{$Ticket->QueueObj->SubjectTag || $rtname} #{$Ticket->id()}].
+assigned an ID of { $Ticket->SubjectTag }.
Please include the string:
- [{$Ticket->QueueObj->SubjectTag || $rtname} #{$Ticket->id}]
+ { $Ticket->SubjectTag }
in the subject line of all future correspondence about this issue. To do so,
you may reply to this message.
{$Transaction->Content()}
'
},
+ { Queue => '0',
+ Name => 'Autoreply in HTML', # loc
+ Description => 'HTML Autoresponse template', # loc
+ Content => q[Subject: AutoReply: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>This message has been automatically generated in response to the
+creation of a trouble ticket regarding <b>{$Ticket->Subject()}</b>,
+a summary of which appears below.</p>
+<p>There is no need to reply to this message right now. Your ticket has been
+assigned an ID of <b>{$Ticket->SubjectTag}</b>.</p>
+
+<p>Please include the string <b>{$Ticket->SubjectTag}</b>
+in the subject line of all future correspondence about this issue. To do so,
+you may reply to this message.</p>
+
+<p>Thank you,<br/>
+{$Ticket->QueueObj->CorrespondAddress()}</p>
+
+<hr/>
+{$Transaction->Content(Type => 'text/html')}
+],
+ },
{ Queue => '0',
Name => 'Transaction', # loc
- Description => 'Default transaction template', # loc
+ Description => 'Plain text transaction template', # loc
Content => 'RT-Attach-Message: yes
{$Transaction->Content()}
'
},
-
+ { Queue => '0',
+ Name => 'Transaction in HTML', # loc
+ Description => 'HTML transaction template', # loc
+ Content => 'RT-Attach-Message: yes
+Content-Type: text/html
+
+<b>{$Transaction->CreatedAsString}: Request <a href="{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}">{$Ticket->id}</a> was acted upon by {$Transaction->CreatorObj->Name}.</b>
+<br>
+<table border="0">
+<tr><td align="right"><b>Transaction:</b></td><td>{$Transaction->Description}</td></tr>
+<tr><td align="right"><b>Queue:</b></td><td>{$Ticket->QueueObj->Name}</td></tr>
+<tr><td align="right"><b>Subject:</b></td><td>{$Transaction->Subject || $Ticket->Subject || "(No subject given)"} </td></tr>
+<tr><td align="right"><b>Owner:</b></td><td>{$Ticket->OwnerObj->Name}</td></tr>
+<tr><td align="right"><b>Requestors:</b></td><td>{$Ticket->RequestorAddresses}</td></tr>
+<tr><td align="right"><b>Status:</b></td><td>{$Ticket->Status}</td></tr>
+<tr><td align="right"><b>Ticket URL:</b></td><td><a href="{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}</a></td></tr>
+</table>
+<br/>
+<br/>
+{$Transaction->Content( Type => "text/html")}
+'
+ },
+ # Shadow the global templates of the same name to suppress duplicate
+ # notifications until rules is ripped out.
+ { Queue => "___Approvals",
+ Name => "Transaction in HTML",
+ Content => "",
+ },
+ { Queue => "___Approvals",
+ Name => "Transaction",
+ Content => "",
+ },
{
Queue => '0',
Name => 'Admin Correspondence', # loc
- Description => 'Default admin correspondence template', # loc
+ Description => 'Plain text admin correspondence template', # loc
Content => 'RT-Attach-Message: yes
{$Transaction->Content()}
'
},
+ { Queue => '0',
+ Name => 'Admin Correspondence in HTML', # loc
+ Description => 'HTML admin correspondence template', # loc
+ Content => 'RT-Attach-Message: yes
+Content-Type: text/html
+Ticket URL: <a href="{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}</a>
+<br />
+<br />
+{$Transaction->Content(Type => "text/html");}
+'
+ },
{ Queue => '0',
Name => 'Correspondence', # loc
- Description => 'Default correspondence template', # loc
+ Description => 'Plain text correspondence template', # loc
Content => 'RT-Attach-Message: yes
{$Transaction->Content()}
'
},
+ { Queue => '0',
+ Name => 'Correspondence in HTML', # loc
+ Description => 'HTML correspondence template', # loc
+ Content => 'RT-Attach-Message: yes
+Content-Type: text/html
+{$Transaction->Content( Type => "text/html")}
+'
+ },
{ Queue => '0',
Name => 'Admin Comment', # loc
- Description => 'Default admin comment template', # loc
+ Description => 'Plain text admin comment template', # loc
Content =>
-'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]\\s*//g; $s =~ s/^Re:\\s*//i; $s;}
+'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject||""); $s =~ s/\\[Comment\\]\\s*//g; $s =~ s/^Re:\\s*//i; $s;}
RT-Attach-Message: yes
This is a comment. It is not sent to the Requestor(s):
{$Transaction->Content()}
+'
+ },
+ { Queue => '0',
+ Name => 'Admin Comment in HTML', # loc
+ Description => 'HTML admin comment template', # loc
+ Content =>
+'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject||""); $s =~ s/\\[Comment\\]\\s*//g; $s =~ s/^Re:\\s*//i; $s;}
+RT-Attach-Message: yes
+Content-Type: text/html
+
+<p>This is a comment about <a href="{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}">ticket {$Ticket->id}</a>. It is not sent to the Requestor(s):</p>
+
+{$Transaction->Content(Type => "text/html")}
+'
+ },
+ { Queue => '0',
+ Name => 'Reminder', # loc
+ Description => 'Default reminder template', # loc
+ Content =>
+'Subject:{$Ticket->Subject} is due {$Ticket->DueObj->AsString}
+
+This reminder is for ticket #{$Target = $Ticket->RefersTo->First->TargetObj;$Target->Id}.
+
+{RT->Config->Get(\'WebURL\')}Ticket/Display.html?id={$Target->Id}
'
},
{$Transaction->Content()}
'
},
+ { Queue => '0',
+ Name => 'Status Change in HTML', # loc
+ Description => 'HTML Ticket status changed', # loc
+ Content => 'Subject: Status Changed to: {$Transaction->NewValue}
+Content-Type: text/html
+<a href="{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}</a>
+<br/>
+<br/>
+{$Transaction->Content(Type => "text/html")}
+'
+ },
{
Queue => '0',
According to our records, your request has been resolved. If you have any
further questions or concerns, please respond to this message.
+'
+ },
+ { Queue => '0',
+ Name => 'Resolved in HTML', # loc
+ Description => 'HTML Ticket Resolved', # loc
+ Content => 'Subject: Resolved: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>According to our records, your request has been resolved. If you have any further questions or concerns, please respond to this message.</p>
'
},
{ Queue => '___Approvals',
-------------------------------------------------------------------------
{$Transaction->Content()}
+'
+ },
+ { Queue => '___Approvals',
+ Name => "New Pending Approval in HTML", # loc
+ Description => "Notify Owners and AdminCcs of new items pending their approval", # loc
+ Content => 'Subject: New Pending Approval: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>There is a new item pending your approval: <b>{$Ticket->Subject()}</b>,
+a summary of which appears below.</p>
+
+<p>Please <a href="{RT->Config->Get(\'WebURL\')}Approvals/Display.html?id={$Ticket->id}">approve
+or reject this ticket</a>, or visit the <a href="{RT->Config->Get(\'WebURL\')}Approvals/">approvals
+overview</a> to batch-process all your pending approvals.</p>
+
+<hr />
+{$Transaction->Content()}
'
},
{ Queue => '___Approvals',
Other approvals may be pending.
Approver\'s notes: { $Notes }
+'
+ },
+ { Queue => '___Approvals',
+ Name => "Approval Passed in HTML", # loc
+ Description =>
+ "Notify Requestor of their ticket has been approved by some approver", # loc
+ Content => 'Subject: Ticket Approved: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>Your ticket has been approved by <b>{ eval { $Approver->Name } }</b>.
+Other approvals may be pending.</p>
+
+<p>Approver\'s notes:</p>
+<blockquote>{ $Notes }</blockquote>
'
},
{ Queue => '___Approvals',
Its Owner may now start to act on it.
Approver\'s notes: { $Notes }
+'
+ },
+ { Queue => '___Approvals',
+ Name => "All Approvals Passed in HTML", # loc
+ Description =>
+ "Notify Requestor of their ticket has been approved by all approvers", # loc
+ Content => 'Subject: Ticket Approved: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>Your ticket has been approved by <b>{ eval { $Approver->Name } }</b>.
+Its Owner may now start to act on it.</p>
+
+<p>Approver\'s notes:</p>
+<blockquote>{ $Notes }</blockquote>
'
},
{ Queue => '___Approvals',
Your ticket has been rejected by { eval { $Approver->Name } }.
Approver\'s notes: { $Notes }
+'
+ },
+ { Queue => '___Approvals',
+ Name => "Approval Rejected in HTML", # loc
+ Description =>
+ "Notify Owner of their rejected ticket", # loc
+ Content => 'Subject: Ticket Rejected: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>Your ticket has been rejected by <b>{ eval { $Approver->Name } }</b>.</p>
+
+<p>Approver\'s notes:</p>
+<blockquote>{ $Notes }</blockquote>
'
},
{ Queue => '___Approvals',
The ticket has been approved, you may now start to act on it.
+'
+ },
+ { Queue => '___Approvals',
+ Name => "Approval Ready for Owner in HTML", # loc
+ Description =>
+ "Notify Owner of their ticket has been approved and is ready to be acted on", # loc
+ Content => 'Subject: Ticket Approved: {$Ticket->Subject}
+Content-Type: text/html
+
+<p>Greetings,</p>
+
+<p>The ticket has been approved, you may now start to act on it.</p>
+
'
},
{ Queue => 0,
Name => "Forward", # loc
- Description => "Heading of a forwarded message", # loc
+ Description => "Forwarded message", # loc
Content => q{
-This is a forward of transaction #{$Transaction->id} of ticket #{ $Ticket->id }
+
+{ $ForwardTransaction->Content =~ /\S/ ? $ForwardTransaction->Content : "This is a forward of transaction #".$Transaction->id." of ticket #". $Ticket->id }
}
},
{ Queue => 0,
Name => "Forward Ticket", # loc
- Description => "Heading of a forwarded Ticket", # loc
+ Description => "Forwarded ticket message", # loc
Content => q{
-This is a forward of ticket #{ $Ticket->id }
+{ $ForwardTransaction->Content =~ /\S/ ? $ForwardTransaction->Content : "This is a forward of ticket #". $Ticket->id }
+}
+ },
+ { Queue => 0,
+ Name => "Error: unencrypted message", # loc
+ Description =>
+ "Inform user that their unencrypted mail has been rejected", # loc
+ Content => q{Subject: RT requires that all incoming mail be encrypted
+
+You received this message because RT received mail from you that was not encrypted. As such, it has been rejected.
}
},
{ Queue => 0,
or contact the system administrator.}
},
{ Queue => 0,
- Name => "Error: bad GnuPG data", # loc
+ Name => "Error: bad encrypted data", # loc
Description =>
- "Inform user that a message he sent has invalid GnuPG data", # loc
+ "Inform user that a message he sent has invalid encryption data", # loc
Content => q{Subject: We received a message we cannot handle
-You sent us a message that we cannot handle due to corrupted GnuPG signature or encrypted block. we get the following error(s):
+You sent us a message that we cannot handle due to corrupted signature or encrypted block. we get the following error(s):
{ foreach my $msg ( @Messages ) {
$OUT .= "* $msg\n";
}
}
},
- { Queue => '0',
- Name => 'Email Digest', # loc
- Description => 'Email template for periodic notification digests', # loc
- Content => q[Subject: RT Email Digest
+ { Queue => '0',
+ Name => 'Email Digest', # loc
+ Description => 'Email template for periodic notification digests', # loc
+ Content => q[Subject: RT Email Digest
{ $Argument }
],
},
);
-# }}}
@Scrips = (
- { Description => 'On Correspond Open Tickets',
- ScripCondition => 'On Correspond',
- ScripAction => 'Open Tickets',
- Template => 'Blank' },
- { Description => 'On Owner Change Notify Owner',
- ScripCondition => 'On Owner Change',
- ScripAction => 'Notify Owner',
- Template => 'Transaction' },
- { Description => 'On Create Autoreply To Requestors',
- ScripCondition => 'On Create',
- ScripAction => 'AutoReply To Requestors',
- Template => 'AutoReply' },
- { Description => 'On Create Notify AdminCcs',
- ScripCondition => 'On Create',
- ScripAction => 'Notify AdminCcs',
- Template => 'Transaction' },
- { Description => 'On Correspond Notify AdminCcs',
+ { Description => 'On Comment Notify AdminCcs as Comment',
+ ScripCondition => 'On Comment',
+ ScripAction => 'Notify AdminCcs As Comment',
+ Template => 'Admin Comment in HTML' },
+ { Description => 'On Comment Notify Other Recipients as Comment',
+ ScripCondition => 'On Comment',
+ ScripAction => 'Notify Other Recipients As Comment',
+ Template => 'Correspondence in HTML' },
+ { Description => 'On Correspond Notify Owner and AdminCcs',
ScripCondition => 'On Correspond',
- ScripAction => 'Notify AdminCcs',
- Template => 'Admin Correspondence' },
-# { Description => 'On Correspond Notify Requestors and Ccs',
-# ScripCondition => 'On Correspond',
-# ScripAction => 'Notify Requestors And Ccs',
-# Template => 'Correspondence' },
+ ScripAction => 'Notify Owner and AdminCcs',
+ Template => 'Admin Correspondence in HTML' },
# { Description => 'On Correspond Notify Other Recipients',
# ScripCondition => 'On Correspond',
# ScripAction => 'Notify Other Recipients',
-# Template => 'Correspondence' },
+# Template => 'Correspondence in HTML' },
+# { Description => 'On Correspond Notify Requestors and Ccs',
+# ScripCondition => 'On Correspond',
+# ScripAction => 'Notify Requestors And Ccs',
+# Template => 'Correspondence in HTML' },
{ Description => 'On Correspond Notify Requestors, Ccs, and Other Recipients',
ScripCondition => 'On Correspond',
ScripAction => 'Notify Requestors, Ccs, and Other Recipients',
Template => 'Correspondence', },
- { Description => 'On Comment Notify AdminCcs as Comment',
- ScripCondition => 'On Comment',
- ScripAction => 'Notify AdminCcs As Comment',
- Template => 'Admin Comment' },
- { Description => 'On Comment Notify Other Recipients as Comment',
- ScripCondition => 'On Comment',
- ScripAction => 'Notify Other Recipients As Comment',
- Template => 'Correspondence' },
+
+ { Description => 'On Correspond Open Tickets',
+ ScripCondition => 'On Correspond',
+ ScripAction => 'Open Tickets',
+ Template => 'Blank' },
+ { Description => 'On Create Autoreply To Requestors',
+ ScripCondition => 'On Create',
+ ScripAction => 'AutoReply To Requestors',
+ Template => 'AutoReply in HTML' },
+ { Description => 'On Create Notify Owner and AdminCcs',
+ ScripCondition => 'On Create',
+ ScripAction => 'Notify Owner and AdminCcs',
+ Template => 'Transaction in HTML' },
+ { Description => 'On Create Notify Ccs',
+ ScripCondition => 'On Create',
+ ScripAction => 'Notify Ccs',
+ Template => 'Correspondence in HTML' },
+ { Description => 'On Create Notify Other Recipients',
+ ScripCondition => 'On Create',
+ ScripAction => 'Notify Other Recipients',
+ Template => 'Correspondence in HTML' },
+ { Description => 'On Owner Change Notify Owner',
+ ScripCondition => 'On Owner Change',
+ ScripAction => 'Notify Owner',
+ Template => 'Transaction in HTML' },
{ Description => 'On Resolve Notify Requestors',
ScripCondition => 'On Resolve',
ScripAction => 'Notify Requestors',
- Template => 'Resolved' },
+ Template => 'Resolved in HTML' },
{ Description => "On transaction, add any tags in the transaction's subject to the ticket's subject",
ScripCondition => 'On Transaction',
ScripAction => 'Extract Subject Tag',
Template => 'Blank' },
+ { Description => 'On Forward Transaction Send forwarded message',
+ ScripCondition => 'On Forward Transaction',
+ ScripAction => 'Send Forward',
+ Template => 'Forward' },
+ { Description => 'On Forward Ticket Send forwarded message',
+ ScripCondition => 'On Forward Ticket',
+ ScripAction => 'Send Forward',
+ Template => 'Forward Ticket' },
{ Description => 'On Correspond, cancel future resolve',
ScripCondition => 'On Correspond',
ScripAction => 'Cancel Scheduled Resolve',
OrderBy => 'LastUpdated',
Order => 'DESC' },
},
- { Name => 'HomepageSettings',
- Description => 'HomepageSettings',
- Content =>
- { 'body' => # loc
- [ { type => 'system', name => 'My Tickets' },
- { type => 'system', name => 'Unowned Tickets' },
- { type => 'system', name => 'Bookmarked Tickets' },
- { type => 'component', name => 'QuickCreate' },
- ],
- 'summary' => # loc
- [
- { type => 'component', name => 'MyReminders' },
- { type => 'component', name => 'Quicksearch' },
- { type => 'component', name => 'Dashboards' },
- { type => 'component', name => 'RefreshHomepage' },
- ],
- },
+ {
+ Name => 'HomepageSettings',
+ Description => 'HomepageSettings',
+ Content => {
+ 'body' => # loc_left_pair
+ [
+ {
+ type => 'system',
+ name => 'My Tickets', # loc
+ },
+ {
+ type => 'system',
+ name => 'Unowned Tickets' # loc
+ },
+ {
+ type => 'system',
+ name => 'Bookmarked Tickets' # loc
+ },
+ {
+ type => 'component',
+ name => 'QuickCreate' # loc
+ },
+ ],
+ 'sidebar' => # loc_left_pair
+ [
+ {
+ type => 'component',
+ name => 'MyReminders' # loc
+ },
+ {
+ type => 'component',
+ name => 'Quicksearch' # loc
+ },
+ {
+ type => 'component',
+ name => 'Dashboards' # loc
+ },
+ {
+ type => 'component',
+ name => 'RefreshHomepage' # loc
+ },
+ ],
+ },
},
);
'on correspond' => {
'notify requestors and ccs' => { 'correspondence' => 1 },
'notify other recipients' => { 'correspondence' => 1 },
- }
+ # RT 4.2
+ # superseded by "notify owner and adminccs"
+ 'notify adminccs' => { 'admin correspondence' => 1 },
+ # the new way, but doesn't work right vs. "open tickets"
+ 'open inactive tickets' => { 'blank' => 1 },
+ },
+ 'on create' => {
+ # RT 4.2
+ # superseded by "notify owner and adminccs"
+ 'notify adminccs' => { 'transaction' => 1 },
+ },
+);
+
+# -*- perl -*-
+
+push @ScripActions, (
+
+ { Name => 'Extract Custom Field Values', # loc
+ Description => 'extract cf-values out of a message', # loc
+ ExecModule => 'ExtractCustomFieldValues' },
+
+ { Name => 'Extract Custom Field Values With Code in Template', # loc
+ Description => 'extract cf-values out of a message with a Text::Template template', # loc
+ ExecModule => 'ExtractCustomFieldValuesWithCodeInTemplate' }
+
+);
+
+push @Templates, (
+ { Queue => '0',
+ Name => 'CustomFieldScannerExample', # loc
+ Description => 'Example Template for ExtractCustomFieldValues', # loc
+ Content => <<'EOTEXT'
+#### Syntax:
+# CF Name | Header name or "Body" | MatchString(re) | Postcmd | Options
+
+#### Allowed Options:
+
+# q - (quiet) Don't record a transaction for adding the custom field
+# value
+# * - (wildcard) The MatchString regex should contain _two_
+# capturing groups, the first of which is the CF name,
+# the second of which is the value. If this option is
+# given, the <cf-name> field is ignored.
+
+#### Examples:
+
+# 1. Put the content of the "X-MI-Test" header into the "testcf"
+# custom field:
+# testcf|X-MI-Test|.*
+
+# 2. Scan the body for Host:name and put name into the "bodycf" custom
+# field:
+# bodycf|Body|Host:\s*(\w+)
+
+# 3. Scan the "X-MI-IP" header for an IP-Adresse and get the hostname
+# by reverse-resolving it:
+# Hostname|X-MI-IP|\d+\.\d+\.\d+\.\d+|use Socket; ($value) = gethostbyaddr(inet_aton($value),AF_INET);
+
+# 4. scan the "CC" header for an many email addresses, and add them to
+# a custom field named "parsedCCs". If "parsedCCs" is a multivalue
+# CF, then this should yield separate values for all email adress
+# found.
+# parsedCCs|CC|.*|$value =~ s/^\s+//; $value =~ s/\s+$//;
+
+# 5. Looks for an "Email:" field in the body of the email, then loads
+# up that user and makes them privileged The blank first field
+# means the automatic CustomField setting is not invoked.
+# |Body|Email:\s*(.+)$|my $u = RT::User->new($RT::SystemUser); $u->LoadByEmail($value); $u->SetPrivileged(1)|
+
+# 6. Looks for any text of the form "Set CF Name: Value" in the body,
+# and sets the CF named "CF Name" to the given value, which may be
+# multi-line. The '*' option controls the wildcard nature of this
+# example.
+# Separator=!
+# !Body!^Set ([^\n:]*?):\s*((?s).*?)(?:\Z|\n\Z|\n\n)!!*
+
+# 7. Looks for the regex anywhere in the headers and stores the match
+# in the AllHeaderSearch CF
+# AllHeaderSearch|Headers|Site:\s*(\w+)
+
+# 8. If you need to dynamically build your matching, and want to trigger on headers and body
+# and invode some arbitrary code like example 5
+# Separator=~~
+# {
+# my $action = 'use My::Site; My::Site::SetSiteID( Ticket => $self->TicketObj, Site => $_ );';
+#
+# for my $regex (My::Site::ValidRegexps) {
+# for my $from ('headers', 'body') {
+# $OUT .= join '~~',
+# '', # CF name
+# $from,
+# $regex,
+# $action;
+# $OUT .= "\n";
+# }
+# }
+# }
+
+EOTEXT
+ }
);
+1;