X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fetc%2Finitialdata;h=825e6506f9599f5c82a927403ad7778afc1f089f;hb=7322f2afedcc2f427e997d1535a503613a83f088;hp=8b9890550293ae95bad0d45db1e5c18e9c9d1369;hpb=7588a4ac90a9b07c08a3107cd1107d773be1c991;p=freeside.git diff --git a/rt/etc/initialdata b/rt/etc/initialdata index 8b9890550..825e6506f 100644 --- a/rt/etc/initialdata +++ b/rt/etc/initialdata @@ -58,7 +58,14 @@ 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', @@ -102,7 +109,9 @@ { 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', @@ -235,16 +244,16 @@ }, #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', + #}, ); @@ -255,7 +264,7 @@ Content => '', }, { Queue => '0', Name => 'Autoreply', # loc - Description => 'Default Autoresponse template', # loc + Description => 'Plain text Autoresponse template', # loc Content => 'Subject: AutoReply: {$Ticket->Subject} @@ -263,7 +272,7 @@ Greetings, 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 @@ -283,10 +292,35 @@ 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 + +

Greetings,

+

This message has been automatically generated in response to the +creation of a trouble ticket regarding {$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->SubjectTag}.

+ +

Please include the string {$Ticket->SubjectTag} +in the subject line of all future correspondence about this issue. To do so, +you may reply to this message.

+ +

Thank you,
+{$Ticket->QueueObj->CorrespondAddress()}

+ +
+{$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 @@ -303,12 +337,43 @@ you may reply to this message. {$Transaction->Content()} ' }, - + { Queue => '0', + Name => 'Transaction in HTML', # loc + Description => 'HTML transaction template', # loc + Content => 'RT-Attach-Message: yes +Content-Type: text/html + +{$Transaction->CreatedAsString}: Request id}">{$Ticket->id} was acted upon by {$Transaction->CreatorObj->Name}. +
+ + + + + + + + +
Transaction:{$Transaction->Description}
Queue:{$Ticket->QueueObj->Name}
Subject:{$Transaction->Subject || $Ticket->Subject || "(No subject given)"}
Owner:{$Ticket->OwnerObj->Name}
Requestors:{$Ticket->RequestorAddresses}
Status:{$Ticket->Status}
Ticket URL:id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}
+
+
+{$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 @@ -317,19 +382,38 @@ you may reply to this message. {$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: id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id} +
+
+{$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;} RT-Attach-Message: yes @@ -341,6 +425,30 @@ 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 + +

This is a comment about id}">ticket {$Ticket->id}. It is not sent to the Requestor(s):

+ +{$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} +' + }, { Queue => '0', Name => 'Status Change', # loc @@ -353,7 +461,18 @@ This is a comment. It is not sent to the Requestor(s): {$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 +id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id} +
+
+{$Transaction->Content(Type => "text/html")} +' + }, { Queue => '0', @@ -365,6 +484,15 @@ 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 + +

According to our records, your request has been resolved. If you have any further questions or concerns, please respond to this message.

+' + }, { Queue => '___Approvals', Name => "New Pending Approval", # loc Description => @@ -385,6 +513,25 @@ batch-process all your pending approvals. ' }, { 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 + +

Greetings,

+ +

There is a new item pending your approval: {$Ticket->Subject()}, +a summary of which appears below.

+ +

Please approve +or reject this ticket, or visit the approvals +overview to batch-process all your pending approvals.

+ +
+{$Transaction->Content()} +' + }, + { Queue => '___Approvals', Name => "Approval Passed", # loc Description => "Notify Requestor of their ticket has been approved by some approver", # loc @@ -399,6 +546,22 @@ 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 + +

Greetings,

+ +

Your ticket has been approved by { eval { $Approver->Name } }. +Other approvals may be pending.

+ +

Approver\'s notes:

+
{ $Notes }
+' + }, + { Queue => '___Approvals', Name => "All Approvals Passed", # loc Description => "Notify Requestor of their ticket has been approved by all approvers", # loc @@ -413,6 +576,22 @@ 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 + +

Greetings,

+ +

Your ticket has been approved by { eval { $Approver->Name } }. +Its Owner may now start to act on it.

+ +

Approver\'s notes:

+
{ $Notes }
+' + }, + { Queue => '___Approvals', Name => "Approval Rejected", # loc Description => "Notify Owner of their rejected ticket", # loc @@ -426,6 +605,21 @@ 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 + +

Greetings,

+ +

Your ticket has been rejected by { eval { $Approver->Name } }.

+ +

Approver\'s notes:

+
{ $Notes }
+' + }, + { Queue => '___Approvals', Name => "Approval Ready for Owner", # loc Description => "Notify Owner of their ticket has been approved and is ready to be acted on", # loc @@ -437,19 +631,42 @@ 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 + +

Greetings,

+ +

The ticket has been approved, you may now start to act on it.

+ +' + }, { 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, @@ -487,12 +704,12 @@ Please, check that you encrypt messages with correct keys 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"; } @@ -513,10 +730,10 @@ Your new password is: } }, - { 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 } ], @@ -561,58 +778,66 @@ Hour: { $SubscriptionObj->SubValue('Hour') } ); @Scrips = ( + { 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 Owner and AdminCcs', + Template => 'Admin Correspondence in HTML' }, +# { Description => 'On Correspond Notify Other Recipients', +# ScripCondition => 'On Correspond', +# ScripAction => 'Notify Other Recipients', +# 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 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', + Template => 'AutoReply in HTML' }, + { Description => 'On Create Notify Owner and AdminCcs', ScripCondition => 'On Create', - ScripAction => 'Notify AdminCcs', - Template => 'Transaction' }, - { Description => 'On Correspond Notify 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' }, -# { 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 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' }, + 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 Correspond, cancel future resolve', - ScripCondition => 'On Correspond', - ScripAction => 'Cancel Scheduled Resolve', - 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' }, ); @ACL = ( @@ -666,7 +891,7 @@ Hour: { $SubscriptionObj->SubValue('Hour') } Name => 'HomepageSettings', Description => 'HomepageSettings', Content => { - 'body' => # loc + 'body' => # loc_left_pair [ { type => 'system', @@ -685,7 +910,7 @@ Hour: { $SubscriptionObj->SubValue('Hour') } name => 'QuickCreate' # loc }, ], - 'summary' => # loc + 'sidebar' => # loc_left_pair [ { type => 'component', @@ -719,6 +944,106 @@ Hour: { $SubscriptionObj->SubValue('Hour') } '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 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;