# Initial data for a fresh RT installation. @Users = ( { Name => 'root', Gecos => 'root', RealName => 'Enoch Root', Password => 'password', EmailAddress => "root\@localhost", Comments => 'SuperUser', Privileged => '1', }, ); @Groups = ( ); @Queues = ({ Name => 'General', Description => 'The default queue', CorrespondAddress => "", CommentAddress => "", }, { Name => '___Approvals', Lifecycle => 'approvals', Description => 'A system-internal queue for the approvals system', Disabled => 2, } ); @ScripActions = ( { Name => 'Autoreply To Requestors', # loc Description => 'Always sends a message to the requestors independent of message sender' , # loc ExecModule => 'Autoreply', Argument => 'Requestor' }, { Name => 'Notify Requestors', # loc Description => 'Sends a message to the requestors', # loc ExecModule => 'Notify', Argument => 'Requestor' }, { Name => 'Notify Owner as Comment', # loc Description => 'Sends mail to the owner', # loc ExecModule => 'NotifyAsComment', Argument => 'Owner' }, { Name => 'Notify Owner', # loc Description => 'Sends mail to the owner', # loc ExecModule => 'Notify', Argument => 'Owner' }, { Name => 'Notify Ccs as Comment', # loc Description => 'Sends mail to the Ccs as a comment', # loc ExecModule => 'NotifyAsComment', Argument => 'Cc' }, { Name => 'Notify Ccs', # loc Description => 'Sends mail to the Ccs', # loc ExecModule => 'Notify', Argument => 'Cc' }, { Name => 'Notify AdminCcs as Comment', # loc Description => 'Sends mail to the administrative Ccs as a comment', # loc ExecModule => 'NotifyAsComment', Argument => 'AdminCc' }, { Name => 'Notify AdminCcs', # loc 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', 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', Argument => 'All' }, { Name => 'Notify Owner, Requestors, Ccs and AdminCcs', # loc Description => 'Send mail to owner and all watchers', # loc ExecModule => 'Notify', Argument => 'All' }, { Name => 'Notify Other Recipients as Comment', # loc 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' }, { Name => 'User Defined', # loc Description => 'Perform a user-defined action', # loc ExecModule => 'UserDefined', }, { Name => 'Create Tickets', # loc Description => 'Create new tickets based on this scrip\'s template', # loc ExecModule => 'CreateTickets', }, { Name => 'Open Tickets', # loc Description => 'Open tickets on correspondence', # loc ExecModule => 'AutoOpen' }, { 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', 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 = ( { Name => 'On Create', # loc Description => 'When a ticket is created', # loc ApplicableTransTypes => 'Create', ExecModule => 'AnyTransaction', }, { Name => 'On Transaction', # loc Description => 'When anything happens', # loc ApplicableTransTypes => 'Any', ExecModule => 'AnyTransaction', }, { Name => 'On Correspond', # loc Description => 'Whenever correspondence comes in', # loc 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 Description => 'Whenever comments come in', # loc ApplicableTransTypes => 'Comment', ExecModule => 'AnyTransaction' }, { Name => 'On Status Change', # loc Description => 'Whenever a ticket\'s status changes', # loc ApplicableTransTypes => 'Status', ExecModule => 'AnyTransaction', }, { Name => 'On Priority Change', # loc Description => 'Whenever a ticket\'s priority changes', # loc ApplicableTransTypes => 'Set', ExecModule => 'PriorityChange', }, { Name => 'On Owner Change', # loc Description => 'Whenever a ticket\'s owner changes', # loc ApplicableTransTypes => 'Any', ExecModule => 'OwnerChange', }, { Name => 'On Queue Change', # loc Description => 'Whenever a ticket\'s queue changes', # loc ApplicableTransTypes => 'Set', ExecModule => 'QueueChange', }, { Name => 'On Resolve', # loc Description => 'Whenever a ticket is resolved', # loc ApplicableTransTypes => 'Status', ExecModule => 'StatusChange', Argument => 'resolved' }, { Name => 'On Reject', # loc Description => 'Whenever a ticket is rejected', # loc ApplicableTransTypes => 'Status', ExecModule => 'StatusChange', Argument => 'rejected' }, { Name => 'User Defined', # loc Description => 'Whenever a user-defined condition occurs', # loc ApplicableTransTypes => 'Any', ExecModule => 'UserDefined' }, { Name => 'On Close', # loc Description => 'Whenever a ticket is closed', # loc ApplicableTransTypes => 'Status,Set', ExecModule => 'CloseTicket', }, { Name => 'On Reopen', # loc Description => 'Whenever a ticket is reopened', # loc ApplicableTransTypes => 'Status,Set', ExecModule => 'ReopenTicket', }, #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', #}, ); @Templates = ( { Queue => '0', Name => 'Blank', # loc Description => 'A blank template', # loc Content => '', }, { Queue => '0', Name => 'Autoreply', # loc Description => 'Plain text Autoresponse template', # loc Content => 'Subject: AutoReply: {$Ticket->Subject} 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()} ' }, { 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 => 'Plain text transaction template', # loc Content => 'RT-Attach-Message: yes {$Transaction->CreatedAsString}: Request {$Ticket->id} was acted upon. 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 Config->Get(\'WebURL\')}Ticket/Display.html?id={$Ticket->id} > {$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 => 'Plain text admin correspondence template', # loc Content => 'RT-Attach-Message: yes Config->Get(\'WebURL\')}Ticket/Display.html?id={$Ticket->id} > {$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 => '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 => '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 {RT->Config->Get(\'WebURL\')}Ticket/Display.html?id={$Ticket->id} 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 Description => 'Ticket status changed', # loc Content => 'Subject: Status Changed to: {$Transaction->NewValue} {RT->Config->Get(\'WebURL\')}Ticket/Display.html?id={$Ticket->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 id}">{RT->Config->Get("WebURL")}Ticket/Display.html?id={$Ticket->id}

{$Transaction->Content(Type => "text/html")} ' }, { Queue => '0', Name => 'Resolved', # loc Description => 'Ticket Resolved', # loc Content => 'Subject: Resolved: {$Ticket->Subject} 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 => "Notify Owners and AdminCcs of new items pending their approval", # loc Content => 'Subject: New Pending Approval: {$Ticket->Subject} Greetings, There is a new item pending your approval: "{$Ticket->Subject()}", a summary of which appears below. Please visit {RT->Config->Get(\'WebURL\')}Approvals/Display.html?id={$Ticket->id} to approve or reject this ticket, or {RT->Config->Get(\'WebURL\')}Approvals/ to batch-process all your pending 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

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 Content => 'Subject: Ticket Approved: {$Ticket->Subject} Greetings, Your ticket has been approved by { eval { $Approver->Name } }. 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

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 Content => 'Subject: Ticket Approved: {$Ticket->Subject} 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 => "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 Content => 'Subject: Ticket Rejected: {$Ticket->Subject} Greetings, 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

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 Content => 'Subject: Ticket Approved: {$Ticket->Subject} Greetings, 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 => "Forwarded message", # loc Content => q{ { $ForwardTransaction->Content =~ /\S/ ? $ForwardTransaction->Content : "This is a forward of transaction #".$Transaction->id." of ticket #". $Ticket->id } } }, { Queue => 0, Name => "Forward Ticket", # loc Description => "Forwarded ticket message", # loc Content => q{ { $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, Name => "Error: public key", # loc Description => "Inform user that he has problems with public key and couldn't recieve encrypted content", # loc Content => q{Subject: We have no your public key or it's wrong You received this message as we have no your public PGP key or we have a problem with your key. Inform the administrator about the problem. } }, { Queue => 0, Name => "Error to RT owner: public key", # loc Description => "Inform RT owner that user(s) have problems with public keys", # loc Content => q{Subject: Some users have problems with public keys You received this message as RT has problems with public keys of the following user: { foreach my $e ( @BadRecipients ) { $OUT .= "* ". $e->{'Message'} ."\n"; } }} }, { Queue => 0, Name => "Error: no private key", # loc Description => "Inform user that we received an encrypted email and we have no private keys to decrypt", # loc Content => q{Subject: we received message we cannot decrypt You sent an encrypted message with subject '{ $Message->head->get('Subject') }', but we have no private key it's encrypted to. Please, check that you encrypt messages with correct keys or contact the system administrator.} }, { Queue => 0, Name => "Error: bad encrypted data", # loc Description => "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 signature or encrypted block. we get the following error(s): { foreach my $msg ( @Messages ) { $OUT .= "* $msg\n"; } }} }, { Queue => 0, Name => "PasswordChange", # loc Description => "Inform user that his password has been reset", # loc Content => q{Subject: [{RT->Config->Get('rtname')}] Password reset Greetings, Someone at {$ENV{'REMOTE_ADDR'}} requested a password reset for you on {RT->Config->Get('WebURL')} Your new password is: {$NewPassword} } }, { Queue => '0', Name => 'Email Digest', # loc Description => 'Email template for periodic notification digests', # loc Content => q[Subject: RT Email Digest { $Argument } ], }, { Queue => 0, Name => "Error: Missing dashboard", # loc Description => "Inform user that a dashboard he subscribed to is missing", # loc Content => q{Subject: [{RT->Config->Get('rtname')}] Missing dashboard! Greetings, You are subscribed to a dashboard that is currently missing. Most likely, the dashboard was deleted. RT will remove this subscription as it is no longer useful. Here's the information RT had about your subscription: DashboardID: { $SubscriptionObj->SubValue('DashboardId') } Frequency: { $SubscriptionObj->SubValue('Frequency') } Hour: { $SubscriptionObj->SubValue('Hour') } { $SubscriptionObj->SubValue('Frequency') eq 'weekly' ? "Day of week: " . $SubscriptionObj->SubValue('Dow') : $SubscriptionObj->SubValue('Frequency') eq 'monthly' ? "Day of month: " . $SubscriptionObj->SubValue('Dom') : '' } } }, { Queue => 0, Name => 'Custom Field Transaction', Description => 'Custom field value changed', Content => q[Subject: {$Transaction->BriefDescription()} {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Ticket->id} {$Transaction->Content()} ], }, ); @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 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 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' }, ); @ACL = ( { UserId => 'root', # - principalid Right => 'SuperUser', }, { GroupDomain => 'SystemInternal', GroupType => 'privileged', Right => 'ShowApprovalsTab', }, ); # Predefined searches @Attributes = ( { Name => 'Search - My Tickets', Description => '[_1] highest priority tickets I own', # loc Content => { Format => q{'__id__/TITLE:#',} . q{'__Subject__/TITLE:Subject',} . q{Priority, QueueName, ExtendedStatus}, Query => " Owner = '__CurrentUser__' AND ( Status = 'new' OR Status = 'open')", OrderBy => 'Priority', Order => 'DESC' }, }, { Name => 'Search - Unowned Tickets', Description => '[_1] newest unowned tickets', # loc Content => # 'Take' #loc { Format => q{'__id__/TITLE:#',} . q{'__Subject__/TITLE:Subject',} . q{QueueName, ExtendedStatus, CreatedRelative, } . q{'__loc(Take)__/TITLE:NBSP'}, Query => " Owner = 'Nobody' AND ( Status = 'new' OR Status = 'open')", OrderBy => 'Created', Order => 'DESC' }, }, { Name => 'Search - Bookmarked Tickets', Description => 'Bookmarked Tickets', #loc Content => { Format => q{'__id__/TITLE:#',} . q{'__Subject__/TITLE:Subject',} . q{Priority, QueueName, ExtendedStatus, Bookmark}, Query => "id = '__Bookmarked__'", OrderBy => 'LastUpdated', Order => 'DESC' }, }, { 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 }, ], }, }, ); # 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 }, # 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;