RT#76877 Add an outgoing email notification blacklist
[freeside.git] / rt / etc / RT_SiteConfig.pm
index 56d7e26..e22d202 100644 (file)
-# Any configuration directives you include  here will override 
+use utf8;
+
+# Any configuration directives you include  here will override
 # RT's default configuration file, RT_Config.pm
 #
 # To include a directive here, just copy the equivalent statement
 # from RT_Config.pm and change the value. We've included a single
 # sample value below.
 #
+# If this file includes non-ASCII characters, it must be encoded in
+# UTF-8.
+#
 # This file is actually a perl module, so you can include valid
 # perl code, as well.
 #
 # The converse is also true, if this file isn't valid perl, you're
 # going to run into trouble. To check your SiteConfig file, use
-# this comamnd:
+# this command:
 #
 #   perl -c /path/to/your/etc/RT_SiteConfig.pm
 
 #Set( $rtname, 'example.com');
 
-$RT::rtname = '%%%RT_DOMAIN%%%';
-$RT::Organization = '%%%RT_DOMAIN%%%';
+# These settings should have been inserted by the initial Freeside install.
+# Sometimes you may want to change domain, timezone, or freeside::URL later,
+# everything else should probably stay untouched.
 
-$RT::Timezone = '%%%RT_TIMEZONE%%%';
+Set($rtname, '%%%RT_DOMAIN%%%');
+Set($Organization, '%%%RT_DOMAIN%%%');
 
-$RT::WebBaseURL = '';
-$RT::WebPath = '/freeside/rt';
+Set($Timezone, '%%%RT_TIMEZONE%%%');
 
-$RT::WebExternalAuth = 1;
-$RT::WebFallbackToInternal = 1; #no
-$RT::WebExternalAuto = 1;
-
-$RT::MyTicketsLength = 10;
+Set($WebRemoteUserAuth, 1);
+Set($WebFallbackToInternal, 1); #no
+Set($WebRemoteUserAutocreate, 1);
 
 $RT::URI::freeside::IntegrationType = 'Internal';
 $RT::URI::freeside::URL = '%%%FREESIDE_URL%%%';
 
+$RT::URI::freeside::URL =~ m(^(https?://[^/]+)(/.*)?$)i;
+Set($WebBaseURL, $1);
+Set($WebPath, "$2/rt");
+
 Set($DatabaseHost   , '');
 
-#perl 5.8.0 - 5.8.2 experiment
-#@EmailInputEncodings = qw(iso-8859-1 us-ascii utf-8); # unless (@EmailInputEncodings);
-#Set($EmailOutputEncoding , 'iso-8859-1');
+# These settings are user-editable.
+
+Set($UsernameFormat, 'verbose'); #back to concise to hide email addresses
+
+#uncomment to use
+#Set($DefaultSummaryRows, 10);
+
+Set($MessageBoxWidth, 80);
+Set($MessageBoxRichTextHeight, 368);
+
+#redirects to ticket display on quick create
+#Set($DisplayTicketAfterQuickCreate, 1);
+
+#Set(@Plugins,(qw(Extension::QuickDelete RT::FM)));
+
+# Enable blacklist for e-mail notifications (matches via case insensitive regex)
+#Set(@NotifyBlacklist,(qw(reddit.com slashdot.org frank)));
+
+# Define default lifecycle to include resolved_quiet status workflow
+Set(%Lifecycles,
+  default => {
+    initial         => [qw(new)], # loc_qw
+    active          => [qw(open stalled)], # loc_qw
+    inactive        => [qw(resolved resolved_quiet rejected deleted)], # loc_qw
+
+    defaults => {
+        on_create => 'new',
+        on_merge  => 'resolved',
+        approved  => 'open',
+        denied    => 'rejected',
+        reminder_on_open     => 'open',
+        reminder_on_resolve  => 'resolved',
+    },
+
+    transitions => {
+        ""       => [qw(new open resolved)],
+
+        # from   => [ to list ],
+        new       => [qw(open stalled resolved resolved_quiet rejected  deleted)],
+        open      => [qw(new stalled resolved resolved_quiet rejected  deleted)],
+        stalled   => [qw(new open rejected resolved resolved_quiet deleted)],
+        resolved  => [qw(new open stalled rejected deleted)],
+        resolved_quiet => [qw(resolved)],
+        rejected  => [qw(new open stalled resolved resolved_quiet deleted)],
+        deleted   => [qw(new open stalled rejected resolved resolved_quiet)],
+    },
+
+    rights => {
+        '* -> deleted'  => 'DeleteTicket',
+        '* -> *'        => 'ModifyTicket',
+    },
+    actions => [
+        'new -> open'            => { label  => 'Open It',       update => 'Respond' },
+        'new -> resolved'        => { label  => 'Resolve',       update => 'Comment' },
+        'new -> resolved_quiet'  => { label  => 'Quiet Resolve', update => 'Comment' },
+        'new -> rejected'        => { label  => 'Reject',        update => 'Respond' },
+        'new -> deleted'         => { label  => 'Delete',                            },
+        'open -> stalled'        => { label  => 'Stall',         update => 'Comment' },
+        'open -> resolved'       => { label  => 'Resolve',       update => 'Comment' },
+        'open -> resolved_quiet' => { label  => 'Quiet Resolve', update => 'Comment' },
+        'open -> rejected'       => { label  => 'Reject',        update => 'Respond' },
+        'stalled -> open'        => { label  => 'Open It',                           },
+        'resolved -> open'       => { label  => 'Re-open',       update => 'Comment' },
+        'rejected -> open'       => { label  => 'Re-open',       update => 'Comment' },
+        'deleted -> open'        => { label  => 'Undelete',                          },
+    ],
+  },
+# don't change lifecyle of the approvals, they are not capable to deal with
+# custom statuses
+  approvals => {
+    initial         => [ 'new' ],
+    active          => [ 'open', 'stalled' ],
+    inactive        => [ 'resolved', 'rejected', 'deleted' ],
+
+    defaults => {
+      on_create => 'new',
+      on_merge => 'resolved',
+      reminder_on_open     => 'open',
+      reminder_on_resolve  => 'resolved',
+    },
+
+    transitions => {
+      ''       => [qw(new open resolved)],
+
+      # from   => [ to list ],
+      new      => [qw(open stalled resolved rejected deleted)],
+      open     => [qw(new stalled resolved rejected deleted)],
+      stalled  => [qw(new open rejected resolved deleted)],
+      resolved => [qw(new open stalled rejected deleted)],
+      rejected => [qw(new open stalled resolved deleted)],
+      deleted  => [qw(new open stalled rejected resolved)],
+    },
+    rights => {
+      '* -> deleted'  => 'DeleteTicket',
+      '* -> rejected' => 'ModifyTicket',
+      '* -> *'        => 'ModifyTicket',
+    },
+    actions => [
+      'new -> open'      => { label  => 'Open It', update => 'Respond' },
+      'new -> resolved'  => { label  => 'Resolve', update => 'Comment' },
+      'new -> rejected'  => { label  => 'Reject',  update => 'Respond' },
+      'new -> deleted'   => { label  => 'Delete',                      },
+      'open -> stalled'  => { label  => 'Stall',   update => 'Comment' },
+      'open -> resolved' => { label  => 'Resolve', update => 'Comment' },
+      'open -> rejected' => { label  => 'Reject',  update => 'Respond' },
+      'stalled -> open'  => { label  => 'Open It',                     },
+      'resolved -> open' => { label  => 'Re-open', update => 'Comment' },
+      'rejected -> open' => { label  => 'Re-open', update => 'Comment' },
+      'deleted -> open'  => { label  => 'Undelete',                    },
+    ],
+  },
+);
+
+# Lifecycle 'default' from RT_Config.pm
+# Customer may set the lifecycle on their ticket queue as 'hide_resolve_quiet'
+# to suppress the 'resolve_quiet' ticket status
+Set(%Lifecycles,
+    hide_resolve_quiet => {
+        initial         => [qw(new)], # loc_qw
+        active          => [qw(open stalled)], # loc_qw
+        inactive        => [qw(resolved rejected deleted)], # loc_qw
+
+        defaults => {
+            on_create => 'new',
+            on_merge  => 'resolved',
+            approved  => 'open',
+            denied    => 'rejected',
+            reminder_on_open     => 'open',
+            reminder_on_resolve  => 'resolved',
+        },
+
+        transitions => {
+            ""       => [qw(new open resolved)],
+
+            # from   => [ to list ],
+            new      => [qw(    open stalled resolved rejected deleted)],
+            open     => [qw(new      stalled resolved rejected deleted)],
+            stalled  => [qw(new open         rejected resolved deleted)],
+            resolved => [qw(new open stalled          rejected deleted)],
+            rejected => [qw(new open stalled resolved          deleted)],
+            deleted  => [qw(new open stalled rejected resolved        )],
+        },
+        rights => {
+            '* -> deleted'  => 'DeleteTicket',
+            '* -> *'        => 'ModifyTicket',
+        },
+        actions => [
+            'new -> open'      => { label  => 'Open It', update => 'Respond' }, # loc{label}
+            'new -> resolved'  => { label  => 'Resolve', update => 'Comment' }, # loc{label}
+            'new -> rejected'  => { label  => 'Reject',  update => 'Respond' }, # loc{label}
+            'new -> deleted'   => { label  => 'Delete',                      }, # loc{label}
+            'open -> stalled'  => { label  => 'Stall',   update => 'Comment' }, # loc{label}
+            'open -> resolved' => { label  => 'Resolve', update => 'Comment' }, # loc{label}
+            'open -> rejected' => { label  => 'Reject',  update => 'Respond' }, # loc{label}
+            'stalled -> open'  => { label  => 'Open It',                     }, # loc{label}
+            'resolved -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
+            'rejected -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
+            'deleted -> open'  => { label  => 'Undelete',                    }, # loc{label}
+        ],
+    },
+# don't change lifecyle of the approvals, they are not capable to deal with
+# custom statuses
+    approvals => {
+        initial         => [ 'new' ],
+        active          => [ 'open', 'stalled' ],
+        inactive        => [ 'resolved', 'rejected', 'deleted' ],
+
+        defaults => {
+            on_create => 'new',
+            on_merge => 'resolved',
+            reminder_on_open     => 'open',
+            reminder_on_resolve  => 'resolved',
+        },
+
+        transitions => {
+            ''       => [qw(new open resolved)],
+
+            # from   => [ to list ],
+            new      => [qw(open stalled resolved rejected deleted)],
+            open     => [qw(new stalled resolved rejected deleted)],
+            stalled  => [qw(new open rejected resolved deleted)],
+            resolved => [qw(new open stalled rejected deleted)],
+            rejected => [qw(new open stalled resolved deleted)],
+            deleted  => [qw(new open stalled rejected resolved)],
+        },
+        rights => {
+            '* -> deleted'  => 'DeleteTicket',
+            '* -> rejected' => 'ModifyTicket',
+            '* -> *'        => 'ModifyTicket',
+        },
+        actions => [
+            'new -> open'      => { label  => 'Open It', update => 'Respond' }, # loc{label}
+            'new -> resolved'  => { label  => 'Resolve', update => 'Comment' }, # loc{label}
+            'new -> rejected'  => { label  => 'Reject',  update => 'Respond' }, # loc{label}
+            'new -> deleted'   => { label  => 'Delete',                      }, # loc{label}
+            'open -> stalled'  => { label  => 'Stall',   update => 'Comment' }, # loc{label}
+            'open -> resolved' => { label  => 'Resolve', update => 'Comment' }, # loc{label}
+            'open -> rejected' => { label  => 'Reject',  update => 'Respond' }, # loc{label}
+            'stalled -> open'  => { label  => 'Open It',                     }, # loc{label}
+            'resolved -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
+            'rejected -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
+            'deleted -> open'  => { label  => 'Undelete',                    }, # loc{label}
+        ],
+    },
+);
 
 1;