[Rt-commit] rt branch, 4.6/configindatabase-themed, repushed
? sunnavy
sunnavy at bestpractical.com
Fri Dec 13 16:33:09 EST 2019
The branch 4.6/configindatabase-themed was deleted and repushed:
was fab269a7fc423df51d018d95177559ef389b626a
now d7f67c7c8c61b7fa39392a6eb476ec8da17bc855
1: b28dc30467 = 1: 72a9963d8e Allow specifying size for Integer and String widgets
2: 94744da2c6 = 2: 52a50790de Allow String widget to have a value of "0"
3: 59334314c9 = 3: f9d93d2b91 Add RadioStyle option to Boolean widget
4: 534bba3102 = 4: 104816aca3 Make booleans with RadioStyle use true/false logic
5: baf23200cd ! 5: 743a9470d0 DatabaseSetting schema updates
@@ -115,10 +115,10 @@
+CREATE INDEX DatabaseSettings2 ON DatabaseSettings (Disabled);
+
-diff --git a/etc/upgrade/4.5.0/acl.Pg b/etc/upgrade/4.5.0/acl.Pg
-new file mode 100644
---- /dev/null
-+++ b/etc/upgrade/4.5.0/acl.Pg
+diff --git a/etc/upgrade/4.5.1/acl.Pg b/etc/upgrade/4.5.1/acl.Pg
+new file mode 100644
+--- /dev/null
++++ b/etc/upgrade/4.5.1/acl.Pg
@@
+sub acl {
+ my $dbh = shift;
@@ -151,11 +151,11 @@
+1;
+
-diff --git a/etc/upgrade/4.5.0/schema.Oracle b/etc/upgrade/4.5.0/schema.Oracle
---- a/etc/upgrade/4.5.0/schema.Oracle
-+++ b/etc/upgrade/4.5.0/schema.Oracle
-@@
- ALTER TABLE Classes DROP( HotList );
+diff --git a/etc/upgrade/4.5.1/schema.Oracle b/etc/upgrade/4.5.1/schema.Oracle
+new file mode 100644
+--- /dev/null
++++ b/etc/upgrade/4.5.1/schema.Oracle
+@@
+CREATE SEQUENCE DatabaseSettings_seq;
+CREATE TABLE DatabaseSettings (
+ id NUMBER(11,0) CONSTRAINT DatabaseSettings_key PRIMARY KEY,
@@ -172,11 +172,11 @@
+CREATE UNIQUE INDEX DatabaseSettings1 ON DatabaseSettings (LOWER(Name));
+CREATE INDEX DatabaseSettings2 ON DatabaseSettings (Disabled);
-diff --git a/etc/upgrade/4.5.0/schema.Pg b/etc/upgrade/4.5.0/schema.Pg
---- a/etc/upgrade/4.5.0/schema.Pg
-+++ b/etc/upgrade/4.5.0/schema.Pg
-@@
- ALTER TABLE Classes DROP COLUMN HotList;
+diff --git a/etc/upgrade/4.5.1/schema.Pg b/etc/upgrade/4.5.1/schema.Pg
+new file mode 100644
+--- /dev/null
++++ b/etc/upgrade/4.5.1/schema.Pg
+@@
+CREATE SEQUENCE databasesettings_id_seq;
+CREATE TABLE DatabaseSettings (
+ id integer DEFAULT nextval('databasesettings_id_seq'),
@@ -194,10 +194,10 @@
+CREATE UNIQUE INDEX DatabaseSettings1 ON DatabaseSettings (LOWER(Name));
+CREATE INDEX DatabaseSettings2 ON DatabaseSettings (Disabled);
-diff --git a/etc/upgrade/4.5.0/schema.SQLite b/etc/upgrade/4.5.0/schema.SQLite
-new file mode 100644
---- /dev/null
-+++ b/etc/upgrade/4.5.0/schema.SQLite
+diff --git a/etc/upgrade/4.5.1/schema.SQLite b/etc/upgrade/4.5.1/schema.SQLite
+new file mode 100644
+--- /dev/null
++++ b/etc/upgrade/4.5.1/schema.SQLite
@@
+CREATE TABLE DatabaseSettings (
+ id INTEGER PRIMARY KEY,
@@ -215,11 +215,11 @@
+CREATE INDEX DatabaseSettings2 ON DatabaseSettings (Disabled);
+
-diff --git a/etc/upgrade/4.5.0/schema.mysql b/etc/upgrade/4.5.0/schema.mysql
---- a/etc/upgrade/4.5.0/schema.mysql
-+++ b/etc/upgrade/4.5.0/schema.mysql
-@@
- ALTER TABLE Classes DROP COLUMN HotList;
+diff --git a/etc/upgrade/4.5.1/schema.mysql b/etc/upgrade/4.5.1/schema.mysql
+new file mode 100644
+--- /dev/null
++++ b/etc/upgrade/4.5.1/schema.mysql
+@@
+CREATE TABLE DatabaseSettings (
+ id int(11) NOT NULL AUTO_INCREMENT,
+ Name varchar(255) NOT NULL,
6: a888aa6cb0 = 6: e5fd89ab5a Add ORM classes for DatabaseSettings
7: 05db0b9b37 = 7: 2360f7b0e2 Port database config loading and refreshing from extension
8: 7648dd10f1 = 8: 1bbe235113 Add Code and MultilineString widgets
9: 21f6abfb8c = 9: 8bcdbc4b32 Port EditConfig page from extension
10: 165422a396 = 10: 8d42c4038e Annotate Immutable options
11: f2f0b772d7 ! 11: bd905f94e8 Add widget metadata for config options
@@ -193,6 +193,9 @@
+ ArticleOnTicketCreate => {
+ Widget => '/Widgets/Form/Boolean',
+ },
++ AutoCreateNonExternalUsers => {
++ Widget => '/Widgets/Form/Boolean',
++ },
+ AutocompleteOwnersForSearch => {
+ Widget => '/Widgets/Form/Boolean',
+ },
@@ -324,6 +327,176 @@
+ },
+ ValidateUserEmailAddresses => {
+ Widget => '/Widgets/Form/Boolean',
++ },
++ WebFallbackToRTLogin => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebFlushDbCacheEveryRequest => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebHttpOnlyCookies => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebRemoteUserAuth => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebRemoteUserAutocreate => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebRemoteUserContinuous => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebRemoteUserGecos => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WebSecureCookies => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ WikiImplicitLinks => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ HideOneTimeSuggestions => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ LinkArticlesOnInclude => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ SelfServiceCorrespondenceOnly => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ ShowSearchResultCount => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++ AllowGroupAutocompleteForUnprivileged => {
++ Widget => '/Widgets/Form/Boolean',
++ },
++
++ AttachmentListCount => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ AutoLogoff => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ BcryptCost => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ DefaultSummaryRows => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ ExternalStorageCutoffSize => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ LogoutRefresh => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ MaxAttachmentSize => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ MaxFulltextAttachmentSize => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ MinimumPasswordLength => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ MoreAboutRequestorGroupsLimit => {
++ Widget => '/Widgets/Form/Integer',
++ },
++ TicketsItemMapSize => {
++ Widget => '/Widgets/Form/Integer',
++ },
++
++ CanonicalizeEmailAddressMatch => {
++ Widget => '/Widgets/Form/String',
++ },
++ CanonicalizeEmailAddressReplace => {
++ Widget => '/Widgets/Form/String',
++ },
++ CommentAddress => {
++ Widget => '/Widgets/Form/String',
++ },
++ CorrespondAddress => {
++ Widget => '/Widgets/Form/String',
++ },
++ DashboardAddress => {
++ Widget => '/Widgets/Form/String',
++ },
++ DashboardSubject => {
++ Widget => '/Widgets/Form/String',
++ },
++ DefaultErrorMailPrecedence => {
++ Widget => '/Widgets/Form/String',
++ },
++ DefaultMailPrecedence => {
++ Widget => '/Widgets/Form/String',
++ },
++ DefaultSearchResultOrderBy => {
++ Widget => '/Widgets/Form/String',
++ },
++ EmailSubjectTagRegex => {
++ Widget => '/Widgets/Form/String',
++ },
++ EmailOutputEncoding => {
++ Widget => '/Widgets/Form/String',
++ },
++ FriendlyFromLineFormat => {
++ Widget => '/Widgets/Form/String',
++ },
++ FriendlyToLineFormat => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPHost => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPUser => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPPassword => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPFilter => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPGroupBase => {
++ Widget => '/Widgets/Form/String',
++ },
++ LDAPGroupFilter => {
++ Widget => '/Widgets/Form/String',
++ },
++ LogDir => {
++ Widget => '/Widgets/Form/String',
++ },
++ LogToFileNamed => {
++ Widget => '/Widgets/Form/String',
++ },
++ LogoAltText => {
++ Widget => '/Widgets/Form/String',
++ },
++ LogoLinkURL => {
++ Widget => '/Widgets/Form/String',
++ },
++ LogoURL => {
++ Widget => '/Widgets/Form/String',
++ },
++ OwnerEmail => {
++ Widget => '/Widgets/Form/String',
++ },
++ RedistributeAutoGeneratedMessages => {
++ Widget => '/Widgets/Form/String',
++ },
++ SendmailArguments => {
++ Widget => '/Widgets/Form/String',
++ },
++ SendmailBounceArguments => {
++ Widget => '/Widgets/Form/String',
++ },
++ SendmailPath => {
++ Widget => '/Widgets/Form/String',
++ },
++ SetOutgoingMailFrom => {
++ Widget => '/Widgets/Form/String',
++ },
++ Timezone => {
++ Widget => '/Widgets/Form/String',
+ },
+ VERPPrefix => {
+ Widget => '/Widgets/Form/String',
@@ -334,146 +507,6 @@
+ WidgetArguments => {
+ Callback => sub { return { Hints => RT->Config->Get( 'Organization') } },
+ },
-+ },
-+ WebFallbackToRTLogin => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebFlushDbCacheEveryRequest => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebHttpOnlyCookies => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebRemoteUserAuth => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebRemoteUserAutocreate => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebRemoteUserContinuous => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebRemoteUserGecos => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WebSecureCookies => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ WikiImplicitLinks => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ HideOneTimeSuggestions => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ LinkArticlesOnInclude => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ SelfServiceCorrespondenceOnly => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+ ShowSearchResultCount => {
-+ Widget => '/Widgets/Form/Boolean',
-+ },
-+
-+ AttachmentListCount => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ AutoLogoff => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ BcryptCost => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ DefaultSummaryRows => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ ExternalStorageCutoffSize => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ LogoutRefresh => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ MaxAttachmentSize => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ MaxFulltextAttachmentSize => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ MinimumPasswordLength => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ MoreAboutRequestorGroupsLimit => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+ TicketsItemMapSize => {
-+ Widget => '/Widgets/Form/Integer',
-+ },
-+
-+ CommentAddress => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ CorrespondAddress => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ DashboardAddress => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ DashboardSubject => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ DefaultErrorMailPrecedence => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ DefaultMailPrecedence => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ DefaultSearchResultOrderBy => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ EmailOutputEncoding => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ FriendlyFromLineFormat => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ FriendlyToLineFormat => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ LogDir => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ LogToFileNamed => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ LogoAltText => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ LogoLinkURL => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ LogoURL => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ OwnerEmail => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ RedistributeAutoGeneratedMessages => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ SendmailArguments => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ SendmailBounceArguments => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ SendmailPath => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ SetOutgoingMailFrom => {
-+ Widget => '/Widgets/Form/String',
-+ },
-+ Timezone => {
-+ Widget => '/Widgets/Form/String',
+ },
+ WebImagesURL => {
+ Widget => '/Widgets/Form/String',
12: 5803325e5f = 12: d09c8c5d0c Hide deprecated options
13: b878fb9786 = 13: 82b5fed83f List Database as source of configuration on Sys Config page
14: 02b6a1a9fb = 14: 05fe630f98 Render config with EditLink as readonly
15: 94cbaf03d2 = 15: 35c5c88e5a Switch from Storable::dclone to Clone::clone to handle code/regex
16: c0d5683bfb = 16: c9d0c67172 Migrate MultilineString to new themes
17: 941e99b3ba = 17: 952b66e3f4 Add LabelLink support for form widgets
18: dbb1df6f1e ! 18: 178402c5a8 Vertically align boolean label/value
@@ -19,7 +19,7 @@
--- a/share/static/css/elevator-light/forms.css
+++ b/share/static/css/elevator-light/forms.css
@@
- margin-top: 0;
+ padding-bottom: 0.25em;
}
+.form-row.boolean > .value .form-row {
19: 6c337ce659 ! 19: f74dfba737 Add tabs to the Configuration in DB feature
@@ -283,7 +283,7 @@
+% if ($widget eq '/Widgets/Form/MultilineString' || $widget eq '/Widgets/Form/Code') {
+<% $row_start |n %><textarea disabled class="<% $is_code ? 'code' : '' %> form-control" rows="6" cols="80"><% $current_value %></textarea><br />
+% } else {
-+<% $row_start |n %><input type="text" disabled width="80" value="<% $current_value %>" class="form-control" /><br/>
++<% $row_start |n %><input type="text" disabled value="<% $current_value %>" class="form-control" /><br/>
+% }
+<&|/l_unsafe, "<a href=\"$meta->{EditLink}\">", loc($meta->{EditLinkLabel}), "</a>" &>Visit [_1][_2][_3] to manage this setting</&>
+% } elsif ( $name =~ /Plugins/) {
@@ -298,7 +298,7 @@
+% if ($widget eq '/Widgets/Form/MultilineString' || $widget eq '/Widgets/Form/Code') {
+<% $row_start |n %><textarea disabled class="<% $is_code ? 'code' : '' %> form-control" rows="6" cols="80"><% $current_value %></textarea>
+% } else {
-+<% $row_start |n %><input type="text" disabled width="80" value="<% $current_value %>" class="form-control" />
++<% $row_start |n %><input type="text" disabled value="<% $current_value %>" class="form-control" />
+% }
+<br /><em><% loc('Must modify in config file' ) %></em>
+<% $row_end |n %>
20: de365025c8 ! 20: 3d04bac2dc Rename DatabaseSetting to Configuration
@@ -117,9 +117,9 @@
+CREATE INDEX Configurations2 ON Configurations (Disabled);
-diff --git a/etc/upgrade/4.5.0/acl.Pg b/etc/upgrade/4.5.0/acl.Pg
---- a/etc/upgrade/4.5.0/acl.Pg
-+++ b/etc/upgrade/4.5.0/acl.Pg
+diff --git a/etc/upgrade/4.5.1/acl.Pg b/etc/upgrade/4.5.1/acl.Pg
+--- a/etc/upgrade/4.5.1/acl.Pg
++++ b/etc/upgrade/4.5.1/acl.Pg
@@
my @acls;
@@ -132,11 +132,10 @@
my $db_user = RT->Config->Get('DatabaseUser');
-diff --git a/etc/upgrade/4.5.0/schema.Oracle b/etc/upgrade/4.5.0/schema.Oracle
---- a/etc/upgrade/4.5.0/schema.Oracle
-+++ b/etc/upgrade/4.5.0/schema.Oracle
-@@
- ALTER TABLE Classes DROP( HotList );
+diff --git a/etc/upgrade/4.5.1/schema.Oracle b/etc/upgrade/4.5.1/schema.Oracle
+--- a/etc/upgrade/4.5.1/schema.Oracle
++++ b/etc/upgrade/4.5.1/schema.Oracle
+@@
-CREATE SEQUENCE DatabaseSettings_seq;
-CREATE TABLE DatabaseSettings (
- id NUMBER(11,0) CONSTRAINT DatabaseSettings_key PRIMARY KEY,
@@ -157,11 +156,10 @@
+CREATE UNIQUE INDEX Configurations1 ON Configurations (LOWER(Name));
+CREATE INDEX Configurations2 ON Configurations (Disabled);
-diff --git a/etc/upgrade/4.5.0/schema.Pg b/etc/upgrade/4.5.0/schema.Pg
---- a/etc/upgrade/4.5.0/schema.Pg
-+++ b/etc/upgrade/4.5.0/schema.Pg
-@@
- ALTER TABLE Classes DROP COLUMN HotList;
+diff --git a/etc/upgrade/4.5.1/schema.Pg b/etc/upgrade/4.5.1/schema.Pg
+--- a/etc/upgrade/4.5.1/schema.Pg
++++ b/etc/upgrade/4.5.1/schema.Pg
+@@
-CREATE SEQUENCE databasesettings_id_seq;
-CREATE TABLE DatabaseSettings (
- id integer DEFAULT nextval('databasesettings_id_seq'),
@@ -180,9 +178,9 @@
+CREATE UNIQUE INDEX Configurations1 ON Configurations (LOWER(Name));
+CREATE INDEX Configurations2 ON Configurations (Disabled);
-diff --git a/etc/upgrade/4.5.0/schema.SQLite b/etc/upgrade/4.5.0/schema.SQLite
---- a/etc/upgrade/4.5.0/schema.SQLite
-+++ b/etc/upgrade/4.5.0/schema.SQLite
+diff --git a/etc/upgrade/4.5.1/schema.SQLite b/etc/upgrade/4.5.1/schema.SQLite
+--- a/etc/upgrade/4.5.1/schema.SQLite
++++ b/etc/upgrade/4.5.1/schema.SQLite
@@
-CREATE TABLE DatabaseSettings (
+CREATE TABLE Configurations (
@@ -199,11 +197,10 @@
+CREATE INDEX Configurations2 ON Configurations (Disabled);
-diff --git a/etc/upgrade/4.5.0/schema.mysql b/etc/upgrade/4.5.0/schema.mysql
---- a/etc/upgrade/4.5.0/schema.mysql
-+++ b/etc/upgrade/4.5.0/schema.mysql
-@@
- ALTER TABLE Classes DROP COLUMN HotList;
+diff --git a/etc/upgrade/4.5.1/schema.mysql b/etc/upgrade/4.5.1/schema.mysql
+--- a/etc/upgrade/4.5.1/schema.mysql
++++ b/etc/upgrade/4.5.1/schema.mysql
+@@
-CREATE TABLE DatabaseSettings (
+CREATE TABLE Configurations (
id int(11) NOT NULL AUTO_INCREMENT,
21: 1406bdc301 = 21: d15f4fc7fd Validate Content of Configurations
22: 1a6ad6f99f = 22: 9cf37bca99 Use Data::Dumper instead in Configuration to support regex
23: 28b3068606 = 23: 54e8245f0b Note RT::Extension::ConfigInDatabase is cored and the main backend change
24: 7bcae0bec8 = 24: 4349f0840a Add container div for configuration pages
25: fd41af8f62 = 25: 015b7fbe08 Move Edit link to the page menu on the configuration page
26: 62bf81b5c0 = 26: e00645d6aa Add some basic help to configuration pages
27: 6726e9391a = 27: fecfb1f4b8 Add configuration documentation in POD
28: 7bf8a0e2df = 28: 450ff61b6c Add the missing $LDAPOptions to RT_Config.pm
29: 77dc32c2e0 < --: ------- Add missing config options to %META
30: 00d9352016 = 29: 39b79ab68b Add test for /Admin/Tools/EditConfig.html
31: 625deb36fc ! 30: d164036cd0 Refactor SectionMap to get the whole structure from RT_Config.pm
@@ -172,13 +172,10 @@
+ while ( $content =~ m{<code>(.)([^<]*)</code>}sg ) {
+ my ( $sigil, $option ) = ( $1, $2 );
+ next unless $sigil =~ m{[\@\%\$]}; # no sigil => this is a value for a select option
-+ if ( $META{$option} ) {
-+ push @{ $SectionMap->[-1]{Content}[-1]{Content}[-1]{Content} },
-+ { Name => $option, Help => $name };
++ if ( !$META{$option} ) {
++ RT->Logger->debug("No META info for option [$option], falling back to Code widget");
+ }
-+ else {
-+ RT->Logger->warning("missing META info for option [$option]");
-+ }
++ push @{ $SectionMap->[-1]{Content}[-1]{Content}[-1]{Content} }, { Name => $option, Help => $name };
}
}
}
32: fab269a7fc ! 31: 0e582444af Re-organize RT_Config.pm to update config stucture on "RT Configuration"
@@ -3,7 +3,7 @@
Re-organize RT_Config.pm to update config stucture on "RT Configuration"
As RT_Config.pm is the single source now, here we update RT_Config.pm
- to update the web UI. See also f852f6bf82
+ to update the web UI. See also d164036cd0
This commit just updates the strucutre, config items are not changed.
@@ -1786,26 +1786,26 @@
});
-=item C<$GroupSearchFields>
--
++=item C<$WebBaseURL>, C<$WebURL>
+
-Specifies which fields of L<RT::Group> to match against and how to match
-each field when performing a quick search on groups. Valid match
-methods are LIKE, STARTSWITH, ENDSWITH, =, and !=. Valid search fields
-are id, Name, Description, or custom fields, which are specified as
-"CF.1234" or "CF.Name"
--
++Usually you don't want to set these options. The only obvious reason
++is if RT is accessible via https protocol on a non standard port, e.g.
++'https://rt.example.com:9999'. In all other cases these options are
++computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>.
+
-=cut
-+=item C<$WebBaseURL>, C<$WebURL>
-
+-
-Set($GroupSearchFields, {
- id => '=',
- Name => 'LIKE',
- Description => 'LIKE',
-});
-+Usually you don't want to set these options. The only obvious reason
-+is if RT is accessible via https protocol on a non standard port, e.g.
-+'https://rt.example.com:9999'. In all other cases these options are
-+computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>.
-
+-
-=item C<$AllowGroupAutocompleteForUnprivileged>
+C<$WebBaseURL> is the scheme, server and port
+(e.g. 'http://rt.example.com') for constructing URLs to the web
@@ -2396,59 +2396,65 @@
=back
--=head2 Transaction display
-+
-+
-+=head2 Ticket display
-
+-=head2 Transaction search
+-
=over 4
--=item C<$OldestTransactionsFirst>
+-=item C<%TransactionDefaultSearchResultFormat>
+=item C<$ShowMoreAboutPrivilegedUsers>
--By default, RT shows newest transactions at the bottom of the ticket
--history page, if you want see them at the top set this to 0. This
--option can be overridden by users in their preferences.
+-C<%TransactionDefaultSearchResultFormat> is the default format for RT
+-transaction search results for various object types. Keys are object types
+-like C<RT::Ticket>, values are the format string.
+This determines if the 'More about requestor' box on
+Ticket/Display.html is shown for Privileged Users.
=cut
--Set($OldestTransactionsFirst, 1);
+-Set(%TransactionDefaultSearchResultFormat,
+- 'RT::Ticket' => qq{
+- '<B><A HREF="__WebPath__/Transaction/Display.html?id=__id__">__id__</a></B>/TITLE:ID',
+- '<B><A HREF="__WebPath__/Ticket/Display.html?id=__ObjectId__">__ObjectId__</a></B>/TITLE:Ticket',
+- '__Description__',
+- '<small>__OldValue__</small>',
+- '<small>__NewValue__</small>',
+- '<small>__Content__</small>',
+- '<small>__CreatedRelative__</small>',
+- },
+-);
+-
+-=item C<%TranactionDefaultSearchResultOrderBy>
+Set($ShowMoreAboutPrivilegedUsers, 0);
--=item C<$ShowHistory>
+-What Transactions column should we order by for RT Transaction search
+-results for various object types. Keys are object types like C<RT::Ticket>,
+-values are the column names.
+=item C<$MoreAboutRequestorTicketList>
--This option controls how history is shown on the ticket display page. It
--accepts one of three possible modes and is overrideable on a per-user
--preference level. If you regularly deal with long tickets and don't care much
--about the history, you may wish to change this option to C<click>.
+-Defaults to I<id>.
+This can be set to Active, Inactive, All or None. It controls what
+ticket list will be displayed in the 'More about requestor' box on
+Ticket/Display.html. This option can be controlled by users also.
--=over
-+=cut
-
--=item C<delay> (the default)
+ =cut
+
+-Set( %TransactionDefaultSearchResultOrderBy, 'RT::Ticket' => 'id' );
+-
+-=item C<%TransactionDefaultSearchResultOrder>
+Set($MoreAboutRequestorTicketList, "Active");
--When set to C<delay>, history is loaded via javascript after the rest of the
--page has been loaded. This speeds up apparent page load times and generally
--provides a smoother experience. You may notice slight delays before the ticket
--history appears on very long tickets.
+-When ordering RT Transaction search results by
+-C<%TransactionDefaultSearchResultOrderBy>, should the sort be ascending
+-(ASC) or descending (DESC). Keys are object types like C<RT::Ticket>,
+-values are either "ASC" or "DESC".
+=item C<$MoreAboutRequestorTicketListFormat>
--=item C<click>
+-Defaults to I<ASC>.
+Control the appearance of the ticket lists in the 'More About Requestors' box.
--When set to C<click>, history is loaded on demand when a placeholder link is
--clicked. This speeds up ticket display page loads and history is never loaded
--if not requested.
-+=cut
-
--=item C<always>
+ =cut
+
+-Set( %TransactionDefaultSearchResultOrder, 'RT::Ticket' => 'ASC' );
+Set($MoreAboutRequestorTicketListFormat, q{
+ '<a href="__WebPath__/Ticket/Display.html?id=__id__">__id__</a>',
+ '__Owner__',
@@ -2456,281 +2462,353 @@
+ '__Status__',
+});
--When set to C<always>, history is loaded before showing the page. This ensures
--history is always available immediately, but at the expense of longer page load
--times. This behaviour was the default in RT 4.0.
-
--=item C<scroll>
+-=item C<%TransactionShowSearchResultCount>
+
+-Display search result count on transaction lists. Keys are object types
+-like C<RT::Ticket>, values are either 1 or 0.
+=item C<$MoreAboutRequestorExtraInfo>
--When set to C<scroll>, history is loaded via javascript after the rest of the
--page has been loaded, as you scroll down the page. Ten transactions are loaded
--initially, and then more are loaded ten at a time. This can dramatically speed
--up initial page load times on very long tickets.
+-Defaults to 1 (show them).
+By default, the 'More about requestor' box on Ticket/Display.html
+shows the Requestor's name and ticket list. If you would like to see
+extra information about the user, this expects a Format string of user
+attributes. Please note that not all the attributes are supported in
+this display because we're not building a table.
-
--=back
++
+Example:
+C<Set($MoreAboutRequestorExtraInfo,"Organization, Address1")>
=cut
--Set($ShowHistory, 'delay');
+-Set( %TransactionShowSearchResultCount, 'RT::Ticket' => 1 );
+Set($MoreAboutRequestorExtraInfo, "");
--=item C<$ShowBccHeader>
+-=back
+=item C<$MoreAboutRequestorGroupsLimit>
--By default, RT hides from the web UI information about blind copies
--user sent on reply or comment.
+-=head2 Transaction display
+By default, the 'More about requestor' box on Ticket/Display.html
+shows all the groups of the Requestor. Use this to limit the number
+of groups; a value of undef removes the group display entirely.
+-=over 4
++=cut
+
+-=item C<$OldestTransactionsFirst>
++Set($MoreAboutRequestorGroupsLimit, 0);
+
+-By default, RT shows newest transactions at the bottom of the ticket
+-history page, if you want see them at the top set this to 0. This
+-option can be overridden by users in their preferences.
++=item C<$UseSideBySideLayout>
++
++Should the ticket create and update forms use a more space efficient
++two column layout. This layout may not work in narrow browsers if you
++set a MessageBoxWidth (below).
+
+ =cut
+
+-Set($OldestTransactionsFirst, 1);
++Set($UseSideBySideLayout, 1);
+
+-=item C<$ShowHistory>
++=item C<$EditCustomFieldsSingleColumn>
+
+-This option controls how history is shown on the ticket display page. It
+-accepts one of three possible modes and is overrideable on a per-user
+-preference level. If you regularly deal with long tickets and don't care much
+-about the history, you may wish to change this option to C<click>.
++When displaying a list of Ticket Custom Fields for editing, RT
++defaults to a 2 column list. If you set this to 1, it will instead
++display the Custom Fields in a single column.
+
+-=over
++=cut
+
+-=item C<delay> (the default)
++Set($EditCustomFieldsSingleColumn, 0);
+
+-When set to C<delay>, history is loaded via javascript after the rest of the
+-page has been loaded. This speeds up apparent page load times and generally
+-provides a smoother experience. You may notice slight delays before the ticket
+-history appears on very long tickets.
++=item C<$ShowUnreadMessageNotifications>
+
+-=item C<click>
++If set to 1, RT will prompt users when there are new,
++unread messages on tickets they are viewing.
+
+-When set to C<click>, history is loaded on demand when a placeholder link is
+-clicked. This speeds up ticket display page loads and history is never loaded
+-if not requested.
++=cut
+
+-=item C<always>
++Set($ShowUnreadMessageNotifications, 0);
+
+-When set to C<always>, history is loaded before showing the page. This ensures
+-history is always available immediately, but at the expense of longer page load
+-times. This behaviour was the default in RT 4.0.
++=item C<$AutocompleteOwners>
+
+-=item C<scroll>
++If set to 1, the owner drop-downs for ticket update/modify and the query
++builder are replaced by text fields that autocomplete. This can
++alleviate the sometimes huge owner list for installations where many
++users have the OwnTicket right.
+
+-When set to C<scroll>, history is loaded via javascript after the rest of the
+-page has been loaded, as you scroll down the page. Ten transactions are loaded
+-initially, and then more are loaded ten at a time. This can dramatically speed
+-up initial page load times on very long tickets.
++The Owner entry is automatically converted to an autocomplete box if the list
++of owners exceeds C<$DropdownMenuLimit> items. However, the query to generate
++the list of owners is still run and this can increase page load times. If
++your owner lists exceed the limit and you are using the autocomplete box, you
++can improve performance by explicitly setting C<$AutocompleteOwners>.
+
+-=back
++Drop down doesn't show unprivileged users. If your setup allows unprivileged
++to own ticket then you have to enable autocompleting.
+
+ =cut
+
+-Set($ShowHistory, 'delay');
++Set($AutocompleteOwners, 0);
+
+-=item C<$ShowBccHeader>
++=item C<$DropdownMenuLimit>
+
+-By default, RT hides from the web UI information about blind copies
+-user sent on reply or comment.
++The Owner dropdown menu, used in various places in RT including the Query
++Builder and ticket edit pages, automatically changes from a dropdown menu to
++an autocomplete field once the menu holds more than the C<$DropdownMenuLimit>
++owners. Dropdown menus become more difficult to use when they contain a large
++number of values and the autocomplete textbox can be more usable.
++
++If you have very large numbers of users who can be owners, this can cause
++slow page loads on pages with an Owner selection. See L</$AutocompleteOwners>
++for a way to potentially speed up page loads.
+
=cut
-Set($ShowBccHeader, 0);
-+Set($MoreAboutRequestorGroupsLimit, 0);
++Set($DropdownMenuLimit, 50);
-=item C<$TrustHTMLAttachments>
-+=item C<$UseSideBySideLayout>
++=item C<$AutocompleteOwnersForSearch>
-If C<TrustHTMLAttachments> is not defined, we will display them as
-text. This prevents malicious HTML and JavaScript from being sent in a
-request (although there is probably more to it than that)
-+Should the ticket create and update forms use a more space efficient
-+two column layout. This layout may not work in narrow browsers if you
-+set a MessageBoxWidth (below).
++If set to 1, the owner drop-downs for the query builder are always
++replaced by text field that autocomplete and C<$AutocompleteOwners>
++is ignored. Helpful when owners list is huge in the query builder.
=cut
-Set($TrustHTMLAttachments, undef);
-+Set($UseSideBySideLayout, 1);
++Set($AutocompleteOwnersForSearch, 0);
-=item C<$AlwaysDownloadAttachments>
-+=item C<$EditCustomFieldsSingleColumn>
++=item C<$AutocompleteQueues>
-Always download attachments, regardless of content type. If set, this
-overrides C<TrustHTMLAttachments>.
-+When displaying a list of Ticket Custom Fields for editing, RT
-+defaults to a 2 column list. If you set this to 1, it will instead
-+display the Custom Fields in a single column.
++If set to 1, any queue drop-downs are replaced by text fields that
++autocomplete. This can alleviate the sometimes huge queue list for
++installations with many queues, and can also increase page load
++times in some cases. A user can override this setting as a personal
++preference.
=cut
-Set($AlwaysDownloadAttachments, undef);
-+Set($EditCustomFieldsSingleColumn, 0);
++Set($AutocompleteQueues, 0);
-=item C<$AttachmentListCount>
-+=item C<$ShowUnreadMessageNotifications>
++=item C<$UserSearchFields>
-The number of attachments to display by default on ticket display and ticket
-reply pages. Attachments beyond this count will be displayed only after the
-user clicks a "Show all" link. The default value, C<undef>, means always show
-all attachments. A value of C<0> means show no attachments by default.
-+If set to 1, RT will prompt users when there are new,
-+unread messages on tickets they are viewing.
++Used by the User Autocompleter as well as the User Search.
++
++Specifies which fields of L<RT::User> to match against and how to match
++each field when autocompleting users. Valid match methods are LIKE,
++STARTSWITH, ENDSWITH, =, and !=. Valid search fields are the core User
++fields, as well as custom fields, which are specified as "CF.1234" or
++"CF.Name"
=cut
-Set($AttachmentListCount, undef);
-+Set($ShowUnreadMessageNotifications, 0);
++Set($UserSearchFields, {
++ EmailAddress => 'STARTSWITH',
++ Name => 'STARTSWITH',
++ RealName => 'LIKE',
++});
-=item C<$PreferRichText>
-+=item C<$AutocompleteOwners>
++=item C<$TicketAutocompleteFields>
-By default, RT shows rich text (HTML) messages if possible. If
-C<$PreferRichText> is set to 0, RT will show plain text messages in
-preference to any rich text alternatives.
-+If set to 1, the owner drop-downs for ticket update/modify and the query
-+builder are replaced by text fields that autocomplete. This can
-+alleviate the sometimes huge owner list for installations where many
-+users have the OwnTicket right.
++Specifies which fields of L<RT::Ticket> to match against and how to match each
++field when autocompleting users. Valid match methods are LIKE, STARTSWITH,
++ENDSWITH, C<=>, and C<!=>.
-As a security precaution, RT limits the HTML that is displayed to a
-known-good subset -- as allowing arbitrary HTML to be displayed exposes
-multiple vectors for XSS and phishing attacks. If
-L</$TrustHTMLAttachments> is enabled, the original HTML is available for
-viewing via the "Download" link.
-+The Owner entry is automatically converted to an autocomplete box if the list
-+of owners exceeds C<$DropdownMenuLimit> items. However, the query to generate
-+the list of owners is still run and this can increase page load times. If
-+your owner lists exceed the limit and you are using the autocomplete box, you
-+can improve performance by explicitly setting C<$AutocompleteOwners>.
-+
-+Drop down doesn't show unprivileged users. If your setup allows unprivileged
-+to own ticket then you have to enable autocompleting.
++Not all Ticket fields are publically accessible and hence won't work for
++autocomplete unless you override their accessibility using a local overlay or a
++plugin. Out of the box the following fields are public: id, Subject.
=cut
-Set($PreferRichText, 1);
-+Set($AutocompleteOwners, 0);
++Set( $TicketAutocompleteFields, {
++ id => 'STARTSWITH',
++ Subject => 'LIKE',
++});
-=item C<$MaxInlineBody>
-+=item C<$DropdownMenuLimit>
++=item C<$DisplayTicketAfterQuickCreate>
-C<$MaxInlineBody> is the maximum textual attachment size that we want to
-see inline when viewing a transaction. RT will inline any text if the
-value is undefined or 0. This option can be overridden by users in
-their preferences. The default is 25k.
-+The Owner dropdown menu, used in various places in RT including the Query
-+Builder and ticket edit pages, automatically changes from a dropdown menu to
-+an autocomplete field once the menu holds more than the C<$DropdownMenuLimit>
-+owners. Dropdown menus become more difficult to use when they contain a large
-+number of values and the autocomplete textbox can be more usable.
-+
-+If you have very large numbers of users who can be owners, this can cause
-+slow page loads on pages with an Owner selection. See L</$AutocompleteOwners>
-+for a way to potentially speed up page loads.
++Enable this to redirect to the created ticket display page
++automatically when using QuickCreate.
=cut
-Set($MaxInlineBody, 25 * 1024);
-+Set($DropdownMenuLimit, 50);
++Set($DisplayTicketAfterQuickCreate, 0);
-=item C<$ShowTransactionImages>
-+=item C<$AutocompleteOwnersForSearch>
++=item C<$WikiImplicitLinks>
-By default, RT shows images attached to incoming (and outgoing) ticket
-updates inline. Set this variable to 0 if you'd like to disable that
-behavior.
-+If set to 1, the owner drop-downs for the query builder are always
-+replaced by text field that autocomplete and C<$AutocompleteOwners>
-+is ignored. Helpful when owners list is huge in the query builder.
++Support implicit links in WikiText custom fields? Setting this to 1
++causes InterCapped or ALLCAPS words in WikiText fields to automatically
++become links to searches for those words. If used on Articles, it links
++to the Article with that name.
=cut
-Set($ShowTransactionImages, 1);
-
-=item C<$ShowRemoteImages>
-+Set($AutocompleteOwnersForSearch, 0);
++Set($WikiImplicitLinks, 0);
-By default, RT doesn't show remote images attached to incoming (and outgoing)
-ticket updates inline. Set this variable to 1 if you'd like to enable remote
-image display. Showing remote images may allow spammers and other senders to
-track when messages are viewed and see referer information.
-+=item C<$AutocompleteQueues>
++=item C<$PreviewScripMessages>
-Note that this setting is independent of L</$ShowTransactionImages> above.
-+If set to 1, any queue drop-downs are replaced by text fields that
-+autocomplete. This can alleviate the sometimes huge queue list for
-+installations with many queues, and can also increase page load
-+times in some cases. A user can override this setting as a personal
-+preference.
++Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket
++reply page should include the content of the messages to be sent.
=cut
-Set($ShowRemoteImages, 0);
-+Set($AutocompleteQueues, 0);
++Set($PreviewScripMessages, 0);
-=item C<$PlainTextMono>
-+=item C<$UserSearchFields>
++=item C<$SimplifiedRecipients>
-Normally plaintext attachments are displayed as HTML with line breaks
-preserved. This causes space- and tab-based formatting not to be
-displayed correctly. Set C<$PlainTextMono> to 1 to use a monospaced
-font and preserve formatting.
-+Used by the User Autocompleter as well as the User Search.
-+
-+Specifies which fields of L<RT::User> to match against and how to match
-+each field when autocompleting users. Valid match methods are LIKE,
-+STARTSWITH, ENDSWITH, =, and !=. Valid search fields are the core User
-+fields, as well as custom fields, which are specified as "CF.1234" or
-+"CF.Name"
++If C<$SimplifiedRecipients> is set, a simple list of who will receive
++B<any> kind of mail will be shown on the ticket reply page, instead of a
++detailed breakdown by scrip.
=cut
-Set($PlainTextMono, 0);
-+Set($UserSearchFields, {
-+ EmailAddress => 'STARTSWITH',
-+ Name => 'STARTSWITH',
-+ RealName => 'LIKE',
-+});
++Set($SimplifiedRecipients, 0);
-=item C<$SuppressInlineTextFiles>
-+=item C<$TicketAutocompleteFields>
++=item C<$SquelchedRecipients>
-If C<$SuppressInlineTextFiles> is set to 1, then uploaded text files
-(text-type attachments with file names) are prevented from being
-displayed in-line when viewing a ticket's history.
-+Specifies which fields of L<RT::Ticket> to match against and how to match each
-+field when autocompleting users. Valid match methods are LIKE, STARTSWITH,
-+ENDSWITH, C<=>, and C<!=>.
-+
-+Not all Ticket fields are publically accessible and hence won't work for
-+autocomplete unless you override their accessibility using a local overlay or a
-+plugin. Out of the box the following fields are public: id, Subject.
++If C<$SquelchedRecipients> is set, the checkbox list of who will receive
++B<any> kind of mail on the ticket reply page are displayed initially as
++B<un>checked - which means nobody in that list would get any mail. It
++does not affect correspondence done via email yet.
=cut
-Set($SuppressInlineTextFiles, undef);
-+Set( $TicketAutocompleteFields, {
-+ id => 'STARTSWITH',
-+ Subject => 'LIKE',
-+});
-
-+=item C<$DisplayTicketAfterQuickCreate>
-
+-
+-
-=item C<@Active_MakeClicky>
-+Enable this to redirect to the created ticket display page
-+automatically when using QuickCreate.
-
+-
-MakeClicky detects various formats of data in headers and email
-messages, and extends them with supporting links. By default, RT
-provides two formats:
-+=cut
++Set($SquelchedRecipients, 0);
-* 'httpurl': detects http:// and https:// URLs and adds '[Open URL]'
- link after the URL.
-+Set($DisplayTicketAfterQuickCreate, 0);
++=item C<$HideResolveActionsWithDependencies>
-* 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
- replaces the URL with a link. Enabled by default.
-+=item C<$WikiImplicitLinks>
++If set to 1, this option will skip ticket menu actions which can't be
++completed successfully because of outstanding active Depends On tickets.
-See F<share/html/Elements/MakeClicky> for documentation on how to add
-your own styles of link detection.
-+Support implicit links in WikiText custom fields? Setting this to 1
-+causes InterCapped or ALLCAPS words in WikiText fields to automatically
-+become links to searches for those words. If used on Articles, it links
-+to the Article with that name.
++By default, all ticket actions are displayed in the menu even if some of
++them can't be successful until all Depends On links are resolved or
++transitioned to another inactive status.
=cut
-Set(@Active_MakeClicky, qw(httpurl_overwrite));
-+Set($WikiImplicitLinks, 0);
++Set($HideResolveActionsWithDependencies, 0);
-=item C<$QuoteFolding>
-+=item C<$PreviewScripMessages>
++=item C<$HideUnsetFieldsOnDisplay>
-Quote folding is the hiding of old replies in transaction history.
-It defaults to on. Set this to 0 to disable it.
-+Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket
-+reply page should include the content of the messages to be sent.
++This determines if we should hide unset fields on ticket display page.
++Set this to 1 to hide unset fields.
=cut
-Set($QuoteFolding, 1);
--
--=back
-+Set($PreviewScripMessages, 0);
-
-+=item C<$SimplifiedRecipients>
++Set($HideUnsetFieldsOnDisplay, 0);
+
+ =back
+
++=head2 Group Summary Configuration
-=head1 Application logic
-+If C<$SimplifiedRecipients> is set, a simple list of who will receive
-+B<any> kind of mail will be shown on the ticket reply page, instead of a
-+detailed breakdown by scrip.
-
+-
-=over 4
-+=cut
++Below are configuration options for the Group Summary page.
-=item C<$ParseNewMessageForTicketCcs>
-+Set($SimplifiedRecipients, 0);
++=over
-If C<$ParseNewMessageForTicketCcs> is set to 1, RT will attempt to
-divine Ticket 'Cc' watchers from the To and Cc lines of incoming
@@ -2739,55 +2817,54 @@
-addresses which forward mail to RT automatically and you enable this
-option without modifying C<$RTAddressRegexp> below, you will get
-yourself into a heap of trouble.
-+=item C<$SquelchedRecipients>
++=item C<$GroupSearchResultFormat>
-See also the L<RT::Action::AutoAddWatchers> extension which adds
-watchers from ticket replies on existing tickets.
-+If C<$SquelchedRecipients> is set, the checkbox list of who will receive
-+B<any> kind of mail on the ticket reply page are displayed initially as
-+B<un>checked - which means nobody in that list would get any mail. It
-+does not affect correspondence done via email yet.
++This controls the display of lists of groups returned from the Group
++Summary Search. The display of groups in the Admin interface is
++controlled by C<%AdminSearchResultFormat>.
=cut
-Set($ParseNewMessageForTicketCcs, undef);
-+Set($SquelchedRecipients, 0);
++Set($GroupSearchResultFormat,
++ q{ '<a href="__WebPath__/Group/Summary.html?id=__id__">__id__</a>/TITLE:#'}
++ .q{,'<a href="__WebPath__/Group/Summary.html?id=__id__">__Name__</a>/TITLE:Name'}
++);
-=item C<$UseTransactionBatch>
-+=item C<$HideResolveActionsWithDependencies>
++=item C<@GroupSummaryPortlets>
-Set C<$UseTransactionBatch> to 1 to execute transactions in batches,
-such that a resolve and comment (for example) would happen
-simultaneously, instead of as two transactions, unaware of each
-others' existence.
-+If set to 1, this option will skip ticket menu actions which can't be
-+completed successfully because of outstanding active Depends On tickets.
-+
-+By default, all ticket actions are displayed in the menu even if some of
-+them can't be successful until all Depends On links are resolved or
-+transitioned to another inactive status.
++A list of portlets to be displayed on the Group Summary page.
++By default, we show all of the available portlets.
++Extensions may provide their own portlets for this page.
=cut
-Set($UseTransactionBatch, 1);
-+Set($HideResolveActionsWithDependencies, 0);
++Set(@GroupSummaryPortlets, (qw/ExtraInfo CreateTicket ActiveTickets InactiveTickets GroupAssets /));
-=item C<$StrictLinkACL>
-+=item C<$HideUnsetFieldsOnDisplay>
++=item C<$GroupSummaryExtraInfo>
-When this feature is enabled a user needs I<ModifyTicket> rights on
-both tickets to link them together; otherwise, I<ModifyTicket> rights
-on either of them is sufficient.
-+This determines if we should hide unset fields on ticket display page.
-+Set this to 1 to hide unset fields.
++This controls what information is displayed on the Group Summary
++portal. By default the group Name and Description are displayed.
=cut
-Set($StrictLinkACL, 1);
-+Set($HideUnsetFieldsOnDisplay, 0);
++Set($GroupSummaryExtraInfo, "id, Name, Description");
-=item C<$RedistributeAutoGeneratedMessages>
-+=back
++=item C<$GroupSummaryTicketListFormat>
-Should RT redistribute correspondence that it identifies as machine
-generated? A 1 will do so; setting this to 0 will cause no
@@ -2795,75 +2872,12 @@
-default), which will redistribute only to privileged users. This helps
-to protect against malformed bounces and loops caused by auto-created
-requestors with bogus addresses.
-+=head2 Group Summary Configuration
-
--=cut
-+Below are configuration options for the Group Summary page.
-
--Set($RedistributeAutoGeneratedMessages, "privileged");
-+=over
-
--=item C<$ApprovalRejectionNotes>
-+=item C<$GroupSearchResultFormat>
-
--Should rejection notes from approvals be sent to the requestors?
-+This controls the display of lists of groups returned from the Group
-+Summary Search. The display of groups in the Admin interface is
-+controlled by C<%AdminSearchResultFormat>.
-
- =cut
-
--Set($ApprovalRejectionNotes, 1);
-+Set($GroupSearchResultFormat,
-+ q{ '<a href="__WebPath__/Group/Summary.html?id=__id__">__id__</a>/TITLE:#'}
-+ .q{,'<a href="__WebPath__/Group/Summary.html?id=__id__">__Name__</a>/TITLE:Name'}
-+);
-
--=item C<$ForceApprovalsView>
-+=item C<@GroupSummaryPortlets>
-
--Should approval tickets only be viewed and modified through the standard
--approval interface? With this setting enabled (by default), any attempt to use
--the normal ticket display and modify page for approval tickets will be
--redirected.
-+A list of portlets to be displayed on the Group Summary page.
-+By default, we show all of the available portlets.
-+Extensions may provide their own portlets for this page.
-
--For example, with this option set to 1 and an approval ticket #123:
-+=cut
-
-- /Ticket/Display.html?id=123
-+Set(@GroupSummaryPortlets, (qw/ExtraInfo CreateTicket ActiveTickets InactiveTickets GroupAssets /));
-
--is redirected to
-+=item C<$GroupSummaryExtraInfo>
-
-- /Approval/Display.html?id=123
-+This controls what information is displayed on the Group Summary
-+portal. By default the group Name and Description are displayed.
-
--With this option set to 0, the redirect won't happen.
-+=cut
-
--=back
--
--=cut
-+Set($GroupSummaryExtraInfo, "id, Name, Description");
-
--Set($ForceApprovalsView, 1);
-+=item C<$GroupSummaryTicketListFormat>
-
--=head1 Extra security
+Control the appearance of the Active and Inactive ticket lists in the
+Group Summary.
--This is a list of extra security measures to enable that help keep your RT
--safe. If you don't know what these mean, you should almost certainly leave the
--defaults alone.
-+=cut
-
--=over 4
+ =cut
+
+-Set($RedistributeAutoGeneratedMessages, "privileged");
+Set($GroupSummaryTicketListFormat, q{
+ '<B><A HREF="__WebPath__/Ticket/Display.html?id=__id__">__id__</a></B>/TITLE:#',
+ '<B><A HREF="__WebPath__/Ticket/Display.html?id=__id__">__Subject__</a></B>/TITLE:Subject',
@@ -2880,13 +2894,10 @@
+ '<small>__TimeLeft__</small>'
+});
--=item C<$DisallowExecuteCode>
+-=item C<$ApprovalRejectionNotes>
+=item C<$GroupSearchFields>
--If set to 1, the C<ExecuteCode> right will be removed from
--all users, B<including> the superuser. This is intended for when RT is
--installed into a shared environment where even the superuser should not
--be allowed to run arbitrary Perl code on the server via scrips.
+-Should rejection notes from approvals be sent to the requestors?
+Specifies which fields of L<RT::Group> to match against and how to match
+each field when performing a quick search on groups. Valid match
+methods are LIKE, STARTSWITH, ENDSWITH, =, and !=. Valid search fields
@@ -2895,122 +2906,100 @@
=cut
--Set($DisallowExecuteCode, 0);
+-Set($ApprovalRejectionNotes, 1);
+Set($GroupSearchFields, {
+ id => '=',
+ Name => 'LIKE',
+ Description => 'LIKE',
+});
--=item C<$Framebusting>
+-=item C<$ForceApprovalsView>
+=item C<$AllowGroupAutocompleteForUnprivileged>
--If set to 0, framekiller javascript will be disabled and the
--X-Frame-Options: DENY header will be suppressed from all responses.
--This disables RT's clickjacking protection.
+-Should approval tickets only be viewed and modified through the standard
+-approval interface? With this setting enabled (by default), any attempt to use
+-the normal ticket display and modify page for approval tickets will be
+-redirected.
+Defines whether unprivileged users (users of SelfService) are allowed
+to autocomplete groups when searching. Setting this option to 1 means
+unprivileged users will be able to search all your user created
+group names. Users will also need the SeeGroup privilege to use
+this feature.
- =cut
-
--Set($Framebusting, 1);
+-For example, with this option set to 1 and an approval ticket #123:
++=cut
+
+- /Ticket/Display.html?id=123
+Set($AllowGroupAutocompleteForUnprivileged, 0);
--=item C<$RestrictReferrer>
+-is redirected to
+=back
--If set to 0, the HTTP C<Referer> (sic) header will not be
--checked to ensure that requests come from RT's own domain. As RT allows
--for GET requests to alter state, disabling this opens RT up to
--cross-site request forgery (CSRF) attacks.
+- /Approval/Display.html?id=123
+=head2 Self Service Interface
--=cut
+-With this option set to 0, the redirect won't happen.
+The Self Service Interface is a view automatically presented to Unprivileged
+users who have a password and log into the web UI. The following options
+modify the default behavior of the Self Service pages.
--Set($RestrictReferrer, 1);
+-=back
+=over 4
-
--=item C<$RestrictLoginReferrer>
++
+=item C<$SelfServiceCorrespondenceOnly>
-
--If set to 0, RT will allow the user to log in from any link
--or request, merely by passing in C<user> and C<pass> parameters; setting
--it to 1 forces all logins to come from the login box, so the
--user is aware that they are being logged in. The default is off, for
--backwards compatability.
++
+On the ticket display page, show only correspondence transactions in the
+ticket history. This hides all ticket update transactions like status changes,
+custom field updates, updates to watchers, etc.
=cut
--Set($RestrictLoginReferrer, 0);
--
--=item C<@ReferrerWhitelist>
+-Set($ForceApprovalsView, 1);
+Set($SelfServiceCorrespondenceOnly, 0);
--This is a list of hostname:port combinations that RT will treat as being
--part of RT's domain. This is particularly useful if you access RT as
--multiple hostnames or have an external auth system that needs to
--redirect back to RT once authentication is complete.
+-=head1 Extra security
+=item C<$HideTimeFieldsFromUnprivilegedUsers>
-- Set(@ReferrerWhitelist, qw(www.example.com:443 www3.example.com:80));
+-This is a list of extra security measures to enable that help keep your RT
+-safe. If you don't know what these mean, you should almost certainly leave the
+-defaults alone.
+This determines if we should hide Time Worked, Time Estimated, and
+Time Left for unprivileged users.
+Set this to 1 to hide those fields.
--If the "RT has detected a possible cross-site request forgery" error is triggered
--by a host:port sent by your browser that you believe should be valid, you can copy
--the host:port from the error message into this list.
+-=over 4
+=cut
--Simple wildcards, similar to SSL certificates, are allowed. For example:
+-=item C<$DisallowExecuteCode>
+Set($HideTimeFieldsFromUnprivilegedUsers, 0);
-- *.example.com:80 # matches foo.example.com
-- # but not example.com
-- # or foo.bar.example.com
+-If set to 1, the C<ExecuteCode> right will be removed from
+-all users, B<including> the superuser. This is intended for when RT is
+-installed into a shared environment where even the superuser should not
+-be allowed to run arbitrary Perl code on the server via scrips.
+=item C<$AllowUserAutocompleteForUnprivileged>
-
-- www*.example.com:80 # matches www3.example.com
-- # and www-test.example.com
-- # and www.example.com
++
+Should unprivileged users (users of SelfService) be allowed to
+autocomplete users. Setting this option to 1 means unprivileged users
+will be able to search all your users.
=cut
--Set(@ReferrerWhitelist, qw());
--
--=item C<%ReferrerComponents>
--
--C<%ReferrerComponents> is the hash to customize referrer checking behavior when
--C<$RestrictReferrer> is enabled, where you can whitelist or blacklist the
--components along with their query args. e.g.
+-Set($DisallowExecuteCode, 0);
+Set($AllowUserAutocompleteForUnprivileged, 0);
-- Set( %ReferrerComponents,
-- ( '/Foo.html' => 1, '/Bar.html' => 0, '/Baz.html' => [ 'id', 'results' ] )
-- );
+-=item C<$Framebusting>
+=item C<$DefaultSelfServiceSearchResultFormat>
--With this, '/Foo.html' will be whitelisted, and '/Bar.html' will be blacklisted.
--'/Baz.html' with id/results query arguments will be whitelisted but blacklisted
--if there are other query arguments.
+-If set to 0, framekiller javascript will be disabled and the
+-X-Frame-Options: DENY header will be suppressed from all responses.
+-This disables RT's clickjacking protection.
+C<$DefaultSelfServiceSearchResultFormat> is the default format of
+searches displayed in the SelfService interface.
=cut
--Set( %ReferrerComponents );
+-Set($Framebusting, 1);
+Set($DefaultSelfServiceSearchResultFormat, qq{
+ '<B><A HREF="__WebPath__/SelfService/Display.html?id=__id__">__id__</a></B>/TITLE:#',
+ '<B><A HREF="__WebPath__/SelfService/Display.html?id=__id__">__Subject__</a></B>/TITLE:Subject',
@@ -3018,12 +3007,13 @@
+ Requestors,
+ Owner});
--=item C<$BcryptCost>
+-=item C<$RestrictReferrer>
+=item C<$SelfServiceRegex>
--This sets the default cost parameter used for the C<bcrypt> key
--derivation function. Valid values range from 4 to 31, inclusive, with
--higher numbers denoting greater effort.
+-If set to 0, the HTTP C<Referer> (sic) header will not be
+-checked to ensure that requests come from RT's own domain. As RT allows
+-for GET requests to alter state, disabling this opens RT up to
+-cross-site request forgery (CSRF) attacks.
+What portion of RT's URLspace should be accessible to Unprivileged
+users This does not override the redirect from F</Ticket/Display.html>
+to F</SelfService/Display.html> when Unprivileged users attempt to
@@ -3031,216 +3021,222 @@
=cut
--Set($BcryptCost, 12);
+-Set($RestrictReferrer, 1);
+Set($SelfServiceRegex, qr!^(?:/+SelfService/)!x );
--=back
+-=item C<$RestrictLoginReferrer>
+=item C<$SelfServiceUserPrefs>
+-If set to 0, RT will allow the user to log in from any link
+-or request, merely by passing in C<user> and C<pass> parameters; setting
+-it to 1 forces all logins to come from the login box, so the
+-user is aware that they are being logged in. The default is off, for
+-backwards compatability.
+This option controls how the SelfService user preferences page is
+displayed. It accepts a string from one of the four possible modes
+below.
+-=cut
+=over
--=head1 Authorization and user configuration
+-Set($RestrictLoginReferrer, 0);
+=item C<edit-prefs> (the default)
--=over 4
+-=item C<@ReferrerWhitelist>
+When set to C<edit-prefs>, self service users will be able to update
+their Timezone and Language preference and update their password.
+This is the default behavior of RT.
+-This is a list of hostname:port combinations that RT will treat as being
+-part of RT's domain. This is particularly useful if you access RT as
+-multiple hostnames or have an external auth system that needs to
+-redirect back to RT once authentication is complete.
++=item C<view-info>
+
+- Set(@ReferrerWhitelist, qw(www.example.com:443 www3.example.com:80));
++When set to C<view-info>, users will have full access to all their
++user information stored in RT on a read-only page.
+
+-If the "RT has detected a possible cross-site request forgery" error is triggered
+-by a host:port sent by your browser that you believe should be valid, you can copy
+-the host:port from the error message into this list.
++=item C<edit-prefs-view-info>
+
+-Simple wildcards, similar to SSL certificates, are allowed. For example:
++When set to C<edit-prefs-view-info>, users will have full access as in
++the C<view-info> option, but also will be able to update their Locale
++and password as in the default C<edit-prefs> option.
+
+- *.example.com:80 # matches foo.example.com
+- # but not example.com
+- # or foo.bar.example.com
++=item C<full-edit>
+
+- www*.example.com:80 # matches www3.example.com
+- # and www-test.example.com
+- # and www.example.com
++When set to C<full-edit>, users will be able to fully view and update
++all of their stored RT user information.
+
+-=cut
++=back
+
+-Set(@ReferrerWhitelist, qw());
++=cut
+
+-=item C<%ReferrerComponents>
++Set($SelfServiceUserPrefs, 'edit-prefs');
+
+-C<%ReferrerComponents> is the hash to customize referrer checking behavior when
+-C<$RestrictReferrer> is enabled, where you can whitelist or blacklist the
+-components along with their query args. e.g.
++=item C<$SelfServiceRequestUpdateQueue>
+
+- Set( %ReferrerComponents,
+- ( '/Foo.html' => 1, '/Bar.html' => 0, '/Baz.html' => [ 'id', 'results' ] )
+- );
++Set this to the name of the queue to use for tickets requesting updates
++to user infomation from Self Service users. Once it's set, a quick
++ticket create portlet will show up on Preferences page for self service
++users. This option is only available when $SelfServiceUserPrefs is set
++to 'view-info' or 'edit-prefs-view-info'.
+
+-With this, '/Foo.html' will be whitelisted, and '/Bar.html' will be blacklisted.
+-'/Baz.html' with id/results query arguments will be whitelisted but blacklisted
+-if there are other query arguments.
++Self service users need the CreateTicket right on this queue to create
++a ticket.
+
+ =cut
+
+-Set( %ReferrerComponents );
++Set($SelfServiceRequestUpdateQueue, undef);
+
+-=item C<$BcryptCost>
++=item C<$SelfServiceDownloadUserData>
+
+-This sets the default cost parameter used for the C<bcrypt> key
+-derivation function. Valid values range from 4 to 31, inclusive, with
+-higher numbers denoting greater effort.
++Allow Self Service users to download their user information, ticket data,
++and transaction data as a .tsv file. When enabled, these options
++will appear in the self service interface at Logged in as > Preferences.
++Users also need the ModifySelf right to have access to this page.
+
+ =cut
+
+-Set($BcryptCost, 12);
++Set( $SelfServiceDownloadUserData, 0 );
+
+-=back
++=item C<$SelfServiceShowGroupTickets>
++
++Set this option to true to show a section with group tickets
++on self service pages.
+
++=cut
++
++Set($SelfServiceShowGroupTickets, 0);
+
++=back
+
+-=head1 Authorization and user configuration
++=head2 Articles
+
+ =over 4
+
-=item C<$WebRemoteUserAuth>
-+=item C<view-info>
++=item C<$ArticleOnTicketCreate>
-If C<$WebRemoteUserAuth> is defined, RT will defer to the environment's
-REMOTE_USER variable, which should be set by the webserver's
-authentication layer.
-+When set to C<view-info>, users will have full access to all their
-+user information stored in RT on a read-only page.
-
--=cut
-+=item C<edit-prefs-view-info>
++Set this to 1 to display the Articles interface on the Ticket Create
++page in addition to the Reply/Comment page.
+
+ =cut
-Set($WebRemoteUserAuth, undef);
-+When set to C<edit-prefs-view-info>, users will have full access as in
-+the C<view-info> option, but also will be able to update their Locale
-+and password as in the default C<edit-prefs> option.
++Set($ArticleOnTicketCreate, 0);
-=item C<$WebRemoteUserContinuous>
-+=item C<full-edit>
++=item C<$HideArticleSearchOnReplyCreate>
-If C<$WebRemoteUserContinuous> is defined, RT will check for the
-REMOTE_USER on each access. If you would prefer this to only happen
-once (at initial login) set this to 0. The default
-setting will help ensure that if your webserver's authentication layer
-deauthenticates a user, RT notices as soon as possible.
-+When set to C<full-edit>, users will be able to fully view and update
-+all of their stored RT user information.
-+
-+=back
++Set this to 1 to hide "Include Article" box on the ticket update page.
=cut
-Set($WebRemoteUserContinuous, 1);
-+Set($SelfServiceUserPrefs, 'edit-prefs');
++Set($HideArticleSearchOnReplyCreate, 0);
-=item C<$WebFallbackToRTLogin>
-+=item C<$SelfServiceRequestUpdateQueue>
++=item C<$LinkArticlesOnInclude>
-If C<$WebFallbackToRTLogin> is defined, the user is allowed a
-chance of fallback to the login screen, even if REMOTE_USER failed.
-+Set this to the name of the queue to use for tickets requesting updates
-+to user infomation from Self Service users. Once it's set, a quick
-+ticket create portlet will show up on Preferences page for self service
-+users. This option is only available when $SelfServiceUserPrefs is set
-+to 'view-info' or 'edit-prefs-view-info'.
-+
-+Self service users need the CreateTicket right on this queue to create
-+a ticket.
++Set this to 0 to suppress the default behavior of automatically linking
++to Articles when they are included in a message.
=cut
-Set($WebFallbackToRTLogin, undef);
-+Set($SelfServiceRequestUpdateQueue, undef);
++Set($LinkArticlesOnInclude, 1);
-=item C<$LogoutURL>
-+=item C<$SelfServiceDownloadUserData>
++=back
-By default, C<$LogoutURL> is set to RT's logout page. When an
-external service is used to log into RT, C<$LogoutURL> can be set
-to the identity provider's logout URL. Include the full path to the
-logout endpoint, for example: 'https://www.example.com/logout'.
-+Allow Self Service users to download their user information, ticket data,
-+and transaction data as a .tsv file. When enabled, these options
-+will appear in the self service interface at Logged in as > Preferences.
-+Users also need the ModifySelf right to have access to this page.
-
- =cut
++=head2 Assets
+
+-=cut
++=over 4
-Set($LogoutURL, '/NoAuth/Logout.html');
-+Set( $SelfServiceDownloadUserData, 0 );
-
+-
-=item C<$WebRemoteUserGecos>
-+=item C<$SelfServiceShowGroupTickets>
++=item C<@AssetQueues>
-C<$WebRemoteUserGecos> means to match 'gecos' field as the user
-identity; useful with C<mod_auth_external>.
-+Set this option to true to show a section with group tickets
-+on self service pages.
++This should be a list of names of queues whose tickets should always
++display the "Assets" box. This is useful for queues which deal
++primarily with assets, as it provides a ready box to link an asset to
++the ticket, even when the ticket has no related assets yet.
=cut
-Set($WebRemoteUserGecos, undef);
--
++# Set(@AssetQueues, ());
+
-=item C<$WebRemoteUserAutocreate>
-+Set($SelfServiceShowGroupTickets, 0);
++=item C<$DefaultCatalog>
-C<$WebRemoteUserAutocreate> will create users under the same name as
-REMOTE_USER upon login, if they are missing from the Users table.
-+=back
-
--=cut
-+=head2 Articles
++This provides the default catalog after a user initially logs in.
++However, the default catalog is "sticky," and so will remember the
++last-selected catalog thereafter.
+
+ =cut
-Set($WebRemoteUserAutocreate, undef);
-+=over 4
++# Set($DefaultCatalog, 'General assets');
-=item C<$UserAutocreateDefaultsOnLogin>
-+=item C<$ArticleOnTicketCreate>
++=item C<$AssetSearchFields>
-If C<$WebRemoteUserAutocreate> is set to 1, C<$UserAutocreateDefaultsOnLogin>
-will be passed to L<RT::User/Create>. Use it to set defaults, such as
-creating unprivileged users with C<<{ Privileged => 0 }>>. This must be
-a hashref.
-+Set this to 1 to display the Articles interface on the Ticket Create
-+page in addition to the Reply/Comment page.
-
- =cut
-
--Set($UserAutocreateDefaultsOnLogin, undef);
--
--=item C<$WebSessionClass>
-+Set($ArticleOnTicketCreate, 0);
-
--C<$WebSessionClass> is the class you wish to use for storing sessions. On
--MySQL, Pg, and Oracle it defaults to using your database, in other cases
--sessions are stored in files using L<Apache::Session::File>. Other installed
--Apache::Session::* modules can be used to store sessions.
-+=item C<$HideArticleSearchOnReplyCreate>
-
-- Set($WebSessionClass, "Apache::Session::File");
-+Set this to 1 to hide "Include Article" box on the ticket update page.
-
- =cut
-
--Set($WebSessionClass, undef);
-+Set($HideArticleSearchOnReplyCreate, 0);
-
--=item C<%WebSessionProperties>
-+=item C<$LinkArticlesOnInclude>
-
--C<%WebSessionProperties> is the hash to configure class L</$WebSessionClass>
--in case custom class is used. By default it's empty and values are picked
--depending on the class. Make sure that it's empty if you're using DB as session
--backend.
-+Set this to 0 to suppress the default behavior of automatically linking
-+to Articles when they are included in a message.
-
- =cut
-
--Set( %WebSessionProperties );
-+Set($LinkArticlesOnInclude, 1);
-
--=item C<$AutoLogoff>
-+=back
-
--By default, RT's user sessions persist until a user closes his or her
--browser. With the C<$AutoLogoff> option you can setup session lifetime
--in minutes. A user will be logged out if he or she doesn't send any
--requests to RT for the defined time.
-+=head2 Assets
-+
-+=over 4
-+
-+=item C<@AssetQueues>
-+
-+This should be a list of names of queues whose tickets should always
-+display the "Assets" box. This is useful for queues which deal
-+primarily with assets, as it provides a ready box to link an asset to
-+the ticket, even when the ticket has no related assets yet.
-
- =cut
-
--Set($AutoLogoff, 0);
-+# Set(@AssetQueues, ());
-
--=item C<$LogoutRefresh>
-+=item C<$DefaultCatalog>
-
--The number of seconds to wait after logout before sending the user to
--the login page. By default, 1 second, though you may want to increase
--this if you display additional information on the logout page.
-+This provides the default catalog after a user initially logs in.
-+However, the default catalog is "sticky," and so will remember the
-+last-selected catalog thereafter.
-
- =cut
-
--Set($LogoutRefresh, 1);
-+# Set($DefaultCatalog, 'General assets');
-
--=item C<$WebSecureCookies>
-+=item C<$AssetSearchFields>
-
--By default, RT's session cookie isn't marked as "secure". Some web
--browsers will treat secure cookies more carefully than non-secure
--ones, being careful not to write them to disk, only sending them over
--an SSL secured connection, and so on. To enable this behavior, set
--C<$WebSecureCookies> to 1. NOTE: You probably don't want to turn this
--on I<unless> users are only connecting via SSL encrypted HTTPS
--connections.
+Specifies which fields of L<RT::Asset> to match against and how to match
+each field when performing a quick search on assets. Valid match
+methods are LIKE, STARTSWITH, ENDSWITH, =, and !=. Valid search fields
@@ -3249,27 +3245,26 @@
=cut
--Set($WebSecureCookies, 0);
+-Set($UserAutocreateDefaultsOnLogin, undef);
+Set($AssetSearchFields, {
+ id => '=',
+ Name => 'LIKE',
+ Description => 'LIKE',
+});
--=item C<$WebHttpOnlyCookies>
+-=item C<$WebSessionClass>
+=item C<$AssetSearchFormat>
--Default RT's session cookie to not being directly accessible to
--javascript. The content is still sent during regular and AJAX requests,
--and other cookies are unaffected, but the session-id is less
--programmatically accessible to javascript. Turning this off should only
--be necessary in situations with odd client-side authentication
--requirements.
+-C<$WebSessionClass> is the class you wish to use for storing sessions. On
+-MySQL, Pg, and Oracle it defaults to using your database, in other cases
+-sessions are stored in files using L<Apache::Session::File>. Other installed
+-Apache::Session::* modules can be used to store sessions.
+The format that results of the asset search are displayed with. This is
+either a string, which will be used for all catalogs, or a hash
+reference, keyed by catalog's name/id. If a hashref and neither name or
+id is found therein, falls back to the key ''.
-+
+
+- Set($WebSessionClass, "Apache::Session::File");
+If you wish to use the multiple catalog format, your configuration would look
+something like:
+
@@ -3281,7 +3276,7 @@
=cut
--Set($WebHttpOnlyCookies, 1);
+-Set($WebSessionClass, undef);
+# loc('Related tickets')
+Set($AssetSearchFormat, q[
+ '<a href="__WebHomePath__/Asset/Display.html?id=__id__">__Name__</a>/TITLE:Name',
@@ -3293,18 +3288,20 @@
+ '__ActiveTickets__ __InactiveTickets__/TITLE:Related tickets',
+]);
--=item C<$MinimumPasswordLength>
+-=item C<%WebSessionProperties>
+=item C<$AssetSummaryFormat>
--C<$MinimumPasswordLength> defines the minimum length for user
--passwords. Setting it to 0 disables this check.
+-C<%WebSessionProperties> is the hash to configure class L</$WebSessionClass>
+-in case custom class is used. By default it's empty and values are picked
+-depending on the class. Make sure that it's empty if you're using DB as session
+-backend.
+The information that is displayed on ticket display pages about assets
+related to the ticket. This is displayed in a table beneath the asset
+name.
=cut
--Set($MinimumPasswordLength, 5);
+-Set( %WebSessionProperties );
+Set($AssetSummaryFormat, q[
+ '<a href="__WebHomePath__/Asset/Display.html?id=__id__">__Name__</a>/TITLE:Name',
+ Description,
@@ -3315,22 +3312,26 @@
+ '__ActiveTickets__ __InactiveTickets__/TITLE:Related tickets',
+]);
--=back
+-=item C<$AutoLogoff>
+=item C<$AssetSummaryRelatedTicketsFormat>
--=head2 External Authentication and Authorization
+-By default, RT's user sessions persist until a user closes his or her
+-browser. With the C<$AutoLogoff> option you can setup session lifetime
+-in minutes. A user will be logged out if he or she doesn't send any
+-requests to RT for the defined time.
+The information that is displayed on ticket display pages about tickets
+related to assets related to the ticket. This is displayed as a list of
+tickets underneath the asset properties.
--RT has a built-in module for integrating with a directory service like
--LDAP or Active Directory for authentication (login) and authorization
--(enabling/disabling users and setting user attributes). The core configuration
--settings for the service are listed here. Additional details are available
--in the L<RT::Authen::ExternalAuth> module documentation.
-+=cut
-
--=over 4
+ =cut
+
+-Set($AutoLogoff, 0);
+-
+-=item C<$LogoutRefresh>
+-
+-The number of seconds to wait after logout before sending the user to
+-the login page. By default, 1 second, though you may want to increase
+-this if you display additional information on the logout page.
+Set($AssetSummaryRelatedTicketsFormat, q[
+ '<a href="__WebPath__/Ticket/Display.html?id=__id__">__id__</a>',
+ '(__OwnerName__)',
@@ -3339,151 +3340,244 @@
+ Status,
+]);
+-=cut
++=item C<$AssetBasicCustomFieldsOnCreate>
+
+-Set($LogoutRefresh, 1);
++Specify a list of Asset custom fields to show in "Basics" widget on create.
+
+-=item C<$WebSecureCookies>
++e.g.
+
+-By default, RT's session cookie isn't marked as "secure". Some web
+-browsers will treat secure cookies more carefully than non-secure
+-ones, being careful not to write them to disk, only sending them over
+-an SSL secured connection, and so on. To enable this behavior, set
+-C<$WebSecureCookies> to 1. NOTE: You probably don't want to turn this
+-on I<unless> users are only connecting via SSL encrypted HTTPS
+-connections.
++Set( $AssetBasicCustomFieldsOnCreate, [ 'foo', 'bar' ] );
+
+ =cut
+
+-Set($WebSecureCookies, 0);
++# Set($AssetBasicCustomFieldsOnCreate, undef );
+
+-=item C<$WebHttpOnlyCookies>
++=back
+
+-Default RT's session cookie to not being directly accessible to
+-javascript. The content is still sent during regular and AJAX requests,
+-and other cookies are unaffected, but the session-id is less
+-programmatically accessible to javascript. Turning this off should only
+-be necessary in situations with odd client-side authentication
+-requirements.
++=head2 Message box properties
+
+-=cut
++=over 4
+
+-Set($WebHttpOnlyCookies, 1);
++=item C<$MessageBoxWidth>, C<$MessageBoxHeight>
+
+-=item C<$MinimumPasswordLength>
++For message boxes, set the entry box width, height and what type of
++wrapping to use. These options can be overridden by users in their
++preferences.
+
+-C<$MinimumPasswordLength> defines the minimum length for user
+-passwords. Setting it to 0 disables this check.
++When the width is set to undef, no column count is specified and the
++message box will take up 100% of the available width. Combining this
++with HARD messagebox wrapping (below) is not recommended, as it will
++lead to inconsistent width in transactions between browsers.
++
++These settings only apply to the non-RichText message box. See below
++for Rich Text settings.
+
+ =cut
+
+-Set($MinimumPasswordLength, 5);
++Set($MessageBoxWidth, undef);
++Set($MessageBoxHeight, 15);
+
+-=back
++=item C<$MessageBoxRichText>
+
+-=head2 External Authentication and Authorization
++Should "rich text" editing be enabled? This option lets your users
++send HTML email messages from the web interface.
+
+-RT has a built-in module for integrating with a directory service like
+-LDAP or Active Directory for authentication (login) and authorization
+-(enabling/disabling users and setting user attributes). The core configuration
+-settings for the service are listed here. Additional details are available
+-in the L<RT::Authen::ExternalAuth> module documentation.
++=cut
+
+-=over 4
++Set($MessageBoxRichText, 1);
+
-=item C<$ExternalSettings>
-+=item C<$AssetBasicCustomFieldsOnCreate>
++=item C<$MessageBoxRichTextHeight>
-This option, along with the following options, activate and configure authentication
-via a resource external to RT. All of the configuration for your external authentication
-service, like LDAP or Active Directory, are defined in a data structure in this option.
-You can find full details on the configuration
-options in the L<RT::Authen::ExternalAuth> documentation.
-+Specify a list of Asset custom fields to show in "Basics" widget on create.
-+
-+e.g.
-+
-+Set( $AssetBasicCustomFieldsOnCreate, [ 'foo', 'bar' ] );
++Height of rich text JavaScript enabled editing boxes (in pixels)
=cut
-# No defaults are set for ExternalAuth because this is an optional feature.
-+# Set($AssetBasicCustomFieldsOnCreate, undef );
++Set($MessageBoxRichTextHeight, 200);
-=item C<$ExternalAuthPriority>
-+=back
++=item C<$MessageBoxIncludeSignature>
-Sets the priority of authentication resources if you have multiple configured.
-RT will attempt authorization with each resource, in order, until one succeeds or
-no more remain. See L<RT::Authen::ExternalAuth> for details.
-+=head2 Message box properties
++Should your users' signatures (from their Preferences page) be
++included in Comments and Replies.
-=item C<$ExternalInfoPriority>
-+=over 4
++=cut
-Sets the order of resources for querying user information if you have multiple
-configured. RT will query each resource, in order, until one succeeds or
-no more remain. See L<RT::Authen::ExternalAuth> for details.
-+=item C<$MessageBoxWidth>, C<$MessageBoxHeight>
++Set($MessageBoxIncludeSignature, 1);
-=item C<$UserAutocreateDefaultsOnLogin>
-+For message boxes, set the entry box width, height and what type of
-+wrapping to use. These options can be overridden by users in their
-+preferences.
++=item C<$MessageBoxIncludeSignatureOnComment>
-A hashref of options to set for users who are autocreated on login via
-ExternalAuth. For example, you can automatically make "Privileged" users
-who were authenticated and created from LDAP or Active Directory.
-See L<RT::Authen::ExternalAuth> for details.
-+When the width is set to undef, no column count is specified and the
-+message box will take up 100% of the available width. Combining this
-+with HARD messagebox wrapping (below) is not recommended, as it will
-+lead to inconsistent width in transactions between browsers.
++Should your users' signatures (from their Preferences page) be
++included in Comments. Setting this to 0 overrides
++C<$MessageBoxIncludeSignature>.
-=item C<$AutoCreateNonExternalUsers>
-+These settings only apply to the non-RichText message box. See below
-+for Rich Text settings.
++=cut
-Users should still be autocreated by RT as internal users if they
-fail to exist in an external service; this is so requestors who
-are not in LDAP can still be created when they email in.
-See L<RT::Authen::ExternalAuth> for details.
-+=cut
-
--=back
-+Set($MessageBoxWidth, undef);
-+Set($MessageBoxHeight, 15);
++Set($MessageBoxIncludeSignatureOnComment, 1);
+
+ =back
-=head2 Syncing Users and Groups with LDAP or AD
-+=item C<$MessageBoxRichText>
-
+-
-In addition to the authentication services described above, RT also
-has a utility you can schedule to periodicially sync from your
-directory service additional user attributes, new users,
-disabled users, and group membership. Options for the
-LDAPImport tool are listed here. Additional information is
-available in the L<RT::LDAPImport> documentation.
-+Should "rich text" editing be enabled? This option lets your users
-+send HTML email messages from the web interface.
-
--=over 4
++=head2 Attach Files
+
+ =over 4
+
+-=item C<$LDAPHost>
++=item C<$PreferDropzone>
+
+-Your LDAP server hostname.
++By default, RT uses Dropzone to attach files if possible. If
++C<$PreferDropzone> is set to 0, RT will always use plain file inputs.
+
+-=item C<$LDAPUser>
+=cut
--=item C<$LDAPHost>
-+Set($MessageBoxRichText, 1);
-
--Your LDAP server hostname.
-+=item C<$MessageBoxRichTextHeight>
-
--=item C<$LDAPUser>
-+Height of rich text JavaScript enabled editing boxes (in pixels)
-
-The LDAP user to log in with.
++Set($PreferDropzone, 1);
+
+-=item C<$LDAPOptions>
++=back
+
+-LDAP options that are supported by the L<Net::LDAP> new method.
++=head2 Transaction search
+
+-Example:
++=over 4
+
+- Set($LDAPOptions, [ port => 636 ]);
++=item C<%TransactionDefaultSearchResultFormat>
+
+-=item C<$LDAPPassword>
++C<%TransactionDefaultSearchResultFormat> is the default format for RT
++transaction search results for various object types. Keys are object types
++like C<RT::Ticket>, values are the format string.
+
+-Password for LDAPUser.
+=cut
--=item C<$LDAPOptions>
-+Set($MessageBoxRichTextHeight, 200);
-
--LDAP options that are supported by the L<Net::LDAP> new method.
-+=item C<$MessageBoxIncludeSignature>
-
--Example:
-+Should your users' signatures (from their Preferences page) be
-+included in Comments and Replies.
-
-- Set($LDAPOptions, [ port => 636 ]);
-+=cut
-
--=item C<$LDAPPassword>
-+Set($MessageBoxIncludeSignature, 1);
-
--Password for LDAPUser.
-+=item C<$MessageBoxIncludeSignatureOnComment>
-
-=item C<$LDAPFilter>
-+Should your users' signatures (from their Preferences page) be
-+included in Comments. Setting this to 0 overrides
-+C<$MessageBoxIncludeSignature>.
++Set(%TransactionDefaultSearchResultFormat,
++ 'RT::Ticket' => qq{
++ '<B><A HREF="__WebPath__/Transaction/Display.html?id=__id__">__id__</a></B>/TITLE:ID',
++ '<B><A HREF="__WebPath__/Ticket/Display.html?id=__ObjectId__">__ObjectId__</a></B>/TITLE:Ticket',
++ '__Description__',
++ '<small>__OldValue__</small>',
++ '<small>__NewValue__</small>',
++ '<small>__Content__</small>',
++ '<small>__CreatedRelative__</small>',
++ },
++);
-The filter to use when querying LDAP for the set of users to sync.
-+=cut
++=item C<%TranactionDefaultSearchResultOrderBy>
-=item C<$LDAPMapping>
-+Set($MessageBoxIncludeSignatureOnComment, 1);
++What Transactions column should we order by for RT Transaction search
++results for various object types. Keys are object types like C<RT::Ticket>,
++values are the column names.
-Mapping to apply between LDAP attributes retrieved and RT user
-record attributes. See the L<RT::LDAPImport> documentation
-for details.
-+=back
++Defaults to I<id>.
-=item C<$LDAPGroupBase>
-+=head2 Attach Files
++=cut
-The base for the LDAP group search.
-+=over 4
++Set( %TransactionDefaultSearchResultOrderBy, 'RT::Ticket' => 'id' );
-=item C<$LDAPGroupFilter>
-+=item C<$PreferDropzone>
++=item C<%TransactionDefaultSearchResultOrder>
-The filter to use when querying LDAP for groups to sync.
-+By default, RT uses Dropzone to attach files if possible. If
-+C<$PreferDropzone> is set to 0, RT will always use plain file inputs.
++When ordering RT Transaction search results by
++C<%TransactionDefaultSearchResultOrderBy>, should the sort be ascending
++(ASC) or descending (DESC). Keys are object types like C<RT::Ticket>,
++values are either "ASC" or "DESC".
-=item C<$LDAPGroupMapping>
-+=cut
++Defaults to I<ASC>.
-Mapping to apply between LDAP group member attributes retrieved and
-RT groups. See the L<RT::LDAPImport> documentation
-for details.
-+Set($PreferDropzone, 1);
++=cut
++
++Set( %TransactionDefaultSearchResultOrder, 'RT::Ticket' => 'ASC' );
++
++=item C<%TransactionShowSearchResultCount>
++
++Display search result count on transaction lists. Keys are object types
++like C<RT::Ticket>, values are either 1 or 0.
++
++Defaults to 1 (show them).
++
++=cut
++
++Set( %TransactionShowSearchResultCount, 'RT::Ticket' => 1 );
=back
@@ -3594,7 +3688,7 @@
-=back
+=item C<$TrustHTMLAttachments>
-
++
+If C<TrustHTMLAttachments> is not defined, we will display them as
+text. This prevents malicious HTML and JavaScript from being sent in a
+request (although there is probably more to it than that)
@@ -3610,32 +3704,32 @@
+=cut
++Set($AlwaysDownloadAttachments, undef);
+
-=head1 Date and time handling
-+Set($AlwaysDownloadAttachments, undef);
++=item C<$AttachmentListCount>
-=over 4
-+=item C<$AttachmentListCount>
-
--=item C<$DateTimeFormat>
+The number of attachments to display by default on ticket display and ticket
+reply pages. Attachments beyond this count will be displayed only after the
+user clicks a "Show all" link. The default value, C<undef>, means always show
+all attachments. A value of C<0> means show no attachments by default.
+-=item C<$DateTimeFormat>
++=cut
+
-You can choose date and time format. See the "Output formatters"
-section in perldoc F<lib/RT/Date.pm> for more options. This option
-can be overridden by users in their preferences.
-+=cut
++Set($AttachmentListCount, undef);
-Some examples:
-+Set($AttachmentListCount, undef);
++=item C<$PreferRichText>
-C<Set($DateTimeFormat, "LocalizedDateTime");>
-C<Set($DateTimeFormat, { Format => "ISO", Seconds => 0 });>
-C<Set($DateTimeFormat, "RFC2822");>
-C<Set($DateTimeFormat, { Format => "RFC2822", Seconds => 0, DayOfWeek => 0 });>
-+=item C<$PreferRichText>
-+
+By default, RT shows rich text (HTML) messages if possible. If
+C<$PreferRichText> is set to 0, RT will show plain text messages in
+preference to any rich text alternatives.
@@ -4300,3 +4394,4 @@
=cut
+
--: ------- > 32: 1fbdc88aa3 Fix typo of "TransactionDefaultSearchResultOrderBy"
--: ------- > 33: 8032bab90d Clean up items that simply use default widget from config meta
--: ------- > 34: 0110c89fb1 Use select widget for DefaultCatalog for better user experience
--: ------- > 35: 9d17cea2fd Move "Must modify" message up to be right under the option it's talking about
--: ------- > 36: 4db1b0b6e6 Line up the top menu option on left with the top of config box on the right
--: ------- > 37: 83a03d882c Add $LabelCols and $ValueCols to easily customize cols for label/value
--: ------- > 38: d7f67c7c8c Switch to 4/8 of label/value layout considering we have long option names
More information about the rt-commit
mailing list