# Initial data for a fresh RT3 Installation.
# vim: foldmethod=marker filetype=perl shiftwidth=4

@Users = (
    {  Name     => 'Nobody',
       RealName => 'Nobody in particular',
       Comments => 'Do not delete or modify this user. It is integral '
         . 'to RT\'s internal data structures',
       Privileged => '0', },

    {  Name         => 'root',
       Gecos        => 'root',
       RealName     => 'Enoch Root',
       Password     => 'password',
       EmailAddress => "root\@localhost",
       Comments     => 'SuperUser',
       Privileged   => '1', } );

@Groups = (
    { Name        => '',
      Type        => 'Everyone',                        # loc
      Domain      => 'SystemInternal',
      Instance    => '',
      Description => 'Pseudogroup for internal use',    # loc
    },
    { Type        => 'Privileged',                      # loc
      Domain      => 'SystemInternal',
      Instance    => '',
      Name        => '',
      Description => 'Pseudogroup for internal use',    # loc
    },
    { Name        => '',
      Type        => 'Unprivileged',                    # loc
      Domain      => 'SystemInternal',
      Instance    => '',
      Description => 'Pseudogroup for internal use',    # loc
    },
    { Name        => '',
      Type        => 'Owner',                               # loc
      Domain      => 'RT::System-Role',
      Instance    => '',
      Description => 'SystemRolegroup for internal use',    # loc
    },
    { Name        => '',
      Type        => 'Requestor',                           # loc
      Domain      => 'RT::System-Role',
      Instance    => '',
      Description => 'SystemRolegroup for internal use',    # loc
    },
    { Name        => '',
      Type        => 'Cc',                                  # loc
      Domain      => 'RT::System-Role',
      Instance    => '',
      Description => 'SystemRolegroup for internal use',    # loc
    },
    { Name        => '',
      Type        => 'AdminCc',                             # loc
      Domain      => 'RT::System-Role',
      Instance    => '',
      Description => 'Pseudogroup for internal use',        # loc
    }, );

@Queues = ({ Name              => 'General',
             Description       => 'The default queue',
             CorrespondAddress => "",
             CommentAddress    => "", },
           { Name        => '___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 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 Requestors and Ccs as Comment',              # loc
      Description => 'Send mail to requestors and Ccs as a comment',      # loc
      ExecModule  => 'NotifyAsComment',
      Argument    => 'Requestor,Cc' },

    { Name        => 'Notify Requestors and Ccs',                         # loc
      Description => 'Send mail to requestors and Ccs',                   # loc
      ExecModule  => 'Notify',
      Argument    => 'Requestor,Cc' },

    { Name        => 'Notify Requestors, Ccs and AdminCcs as Comment',    # loc
      Description => 'Send mail to all watchers as a "comment"',          # loc
      ExecModule  => 'NotifyAsComment',
      Argument    => 'All' },
    { Name        => 'Notify Requestors, Ccs and AdminCcs',               # loc
      Description => 'Send mail to 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' },
    { 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',
      Description => 'Open tickets on correspondence',                    # loc
      ExecModule  => 'AutoOpen' },
);

@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 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 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                 => 'User Defined',                             # loc
       Description          => 'Whenever a user-defined condition occurs', # loc
       ApplicableTransTypes => 'Any',
       ExecModule           => 'UserDefined'

    },

);

@Templates = (
    { Queue       => '0',
      Name        => 'Blank',                                             # loc
      Description => 'A blank template',                                  # loc
      Content     => '', },
    {  Queue       => '0',
       Name        => 'Autoreply',                                         # loc
       Description => 'Default 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 [{$rtname} #{$Ticket->id()}].

Please include the string:

         [{$rtname} #{$Ticket->id}]

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        => 'Transaction',                     # loc
       Description => 'Default 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 <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >


{$Transaction->Content()}
'
    },

    {

      Queue       => '0',
      Name        => 'Admin Correspondence',                     # loc
      Description => 'Default admin correspondence template',    # loc
      Content     => 'RT-Attach-Message: yes


<URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >

{$Transaction->Content()}
'
    },

    {  Queue       => '0',
       Name        => 'Correspondence',                          # loc
       Description => 'Default correspondence template',         # loc
       Content     => 'RT-Attach-Message: yes

{$Transaction->Content()}
'
    },

    {  Queue       => '0',
       Name        => 'Admin Comment',                           # loc
       Description => 'Default admin comment template',          # loc
       Content     =>
'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]//g; $comment =~ s/^Re//i; $s;}


{$RT::WebURL}Ticket/Display.html?id={$Ticket->id}
This is a comment.  It is not sent to the Requestor(s):

{$Transaction->Content()}
'
    },

    {  Queue       => '0',
       Name        => 'Status Change',                                     # loc
       Description => 'Ticket status changed',                             # loc
       Content     => 'Subject: Status Changed to: {$Transaction->NewValue}


{$RT::WebURL}Ticket/Display.html?id={$Ticket->id}

{$Transaction->Content()}
'
    },

    {

      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       => '___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::WebURL}Approvals/Display.html?id={$Ticket->id}
to approve or reject this ticket, or {$RT::WebURL}Approvals/ to
batch-process all your pending approvals.

-------------------------------------------------------------------------
{$Transaction->Content()}
'
    },
    {  Queue       => '___Approvals',
       Name        => "Approval Passed",    # loc
       Description =>
         "Notify Owner of their ticket has been approved by some approver", # loc
       Content => 'Subject: Ticket Rejected: {$Ticket->Subject}

Greetings,

Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }.
Other approvals may be pending.
'
    },
    {  Queue       => '___Approvals',
       Name        => "All Approvals Passed",    # loc
       Description =>
         "Notify Owner of their ticket has been approved by all approvers", # loc
       Content => 'Subject: Ticket Rejected: {$Ticket->Subject}

Greetings,

Your ticket has been approved.  Its Owner may now start to act on it.
'
    },
    {  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 { $Approval->OwnerObj->Name } }.
'
    },
);
# }}}

@Scrips = (
    {  ScripCondition => 'On Correspond',
       ScripAction    => 'Open Tickets',
       Template       => 'Blank' },
    {  ScripCondition => 'On Create',
       ScripAction    => 'AutoReply To Requestors',
       Template       => 'AutoReply' },
    {  ScripCondition => 'On Create',
       ScripAction    => 'Notify AdminCcs',
       Template       => 'Transaction' },
    {  ScripCondition => 'On Correspond',
       ScripAction    => 'Notify AdminCcs',
       Template       => 'Admin Correspondence' },
    {  ScripCondition => 'On Correspond',
       ScripAction    => 'Notify Requestors And Ccs',
       Template       => 'Correspondence' },
    {  ScripCondition => 'On Correspond',
       ScripAction    => 'Notify Other Recipients',
       Template       => 'Correspondence' },
    {  ScripCondition => 'On Comment',
       ScripAction    => 'Notify AdminCcs As Comment',
       Template       => 'Admin Comment' },
    {  ScripCondition => 'On Comment',
       ScripAction    => 'Notify Other Recipients As Comment',
       Template       => 'Correspondence' },
    {  ScripCondition => 'On Resolve',
       ScripAction    => 'Notify Requestors',
       Template       => 'Resolved' },
    {  Description => "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval",    # loc
       Queue          => '___Approvals',
       ScripCondition => 'User Defined',
       CustomIsApplicableCode => q[
	    $self->TicketObj->Type eq 'approval'	and
	    $self->TransactionObj->Field eq 'Status'	and
	    $self->TransactionObj->NewValue eq 'open'   and
	    eval { $T::Approving = ($self->TicketObj->AllDependedOnBy( Type => 'ticket' ))[0] }
       ],
       ScripAction    => 'Notify Owner',
       Template       => 'New Pending Approval' },
    {  Description       => "If an approval is rejected, reject the original and delete pending approvals",    # loc
       Queue             => '___Approvals',
       ScripCondition    => 'On Status Change',
       ScripAction       => 'User Defined',
       CustomPrepareCode => 'use RT::Workflow::Run (Rejected => $self);',
       CustomCommitCode  => '"never needed"',
       Template          => 'Approval Rejected', },
    {  Description => "When a ticket has been approved by any approver, add correspondence to the original ticket", # loc
       Queue             => '___Approvals',
       ScripCondition    => 'On Resolve',
       ScripAction       => 'User Defined',
       CustomPrepareCode => 'use RT::Workflow::Run (AnyApproved => $self);',
       CustomCommitCode  => '"never needed"',
       Template          => 'Approval Passed' },
    {  Description => "When a ticket has been approved by all approvers, add correspondence to the original ticket", # loc
       Queue             => '___Approvals',
       ScripCondition    => 'On Resolve',
       ScripAction       => 'User Defined',
       CustomPrepareCode => 'use RT::Workflow::Run (AllApproved => $self);',
       CustomCommitCode  => '"never needed"',
       Template          => 'All Approvals Passed', },

);

@ACL = (
    { UserId => 'Nobody',      # - principalId
      Right  => 'OwnTicket', },

    { UserId => 'root',        # - principalid
      Right  => 'SuperUser', },

);
