Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / rt / etc / initialdata
index 89db2cc..96255b5 100644 (file)
@@ -1,4 +1,4 @@
-# Initial data for a fresh RT3 Installation.
+# Initial data for a fresh RT installation.
 
 @Users = (
     {  Name         => 'root',
 
 @Users = (
     {  Name         => 'root',
@@ -19,6 +19,7 @@
              CorrespondAddress => "",
              CommentAddress    => "", },
            { Name        => '___Approvals',
              CorrespondAddress => "",
              CommentAddress    => "", },
            { Name        => '___Approvals',
+             Lifecycle   => 'approvals',
              Description => 'A system-internal queue for the approvals system',
              Disabled    => 2, } );
 
              Description => 'A system-internal queue for the approvals system',
              Disabled    => 2, } );
 
       Description => 'Sends mail to the administrative Ccs',              # loc
       ExecModule  => 'Notify',
       Argument    => 'AdminCc' },
       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' },
 
     { 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' },
+# 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',
     { 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' },
       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', },
     { Name        => 'User Defined',                                      # loc
       Description => 'Perform a user-defined action',                     # loc
       ExecModule  => 'UserDefined', },
     { Name        => 'Open Tickets',                                      # loc
       Description => 'Open tickets on correspondence',                    # loc
       ExecModule  => 'AutoOpen' },
     { Name        => 'Open Tickets',                                      # loc
       Description => 'Open tickets on correspondence',                    # loc
       ExecModule  => 'AutoOpen' },
+    { Name        => 'Open Inactive Tickets',                             # loc
+      Description => 'Open inactive tickets',                             # loc
+      ExecModule  => 'AutoOpenInactive' },
     { 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        => '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 = (
 );
 
 @ScripConditions = (
 
     {
 
 
     {
 
+      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',
       Name                 => 'On Comment',                                # loc
       Description          => 'Whenever comments come in',                 # loc
       ApplicableTransTypes => 'Comment',
        ExecModule           => 'ReopenTicket',
     },
 
        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 = (
 );
 
 @Templates = (
       Content     => '', },
     {  Queue       => '0',
        Name        => 'Autoreply',                                         # loc
       Content     => '', },
     {  Queue       => '0',
        Name        => 'Autoreply',                                         # loc
-       Description => 'Default Autoresponse template',                     # loc
+       Description => 'Plain text Autoresponse template',                     # loc
        Content     => 'Subject: AutoReply: {$Ticket->Subject}
 
 
        Content     => 'Subject: AutoReply: {$Ticket->Subject}
 
 
@@ -202,15 +275,15 @@ Greetings,
 
 This message has been automatically generated in response to the
 creation of a trouble ticket regarding:
 
 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
 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:
 
 
 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.
 
 in the subject line of all future correspondence about this issue. To do so, 
 you may reply to this message.
@@ -222,10 +295,35 @@ you may reply to this message.
 {$Transaction->Content()}
 '
     },
 {$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
     {  Queue       => '0',
        Name        => 'Transaction',                     # loc
-       Description => 'Default transaction template',    # loc
+       Description => 'Plain text transaction template', # loc
        Content     => 'RT-Attach-Message: yes
 
 
        Content     => 'RT-Attach-Message: yes
 
 
@@ -242,12 +340,43 @@ you may reply to this message.
 {$Transaction->Content()}
 '
     },
 {$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
     {
 
       Queue       => '0',
       Name        => 'Admin Correspondence',                     # loc
-      Description => 'Default admin correspondence template',    # loc
+      Description => 'Plain text admin correspondence template',    # loc
       Content     => 'RT-Attach-Message: yes
 
 
       Content     => 'RT-Attach-Message: yes
 
 
@@ -256,21 +385,40 @@ you may reply to this message.
 {$Transaction->Content()}
 '
     },
 {$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
     {  Queue       => '0',
        Name        => 'Correspondence',                          # loc
-       Description => 'Default correspondence template',         # loc
+       Description => 'Plain text correspondence template',         # loc
        Content     => 'RT-Attach-Message: yes
 
 {$Transaction->Content()}
 '
     },
        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
     {  Queue       => '0',
        Name        => 'Admin Comment',                           # loc
-       Description => 'Default admin comment template',          # loc
+       Description => 'Plain text admin comment template',          # loc
        Content     =>
        Content     =>
-'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]//g; $s =~ s/^Re//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
 
 
 RT-Attach-Message: yes
 
 
@@ -280,6 +428,30 @@ This is a comment.  It is not sent to the Requestor(s):
 {$Transaction->Content()}
 '
     },
 {$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}
+'
+    },
 
     {  Queue       => '0',
        Name        => 'Status Change',                                     # loc
 
     {  Queue       => '0',
        Name        => 'Status Change',                                     # loc
@@ -292,7 +464,18 @@ This is a comment.  It is not sent to the Requestor(s):
 {$Transaction->Content()}
 '
     },
 {$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',
     {
 
       Queue       => '0',
@@ -304,6 +487,15 @@ According to our records, your request has been resolved. If you have any
 further questions or concerns, please respond to this message.
 '
     },
 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',
        Name        => "New Pending Approval",    # loc
        Description =>
     {  Queue       => '___Approvals',
        Name        => "New Pending Approval",    # loc
        Description =>
@@ -324,6 +516,25 @@ batch-process all your pending approvals.
 '
     },
     {  Queue       => '___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
+
+<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',
        Name        => "Approval Passed",    # loc
        Description =>
          "Notify Requestor of their ticket has been approved by some approver", # loc
        Name        => "Approval Passed",    # loc
        Description =>
          "Notify Requestor of their ticket has been approved by some approver", # loc
@@ -331,13 +542,29 @@ batch-process all your pending approvals.
 
 Greetings,
 
 
 Greetings,
 
-Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }.
+Your ticket has been approved by { eval { $Approver->Name } }.
 Other approvals may be pending.
 
 Approver\'s notes: { $Notes }
 '
     },
     {  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',
        Name        => "All Approvals Passed",    # loc
        Description =>
          "Notify Requestor of their ticket has been approved by all approvers", # loc
        Name        => "All Approvals Passed",    # loc
        Description =>
          "Notify Requestor of their ticket has been approved by all approvers", # loc
@@ -345,13 +572,29 @@ Approver\'s notes: { $Notes }
 
 Greetings,
 
 
 Greetings,
 
-Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }.
+Your ticket has been approved by { eval { $Approver->Name } }.
 Its Owner may now start to act on it.
 
 Approver\'s notes: { $Notes }
 '
     },
     {  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',
        Name        => "Approval Rejected",    # loc
        Description =>
          "Notify Owner of their rejected ticket", # loc
        Name        => "Approval Rejected",    # loc
        Description =>
          "Notify Owner of their rejected ticket", # loc
@@ -359,12 +602,27 @@ Approver\'s notes: { $Notes }
 
 Greetings,
 
 
 Greetings,
 
-Your ticket has been rejected by { eval { $Approval->OwnerObj->Name } }.
+Your ticket has been rejected by { eval { $Approver->Name } }.
 
 Approver\'s notes: { $Notes }
 '
     },
     {  Queue       => '___Approvals',
 
 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',
        Name        => "Approval Ready for Owner",    # loc
        Description =>
          "Notify Owner of their ticket has been approved and is ready to be acted on", # loc
        Name        => "Approval Ready for Owner",    # loc
        Description =>
          "Notify Owner of their ticket has been approved and is ready to be acted on", # loc
@@ -376,19 +634,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
+
+<p>Greetings,</p>
+
+<p>The ticket has been approved, you may now start to act on it.</p>
+
+'
+    },
     {  Queue       => 0,
        Name        => "Forward",    # loc
     {  Queue       => 0,
        Name        => "Forward",    # loc
-       Description => "Heading of a forwarded message", # loc
+       Description => "Forwarded message", # loc
        Content => q{
        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
 }
     },
     {  Queue       => 0,
        Name        => "Forward Ticket",    # loc
-       Description => "Heading of a forwarded Ticket", # loc
+       Description => "Forwarded ticket message", # loc
        Content => q{
 
        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,
 }
     },
     {  Queue       => 0,
@@ -426,12 +707,12 @@ Please, check that you encrypt messages with correct keys
 or contact the system administrator.}
     },
     {  Queue       => 0,
 or contact the system administrator.}
     },
     {  Queue       => 0,
-       Name        => "Error: bad GnuPG data",    # loc
+       Name        => "Error: bad encrypted data",    # loc
        Description =>
        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
 
        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";
   }
 { foreach my $msg ( @Messages ) {
     $OUT .= "* $msg\n";
   }
@@ -452,10 +733,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 }
 ],
 
 { $Argument }
 ],
@@ -486,54 +767,80 @@ Hour:         { $SubscriptionObj->SubValue('Hour') }
 }
 }
 },
 }
 }
 },
+    {  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 = (
 
 @Scrips = (
-    {  Description    => 'On Correspond Open Tickets',
+    {  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 Inactive Tickets',
        ScripCondition => 'On Correspond',
        ScripCondition => 'On Correspond',
-       ScripAction    => 'Open Tickets',
+       ScripAction    => 'Open Inactive Tickets',
        Template       => 'Blank' },
        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',
     {  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 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',
        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',
        ScripAction    => 'Notify 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' },
+       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',
     {  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 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 = (
 );
 
 @ACL = (
@@ -583,22 +890,153 @@ Hour:         { $SubscriptionObj->SubValue('Hour') }
         OrderBy => 'LastUpdated',
         Order   => 'DESC' },
     },
         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
+                },
+              ],
+        },
     },
 );
     },
 );
+
+# 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;