-# 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, } );
ExecModule => 'NotifyAsComment',
Argument => 'Requestor,Cc' },
- { Name => 'Notify Requestors and Ccs', # loc
- Description => 'Send mail to requestors and Ccs', # loc
- ExecModule => 'Notify',
- Argument => 'Requestor,Cc' },
+# deprecated
+# { Name => 'Notify Requestors and Ccs', # loc
+# Description => 'Send mail to requestors and Ccs', # loc
+# ExecModule => 'Notify',
+# Argument => 'Requestor,Cc' },
+# not yet deprecated
{ Name => 'Notify Owner, Requestors, Ccs and AdminCcs as Comment', # loc
Description => 'Send mail to owner and all watchers as a "comment"', # loc
ExecModule => 'NotifyAsComment',
Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
ExecModule => 'NotifyAsComment',
Argument => 'OtherRecipients' },
- { Name => 'Notify Other Recipients', # loc
- Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
- ExecModule => 'Notify',
- Argument => 'OtherRecipients' },
+# deprecated
+# { 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
ExecModule => 'UserDefined', },
ExecModule => 'SetPriority',
Argument => '',
},
+ { Name => 'Cancel Scheduled Resolve',
+ Description => 'Set ticket not to resolve in the future',
+ ExecModule => 'SetWillResolve',
+ Argument => '',
+ },
+ { Name => 'Scheduled Resolve',
+ Description => 'Resolve ticket if its WillResolve date has passed',
+ ExecModule => 'ScheduledResolve',
+ Argument => '',
+ },
+# combine these into a single action so they can see each other in the headers
+ { Name => 'Notify Requestors, Ccs, and Other Recipients',
+ Description => 'Send mail to requestors, watchers, and explicit Ccs',
+ ExecModule => 'Notify',
+ Argument => 'Requestor,Cc,OtherRecipients',
+ },
);
@ScripConditions = (
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
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.
Name => 'Admin Comment', # loc
Description => 'Default 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
},
);
-# }}}
@Scrips = (
{ Description => 'On Correspond Open Tickets',
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' },
- { Description => 'On Correspond Notify Other Recipients',
+# { Description => 'On Correspond Notify Requestors and Ccs',
+# ScripCondition => 'On Correspond',
+# ScripAction => 'Notify Requestors And Ccs',
+# Template => 'Correspondence' },
+# { Description => 'On Correspond Notify Other Recipients',
+# ScripCondition => 'On Correspond',
+# ScripAction => 'Notify Other Recipients',
+# Template => 'Correspondence' },
+ { Description => 'On Correspond Notify Requestors, Ccs, and Other Recipients',
ScripCondition => 'On Correspond',
- ScripAction => 'Notify Other Recipients',
- Template => 'Correspondence' },
+ ScripAction => 'Notify Requestors, Ccs, and Other Recipients',
+ Template => 'Correspondence', },
{ Description => 'On Comment Notify AdminCcs as Comment',
ScripCondition => 'On Comment',
ScripAction => 'Notify AdminCcs As Comment',
ScripCondition => 'On Transaction',
ScripAction => 'Extract Subject Tag',
Template => 'Blank' },
+ { Description => 'On Correspond, cancel future resolve',
+ ScripCondition => 'On Correspond',
+ ScripAction => 'Cancel Scheduled Resolve',
+ Template => 'Blank' },
);
@ACL = (
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
+ [
+ {
+ type => 'system',
+ name => 'My Tickets', # loc
+ },
+ {
+ type => 'system',
+ name => 'Unowned Tickets' # loc
+ },
+ {
+ type => 'system',
+ name => 'Bookmarked Tickets' # loc
+ },
+ {
+ type => 'component',
+ name => 'QuickCreate' # loc
+ },
+ ],
+ 'summary' => # loc
+ [
+ {
+ type => 'component',
+ name => 'MyReminders' # loc
+ },
+ {
+ type => 'component',
+ name => 'Quicksearch' # loc
+ },
+ {
+ type => 'component',
+ name => 'Dashboards' # loc
+ },
+ {
+ type => 'component',
+ name => 'RefreshHomepage' # loc
+ },
+ ],
+ },
},
);
+
+# freeside upgrade
+# Obsolete/erroneous scrips
+# If
+# $Delete_Scrips{conditionname}{actionname}{templatename}
+# exists, and the scrip was created by the system user, it
+# will be deleted on upgrade. Lowercase all the names here.
+
+%Delete_Scrips = (
+ 'on correspond' => {
+ 'notify requestors and ccs' => { 'correspondence' => 1 },
+ 'notify other recipients' => { 'correspondence' => 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;