Putting 4.2.0 on top of 4.0.17
authorMikal Kolbein Gule <m.k.gule@usit.uio.no>
Tue, 15 Oct 2013 13:20:51 +0000 (15:20 +0200)
committerMikal Kolbein Gule <m.k.gule@usit.uio.no>
Tue, 15 Oct 2013 13:20:51 +0000 (15:20 +0200)
1112 files changed:
bin/rt
bin/rt-crontool
bin/rt-mailgate
docs/README
docs/UPGRADING-4.0
docs/UPGRADING-4.2 [new file with mode: 0644]
docs/authentication.pod [new file with mode: 0644]
docs/charts.pod [new file with mode: 0644]
docs/customizing/approvals.pod
docs/customizing/articles_introduction.pod
docs/customizing/styling_rt.pod
docs/customizing/templates.pod
docs/dashboards.pod [new file with mode: 0644]
docs/extending/clickable_links.pod
docs/hacking.pod
docs/images/customize-dashboards-menu.png [new file with mode: 0644]
docs/images/dashboard-chart.png [new file with mode: 0644]
docs/images/dashboard-content-invoices.png [new file with mode: 0644]
docs/images/dashboard-search-sorting.png [new file with mode: 0644]
docs/images/dashboard-subscription.png [new file with mode: 0644]
docs/images/general-owner-chart.png [new file with mode: 0644]
docs/images/general-owner-lastupdated-chart.png [new file with mode: 0644]
docs/images/general-status-chart.png [new file with mode: 0644]
docs/images/queue-created-started-chart.png [new file with mode: 0644]
docs/incremental-export/README [new file with mode: 0644]
docs/incremental-export/Record_Local.pm [new file with mode: 0644]
docs/incremental-export/schema.mysql [new file with mode: 0644]
docs/initialdata.pod
docs/reminders.pod [new file with mode: 0644]
docs/reporting/feeds.pod [new file with mode: 0644]
docs/rt_perl.pod [new file with mode: 0644]
docs/security.pod
docs/web_deployment.pod
etc/RT_Config.pm
etc/acl.Pg
etc/initialdata
etc/schema.Oracle
etc/schema.Pg
etc/schema.SQLite
etc/schema.mysql
etc/upgrade/3.1.0/schema.Oracle
etc/upgrade/3.1.15/content
etc/upgrade/3.1.17/content
etc/upgrade/3.5.1/content
etc/upgrade/3.7.1/content
etc/upgrade/3.7.10/content
etc/upgrade/3.7.15/content
etc/upgrade/3.7.19/content
etc/upgrade/3.7.82/content
etc/upgrade/3.7.85/content
etc/upgrade/3.7.86/content
etc/upgrade/3.7.87/content
etc/upgrade/3.8.0/content
etc/upgrade/3.8.1/content
etc/upgrade/3.8.2/content
etc/upgrade/3.8.3/content
etc/upgrade/3.8.4/content
etc/upgrade/3.8.6/content
etc/upgrade/3.8.8/content
etc/upgrade/3.8.9/content
etc/upgrade/3.9.1/content
etc/upgrade/3.9.2/content
etc/upgrade/3.9.5/backcompat
etc/upgrade/3.9.7/content
etc/upgrade/3.9.8/content
etc/upgrade/4.0.0rc7/content
etc/upgrade/4.0.1/content
etc/upgrade/4.0.3/content
etc/upgrade/4.0.4/content
etc/upgrade/4.0.6/content
etc/upgrade/4.0.9/content
etc/upgrade/4.1.0/content [new file with mode: 0644]
etc/upgrade/4.1.1/acl.Pg [new file with mode: 0644]
etc/upgrade/4.1.1/content [new file with mode: 0644]
etc/upgrade/4.1.1/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.1/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.1/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.1/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.10/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.10/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.10/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.11/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.11/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.11/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.12/content [new file with mode: 0644]
etc/upgrade/4.1.13/backcompat [new file with mode: 0644]
etc/upgrade/4.1.13/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.13/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.13/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.13/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.14/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.14/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.14/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.15/content [new file with mode: 0644]
etc/upgrade/4.1.16/content [new file with mode: 0644]
etc/upgrade/4.1.17/content [new file with mode: 0644]
etc/upgrade/4.1.18/content [new file with mode: 0644]
etc/upgrade/4.1.19/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.19/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.19/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.20/content [new file with mode: 0644]
etc/upgrade/4.1.21/content [new file with mode: 0644]
etc/upgrade/4.1.22/content [new file with mode: 0644]
etc/upgrade/4.1.22/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.22/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.22/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.22/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.23/indexes [new file with mode: 0644]
etc/upgrade/4.1.4/content [new file with mode: 0644]
etc/upgrade/4.1.4/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.4/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.4/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.4/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.5/content [new file with mode: 0644]
etc/upgrade/4.1.5/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.5/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.5/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.6/content [new file with mode: 0644]
etc/upgrade/4.1.7/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.7/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.7/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.7/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.8/schema.Oracle [new file with mode: 0644]
etc/upgrade/4.1.8/schema.Pg [new file with mode: 0644]
etc/upgrade/4.1.8/schema.SQLite [new file with mode: 0644]
etc/upgrade/4.1.8/schema.mysql [new file with mode: 0644]
etc/upgrade/4.1.9/content [new file with mode: 0644]
etc/upgrade/generate-rtaddressregexp
etc/upgrade/sanity-check-stylesheets.pl
etc/upgrade/shrink_cgm_table.pl
etc/upgrade/shrink_transactions_table.pl
etc/upgrade/split-out-cf-categories
etc/upgrade/switch-templates-to [new file with mode: 0644]
etc/upgrade/time-worked-history.pl [new file with mode: 0644]
etc/upgrade/upgrade-articles
lib/RT.pm
lib/RT/ACE.pm
lib/RT/ACL.pm
lib/RT/Action.pm
lib/RT/Action/AutoOpen.pm
lib/RT/Action/AutoOpenInactive.pm [new file with mode: 0644]
lib/RT/Action/Autoreply.pm
lib/RT/Action/CreateTickets.pm
lib/RT/Action/EscalatePriority.pm
lib/RT/Action/LinearEscalate.pm
lib/RT/Action/Notify.pm
lib/RT/Action/NotifyGroupAsComment.pm
lib/RT/Action/OpenOnStarted.pm [new file with mode: 0644]
lib/RT/Action/RecordComment.pm
lib/RT/Action/RecordCorrespondence.pm
lib/RT/Action/SendEmail.pm
lib/RT/Action/SendForward.pm [new file with mode: 0644]
lib/RT/Action/SetStatus.pm
lib/RT/Approval/Rule/NewPending.pm
lib/RT/Approval/Rule/Passed.pm
lib/RT/Approval/Rule/Rejected.pm
lib/RT/Article.pm
lib/RT/Articles.pm
lib/RT/Attachment.pm
lib/RT/Attachments.pm
lib/RT/Attribute.pm
lib/RT/Attributes.pm
lib/RT/CachedGroupMember.pm
lib/RT/CachedGroupMembers.pm
lib/RT/Class.pm
lib/RT/Classes.pm
lib/RT/Condition.pm
lib/RT/Condition/BeforeDue.pm
lib/RT/Condition/Overdue.pm
lib/RT/Condition/OwnerChange.pm
lib/RT/Condition/PriorityChange.pm
lib/RT/Condition/PriorityExceeds.pm
lib/RT/Condition/QueueChange.pm
lib/RT/Condition/StatusChange.pm
lib/RT/Config.pm
lib/RT/Crypt.pm [new file with mode: 0644]
lib/RT/Crypt/GnuPG.pm
lib/RT/Crypt/GnuPG/CRLFHandle.pm [new file with mode: 0644]
lib/RT/Crypt/Role.pm [new file with mode: 0644]
lib/RT/Crypt/SMIME.pm [new file with mode: 0644]
lib/RT/CurrentUser.pm
lib/RT/CustomField.pm
lib/RT/CustomFieldValue.pm
lib/RT/CustomFieldValues.pm
lib/RT/CustomFieldValues/External.pm
lib/RT/CustomFields.pm
lib/RT/Dashboard.pm
lib/RT/Dashboard/Mailer.pm
lib/RT/Dashboards.pm
lib/RT/Date.pm
lib/RT/DependencyWalker.pm [new file with mode: 0644]
lib/RT/DependencyWalker/Dependencies.pm [new file with mode: 0644]
lib/RT/EmailParser.pm
lib/RT/Generated.pm
lib/RT/Generated.pm.in
lib/RT/Group.pm
lib/RT/GroupMember.pm
lib/RT/GroupMembers.pm
lib/RT/Groups.pm
lib/RT/Handle.pm
lib/RT/I18N.pm
lib/RT/I18N/cs.pm
lib/RT/I18N/fr.pm
lib/RT/I18N/ru.pm
lib/RT/Interface/CLI.pm
lib/RT/Interface/Email.pm
lib/RT/Interface/Email/Auth/Crypt.pm [new file with mode: 0644]
lib/RT/Interface/Web.pm
lib/RT/Interface/Web/Handler.pm
lib/RT/Interface/Web/Menu.pm
lib/RT/Interface/Web/QueryBuilder/Tree.pm
lib/RT/Interface/Web/Request.pm
lib/RT/Interface/Web/Session.pm
lib/RT/Lifecycle.pm
lib/RT/Lifecycle/Ticket.pm [new file with mode: 0644]
lib/RT/Link.pm
lib/RT/Links.pm
lib/RT/Migrate.pm [new file with mode: 0644]
lib/RT/Migrate/Importer.pm [new file with mode: 0644]
lib/RT/Migrate/Importer/File.pm [new file with mode: 0644]
lib/RT/Migrate/Incremental.pm [new file with mode: 0644]
lib/RT/Migrate/Serializer.pm [new file with mode: 0644]
lib/RT/Migrate/Serializer/File.pm [new file with mode: 0644]
lib/RT/Migrate/Serializer/IncrementalRecord.pm [new file with mode: 0644]
lib/RT/Migrate/Serializer/IncrementalRecords.pm [new file with mode: 0644]
lib/RT/ObjectClass.pm
lib/RT/ObjectClasses.pm
lib/RT/ObjectCustomField.pm
lib/RT/ObjectCustomFieldValue.pm
lib/RT/ObjectCustomFieldValues.pm
lib/RT/ObjectCustomFields.pm
lib/RT/ObjectScrip.pm [new file with mode: 0644]
lib/RT/ObjectScrips.pm [new file with mode: 0644]
lib/RT/ObjectTopic.pm
lib/RT/ObjectTopics.pm
lib/RT/PlackRunner.pm [new file with mode: 0644]
lib/RT/Plugin.pm
lib/RT/Pod/HTML.pm
lib/RT/Pod/HTMLBatch.pm
lib/RT/Principal.pm
lib/RT/Principals.pm
lib/RT/Queue.pm
lib/RT/Queues.pm
lib/RT/Record.pm
lib/RT/Record/AddAndSort.pm [new file with mode: 0644]
lib/RT/Record/Role.pm [new file with mode: 0644]
lib/RT/Record/Role/Lifecycle.pm [new file with mode: 0644]
lib/RT/Record/Role/Links.pm [new file with mode: 0644]
lib/RT/Record/Role/Rights.pm [new file with mode: 0644]
lib/RT/Record/Role/Roles.pm [new file with mode: 0644]
lib/RT/Record/Role/Status.pm [new file with mode: 0644]
lib/RT/Reminders.pm
lib/RT/Report/Tickets.pm
lib/RT/Report/Tickets/Entry.pm
lib/RT/Rule.pm
lib/RT/SQL.pm
lib/RT/SavedSearches.pm
lib/RT/Scrip.pm
lib/RT/ScripAction.pm
lib/RT/ScripActions.pm
lib/RT/ScripCondition.pm
lib/RT/ScripConditions.pm
lib/RT/Scrips.pm
lib/RT/Search/ActiveTicketsInQueue.pm
lib/RT/Search/Simple.pm [new file with mode: 0644]
lib/RT/SearchBuilder.pm
lib/RT/SearchBuilder/AddAndSort.pm [new file with mode: 0644]
lib/RT/SearchBuilder/Role.pm [new file with mode: 0644]
lib/RT/SearchBuilder/Role/Roles.pm [new file with mode: 0644]
lib/RT/SharedSetting.pm
lib/RT/SharedSettings.pm
lib/RT/Shredder.pm
lib/RT/Shredder/ACE.pm
lib/RT/Shredder/Attachment.pm
lib/RT/Shredder/CachedGroupMember.pm
lib/RT/Shredder/Constants.pm
lib/RT/Shredder/CustomField.pm
lib/RT/Shredder/CustomFieldValue.pm
lib/RT/Shredder/Dependency.pm
lib/RT/Shredder/Group.pm
lib/RT/Shredder/GroupMember.pm
lib/RT/Shredder/Link.pm
lib/RT/Shredder/ObjectCustomFieldValue.pm
lib/RT/Shredder/Plugin.pm
lib/RT/Shredder/Plugin/Summary.pm
lib/RT/Shredder/Plugin/Users.pm
lib/RT/Shredder/Principal.pm
lib/RT/Shredder/Queue.pm
lib/RT/Shredder/Record.pm
lib/RT/Shredder/Scrip.pm
lib/RT/Shredder/ScripAction.pm
lib/RT/Shredder/ScripCondition.pm
lib/RT/Shredder/Template.pm
lib/RT/Shredder/Ticket.pm
lib/RT/Shredder/Transaction.pm
lib/RT/Shredder/User.pm
lib/RT/Squish/CSS.pm
lib/RT/Squish/JS.pm
lib/RT/StyleGuide.pod
lib/RT/System.pm
lib/RT/Template.pm
lib/RT/Templates.pm
lib/RT/Test.pm
lib/RT/Test/Apache.pm
lib/RT/Test/GnuPG.pm
lib/RT/Test/SMIME.pm [new file with mode: 0644]
lib/RT/Test/Shredder.pm [new file with mode: 0644]
lib/RT/Test/Web.pm
lib/RT/Ticket.pm
lib/RT/Tickets.pm
lib/RT/Topic.pm
lib/RT/Topics.pm
lib/RT/Transaction.pm
lib/RT/Transactions.pm
lib/RT/URI.pm
lib/RT/URI/a.pm
lib/RT/URI/fsck_com_article.pm
lib/RT/URI/fsck_com_rt.pm
lib/RT/User.pm
lib/RT/Users.pm
lib/RT/Util.pm
local/html/Callbacks/UiOCallbacks/Elements/Tabs/Privileged
sbin/rt-attributes-viewer
sbin/rt-clean-sessions
sbin/rt-dump-metadata
sbin/rt-email-dashboards
sbin/rt-email-digest
sbin/rt-email-group-admin
sbin/rt-fulltext-indexer
sbin/rt-preferences-viewer
sbin/rt-server
sbin/rt-server.fcgi
sbin/rt-session-viewer
sbin/rt-setup-database
sbin/rt-setup-fulltext-index
sbin/rt-shredder
sbin/rt-test-dependencies
sbin/rt-validate-aliases
sbin/rt-validator
sbin/standalone_httpd
share/html/Admin/Articles/Classes/Modify.html
share/html/Admin/Articles/Classes/Objects.html
share/html/Admin/Articles/Classes/index.html
share/html/Admin/Articles/index.html
share/html/Admin/CustomFields/GroupRights.html
share/html/Admin/CustomFields/Modify.html
share/html/Admin/CustomFields/Objects.html
share/html/Admin/CustomFields/index.html
share/html/Admin/Elements/ConfigureDashboardsInMenu [new file with mode: 0644]
share/html/Admin/Elements/EditCustomField
share/html/Admin/Elements/EditCustomFields
share/html/Admin/Elements/EditQueueWatchers
share/html/Admin/Elements/EditRights
share/html/Admin/Elements/EditRightsCategoryTabs
share/html/Admin/Elements/EditScrips
share/html/Admin/Elements/LoggingSummary [new file with mode: 0644]
share/html/Admin/Elements/MembershipsPage [new file with mode: 0644]
share/html/Admin/Elements/ModifyTemplate
share/html/Admin/Elements/SelectGroups
share/html/Admin/Elements/SelectNewGroupMembers
share/html/Admin/Elements/SelectStage
share/html/Admin/Elements/SelectStageForAdded [new file with mode: 0644]
share/html/Admin/Elements/ShowKeyInfo
share/html/Admin/Elements/UpgradeHistory [new file with mode: 0644]
share/html/Admin/Elements/UpgradeHistoryRow [new file with mode: 0644]
share/html/Admin/Global/DashboardsInMenu.html [new file with mode: 0644]
share/html/Admin/Global/MyRT.html
share/html/Admin/Global/Template.html
share/html/Admin/Global/index.html
share/html/Admin/Groups/History.html
share/html/Admin/Groups/Memberships.html [new file with mode: 0644]
share/html/Admin/Groups/Modify.html
share/html/Admin/Groups/index.html
share/html/Admin/Queues/History.html
share/html/Admin/Queues/Modify.html
share/html/Admin/Queues/People.html
share/html/Admin/Queues/Scrips.html
share/html/Admin/Queues/index.html
share/html/Admin/Scrips/Create.html [new file with mode: 0644]
share/html/Admin/Scrips/Elements/EditBasics [new file with mode: 0644]
share/html/Admin/Scrips/Elements/EditCustomCode [new file with mode: 0644]
share/html/Admin/Scrips/Elements/SelectTemplate [new file with mode: 0644]
share/html/Admin/Scrips/Modify.html [new file with mode: 0644]
share/html/Admin/Scrips/Objects.html [new file with mode: 0644]
share/html/Admin/Scrips/index.html [new file with mode: 0644]
share/html/Admin/Tools/Configuration.html
share/html/Admin/Tools/Queries.html
share/html/Admin/Tools/Shredder/Elements/PluginHelp
share/html/Admin/Tools/Shredder/autohandler
share/html/Admin/Tools/Theme.html
share/html/Admin/Tools/index.html
share/html/Admin/Users/DashboardsInMenu.html [new file with mode: 0644]
share/html/Admin/Users/History.html
share/html/Admin/Users/Keys.html [new file with mode: 0644]
share/html/Admin/Users/Memberships.html
share/html/Admin/Users/Modify.html
share/html/Admin/Users/MyRT.html
share/html/Admin/Users/index.html
share/html/Admin/index.html
share/html/Approvals/Display.html
share/html/Approvals/Elements/Approve
share/html/Approvals/Elements/PendingMyApproval
share/html/Approvals/Elements/ShowDependency
share/html/Approvals/index.html
share/html/Articles/Article/Edit.html
share/html/Articles/Article/Elements/EditCustomFields
share/html/Articles/Article/Elements/EditLinks
share/html/Articles/Article/Elements/Preformatted
share/html/Articles/Article/Elements/ShowLinks
share/html/Articles/Article/Elements/ShowSavedSearches
share/html/Articles/Article/Elements/ShowSearchCriteria
share/html/Articles/Article/History.html
share/html/Articles/Article/PreCreate.html
share/html/Articles/Article/Search.html
share/html/Articles/Elements/CreateArticle
share/html/Articles/Elements/MaybeNeedsSetup [new file with mode: 0644]
share/html/Articles/Elements/NeedsSetup [new file with mode: 0644]
share/html/Articles/Elements/NewestArticles
share/html/Articles/Elements/QuickSearch
share/html/Articles/Elements/SubjectOverride [new file with mode: 0644]
share/html/Articles/Elements/UpdatedArticles
share/html/Articles/index.html
share/html/Dashboards/Elements/DashboardsForObject
share/html/Dashboards/Elements/ListOfDashboards
share/html/Dashboards/Elements/SelectPrivacy
share/html/Dashboards/Elements/ShowPortlet/component
share/html/Dashboards/Elements/ShowPortlet/dashboard
share/html/Dashboards/Modify.html
share/html/Dashboards/Queries.html
share/html/Dashboards/Render.html
share/html/Dashboards/Subscription.html
share/html/Download/CustomFieldValue/dhandler
share/html/Elements/AddLinks [new file with mode: 0644]
share/html/Elements/BulkCustomFields [new file with mode: 0644]
share/html/Elements/BulkLinks [new file with mode: 0644]
share/html/Elements/Callback
share/html/Elements/CollectionAsTable/Row
share/html/Elements/CollectionList
share/html/Elements/CollectionListPaging
share/html/Elements/ColumnMap
share/html/Elements/Crypt/KeyIssues [new file with mode: 0644]
share/html/Elements/Crypt/SelectKeyForEncryption [new file with mode: 0644]
share/html/Elements/Crypt/SelectKeyForSigning [new file with mode: 0644]
share/html/Elements/Crypt/SignEncryptWidget [new file with mode: 0644]
share/html/Elements/CryptStatus [new file with mode: 0644]
share/html/Elements/EditCustomField
share/html/Elements/EditCustomFieldAutocomplete
share/html/Elements/EditCustomFieldBinary
share/html/Elements/EditCustomFieldCombobox
share/html/Elements/EditCustomFieldCustomGroupings [new file with mode: 0644]
share/html/Elements/EditCustomFieldImage
share/html/Elements/EditCustomFieldSelect
share/html/Elements/EditCustomFields [new file with mode: 0644]
share/html/Elements/EditLinks
share/html/Elements/EmailInput
share/html/Elements/Error
share/html/Elements/FindUser [new file with mode: 0644]
share/html/Elements/FoldStanzaJS [new file with mode: 0644]
share/html/Elements/GotoUser [new file with mode: 0644]
share/html/Elements/Header
share/html/Elements/HeaderJavascript
share/html/Elements/JavascriptConfig [new file with mode: 0644]
share/html/Elements/ListActions
share/html/Elements/ListMenu
share/html/Elements/Login
share/html/Elements/LoginHelp [new file with mode: 0644]
share/html/Elements/Logo
share/html/Elements/MakeClicky
share/html/Elements/Menu
share/html/Elements/MessageBox
share/html/Elements/MyRT
share/html/Elements/MyReminders
share/html/Elements/PageLayout
share/html/Elements/QueryString
share/html/Elements/QueueSummaryByLifecycle
share/html/Elements/QueueSummaryByStatus
share/html/Elements/QuickCreate
share/html/Elements/RT__Article/ColumnMap
share/html/Elements/RT__Class/ColumnMap
share/html/Elements/RT__CustomField/ColumnMap
share/html/Elements/RT__Dashboard/ColumnMap
share/html/Elements/RT__Group/ColumnMap
share/html/Elements/RT__Queue/ColumnMap
share/html/Elements/RT__SavedSearch/ColumnMap
share/html/Elements/RT__Scrip/ColumnMap
share/html/Elements/RT__Template/ColumnMap
share/html/Elements/RT__Ticket/ColumnMap
share/html/Elements/RT__User/ColumnMap
share/html/Elements/SelectBoolean
share/html/Elements/SelectCustomFieldValue
share/html/Elements/SelectDate
share/html/Elements/SelectDateRelation
share/html/Elements/SelectLang
share/html/Elements/SelectMatch
share/html/Elements/SelectObject [new file with mode: 0644]
share/html/Elements/SelectOwnerAutocomplete
share/html/Elements/SelectOwnerDropdown
share/html/Elements/SelectQueue
share/html/Elements/SelectStatus
share/html/Elements/ShowCustomFieldCustomGroupings [new file with mode: 0644]
share/html/Elements/ShowCustomFieldImage
share/html/Elements/ShowCustomFields
share/html/Elements/ShowHistory [new file with mode: 0644]
share/html/Elements/ShowLink
share/html/Elements/ShowLinks
share/html/Elements/ShowLinksOfType [new file with mode: 0644]
share/html/Elements/ShowMemberships
share/html/Elements/ShowMessageHeaders [new file with mode: 0644]
share/html/Elements/ShowMessageStanza [new file with mode: 0644]
share/html/Elements/ShowPrincipal [new file with mode: 0644]
share/html/Elements/ShowRecord [new file with mode: 0644]
share/html/Elements/ShowRelationLabel
share/html/Elements/ShowReminders
share/html/Elements/ShowSearch
share/html/Elements/ShowTransaction [new file with mode: 0644]
share/html/Elements/ShowTransactionAttachments [new file with mode: 0644]
share/html/Elements/ShowUser
share/html/Elements/SimpleSearch
share/html/Elements/Submit
share/html/Elements/Tabs
share/html/Elements/TicketList
share/html/Elements/TitleBox
share/html/Elements/TitleBoxEnd
share/html/Elements/TitleBoxStart
share/html/Elements/ValidateCustomFields
share/html/Errors/WebRemoteUser/Deauthorized [new file with mode: 0644]
share/html/Errors/WebRemoteUser/NoInternalUser [new file with mode: 0644]
share/html/Errors/WebRemoteUser/NoRemoteUser [new file with mode: 0644]
share/html/Errors/WebRemoteUser/UserAutocreateDefaultsOnLogin [new file with mode: 0644]
share/html/Errors/WebRemoteUser/Wrapper [new file with mode: 0644]
share/html/Helpers/Autocomplete/CustomFieldValues
share/html/Helpers/Autocomplete/Groups
share/html/Helpers/Autocomplete/Owners
share/html/Helpers/Autocomplete/Tickets [new file with mode: 0644]
share/html/Helpers/Autocomplete/Users
share/html/Helpers/TicketHistory
share/html/Helpers/UserInfo [new file with mode: 0644]
share/html/Install/DatabaseDetails.html
share/html/Install/Finish.html
share/html/Install/Global.html
share/html/NoAuth/Logout.html
share/html/NoAuth/css/aileron/AfterMenus [new file with mode: 0644]
share/html/NoAuth/css/aileron/InHeader
share/html/NoAuth/css/autohandler
share/html/NoAuth/css/ballard/InHeader
share/html/NoAuth/css/dhandler
share/html/NoAuth/css/rudder/AfterMenus [new file with mode: 0644]
share/html/NoAuth/css/rudder/InHeader [new file with mode: 0644]
share/html/NoAuth/css/web2/AfterMenus [new file with mode: 0644]
share/html/NoAuth/css/web2/InHeader
share/html/NoAuth/iCal/dhandler
share/html/NoAuth/js/autohandler
share/html/NoAuth/js/dhandler
share/html/Prefs/DashboardsInMenu.html [new file with mode: 0644]
share/html/Prefs/MyRT.html
share/html/Prefs/Other.html
share/html/Prefs/Quicksearch.html
share/html/Prefs/Search.html
share/html/REST/1.0/Forms/group/ns
share/html/REST/1.0/Forms/queue/ns
share/html/REST/1.0/Forms/ticket/attachments
share/html/REST/1.0/Forms/ticket/default
share/html/REST/1.0/Forms/ticket/history
share/html/REST/1.0/Forms/transaction/default
share/html/REST/1.0/Forms/user/ns
share/html/REST/1.0/NoAuth/mail-gateway
share/html/REST/1.0/dhandler
share/html/REST/1.0/search/ticket
share/html/Search/Build.html
share/html/Search/Bulk.html
share/html/Search/Chart
share/html/Search/Chart.html
share/html/Search/Elements/BuildFormatString
share/html/Search/Elements/Chart
share/html/Search/Elements/ChartTable [new file with mode: 0644]
share/html/Search/Elements/ConditionRow
share/html/Search/Elements/EditSearches
share/html/Search/Elements/PickBasics
share/html/Search/Elements/PickCFs
share/html/Search/Elements/PickCriteria
share/html/Search/Elements/PickObjectCFs [new file with mode: 0644]
share/html/Search/Elements/PickTicketCFs
share/html/Search/Elements/ResultsRSSView
share/html/Search/Elements/SearchPrivacy
share/html/Search/Elements/SearchesForObject
share/html/Search/Elements/SelectAndOr
share/html/Search/Elements/SelectChartFunction [new file with mode: 0644]
share/html/Search/Elements/SelectGroup
share/html/Search/Elements/SelectGroupBy
share/html/Search/Elements/SelectLinks
share/html/Search/Elements/SelectPersonType
share/html/Search/Results.html
share/html/Search/Results.tsv
share/html/Search/Simple.html
share/html/Search/index.html [new file with mode: 0644]
share/html/SelfService/Closed.html
share/html/SelfService/Create.html
share/html/SelfService/Display.html
share/html/SelfService/Elements/MyRequests
share/html/SelfService/Helpers/Autocomplete/CustomFieldValues [new file with mode: 0644]
share/html/SelfService/Helpers/Autocomplete/Users [new file with mode: 0644]
share/html/SelfService/Prefs.html
share/html/SelfService/Update.html
share/html/Ticket/Attachment/dhandler
share/html/Ticket/Create.html
share/html/Ticket/Crypt.html [new file with mode: 0644]
share/html/Ticket/Display.html
share/html/Ticket/Elements/AddAttachments
share/html/Ticket/Elements/AddWatchers
share/html/Ticket/Elements/Bookmark
share/html/Ticket/Elements/ClickToShowHistory
share/html/Ticket/Elements/DelayShowHistory [new file with mode: 0644]
share/html/Ticket/Elements/EditBasics
share/html/Ticket/Elements/EditCustomFields
share/html/Ticket/Elements/EditDates
share/html/Ticket/Elements/EditMerge [new file with mode: 0644]
share/html/Ticket/Elements/EditPeople
share/html/Ticket/Elements/EditTransactionCustomFields
share/html/Ticket/Elements/EditWatchers
share/html/Ticket/Elements/LoadTextAttachments
share/html/Ticket/Elements/PreviewScrips
share/html/Ticket/Elements/Reminders
share/html/Ticket/Elements/SelectStatus [new file with mode: 0644]
share/html/Ticket/Elements/ShowAttachments
share/html/Ticket/Elements/ShowBasics
share/html/Ticket/Elements/ShowCustomFields
share/html/Ticket/Elements/ShowDates
share/html/Ticket/Elements/ShowDependencyStatus [new file with mode: 0644]
share/html/Ticket/Elements/ShowGroupMembers
share/html/Ticket/Elements/ShowPeople
share/html/Ticket/Elements/ShowRequestor
share/html/Ticket/Elements/ShowRequestorExtraInfo
share/html/Ticket/Elements/ShowRequestorTickets
share/html/Ticket/Elements/ShowSimplifiedRecipients
share/html/Ticket/Elements/ShowSummary
share/html/Ticket/Elements/UpdateCc
share/html/Ticket/Forward.html
share/html/Ticket/Graphs/Elements/EditGraphProperties
share/html/Ticket/History.html
share/html/Ticket/Modify.html
share/html/Ticket/ModifyAll.html
share/html/Ticket/ModifyDates.html
share/html/Ticket/ModifyLinks.html
share/html/Ticket/ModifyPeople.html
share/html/Ticket/Reminders.html
share/html/Ticket/ShowEmailRecord.html
share/html/Ticket/Update.html
share/html/Tools/MyDay.html
share/html/User/Elements/Portlets/ActiveTickets [new file with mode: 0644]
share/html/User/Elements/Portlets/CreateTicket [new file with mode: 0644]
share/html/User/Elements/Portlets/ExtraInfo [new file with mode: 0644]
share/html/User/Elements/Portlets/InactiveTickets [new file with mode: 0644]
share/html/User/Elements/TicketList [new file with mode: 0644]
share/html/User/Elements/UserInfo [new file with mode: 0644]
share/html/User/History.html [new file with mode: 0644]
share/html/User/Search.html [new file with mode: 0644]
share/html/User/Summary.html [new file with mode: 0644]
share/html/Widgets/ComboBox
share/html/Widgets/SavedSearch
share/html/Widgets/SelectionBox
share/html/Widgets/TitleBoxStart
share/html/autohandler
share/html/index.html
share/html/m/_elements/header
share/html/m/_elements/login
share/html/m/ticket/create
share/html/m/ticket/reply
share/html/m/ticket/show
share/html/m/tickets/search
share/po/ar.po
share/po/bg.po
share/po/ca.po
share/po/cs.po
share/po/da.po
share/po/de.po
share/po/el.po
share/po/en.po
share/po/en_GB.po
share/po/es.po
share/po/et.po
share/po/fi.po
share/po/fr.po
share/po/he.po
share/po/hr.po
share/po/hu.po
share/po/id.po
share/po/is.po
share/po/it.po
share/po/ja.po
share/po/lt.po
share/po/lv.po
share/po/mk.po
share/po/nb.po
share/po/nl.po
share/po/nn.po
share/po/oc.po
share/po/pl.po
share/po/pt.po
share/po/pt_BR.po
share/po/pt_PT.po
share/po/rt.pot
share/po/ru.po
share/po/sk.po
share/po/sl.po
share/po/sv.po
share/po/tr.po
share/po/zh_CN.po
share/po/zh_TW.po
share/static/RichText/LICENSE.md [new file with mode: 0644]
share/static/RichText/ckeditor.js [new file with mode: 0644]
share/static/RichText/config.js [new file with mode: 0644]
share/static/RichText/contents.css [new file with mode: 0644]
share/static/RichText/lang/af.js [new file with mode: 0644]
share/static/RichText/lang/ar.js [new file with mode: 0644]
share/static/RichText/lang/bg.js [new file with mode: 0644]
share/static/RichText/lang/bn.js [new file with mode: 0644]
share/static/RichText/lang/bs.js [new file with mode: 0644]
share/static/RichText/lang/ca.js [new file with mode: 0644]
share/static/RichText/lang/cs.js [new file with mode: 0644]
share/static/RichText/lang/cy.js [new file with mode: 0644]
share/static/RichText/lang/da.js [new file with mode: 0644]
share/static/RichText/lang/de.js [new file with mode: 0644]
share/static/RichText/lang/el.js [new file with mode: 0644]
share/static/RichText/lang/en-au.js [new file with mode: 0644]
share/static/RichText/lang/en-ca.js [new file with mode: 0644]
share/static/RichText/lang/en-gb.js [new file with mode: 0644]
share/static/RichText/lang/en.js [new file with mode: 0644]
share/static/RichText/lang/eo.js [new file with mode: 0644]
share/static/RichText/lang/es.js [new file with mode: 0644]
share/static/RichText/lang/et.js [new file with mode: 0644]
share/static/RichText/lang/eu.js [new file with mode: 0644]
share/static/RichText/lang/fa.js [new file with mode: 0644]
share/static/RichText/lang/fi.js [new file with mode: 0644]
share/static/RichText/lang/fo.js [new file with mode: 0644]
share/static/RichText/lang/fr-ca.js [new file with mode: 0644]
share/static/RichText/lang/fr.js [new file with mode: 0644]
share/static/RichText/lang/gl.js [new file with mode: 0644]
share/static/RichText/lang/gu.js [new file with mode: 0644]
share/static/RichText/lang/he.js [new file with mode: 0644]
share/static/RichText/lang/hi.js [new file with mode: 0644]
share/static/RichText/lang/hr.js [new file with mode: 0644]
share/static/RichText/lang/hu.js [new file with mode: 0644]
share/static/RichText/lang/is.js [new file with mode: 0644]
share/static/RichText/lang/it.js [new file with mode: 0644]
share/static/RichText/lang/ja.js [new file with mode: 0644]
share/static/RichText/lang/ka.js [new file with mode: 0644]
share/static/RichText/lang/km.js [new file with mode: 0644]
share/static/RichText/lang/ko.js [new file with mode: 0644]
share/static/RichText/lang/ku.js [new file with mode: 0644]
share/static/RichText/lang/lt.js [new file with mode: 0644]
share/static/RichText/lang/lv.js [new file with mode: 0644]
share/static/RichText/lang/mk.js [new file with mode: 0644]
share/static/RichText/lang/mn.js [new file with mode: 0644]
share/static/RichText/lang/ms.js [new file with mode: 0644]
share/static/RichText/lang/nb.js [new file with mode: 0644]
share/static/RichText/lang/nl.js [new file with mode: 0644]
share/static/RichText/lang/no.js [new file with mode: 0644]
share/static/RichText/lang/pl.js [new file with mode: 0644]
share/static/RichText/lang/pt-br.js [new file with mode: 0644]
share/static/RichText/lang/pt.js [new file with mode: 0644]
share/static/RichText/lang/ro.js [new file with mode: 0644]
share/static/RichText/lang/ru.js [new file with mode: 0644]
share/static/RichText/lang/sk.js [new file with mode: 0644]
share/static/RichText/lang/sl.js [new file with mode: 0644]
share/static/RichText/lang/sr-latn.js [new file with mode: 0644]
share/static/RichText/lang/sr.js [new file with mode: 0644]
share/static/RichText/lang/sv.js [new file with mode: 0644]
share/static/RichText/lang/th.js [new file with mode: 0644]
share/static/RichText/lang/tr.js [new file with mode: 0644]
share/static/RichText/lang/ug.js [new file with mode: 0644]
share/static/RichText/lang/uk.js [new file with mode: 0644]
share/static/RichText/lang/vi.js [new file with mode: 0644]
share/static/RichText/lang/zh-cn.js [new file with mode: 0644]
share/static/RichText/lang/zh.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/a11yhelp.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/_translationstatus.txt [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ar.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/bg.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ca.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/cs.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/cy.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/da.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/de.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/el.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/en.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/eo.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/es.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/et.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/fa.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/fi.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/fr.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/gu.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/he.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/hi.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/hr.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/hu.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/it.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ja.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ku.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/lt.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/lv.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/mk.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/mn.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/nb.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/nl.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/no.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/pl.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/pt-br.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/pt.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ro.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ru.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/sk.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/sl.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/sv.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/tr.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/ug.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/uk.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/vi.js [new file with mode: 0644]
share/static/RichText/plugins/a11yhelp/dialogs/lang/zh-cn.js [new file with mode: 0644]
share/static/RichText/plugins/about/dialogs/about.js [new file with mode: 0644]
share/static/RichText/plugins/about/dialogs/logo_ckeditor.png [new file with mode: 0644]
share/static/RichText/plugins/clipboard/dialogs/paste.js [new file with mode: 0644]
share/static/RichText/plugins/colordialog/dialogs/colordialog.js [new file with mode: 0644]
share/static/RichText/plugins/dialog/dialogDefinition.js [new file with mode: 0644]
share/static/RichText/plugins/div/dialogs/div.js [new file with mode: 0644]
share/static/RichText/plugins/fakeobjects/images/spacer.gif [new file with mode: 0644]
share/static/RichText/plugins/find/dialogs/find.js [new file with mode: 0644]
share/static/RichText/plugins/flash/dialogs/flash.js [new file with mode: 0644]
share/static/RichText/plugins/flash/images/placeholder.png [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/button.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/checkbox.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/form.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/hiddenfield.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/radio.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/select.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/textarea.js [new file with mode: 0644]
share/static/RichText/plugins/forms/dialogs/textfield.js [new file with mode: 0644]
share/static/RichText/plugins/forms/images/hiddenfield.gif [new file with mode: 0644]
share/static/RichText/plugins/icons.png [new file with mode: 0644]
share/static/RichText/plugins/iframe/dialogs/iframe.js [new file with mode: 0644]
share/static/RichText/plugins/iframe/images/placeholder.png [new file with mode: 0644]
share/static/RichText/plugins/image/dialogs/image.js [new file with mode: 0644]
share/static/RichText/plugins/image/images/noimage.png [new file with mode: 0644]
share/static/RichText/plugins/link/dialogs/anchor.js [new file with mode: 0644]
share/static/RichText/plugins/link/dialogs/link.js [new file with mode: 0644]
share/static/RichText/plugins/link/images/anchor.png [new file with mode: 0644]
share/static/RichText/plugins/liststyle/dialogs/liststyle.js [new file with mode: 0644]
share/static/RichText/plugins/magicline/images/icon.png [new file with mode: 0644]
share/static/RichText/plugins/pagebreak/images/pagebreak.gif [new file with mode: 0644]
share/static/RichText/plugins/pastefromword/filter/default.js [new file with mode: 0644]
share/static/RichText/plugins/preview/preview.html [new file with mode: 0644]
share/static/RichText/plugins/scayt/LICENSE.md [new file with mode: 0644]
share/static/RichText/plugins/scayt/README.md [new file with mode: 0644]
share/static/RichText/plugins/scayt/dialogs/options.js [new file with mode: 0644]
share/static/RichText/plugins/scayt/dialogs/toolbar.css [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_address.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_blockquote.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_div.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h1.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h2.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h3.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h4.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h5.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_h6.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_p.png [new file with mode: 0644]
share/static/RichText/plugins/showblocks/images/block_pre.png [new file with mode: 0644]
share/static/RichText/plugins/smiley/dialogs/smiley.js [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/angel_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/angry_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/broken_heart.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/confused_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/cry_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/devil_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/embaressed_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/embarrassed_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/envelope.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/heart.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/kiss.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/lightbulb.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/omg_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/regular_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/sad_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/shades_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/teeth_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/thumbs_down.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/thumbs_up.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/tongue_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/tounge_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/whatchutalkingabout_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/smiley/images/wink_smile.gif [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/_translationstatus.txt [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/ca.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/cs.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/cy.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/de.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/el.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/en.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/eo.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/et.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/fa.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/fi.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/fr.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/he.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/hr.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/it.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/ku.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/lv.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/nb.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/nl.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/no.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/pt-br.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/sk.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/sv.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/tr.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/ug.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/lang/zh-cn.js [new file with mode: 0644]
share/static/RichText/plugins/specialchar/dialogs/specialchar.js [new file with mode: 0644]
share/static/RichText/plugins/table/dialogs/table.js [new file with mode: 0644]
share/static/RichText/plugins/tabletools/dialogs/tableCell.js [new file with mode: 0644]
share/static/RichText/plugins/templates/dialogs/templates.css [new file with mode: 0644]
share/static/RichText/plugins/templates/dialogs/templates.js [new file with mode: 0644]
share/static/RichText/plugins/templates/templates/default.js [new file with mode: 0644]
share/static/RichText/plugins/templates/templates/images/template1.gif [new file with mode: 0644]
share/static/RichText/plugins/templates/templates/images/template2.gif [new file with mode: 0644]
share/static/RichText/plugins/templates/templates/images/template3.gif [new file with mode: 0644]
share/static/RichText/plugins/wsc/LICENSE.md [new file with mode: 0644]
share/static/RichText/plugins/wsc/README.md [new file with mode: 0644]
share/static/RichText/plugins/wsc/dialogs/ciframe.html [new file with mode: 0644]
share/static/RichText/plugins/wsc/dialogs/tmpFrameset.html [new file with mode: 0644]
share/static/RichText/plugins/wsc/dialogs/wsc.css [new file with mode: 0644]
share/static/RichText/plugins/wsc/dialogs/wsc.js [new file with mode: 0644]
share/static/RichText/skins/kama/dialog.css [new file with mode: 0644]
share/static/RichText/skins/kama/dialog_ie.css [new file with mode: 0644]
share/static/RichText/skins/kama/dialog_ie7.css [new file with mode: 0644]
share/static/RichText/skins/kama/dialog_ie8.css [new file with mode: 0644]
share/static/RichText/skins/kama/dialog_iequirks.css [new file with mode: 0644]
share/static/RichText/skins/kama/dialog_opera.css [new file with mode: 0644]
share/static/RichText/skins/kama/editor.css [new file with mode: 0644]
share/static/RichText/skins/kama/editor_ie.css [new file with mode: 0644]
share/static/RichText/skins/kama/editor_ie7.css [new file with mode: 0644]
share/static/RichText/skins/kama/editor_ie8.css [new file with mode: 0644]
share/static/RichText/skins/kama/editor_iequirks.css [new file with mode: 0644]
share/static/RichText/skins/kama/icons.png [new file with mode: 0644]
share/static/RichText/skins/kama/images/dialog_sides.gif [new file with mode: 0644]
share/static/RichText/skins/kama/images/dialog_sides.png [new file with mode: 0644]
share/static/RichText/skins/kama/images/dialog_sides_rtl.png [new file with mode: 0644]
share/static/RichText/skins/kama/images/mini.gif [new file with mode: 0644]
share/static/RichText/skins/kama/images/sprites.png [new file with mode: 0644]
share/static/RichText/skins/kama/images/sprites_ie6.png [new file with mode: 0644]
share/static/RichText/skins/kama/images/toolbar_start.gif [new file with mode: 0644]
share/static/RichText/skins/kama/readme.md [new file with mode: 0644]
share/static/RichText/styles.js [new file with mode: 0644]
share/static/css/aileron/base.css [new file with mode: 0644]
share/static/css/aileron/boxes.css [new file with mode: 0644]
share/static/css/aileron/forms.css [new file with mode: 0644]
share/static/css/aileron/layout.css [new file with mode: 0644]
share/static/css/aileron/login.css [new file with mode: 0644]
share/static/css/aileron/main.css [new file with mode: 0644]
share/static/css/aileron/misc.css [new file with mode: 0644]
share/static/css/aileron/msie.css [new file with mode: 0644]
share/static/css/aileron/msie6.css [new file with mode: 0644]
share/static/css/aileron/nav.css [new file with mode: 0644]
share/static/css/aileron/ticket-lists.css [new file with mode: 0644]
share/static/css/aileron/ticket-search.css [new file with mode: 0644]
share/static/css/aileron/ticket.css [new file with mode: 0644]
share/static/css/ballard/base.css [new file with mode: 0644]
share/static/css/ballard/boxes.css [new file with mode: 0644]
share/static/css/ballard/layout.css [new file with mode: 0644]
share/static/css/ballard/main.css [new file with mode: 0644]
share/static/css/ballard/misc.css [new file with mode: 0644]
share/static/css/ballard/msie.css [new file with mode: 0644]
share/static/css/ballard/msie6.css [new file with mode: 0644]
share/static/css/ballard/nav.css [new file with mode: 0644]
share/static/css/ballard/ticket-lists.css [new file with mode: 0644]
share/static/css/ballard/ticket-search.css [new file with mode: 0644]
share/static/css/base/accordion.css [new file with mode: 0644]
share/static/css/base/admin.css [new file with mode: 0644]
share/static/css/base/articles.css [new file with mode: 0644]
share/static/css/base/charts.css [new file with mode: 0644]
share/static/css/base/collection.css [new file with mode: 0644]
share/static/css/base/farbtastic.css [new file with mode: 0644]
share/static/css/base/forms.css [new file with mode: 0644]
share/static/css/base/history-folding.css [new file with mode: 0644]
share/static/css/base/history.css [new file with mode: 0644]
share/static/css/base/jquery-ui-timepicker-addon.css [new file with mode: 0644]
share/static/css/base/jquery-ui.css [new file with mode: 0644]
share/static/css/base/jquery-ui.custom.modified.css [new file with mode: 0644]
share/static/css/base/jquery.modal.css [new file with mode: 0644]
share/static/css/base/login.css [new file with mode: 0644]
share/static/css/base/main.css [new file with mode: 0644]
share/static/css/base/misc.css [new file with mode: 0644]
share/static/css/base/nav.css [new file with mode: 0644]
share/static/css/base/portlets.css [new file with mode: 0644]
share/static/css/base/print.css [new file with mode: 0644]
share/static/css/base/record.css [new file with mode: 0644]
share/static/css/base/rights-editor.css [new file with mode: 0644]
share/static/css/base/superfish-navbar.css [new file with mode: 0644]
share/static/css/base/superfish-vertical.css [new file with mode: 0644]
share/static/css/base/superfish.css [new file with mode: 0644]
share/static/css/base/tablesorter.css [new file with mode: 0644]
share/static/css/base/theme-editor.css [new file with mode: 0644]
share/static/css/base/ticket-form.css [new file with mode: 0644]
share/static/css/base/ticket.css [new file with mode: 0644]
share/static/css/base/tools.css [new file with mode: 0644]
share/static/css/base/yui-fonts.css [new file with mode: 0644]
share/static/css/images/arrows-ffffff.gif [new file with mode: 0644]
share/static/css/images/arrows-ffffff.png [new file with mode: 0644]
share/static/css/images/arrows-grey.gif [new file with mode: 0644]
share/static/css/images/arrows-grey.png [new file with mode: 0644]
share/static/css/images/background-gradient.png [new file with mode: 0644]
share/static/css/images/jquery-modal-close.png [new file with mode: 0644]
share/static/css/images/shadow.gif [new file with mode: 0644]
share/static/css/images/shadow.png [new file with mode: 0644]
share/static/css/mobile.css [new file with mode: 0644]
share/static/css/rudder/admin.css [new file with mode: 0644]
share/static/css/rudder/base.css [new file with mode: 0644]
share/static/css/rudder/boxes.css [new file with mode: 0644]
share/static/css/rudder/dashboards.css [new file with mode: 0644]
share/static/css/rudder/forms.css [new file with mode: 0644]
share/static/css/rudder/history.css [new file with mode: 0644]
share/static/css/rudder/layout.css [new file with mode: 0644]
share/static/css/rudder/login.css [new file with mode: 0644]
share/static/css/rudder/main.css [new file with mode: 0644]
share/static/css/rudder/misc.css [new file with mode: 0644]
share/static/css/rudder/msie.css [new file with mode: 0644]
share/static/css/rudder/nav.css [new file with mode: 0644]
share/static/css/rudder/ticket-forms.css [new file with mode: 0644]
share/static/css/rudder/ticket-lists.css [new file with mode: 0644]
share/static/css/rudder/ticket-search.css [new file with mode: 0644]
share/static/css/rudder/ticket.css [new file with mode: 0644]
share/static/css/web2/base.css [new file with mode: 0644]
share/static/css/web2/boxes.css [new file with mode: 0644]
share/static/css/web2/layout.css [new file with mode: 0644]
share/static/css/web2/main.css [new file with mode: 0644]
share/static/css/web2/misc.css [new file with mode: 0644]
share/static/css/web2/msie.css [new file with mode: 0644]
share/static/css/web2/msie6.css [new file with mode: 0644]
share/static/css/web2/nav.css [new file with mode: 0644]
share/static/css/web2/ticket-lists.css [new file with mode: 0644]
share/static/css/web2/ticket-search.css [new file with mode: 0644]
share/static/images/bpslogo.png [new file with mode: 0644]
share/static/images/css/cb-light.gif [new file with mode: 0644]
share/static/images/css/cb.gif [new file with mode: 0644]
share/static/images/css/cbr-b2g.gif [new file with mode: 0644]
share/static/images/css/cbr-b2lb.gif [new file with mode: 0644]
share/static/images/css/cbr-gray.gif [new file with mode: 0644]
share/static/images/css/cbr-trans.gif [new file with mode: 0644]
share/static/images/css/cbr.gif [new file with mode: 0644]
share/static/images/css/ct-light.gif [new file with mode: 0644]
share/static/images/css/ct.gif [new file with mode: 0644]
share/static/images/css/ctr-b2g.gif [new file with mode: 0644]
share/static/images/css/ctr-b2lb.gif [new file with mode: 0644]
share/static/images/css/ctr-gray.gif [new file with mode: 0644]
share/static/images/css/ctr-trans.gif [new file with mode: 0644]
share/static/images/css/ctr.gif [new file with mode: 0644]
share/static/images/css/dark-arrow-up.png [new file with mode: 0644]
share/static/images/css/dark-arrow.png [new file with mode: 0644]
share/static/images/css/fieldbg-autocomplete.gif [new file with mode: 0644]
share/static/images/css/light-arrow-up.png [new file with mode: 0644]
share/static/images/css/light-arrow.png [new file with mode: 0644]
share/static/images/css/rolldown-arrow.gif [new file with mode: 0644]
share/static/images/css/rolldown-arrow.png [new file with mode: 0644]
share/static/images/css/rollup-arrow.gif [new file with mode: 0644]
share/static/images/empty_star.gif [new file with mode: 0644]
share/static/images/eyedropper.png [new file with mode: 0644]
share/static/images/farbtastic/marker.png [new file with mode: 0644]
share/static/images/farbtastic/mask.png [new file with mode: 0644]
share/static/images/farbtastic/wheel.png [new file with mode: 0644]
share/static/images/favicon.png [new file with mode: 0644]
share/static/images/jquery_ui/animated-overlay.gif [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-icons_222222_256x240.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-icons_2e83ff_256x240.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-icons_454545_256x240.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-icons_888888_256x240.png [new file with mode: 0644]
share/static/images/jquery_ui/ui-icons_cd0a0a_256x240.png [new file with mode: 0644]
share/static/images/star.gif [new file with mode: 0644]
share/static/images/tablesorter/asc.gif [new file with mode: 0644]
share/static/images/tablesorter/bg.gif [new file with mode: 0644]
share/static/images/tablesorter/desc.gif [new file with mode: 0644]
share/static/images/test.png [new file with mode: 0644]
share/static/js/autocomplete.js [new file with mode: 0644]
share/static/js/cascaded.js [new file with mode: 0644]
share/static/js/combobox.js [new file with mode: 0644]
share/static/js/event-registration.js [new file with mode: 0644]
share/static/js/farbtastic.js [new file with mode: 0644]
share/static/js/forms.js [new file with mode: 0644]
share/static/js/history-folding.js [new file with mode: 0644]
share/static/js/i18n.js [new file with mode: 0644]
share/static/js/jquery-1.9.1.min.js [new file with mode: 0644]
share/static/js/jquery-ui-1.10.0.custom.min.js [new file with mode: 0644]
share/static/js/jquery-ui-patch-datepicker.js [new file with mode: 0644]
share/static/js/jquery-ui-timepicker-addon.js [new file with mode: 0644]
share/static/js/jquery.cookie.js [new file with mode: 0644]
share/static/js/jquery.event.hover-1.0.js [new file with mode: 0644]
share/static/js/jquery.modal-defaults.js [new file with mode: 0644]
share/static/js/jquery.modal.min.js [new file with mode: 0644]
share/static/js/jquery.supposition.js [new file with mode: 0644]
share/static/js/jquery.tablesorter.min.js [new file with mode: 0644]
share/static/js/jquery_noconflict.js [new file with mode: 0644]
share/static/js/late.js [new file with mode: 0644]
share/static/js/superfish.js [new file with mode: 0644]
share/static/js/supersubs.js [new file with mode: 0644]
share/static/js/titlebox-state.js [new file with mode: 0644]
share/static/js/util.js [new file with mode: 0644]

diff --git a/bin/rt b/bin/rt
index a6df962..d5a1161 100755 (executable)
--- a/bin/rt
+++ b/bin/rt
@@ -701,7 +701,9 @@ EDIT:
             # If we submitted a bad form, we'll give the user a chance
             # to correct it and resubmit.
             if ($edit || (!$input && !$cl)) {
-                $text = $r->content;
+                my $content = $r->content . "\n";
+                $content =~ s/^(?!#)/#     /mg;
+                $text = $content . $text;
                 $synerr = 1;
                 goto EDIT;
             }
index 7786b7c..c8e0798 100755 (executable)
@@ -50,30 +50,16 @@ use strict;
 use warnings;
 use Carp;
 
-use lib '/www/data/rt/rt-perl/current-perl10/share/perl5';
-use lib '/www/data/rt/rt-perl/current-perl10/lib/perl5';
-use lib '/www/data/rt/rt-perl/current-perl10/lib64/perl5';
-
-use lib ("/www/var/rt/local/lib", "/www/var/rt/lib");
-
 # fix lib paths, some may be relative
-BEGIN {
+BEGIN { # BEGIN RT CMD BOILERPLATE
     require File::Spec;
+    require Cwd;
     my @libs = ("lib", "local/lib");
     my $bin_path;
 
     for my $lib (@libs) {
         unless ( File::Spec->file_name_is_absolute($lib) ) {
-            unless ($bin_path) {
-                if ( File::Spec->file_name_is_absolute(__FILE__) ) {
-                    $bin_path = ( File::Spec->splitpath(__FILE__) )[1];
-                }
-                else {
-                    require FindBin;
-                    no warnings "once";
-                    $bin_path = $FindBin::Bin;
-                }
-            }
+            $bin_path ||= ( File::Spec->splitpath(Cwd::abs_path(__FILE__)) )[1];
             $lib = File::Spec->catfile( $bin_path, File::Spec->updir, $lib );
         }
         unshift @INC, $lib;
@@ -87,9 +73,6 @@ use Getopt::Long;
 
 use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc);
 
-#Clean out all the nasties from the environment
-CleanEnv();
-
 my ( $search, $condition, $action, $search_arg, $condition_arg, $action_arg,
      $template, $template_id, $transaction, $transaction_type, $help, $log, $verbose );
 GetOptions(
@@ -112,11 +95,14 @@ GetOptions(
 RT::LoadConfig();
 
 # adjust logging to the screen according to options
-RT->Config->Set( LogToScreen => $log ) if $log;
+RT->Config->Set( LogToSTDERR => $log ) if $log;
 
 #Connect to the database and get RT::SystemUser and RT::Nobody loaded
 RT::Init();
 
+# Clean out all the nasties from the environment
+CleanEnv();
+
 require RT::Tickets;
 require RT::Template;
 
@@ -319,37 +305,37 @@ sub help {
       . "\n";
     print loc("It takes several arguments:") . "\n\n";
 
-    print "    "
+    print "        "
       . loc( "[_1] - Specify the search module you want to use", "--search" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - An argument to pass to [_2]", "--search-arg", "--search" )
       . "\n";
 
-    print "    "
+    print "        "
       . loc( "[_1] - Specify the condition module you want to use", "--condition" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - An argument to pass to [_2]", "--condition-arg", "--condition" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - Specify the action module you want to use", "--action" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - An argument to pass to [_2]", "--action-arg", "--action" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - Specify name or id of template(s) you want to use", "--template" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - Specify if you want to use either 'first', 'last' or 'all' transactions", "--transaction" )
       . "\n";
-    print "    "
+    print "        "
       . loc( "[_1] - Specify the comma separated list of transactions' types you want to use", "--transaction-type" )
       . "\n";
-    print "    "
-      . loc( "[_1] - Adjust LogToScreen config option", "--log" ) . "\n";
-    print "    "
+    print "        "
+      . loc( "[_1] - Adjust LogToSTDERR config option", "--log" ) . "\n";
+    print "        "
       . loc( "[_1] - Output status updates to STDOUT", "--verbose" ) . "\n";
     print "\n";
     print "\n";
@@ -464,7 +450,7 @@ Specify the comma separated list of transactions' types you want to use
 
 =item log
 
-Adjust LogToScreen config option
+Adjust LogToSTDERR config option
 
 =item verbose
 
index 105affd..deccd70 100755 (executable)
@@ -144,12 +144,6 @@ sub validate_cli_flags {
         return $self->permfail();
     }
 
-    if (($opts->{'ca-file'} or $opts->{"verify-ssl"})
-            and not LWP::UserAgent->can("ssl_opts")) {
-        print STDERR "Verifying SSL certificates requires LWP::UserAgent 6.0 or higher.\n";
-        return $self->tempfail();
-    }
-
     $opts->{"verify-ssl"} = 1 unless defined $opts->{"verify-ssl"};
 }
 
@@ -159,11 +153,9 @@ sub get_useragent {
     my $ua   = LWP::UserAgent->new();
     $ua->cookie_jar( { file => $opts->{'jar'} } ) if $opts->{'jar'};
 
-    if ( $ua->can("ssl_opts") ) {
-        $ua->ssl_opts( verify_hostname => $opts->{'verify-ssl'} );
-        $ua->ssl_opts( SSL_ca_file => $opts->{'ca-file'} )
-            if $opts->{'ca-file'};
-    }
+    $ua->ssl_opts( verify_hostname => $opts->{'verify-ssl'} );
+    $ua->ssl_opts( SSL_ca_file => $opts->{'ca-file'} )
+        if $opts->{'ca-file'};
 
     return $ua;
 }
@@ -252,13 +244,8 @@ sub check_failure {
     my $r    = shift;
     return if $r->is_success;
 
-    # XXX TODO 4.2: Remove the multi-line error strings in favor of something more concise
-    print STDERR <<"    ERROR";
-An Error Occurred
-=================
-
-@{[ $r->status_line ]}
-    ERROR
+    print STDERR "HTTP request failed: @{[ $r->status_line ]}. "
+                ."Your webserver logs may have more information or there may be a network problem.\n";
     print STDERR "\n$0: undefined server error\n" if $opts->{'debug'};
     return $self->tempfail();
 }
@@ -358,10 +345,6 @@ is found.
 This flag tells the mail gateway where it can find your RT server. You should 
 probably use the same URL that users use to log into RT.  
 
-If your RT server uses SSL, you will need to install additional Perl
-libraries. RT will detect and install these dependencies if you pass the
-C<--enable-ssl-mailgate> flag to configure as documented in RT's README.
-
 If you have a self-signed SSL certificate, you may also need to pass
 C<--ca-file> or C<--no-verify-ssl>, below.
 
@@ -382,9 +365,6 @@ of CA.  This is required if you have a self-signed certificate, or some
 other certificate which is not traceable back to an certificate your
 system ultimitely trusts.
 
-Verifying SSL certificates requires L<LWP::UserAgent> version 6.0 or
-higher; explicitly passing C<--verify-ssl> on prior versions will error.
-
 =item C<--extension> OPTIONAL
 
 Some MTAs will route mail sent to user-foo@host or user+foo@host to user@host
index 4cb3918..ec7fdcc 100644 (file)
@@ -14,17 +14,17 @@ us at <sales@bestpractical.com>.
 REQUIRED PACKAGES
 -----------------
 
-o   Perl 5.8.3 or later (http://www.perl.org).
+o   Perl 5.10.1 or later (http://www.perl.org).
 
-        Perl versions prior to 5.8.3 contain bugs that could result in
-        data corruption. RT won't start on older versions.
+        RT won't start on versions of Perl older than 5.10.1.
 
 o   A supported SQL database
 
-        Currently supported:  MySQL 4.1 or later with InnoDB support.
-                              Postgres 8.1 or later.
+        Currently supported:  MySQL 5.1 or later with InnoDB support.
+                              Postgres 8.4 or later; 9.0 or later suggested
                               Oracle 9iR2 or later.
-                              SQLite 3.0. (Not recommended for production)
+                              SQLite 3.0 or later; for testing only, no
+                                           upgrade path guaranteed
 
 o   Apache version 1.3.x or 2.x (http://httpd.apache.org)
         with mod_perl -- (http://perl.apache.org)
@@ -101,9 +101,9 @@ GENERAL INSTALLATION
     If you are unsure of your CPAN version, it will be printed when you
     run the shell.
 
-    If you are having trouble installing GD or Graphviz, you should
-    install gd-devel and the graphviz libraries using your
-    distribution's package manager.
+    If you are having trouble installing GD, refer to "Installing GD libraries"
+    in docs/charts.pod.  Ticket relationship graphing requires the graphviz
+    library which you should install using your distribution's package manager.
 
  5) Check to make sure everything was installed properly.
 
@@ -226,13 +226,6 @@ GENERAL INSTALLATION
 
            perldoc /opt/rt4/bin/rt-mailgate
 
-    If your webserver uses SSL, rt-mailgate will require several new
-    Perl libraries. RT can detect and install these for you automatically
-    if you include --enable-ssl-mailgate when running configure and then
-    run make fixdeps as described in step 4.  It is safe to rerun configure
-    and make fixdeps after you have installed RT, you should be sure to include
-    all the arguments you used in step 2 plus --enable-ssl-mailgate.
-
 
 GETTING HELP
 ------------
index 3e5b74a..63dd2ee 100644 (file)
@@ -126,6 +126,14 @@ database level.
 =back
 
 
+=head2 Ticket content searches (full text search)
+
+Since 4.0.0, RT's ticket content search is disabled by default because of
+performance issues when used without full text indexing.  For details on how to
+re-enable it with (or without) full text indexing, see
+F<docs/full_text_indexing.pod>.
+
+
 
 =head1 UPGRADING FROM 4.0.5 AND EARLIER
 
@@ -238,4 +246,3 @@ upgrade by running:
 
 Followed by re-running make upgrade-database and answering 3.9.8 when
 prompted for which RT version you're upgrading from.
->>>>>>> 4.0/pg-9.2-compatibility
diff --git a/docs/UPGRADING-4.2 b/docs/UPGRADING-4.2
new file mode 100644 (file)
index 0000000..0e458fa
--- /dev/null
@@ -0,0 +1,305 @@
+=head1 UPGRADING FROM RT 4.0.0 and greater
+
+The 4.2 release is a major upgrade and as such there are more changes
+than in a minor bugfix release (e.g., 4.0.13 to 4.0.14) and some of these
+changes are backward-incompatible. The following lists some of the notable
+changes, especially those that might require you to change a configuration
+option or other setting due to a change in RT. Read this section carefully
+before you upgrade and look for changes to features you currently use.
+
+=over
+
+=item *
+
+The L<RT_Config/$UseSQLForACLChecks> option defaults to on.  This provides
+a number of improvements, most notably no longer showing pages of empty results
+if the user doesn't have permissions to view the tickets in question.
+It may, in some cases, have performance impacts, but these have been
+found to be minimal in existing 4.0 installs.
+
+=item *
+
+The C<$LogToScreen> config setting is now named
+L<< "C<$LogToSTDERR>"|RT_Config/"$LogToSyslog, $LogToSTDERR" >> which
+better describes what the log level controls.  Setting C<$LogToScreen> will
+still work, but an informational notice will be issued on server start telling
+you about the rename.  To avoid this you should set C<$LogToSTDERR> instead.
+
+=item *
+
+The link direction and type maps are consolidated into RT::Link.  If you
+wrote local customizations or extensions utilizing C<%RT::Ticket::LINKDIRMAP>,
+C<%RT::Ticket::LINKTYPEMAP>, C<RT::Ticket-E<gt>LINKDIRMAP>,
+C<RT::Ticket-E<gt>LINKTYPEMAP>, or C<%RT::Record::LINKDIRMAP>, you will need to
+switch to C<%RT::Link::DIRMAP> and C<%RT::Link::TYPEMAP>.
+
+=item *
+
+C<$LinkTransactionsRun1Scrip> is removed.  If you were relying on this behavior
+(by setting it to 1), you should adjust your scrips to ignore one of the link
+transactions.
+
+=item *
+
+The C<$AttachmentUnits> option was removed in preference of always displaying in
+megabytes, kilobytes, or bytes as appropriate.  The option was incompletely
+implemented and controlled display in the attachments list but not history.
+
+=item *
+
+MakeClicky handlers added via a callback are now passed an "object" key in
+the parameter hash instead of "ticket".  The object may be any L<RT::Record>
+subclass.
+
+=item *
+
+C<$MessageBoxWrap> was removed.  Wrapping is now always C<SOFT>.  If you want hard
+line breaks, enter them manually.
+
+=item *
+
+C<ShowUser> handlers (C</Elements/ShowUser*>) have moved out of Mason components
+and into C<RT::User> methods.  Any custom username formats will need to be
+reimplemented as C<RT::User> methods.  Renaming should follow that of the core
+components:
+
+    /Elements/ShowUserConcise => RT::User->_FormatUserConcise
+    /Elements/ShowUserVerbose => RT::User->_FormatUserVerbose
+
+The C<_FormatUser*> methods are passed a hash containing the keys C<User> and
+C<Address>, which have the same properties as before.
+
+=item *
+
+Rich text (HTML) messages are now preferred for display.  If you prefer plain
+text messages, set L<RT_Config/$PreferRichText> to 0.
+
+=item *
+
+User email addresses are now validated by default and multiple,
+comma-separated addresses for a single user are no longer allowed.  Existing
+users with invalid addresses will continue to work until the next time they
+are updated by an administrator on the modify user page.  If you prefer no
+address validation, set L<RT_Config/$ValidateUserEmailAddresses> to 0.
+
+=item *
+
+The C<smtp> option for L<RT_Config/$MailCommand>, along with the associated
+C<$SMTPServer>, C<$SMTPFrom>, and C<$SMTPDebug> options, has been removed
+because it did not guarantee delivery.  Instead, use a local MTA for
+outgoing mail, via the 'sendmailpipe' setting to C<$MailCommand>.
+
+=item *
+
+The L<RT_Config/@JSFiles> config now only keeps additional JavaScript filenames; if
+you had copied C<@JSFiles> to add extra entries in your C<RT_SiteConfig.pm>,
+remove the core JS from the list, or RT will serve those files
+multiple times.
+
+=item *
+
+The C<$DeferTransactionLoading> option was combined into the new option
+L<RT_Config/$ShowHistory>. If you had enabled C<$DeferTransactionLoading>,
+you may want to set C<$ShowHistory> to C<click>.  However, C<$ShowHistory>
+provides a new mode, C<delay>, which is the default and may be a more
+appealing alternative to C<click>.
+
+=item *
+
+A C<Status> transaction is now recorded when a ticket status changes as a
+result of a queue change.  Scrips with conditions relying on Status changes
+may start to trigger on these transitions; previously these Status changes
+never triggered scrips.
+
+=item *
+
+The C<Googleish> search has been renamed to C<Simple>. If you were
+using this in an L<< C<rt-crontool> >> cronjob or had used a
+C<Googleish_Local.pm> to add features, you will need to convert to
+using L<RT::Search::Simple> instead.
+
+=item *
+
+On merge, RT retains transactions from both tickets. Previously, RT
+also recorded explicit time change transactions during a
+merge to adjust the total time spent. This caused the total time
+spent, as summed from transactions, to be different from the ticket's
+overall time spent. This has been fixed: time is adjusted during the
+merge commit itself, removing the need for the confusing
+extra transactions, and keeping the summed time spent consistent.
+
+In order to fix the history records of old ticket you can run the following
+command:
+
+    perl -I /opt/rt4/local/lib/ -I /opt/rt4/lib/ etc/upgrade/time-worked-history.pl
+
+This command deletes records from the Transactions table. This script can only fix
+TimeWorked mismatches, but not TimeLeft or TimeEstimated.
+
+=item *
+
+A new action, "Open Inactive Tickets", has been added, and on new
+installs the default scrip "On Correspond Open Tickets" has been
+replaced by "On Correspond Open Inactive Tickets".  The key difference
+between "Open Tickets" and "Open Inactive Tickets" is that the latter
+will not adjust the status of a ticket if it is already active.  This
+is particularly useful when creating complex workflows using
+Lifecycles.
+
+=item *
+
+CSS is no longer processed through Mason; it's served by a proper static file
+handler.  If you used the C<Begin> or C<End> callbacks of C<main.css> in the
+aileron, web2, or ballard themes, you should transition to the
+L<RT_Config/@CSSFiles> config option. If you need to target specific themes,
+you can use the class set on the E<lt>C<body>E<gt> element (for example:
+body.aileron).  See F<docs/customizing/styling_rt.pod> for more information
+on custom styles.
+
+=item *
+
+There are now HTML versions of the standard plain text templates.  Running
+make upgrade as described in the F<README> will insert the new templates into
+existing installs.  While new installs use the HTML templates by default,
+upgrades from older versions don't automatically switch to the HTML versions.
+To switch existing scrips, run:
+
+    /opt/rt4/etc/upgrade/switch-templates-to html
+
+To switch from HTML back to text, run:
+
+    /opt/rt4/etc/upgrade/switch-templates-to text
+
+=item *
+
+The Articles menu is now a top-level menu item and display is controlled by
+the right C<ShowArticlesMenu>.  This right is only grantable globally to groups
+or users.  During the upgrade, the new right will be automatically granted to
+Privileged users so that the menu doesn't disappear for anyone previously
+using it.  You may wish to revoke the right from Privileged and grant it
+more selectively.
+
+=item *
+
+The Owner drop-down now only includes privileged users (no matter if
+unprivileged users have been granted the OwnTicket right) because
+configurations which have unprivileged Owners are exceedingly rare,
+and granting Everyone the OwnTicket right is a common cause of
+performance problems.  Unprivileged Owners (if they exist) may still
+be set using the Autocompleter.
+
+=item *
+
+The functionality that changed the ticket status to Open when the Started
+date is set has been moved to a Scrip called 'On transaction and SetStarted
+Open Ticket'. If you do not depend on this functionality, the Scrip can
+be deleted.
+
+=item *
+
+New installs will notify Ccs and one-time Ccs/Bccs on create and Owners on
+create and correspond.  Upgraded installations will not.  If you'd like to
+adjust your scrips to match the new install behavior, create and edit the
+following scrips from the admin scrip page:
+
+To notify Ccs on create, on the 'Create a global scrip' page:
+
+  Description: On Create Notify Ccs
+  Condition:   On Create
+  Action:      Notify Ccs
+  Template:    Correspondence in HTML
+
+To notify one-time Ccs/Bccs on create, on the 'Create a global scrip' page:
+
+  Description: On Create Notify Other Recipients
+  Condition:   On Create
+  Action:      Notify Other Recipients
+  Template:    Correspondence in HTML
+
+To notify Owners on create, click 'On Create Notify AdminCcs'. Change the
+fields listed below to their corresponding values:
+
+  Description: On Create Notify Owner and AdminCcs
+  Action:      Notify Owner and AdminCcs
+
+To notify Owners on correspond, click 'On Correspond Notify AdminCcs'. Change
+the fields listed below to their corresponding values:
+
+  Description: On Correspond Notify Owner and AdminCcs
+  Action:      Notify Owner and AdminCcs
+
+=item *
+
+Notifications to AdminCcs on approvals are now handled via the New Pending
+Approval template in the hidden ___Approvals queue.  If you customized the
+Transaction template, you should port your changes to New Pending Approval.
+
+=item *
+
+On Oracle, sessions are now stored in the database by default instead of
+on-disk.  If you wish to preserve the original behavior, ensure that
+L<RT_Config/$WebSessionClass> is set in your C<RT_SiteConfig.pm>:
+
+    Set($WebSessionClass, "Apache::Session::File");
+
+=item *
+
+Configuration options dealing with "external authentication" have been
+renamed to reduce confusion with the common extension
+L<RT::Authen::ExternalAuth>.  The old names will work, but produce
+deprecation warnings.  The old names, and their new counterparts, are:
+
+    WebExternalAuth           => WebRemoteUserAuth
+    WebExternalAuthContinuous => WebRemoteUserContinuous
+    WebFallbackToInternalAuth => WebFallbackToRTLogin
+    WebExternalGecos          => WebRemoteUserGecos
+    WebExternalAuto           => WebRemoteUserAutocreate
+    AutoCreate                => UserAutocreateDefaultsOnLogin
+
+=item *
+
+Due to many long-standing bugs and limitations, the "Offline Tool" was
+removed.
+
+=item *
+
+To increase security against offline brute-force attacks, RT's default
+password encryption has been switched to the popular bcrypt() key
+derivation function.  Passwords cannot be automatically bulk upgraded to
+the new format, but will be replaced with bcrypt versions upon the first
+successful login.
+
+=item *
+
+We updated default "Forward" and "Forward Ticket" templates to support
+customizing messages on forward. They will be updated automatically if you
+didn't change them before.
+
+But in case you have changed them already, you need to update them manually.
+You can use $ForwardTransaction to refer to the customized message in the
+templates, e.g. "Forward" template could be updated to:
+
+{ $ForwardTransaction->Content =~ /\S/ ? $ForwardTransaction->Content : "This is a forward of transaction #".$Transaction->id." of ticket #". $Ticket->id }
+
+=item *
+
+RT has generated RT-Ticket: RT-Originator: and Managed-By: headers in
+compliance with RFC2822/6648 but we've discovered that some smarthost
+providers are requiring strict adherence to RFC822 which mandates X-
+prefixes on these headers. We've made this change in 4.2 for users
+relying on those providers.
+
+Any external scripts which were parsing on these RT mail headers will
+need to be updated.
+
+=item *
+
+GnuPG and S/MIME are no longer enabled in F<RT_Config.pm> merely by the
+presence of the C<gpg> or C<openssl> binaries.  Systems which depended
+on C<configure> enabling these in F<RT_Config.pm> implicitly will need
+to pass C<--enable-gpg> to C<configure>, or alter their
+C<RT_SiteConfig.pm> to enable the functionality explicitly.
+
+=back
+
+=cut
diff --git a/docs/authentication.pod b/docs/authentication.pod
new file mode 100644 (file)
index 0000000..a24b422
--- /dev/null
@@ -0,0 +1,139 @@
+=encoding utf-8
+
+=head1 RT Authentication
+
+RT allows for several different ways to authenticate users including an
+internal user management system and a number of ways to integrate with existing
+authentication systems.
+
+=head1 Internal Authentication
+
+RT's native internal authentication system provides administration tools to
+manage usernames and passwords.  If you plan to run your RT as a stand-alone
+system and don't need to use accounts associated with any other system, this
+may be all you need.  The administration pages under Admin → Users
+provide new user creation as well as password setting and control of RT's
+privileged flag for existing users.
+
+=head1 External Authentication
+
+There are two primary types of external authentication: in one you type your
+username and password into RT's login form, and in the other your web server
+(such as Apache) handles authentication, often seamlessly, and tells RT the
+user logged in.
+
+The second is supported by RT out of the box under the configuration option
+C<$WebRemoteUserAuth> and other related options.  The first is supported by an RT
+extension named L</RT::Authen::ExternalAuth>.  These two types may be used
+independently or together, and both can fallback to RT's internal
+authentication.
+
+No matter what type of external authentication you use, RT still maintains user
+records in its database that correspond to your external source.  This is
+necessary so RT can link tickets, groups, rights, dashboards, etc. to users.
+
+All that is necessary for integration with external authentication systems is a
+shared username or email address.  However, in RT you may want to leverage
+additional information from your external source.  Synchronization of users,
+user data, and groups is provided by an extension named
+L</RT::Extension::LDAPImport>.  It uses an external LDAP source, such an
+OpenLDAP or Active Directory server, as the authoritative repository and keeps
+RT up to date accordingly.  This can be used in tandem with any of the external
+authentication options as it does not provide any authentication itself.
+
+=head2 Via your web server, aka C<$WebRemoteUserAuth>, aka C<REMOTE_USER>
+
+This type of external authentication is built-in to RT and bypasses the RT
+login form.  Instead, RT defers authentication to the web server which is
+expected to set a C<REMOTE_USER> environment variable.  Upon a request, RT
+checks the value of C<REMOTE_USER> against its internal database and logs in
+the matched user.
+
+It is often used to provide single sign-on (SSO) support via Apache modules
+such as C<mod_auth_kerb> (to talk to Active Directory).  C<$WebRemoteUserAuth> is
+widely used by organizations with existing authentication standards for web
+services that leverge web server modules for central authentication services.
+The flexibility of RT's C<$WebRemoteUserAuth> support means that it can be setup
+with almost any authentication system.
+
+In order to keep user data in sync, this type of external auth is almost always
+used in combination with one or both of L</RT::Authen::ExternalAuth> and
+L</RT::Extension::LDAPImport>.
+
+=head3 Configuration options
+
+All of the following options control the behaviour of RT's built-in external
+authentication which relies on the web server.  They are documented in detail
+under the "Authorization and user configuration" section of C<etc/RT_Config.pm>
+and you can read the documentation by running C<perldoc /opt/rt4/etc/RT_Config.pm>.
+
+The list below is meant to make you aware of what's available.  You should read
+the full documentation as described above.
+
+=head4 C<$WebRemoteUserAuth>
+
+Enables or disables RT's expectation that the web server will provide
+authentication using the C<REMOTE_USER> environment variable.
+
+=head4 C<$WebRemoteUserContinuous>
+
+Check C<REMOTE_USER> on every request rather than the initial request.
+
+When this is off, users will remain logged into RT even after C<REMOTE_USER> is
+no longer provided.  This provides a separation of sessions, but it may not be
+desirable in all cases.  For example, if a user logs out of the external
+authentication system their RT session will remain active unless
+C<$WebRemoteUserContinuous> is on.
+
+=head4 C<$WebFallbackToRTLogin>
+
+If true, allows internal logins as well as C<REMOTE_USER> by providing a login
+form if external authentication fails. This is useful to provide local admin
+access (usually as root) or self service access for people without external
+user accounts.
+
+=head4 C<$WebRemoteUserAutocreate>
+
+Enables or disables auto-creation of RT users when a new C<REMOTE_USER> is
+encountered.
+
+=head4 C<$UserAutocreateDefaultsOnLogin>
+
+Specifies the default properties of auto-created users.
+
+=head4 C<$WebRemoteUserGecos>
+
+Tells RT to compare C<REMOTE_USER> to the C<Gecos> field of RT users instead of
+the C<Name> field.
+
+=head2 Via RT's login form, aka RT::Authen::ExternalAuth
+
+L<RT::Authen::ExternalAuth> is an RT extension which provides authentication
+B<using> RT's login form.  It can be configured to talk to an LDAP source (such
+as Active Directory), an external database, or an SSO cookie.
+
+The key difference between C<$WebRemoteUserAuth> and L<RT::Authen::ExternalAuth>
+is the use of the RT login form and what part of the system talks to your
+authentication source (your web server vs. RT itself).
+
+=head3 Info mode and Authentication mode
+
+There are two modes of operation in L<RT::Authen::ExternalAuth>: info and auth.
+Usually you want to configure both so that successfully authenticated users
+also get their information pulled and updated from your external source.
+
+Auth-only configurations are rare, and generally not as useful.
+
+Info-only configurations are commonly setup in tandem with C<$WebRemoteUserAuth>.
+This lets your web server handle authentication (usually for SSO) and
+C<RT::Authen::ExternalAuth> ensures user data is updated every time someone
+logs in.
+
+=head2 RT::Extension::LDAPImport
+
+L<RT::Extension::LDAPImport> provides no authentication, but is worth
+mentioning because it provides user data and group member synchronization from
+any LDAP source into RT.  It provides a similar but more complete sync solution
+than L<RT::Authen::ExternalAuth> (which only updates upon login and doesn't
+handle groups).  It may be used with either of RT's external authentication
+sources, or on it's own.
diff --git a/docs/charts.pod b/docs/charts.pod
new file mode 100644 (file)
index 0000000..52db66f
--- /dev/null
@@ -0,0 +1,246 @@
+=head1 RT Charts
+
+RT has a built-in charting feature to allow you to create charts
+and graphs to visualize ticket data. Charts can be useful for
+anything from one-off reports (how many tickets did we process
+last year?) to regular status reports that you then include in
+shared dashboards that everyone can see.
+
+RT has had charts for a long time, but many significant improvements
+came in RT 4.2. If you're running a version of RT earlier than
+4.2 some options and features described here may not be available.
+
+=head1 Enabling Charts
+
+=head2 Installing GD
+
+While charts is a core part of RT, you do need to enable it using
+the C<--enable-gd> option and install the required dependencies when
+you install RT. If you didn't originally install with this flag, you can
+enable it by re-running the L<< C<configure> >> script from the RT
+distribution (including all previous options passed to it originally)
+or doing the following in your current install:
+
+=over
+
+=item 1
+
+In your C<RT_SiteConfig.pm> set C<$DisableGD> to 0:
+
+    Set($DisableGD, 0);
+
+=item 2
+
+Run the RT dependency checker:
+
+    $ /opt/rt4/sbin/rt-test-dependencies --with-gd --verbose
+
+=item 3
+
+Install GD libraries
+
+GD is an open source graphics library and it is available as a package
+for most Linux systems. The package might be called C<gd>, C<gd2>, C<libgd2>,
+or something similar. On some systems you will also need additional package
+required to compile code using the library. The package might be called
+C<gd-devel>, C<gd2-dev>, or something similar.
+
+=item 4
+
+Install Perl GD modules:
+
+    $ /opt/rt4/sbin/rt-test-dependencies --with-gd --install --verbose
+
+
+=back
+
+=head2 Chart Configuration Options
+
+By default, RT is configured to use the "Droid Sans" font for Unicode support
+across English, many western european languages, Chinese (Traditional and
+Simplified), and Japanese.  If you prefer to use a different font, you can
+change the L<< "C<%ChartFont>"|RT_Config/ChartFont >> option.
+
+There is also an option to use database timezone conversion for PostgreSQL
+and MySQL to enable timezone conversion for time-based reports. See
+F<docs/customizing/timezones_in_charts.pod> for details.
+
+Search for "Chart" entries in L<< C<RT_Config> >> for more information on these
+options.
+
+=head1 Basic Charting
+
+Charts are based on the set of tickets returned by a search, so every chart starts
+with a search of your RT tickets. When constructing your search, think about
+the report you need to generate and try to narrow the results to the set
+of tickets that will have the information you want.
+
+=head2 Basic Ticket Search
+
+As a basic example, assume you want to look at activity in July 2012 for
+the General queue. First use the Query Builder to build a query with
+something like:
+
+    Queue = 'General'
+    AND Created >= '2012-07-01'
+    AND Created <= '2012-07-31'
+
+This search will give you tickets for July because the criteria uses before
+and after for the dates.
+
+This search shows one of the initial things you'll want to consider, which is
+the element of ticket metadata you want to use as the basis for time. In
+the example we're using Created, but depending on what you are reporting
+on you might want Started, Resolved, or any of the other ticket time values.
+
+When selecting the criteria for the time search, make sure it
+is appropriate to the report you want to see and be consistent so you
+are looking at the right set of tickets in the search and the resulting
+charts and reports.
+
+For this example, we'll say the activity we want to look at is new
+tickets coming into the queue, and Created works well for that.
+
+=head2 Ticket Charts
+
+If we run the search and look at the results, we get the standard
+RT search results page. From this page we can click on Chart in the submenu
+on the upper right of the page. This brings us to the Charts page with a
+default bar chart showing tickets by status in the General queue.
+
+=for html <img alt="General Queue Status Chart" src="images/general-status-chart.png">
+
+=for :text [General Queue Status Chart F<docs/images/general-status-chart.png>]
+
+=for :man [General Queue Status Chart F<docs/images/general-status-chart.png>]
+
+This chart gives us a nice view of tickets by status and the good news is
+most of the tickets in this time period have been resolved. Under the graph
+is a "Group by" section and we can see "Status" is selected as the criteria
+in the first dropdown in the first section. The second dropdown is also Status
+since status only has one representation.
+
+Now let's assume we want to see who was working on those tickets. You can
+select Owner from the first 'Group tickets by' dropdown and you'll see
+the second dropdown now has options to display labels based on RT user
+entries. Select an option and click 'Update Chart' and now you'll see
+the tickets displayed by Owner.
+
+=for html <img alt="General Owner Chart" src="images/general-owner-chart.png">
+
+=for :text [General Owner Chart F<docs/images/general-owner-chart.png>]
+
+=for :man [General Owner Chart F<docs/images/general-owner-chart.png>]
+
+In this case, we can see that although people are resolving tickets, they
+aren't Taking the tickets and Owner is not getting set. We may want to
+remind people to take tickets or even create a scrip to set Owner
+automatically on reply or resolve.
+
+Before we do that, we can use more chart features to find out more about
+what's going on. The "Group by" portlet allows us to set multiple criteria,
+so in the second set of dropdowns we'll select LastUpdatedBy and Name
+and click 'Update Chart'.
+
+=for html <img alt="General Owner LastUpdatedBy Chart" src="images/general-owner-lastupdated-chart.png">
+
+=for :text [General Owner LastUpdatedBy Chart F<docs/images/general-owner-lastupdated-chart.png>]
+
+=for :man [General Owner LastUpdatedBy Chart F<docs/images/general-owner-lastupdated-chart.png>]
+
+Now we can see that our culprit seems to primarily be the root user, who
+is getting a bunch of work done but isn't taking tickets. Maybe we just
+need to remind root to take tickets.
+
+=head2 Using Multiple Group Bys
+
+As you can see in the previous example, RT's charts allow you to define
+multiple criteria for grouping data from your search results. In many cases,
+grouping multiple levels of criteria can reveal interesting and useful graphs.
+To give you the greatest flexibility possible, the RT interface allows you
+to select from nearly all ticket values, but not all combinations of group
+by criteria will make sense or create a helpful chart. If you select some
+options and produce a chart that looks jumbled, consider again what
+you're trying to visualize from the data.
+
+
+=head1 Calculated Values
+
+The Calculate section of the RT charts interface allows you to generate
+charts with calculated time values. You can select time values used in time
+tracking (e.g., TimeWorked) and calculated values from the various timestamps
+on tickets like Created, Resolved, etc. Once you have selected the values or
+ranges you want to view, you can choose to see an Average, Total, Maximum,
+Minimum or a summary presenting them all.
+
+=head2 Viewing Ticket Response Times
+
+As described above, the Calculate section allows you to pull out durations
+like how long it took for tickets to be opened, which is the difference
+between Created and Started. To create a chart with this information,
+we first create a new search to return all resolved tickets for a select
+group of queues we're interested in. You could also add some date criteria
+to narrow the search to a range of time as in the previous example.
+
+After getting our result set and clicking on Charts, we select
+Queue from the "Group by" section so we see data grouped by the queues we
+selected. In the Calculate section we select Created-Started from the
+first dropdown and the Summary option from the second dropdown and click
+"Update Chart".
+
+This generates a detailed chart with a bunch of time data for all of the
+queues we selected in our search. It's a little busy, so we might look at
+some of the other display options available in the second dropdown.
+What we're really interested in is the average time from Created to Started,
+since this will give us a general idea how long it's taking people to
+initially respond to requests.
+
+The second dropdown in the Calculate section has an option for
+"Average Created-Started". If we select that and update the
+chart, we see a nice graph of average time for tickets to be opened across
+all of the queues we selected.
+
+=for html <img alt="Queue Created Started Chart" src="images/queue-created-started-chart.png">
+
+=for :text [Queue Created Started Chart F<docs/images/queue-created-started-chart.png>]
+
+=for :man [Queue Created Started Chart F<docs/images/queue-created-started-chart.png>]
+
+Now perhaps we also want to see how long tickets stay active. In the Calculate
+section you can add Started-Resolved to the first "and then" and select
+"Average Started-Resolved" from the second dropdown. Click "Update Chart"
+and you've now got a graphical view of how long, on average, tickets are
+waiting to be opened and how long people are working on them.
+
+If you use RT for time tracking, you can create similar useful charts
+using TimeEstimated, TimeWorked, and TimeLeft.
+
+=head1 Chart Style and Size
+
+Charts default to a bar style, but you can display data as a pie chart
+by selecting pie in the "Picture" portlet. You can also adjust the width
+height of the generated chart by entering a size in pixels. These width
+and height values are saved if you save the chart and are used if
+you include the chart on a Dashboard as well.
+
+=head1 Saving Charts
+
+Much like searches, you can save charts once you get them configured the
+way you want. The Privacy setting determines who else on the RT system
+will be able to see your saved charts. Note that this setting applies only
+to the chart itself and not necessarily the data included which may still
+be blocked from other users.
+
+To save a chart, select a Privacy setting, give it a Description and click
+Save. Once saved, you can retrieve the chart later by coming to the chart
+page and selecting it from the "Load saved search" dropdown and clicking
+Load.
+
+When you save a chart, it also becomes available to the Dashboard interface.
+This allows you to go to Home > New Dashboard and create a Dashboard that
+shows the chart you have created. This can be very useful for charts you
+want to monitor frequently or create for others.
+
+If you need to change a chart, load it, make your changes, then click
+Update. Delete deletes the saved chart and will also remove it from all
+Dashboards that are using it.
index 4f768f7..3d16252 100644 (file)
@@ -24,8 +24,8 @@ and process the approval or rejection.
 Since this example will use a change management queue as the
 queue where tickets need approval, first we'll set up the queue.
 
-Login into UI as the 'root' user. Go to Tools -> Configuration ->
-Queues and create a new 'Change requests' queue.
+Login into UI as the 'root' user. Go to Admin -> Queues and create a new
+'Change requests' queue.
 
 When you set up this queue, do not select the "approvals" Lifecycle.
 That selection is for the ___Approvals queue itself, not for queues that
@@ -94,7 +94,7 @@ queue.
 
 ___Approvals is a special queue where all approvals are created. The queue
 is disabled and is not shown in until you search for it.
-Go to Tools -> Configuration -> Queues, leave "Name is" in the search
+Go to Admin -> Queues, leave "Name is" in the search
 area and enter ___Approvals into the search
 field. Check 'Include disabled queues in listing.' and click Go!
 You should now see the ___Approvals queue configuration page.
index 73b5c33..363a385 100644 (file)
@@ -8,11 +8,16 @@ RT.  They are organized into classes and topics.
 
 =head2 UI
 
-The user interface to Articles is available from the Tools -> Articles
-menu.  Admin functionality can be found under Tools -> Configuration ->
-Articles.  Once configured, articles will become available for searching
-on the Reply/Comment page on tickets.  There are L</"Configuration Options">
-to make Articles available on ticket creation.
+The user interface to Articles is available from the Articles menu.  Admin
+functionality can be found under Admin -> Articles.  Once configured, articles
+will become available for searching on the Reply/Comment page on tickets.
+There are L</"Configuration Options"> to make Articles available on ticket
+creation.
+
+For the Articles menu to be visible to your Privileged users, you must grant
+Privileged the ShowArticlesMenu right globally (Admin -> Global -> Group
+Rights).  You may grant the right as selectively as you wish if, for example,
+you only want a certain group of your users to use articles.
 
 =head2 Basics
 
@@ -27,7 +32,7 @@ Classes can be made available globally or on a per-Queue basis.
 =head3 Classes
 
 Classes are equivalent to RT's queues.  They can be created by going
-to Tools -> Configuration -> Articles -> Classes -> New Class.  Articles
+to Admin -> Articles -> Classes -> New Class.  Articles
 are assigned to one Class.  When you create Custom Fields for use with
 Articles, they will be applied Globally or to a Class, like Custom
 Fields are applied to a Queue in RT.
@@ -40,7 +45,7 @@ when inserting the Article in a reply. You can control this behavior on
 the Class configuration page.
 
 Classes need to be Applied, just like a Custom Field, by using the
-Applies To link on the Modify Class page (Tools -> Configuration ->
+Applies To link on the Modify Class page (Admin ->
 Articles -> Classes, select the class to modify).  You can apply
 them globally or on a queue-by-queue basis.
 
@@ -48,7 +53,7 @@ them globally or on a queue-by-queue basis.
 
 You can also use Topics to organize your Articles.  While editing a
 Class, there is a Topics tab for Class-specific Topics.  You can create
-global Topics from the Global tab under Tools -> Configuration.
+global Topics from the Global tab under Admin.
 
 When editing Topics, type the name (and optionally description) of the
 Topic, and then click the button at the appropriate location in the
index c5802a8..7e37d00 100644 (file)
@@ -12,18 +12,22 @@ RT versions have a default, and the RT admin can set the system-wide
 theme with the C<$WebDefaultStylesheet> configuration value in the
 F<RT_SiteConfig.pm> file.
 
-RT 4.0 comes with the following themes:
+RT comes with the following themes:
 
 =over
 
-=item web2
+=item rudder
 
-An approximation of the 3.8 style
+The default layout for RT 4.2
 
 =item aileron
 
 The default layout for RT 4.0
 
+=item web2
+
+An approximation of the 3.8 style
+
 =item ballard
 
 Theme which doesn't rely on JavaScript for menuing
@@ -32,14 +36,14 @@ Theme which doesn't rely on JavaScript for menuing
 
 If you have granted the ModifySelf right to users on your system,
 they can pick a different theme for themselves by going to
-Logged in as -> Settings -> Options and selecting a different theme.
+Logged in as -> Settings -> Preferences and selecting a different theme.
 
 
 =head1 RT Theme Editor
 
 RT has some built-in controls to manage the look of the theme you select.
 To use the Theme Editor, log in as a SuperUser (like root), and navigate
-to Tools -> Configuration -> Tools -> Theme.
+to Admin -> Tools -> Theme.
 
 =for html <img alt="RT theme editor, defaults" src="../images/theme_editor_defaults.png">
 
@@ -89,38 +93,18 @@ default CSS styles, via the C<@CSSFiles> configuration option.  To add
 an extra CSS file, for example F<my-site.css>, create the local overlay
 directory:
 
-    $ mkdir -p local/html/NoAuth/css/
+    $ mkdir -p local/static/css/
 
 And place your F<my-site.css> file in it.  Finally, adjust your
 C<@CSSFiles> in your F<RT_SiteConfig.pm>:
 
     Set( @CSSFiles, ('my-site.css') );
 
-This technique is preferred to callbacks (below) because CSS included
-via this way will be minified.  It is also included across all styles,
-unlike the callback technique.
+CSS added this way is included across all themes.
 
 If you are writing an extension, see L<RT/AddStyleSheets> for how to
 simply and programmatically add values to C<@CSSFiles>.
 
-=head2 Callbacks
-
-RT's CSS files are also Mason templates and the main CSS file,
-conveniently called C<main.css>, has a C<Begin> and C<End> callback
-allowing you to inject custom CSS.
-
-To create an End callback, create the callback directory and an
-End file in that directory:
-
-    $ mkdir -p local/html/Callbacks/MyRT/NoAuth/css/aileron/main.css
-    $ touch local/html/Callbacks/MyRT/NoAuth/css/aileron/main.css/End
-
-You can use any name you want for the C<MyRT> directory and the theme
-directory should correspond with the theme you want to change.
-
-RT will now evaluate the contents of that file after it processes all
-of the C<@import> statements in C<main.css>.
-
 
 =head1 Designing Your Own Theme
 
@@ -134,11 +118,11 @@ local modifications to RT. Run the following commands in your
 C</opt/rt4> directory (or wherever your RT is installed) to get
 started:
 
-    $ mkdir -p local/html/NoAuth/css/localstyle
-    $ cp -R share/html/NoAuth/css/aileron/* local/html/NoAuth/css/localstyle/
+    $ mkdir -p local/static/css/localstyle
+    $ cp -R share/static/css/rudder/* local/static/css/localstyle/
 
 You can call your "localstyle" directory whatever you want and you don't
-have to copy the aileron theme to start from, but it's a good place to
+have to copy the rudder theme to start from, but it's a good place to
 start off for RT4.
 
 Now set C<$WebDefaultStylesheet> in RT_SiteConfig.pm to the new directory
@@ -147,7 +131,7 @@ name you selected, for example:
     Set( $WebDefaultStylesheet, 'localstyle' );
 
 If you restart your RT it should look just the same (assuming you copied
-your current default theme), but if you go to your Options page you'll
+your current default theme), but if you go to your Preferences page you'll
 see that the system default theme is now your new "localtheme."
 
 If you look at the CSS being loaded, you'll also see that the main css
index 5733f60..d61542d 100644 (file)
@@ -1,7 +1,14 @@
 =head1 Templates
 
-Each template is split into two sections. A block of headers and a body. These
-sections are separated by a blank line.
+Templates are used in RT to send notifications, typically email. You have
+access to RT data via variables available to you in the scope of the template.
+Templates can also be used for some special actions like creating a new ticket
+as part of the execution of a scrip.
+
+Each template is split into two sections: a block of headers and a body. These
+sections are separated by a blank line. Blank lines are not allowed before
+the headers, but can be included in the body as needed after the headers
+section.
 
 Templates are processed by the L<Text::Template> module. This module
 allows you to embed arbitrary Perl code into your templates. Text wrapped
@@ -28,17 +35,17 @@ readable, while users with clients which can display HTML will receive the full
 experience. Please be aware that HTML support in mail clients varies greatly,
 much more so than different web browsers.
 
-We welcome contributions of HTML-ization of builtin templates.
+Starting in RT 4.2, HTML templates are included along with plain text templates
+for the standard RT notifications.
 
 =back
 
 =head2 Template Types
 
-Templates have a Type which dictates which level of code execution is
-allowed.
+Templates have a Type which dictates the level of code execution allowed.
 
 Templates of type C<Perl> are evaluated using L<Text::Template>
-which allows arbitrary code execution. Only users which have the global
+which allows arbitrary code execution. Only users with the global
 C<ExecuteCode> privilege may write templates of type C<Perl>. Prior to
 RT 4.0, this was the only type of Template available.
 
@@ -82,6 +89,24 @@ A localization function. See L<Locale::Maketext>.
 
 =back
 
+The C<$Transaction> and C<$Ticket> objects are particularly useful. For
+example, here are some values you can get from each:
+
+    $Ticket->Status      # Current status
+    $Ticket->Owner       # Current owner
+    $Ticket->FirstCustomFieldValue('CustomFieldName') # CF value
+    $Ticket->DueAsString # Current due date as a string
+    $Ticket->DueObj      # Due as an RT::Date object
+    $Ticket->QueueObj    # Queue object for this ticket
+
+    $Transaction->Type     # Type of transaction
+    $Transaction->OldValue # Previous value, if type is Set
+    $Transaction->NewValue # New value, if type is Set
+    $Transaction->CreatorObj->EmailAddress # Email address of trans creator
+
+You can see the methods available in the L<RT::Ticket> and L<RT::Transaction>
+documentation.
+
 =head3 Selected Simple template variables
 
 Since method calls are not allowed in simple templates, many common
@@ -128,5 +153,20 @@ For example, C<$TransactionCFLocation>.
 
 =back
 
+=head2 Templates Provided with RT
+
+RT comes with a set of templates for the default notifications. As you start to
+customize your templates, these templates are a good place to look for
+examples. As you customize, it can be helpful to create new templates and
+update your scrips to reference your new templates. This leaves the original RT
+templates in place for easy reference.
+
+Starting in RT 4.2, each template has a plain text version and an HTML
+version. For example, the "Correspondence" template is the plain text version
+of the default template for correspondence (replies) and the "Correspondence in
+HTML" template is the same template formatted in HTML. The 4.2 upgrade provides
+a C<switch-templates-to> script to switch all default templates from plain text
+to HTML or the reverse. See the L<UPGRADING-4.2> notes for details.
+
 =cut
 
diff --git a/docs/dashboards.pod b/docs/dashboards.pod
new file mode 100644 (file)
index 0000000..0a96521
--- /dev/null
@@ -0,0 +1,206 @@
+=head1 Dashboards
+
+RT's dashboard feature provides a convenient way to create your own pages 
+focused on the tickets and charts you need. Dashboards are available right from 
+the Home menu, can be set up individually or shared, and can even be sent out 
+via email on a schedule. To show some of the dashboard features, we'll set up a 
+dashboard and notifications to track outstanding invoice tickets.
+
+There are several different rights you can grant to allow users access to the 
+features described here. These rights are described in L</"Dashboard Rights">.
+
+=head2 Creating a Personal Dashboard
+
+Saved searches and charts are the building blocks of dashboards, so to set up a 
+new dashboard you first need to create and save a search that displays the 
+ticket data you want. We want to view new and open invoice tickets and, for our 
+example, assume we have an Accounts Receivable queue. On the ticket search 
+page, we create a new search with this query:
+
+    Queue = 'Accounts Receivable'
+    AND (
+        Status = 'new'
+        OR Status = 'open' )
+
+We also want to modify the sort order of the search to use Due rather than the 
+default id. In the Sorting section, we select Due for the initial sort, then 
+add Created as the second sort value. Finally, we set Rows per page to 
+Unlimited so we don't miss any invoices.
+
+=for html <img alt="Dashboard search sorting" 
+src="images/dashboard-search-sorting.png">
+
+=for :text [Search sorting F<docs/images/dashboard-search-sorting.png>]
+
+=for :man [Search sorting F<docs/images/dashboard-search-sorting.png>]
+
+Once you have those set, you can click "Add these terms and Search" or "Update 
+format and Search" to see the results. If it's still not quite right, you can 
+click "Edit Search" in the submenu and continue to refine things.
+
+When you're finished tweaking the search, return to Query Builder page again so 
+you can save it. Under the "Saved Searches" box, type "Outstanding Invoices" 
+in the Description box. For now, leave Privacy set to "My saved searches" and 
+click Save. You now have a saved search you can use for your dashboard.
+
+To create the dashboard, select Home > New Dashboard. Type "Outstanding 
+Invoices" for the name and leave the privacy set to "My Dashboards". Click 
+Create and the new dashboard is created.
+
+Now we want to populate the new dashboard with the saved search we created. 
+Click Content in the submenu to go to the content selection page. Dashboards 
+allow you to put content in the main body or the sidebar, much like the default 
+RT homepage, so you'll see a Body section and a Sidebar section to set the 
+content. Find your saved "Outstanding Invoices" search, select it, and click 
+the arrow to move it to the righthand box and add it to the dashboard.
+
+=for html <img alt="Adding dashboard content" 
+src="images/dashboard-content-invoices.png">
+
+=for :text [Adding dashboard content 
+F<docs/images/dashboard-content-invoices.png>]
+
+=for :man [Adding dashboard content 
+F<docs/images/dashboard-content-invoices.png>]
+
+Click Show in the submenu and you'll see your new dashboard. Click Home to 
+return to the "RT at a glance" page and you'll see your new dashboard is in the 
+Dashboards portlet on the right side of the page.
+
+On dashboard pages, you can click on the title of any section and go to the 
+search results page for the saved search. This makes it easy to find the saved 
+search and update it, or modify it ad-hoc for a one-off search based on the 
+saved dashboard search.
+
+In this example we're only adding one search, but you can add multiple searches 
+to each individual dashboard to track different types of interrelated 
+information and see it at a glance. For instance, two queries, "outstanding 
+invoices" and "overdue invoices," could form a dashboard called "all 
+outstanding invoices." Software engineers using RT might combine three queries, 
+"bug fixes," "feature requests," and "documentation," into a dashboard 
+called "our new release."
+
+=head2 Charts in Dashboards
+
+You can also display saved charts in dashboards, creating a powerful visual of 
+ticket data in a convenient page. To add a chart, start with a search, refine 
+your query, then click Chart in the submenu in the Query Builder or Search 
+Results page. Configure your chart as described in L<charts>, select a Privacy
+setting, name it "Outstanding Invoices", and click Save.
+
+Return to the dashboard, click Content, and you'll see a new "Chart: 
+Outstanding Invoices" option in the Available column. Select it and click the 
+arrow to add it to the dashboard. Now when you load the dashboard, the chart 
+will be rendered right below the saved search.
+
+=for html <img alt="Dashboard chart" src="images/dashboard-chart.png">
+
+=for :text [Dashboard chart F<docs/images/dashboard-chart.png>]
+
+=for :man [Dashboard chart F<docs/images/dashboard-chart.png>]
+
+=head2 Dashboard Menu Entries
+
+In addition to having dashboards available on the "RT at a glance" page, you 
+can also add them to the Home menu. To modify the Home menu, select Home > 
+"Update This Menu" or "Logged in as" > Settings > "Dashboards in menu". You'll 
+see the Customize dashboard page which is similar to the Dashboard Content page.
+
+=for html <img alt="Customize dashboard menu" 
+src="images/customize-dashboards-menu.png">
+
+=for :text [Customize dashboard menu 
+F<docs/images/customize-dashboards-menu.png>]
+
+=for :man [Customize dashboard menu F<docs/images/customize-dashboards-menu.png>]
+
+Select the dashboard you want, click the arrow to move it to the righthand 
+column, then check your Home menu. You'll see your dashboard is now available 
+from the menu.
+
+As an RT administrator, you can populate the dashboard menu for other users on 
+the system. Find a user using Search > Users or Admin > Users > Select, then 
+click on the user to open the modify user page. In the submenu, you'll see a 
+"Dashboards in menu" option, and it works the same as the personal setting.
+
+=head2 Group Dashboards
+
+You're enjoying your new dashboard but it's time for some vacation and it would 
+be nice for someone else in the accounting department to be able to use your 
+dashboard while you're gone. RT makes this easy with group-level dashboards.
+
+As we've seen, the dashboard is based on a saved search, so you first need to 
+make that available. Go to the ticket search page (Query Builder), find your 
+saved search in the "Load saved search" dropdown, and click Load. If you are in 
+a group, like the Accounting group, there will be an option in the Privacy 
+dropdown called "Accounting's saved searches". Select that option and click 
+Update to make the search available to the Accounting group.
+
+To update your dashboard, select it from the menu to view it, then click Basics 
+in the submenu. Like on Query Builder page, you'll see your group listed in the 
+Privacy dropdown. Assuming your group is Accounting, select "Accounting's 
+Dashboards" and click Save Changes.
+
+Click on Content and you'll see a message that a query has been deleted and 
+removed from the dashboard. This is because RT has detected that you have moved 
+the saved search from personal to group privacy. Select "Outstanding Invoices" 
+from the Available column and click the arrow to add the group-based search to 
+the dashboard.
+
+All members of the Accounting group should now have access to your dashboard. 
+They can now add it to their Home menu if they want. If other members can't see 
+it, make sure you have granted sufficent rights to the group (see L</"Dashboard 
+Rights">).
+
+=head2 System-wide Dashboards
+
+You can also set up dashboards for all users on your RT system. Follow the 
+steps above for group dashboards, but for Privacy, select "RT System" for the 
+saved search and dashboard.
+
+If you want to make sure everyone has the dashboard in their Home menu, you can 
+set this globally as well if you are the RT administrator. The Admin > Global > 
+"Dashboards in menu" opens a page similar to the personal dashboard menu page, 
+but it puts the selected dashboards into everyone's dashboard menu.
+
+=head2 Dashboard Subscriptions
+
+RT's dashboard subscription feature allows you to email dashboards based on a 
+schedule you set. These scheduled dashboards can be particularly useful for 
+time-based reports that you want to see on a regular basis.
+
+To set up a subscription, go to the dashboard you'd like to have emailed and 
+click on Subscription in the submenu. This will take you to the subscription 
+page.
+
+=for html <img alt="Dashboard subscription" 
+src="images/dashboard-subscription.png">
+
+=for :text [Dashboard subscription F<docs/images/dashboard-subscription.png>]
+
+=for :man [Dashboard subscription F<docs/images/dashboard-subscription.png>]
+
+Select the frequency and timing you want and enter the email address the 
+dashboard should go to. You can leave it blank to send mail to your RT email 
+address. Click Subscribe and that's it, you'll start getting dashboards via 
+email.
+
+This feature requires the F<rt-email-dashboards> script to be scheduled in 
+C<cron> as described in RT's F<README> file.
+
+=head2 Dashboard Rights
+
+There are several rights you can selectively grant to allow users access to 
+dashboard features. As with any RT rights, you can grant these to individual 
+users (usually difficult to maintain over time), to system roles like 
+Privileged, or to groups you define.
+
+Since dashboards rely on saved searches, you need to grant "Allow loading of 
+saved searches" (LoadSavedSearch) for users to see the searches. You may want 
+to also grant "Allow creation of saved searches" (CreateSavedSearch) to allow 
+users to create their own and "View saved searches" (ShowSavedSearches)
+
+For dashboards themselves, there are See, Create, Modify, and Delete rights for 
+each of personal, group, and system dashboards. This allows you to select the 
+right combination of rights for users and groups on your system. For 
+subscriptions, there is a "Subscribe to dashboards" (SubscribeDashboard) right.
\ No newline at end of file
index 91e9eec..b7a525d 100644 (file)
@@ -23,6 +23,7 @@ after the URL.
 =item C<httpurl_overwrite>
 
 Detects URLs as C<httpurl> format, but replaces the URL with a link.
+This action is enabled by default.
 
 =back
 
index 7c50ee9..a3280c9 100644 (file)
@@ -172,7 +172,7 @@ can create and drop databases:
 You'll need to configure RT and make sure you have all the dependencies
 before running tests.  To do this in place without installing:
 
-    ./configure.ac --with-my-user-group --enable-layout=inplace --with-devel-mode
+    ./configure.ac --with-my-user-group --enable-layout=inplace --enable-developer
     make testdeps
     make fixdeps
 
diff --git a/docs/images/customize-dashboards-menu.png b/docs/images/customize-dashboards-menu.png
new file mode 100644 (file)
index 0000000..b78dbba
Binary files /dev/null and b/docs/images/customize-dashboards-menu.png differ
diff --git a/docs/images/dashboard-chart.png b/docs/images/dashboard-chart.png
new file mode 100644 (file)
index 0000000..51013e7
Binary files /dev/null and b/docs/images/dashboard-chart.png differ
diff --git a/docs/images/dashboard-content-invoices.png b/docs/images/dashboard-content-invoices.png
new file mode 100644 (file)
index 0000000..ed6a67e
Binary files /dev/null and b/docs/images/dashboard-content-invoices.png differ
diff --git a/docs/images/dashboard-search-sorting.png b/docs/images/dashboard-search-sorting.png
new file mode 100644 (file)
index 0000000..2cbcf0d
Binary files /dev/null and b/docs/images/dashboard-search-sorting.png differ
diff --git a/docs/images/dashboard-subscription.png b/docs/images/dashboard-subscription.png
new file mode 100644 (file)
index 0000000..e03d4f5
Binary files /dev/null and b/docs/images/dashboard-subscription.png differ
diff --git a/docs/images/general-owner-chart.png b/docs/images/general-owner-chart.png
new file mode 100644 (file)
index 0000000..56e429e
Binary files /dev/null and b/docs/images/general-owner-chart.png differ
diff --git a/docs/images/general-owner-lastupdated-chart.png b/docs/images/general-owner-lastupdated-chart.png
new file mode 100644 (file)
index 0000000..54f3f49
Binary files /dev/null and b/docs/images/general-owner-lastupdated-chart.png differ
diff --git a/docs/images/general-status-chart.png b/docs/images/general-status-chart.png
new file mode 100644 (file)
index 0000000..3d208f9
Binary files /dev/null and b/docs/images/general-status-chart.png differ
diff --git a/docs/images/queue-created-started-chart.png b/docs/images/queue-created-started-chart.png
new file mode 100644 (file)
index 0000000..b0aa833
Binary files /dev/null and b/docs/images/queue-created-started-chart.png differ
diff --git a/docs/incremental-export/README b/docs/incremental-export/README
new file mode 100644 (file)
index 0000000..86503c4
--- /dev/null
@@ -0,0 +1,29 @@
+To perform an incremental upgrade of your RT instance you will need to
+perform the following steps on your production server.
+
+  Copy the rt-validator command from the current version of RT and run
+  it against your production RT instance. The output from --help will
+  show you how to run it in check and then in fix mode.
+
+  Turn off all access to RT (this usually involves stopping your web and mail servers).
+  Take a snapshot of the RT database.
+  Install Record_Local.pm into $RTHOME/lib/RT/.
+  Create the IncrementalRecords table using the schema file for your database.
+  Add Set($IncrementalExport, 1); to your RT_SiteConfig.pm
+  Bring your webserver back up.
+  Confirm that changes in RT (such as a ticket status change or reply)
+    result in records being added to IncrementalRecords.
+
+
+Using the backup, upgrade on your new server to the latest release of RT.
+Once this upgrade is complete, you should avoid making changes to it
+until you import the incremental changes from production.
+
+For additional information on the following steps, please review
+rt-importer --help and rt-serializer --help
+
+During your final cutover, you will bring down the production web and mail servers for the final time.
+Run $RTHOME/sbin/rt-serializer --incremental
+This will create a directory named $Organization:date
+Once this has completed, you will copy this directory to the new server.
+On the new server, run $RTHOME/sbin/rt-importer $Organization:date
diff --git a/docs/incremental-export/Record_Local.pm b/docs/incremental-export/Record_Local.pm
new file mode 100644 (file)
index 0000000..4118e9c
--- /dev/null
@@ -0,0 +1,74 @@
+use strict;
+use warnings;
+
+package RT::Record;
+no warnings 'redefine';
+
+my ($update, $create, $delete);
+BEGIN {
+    $update = RT::Record->can("__Set");
+    $create = RT::Record->can("Create");
+    $delete = RT::Record->can("Delete");
+}
+
+
+sub __Set {
+    my $self = shift;
+    my %args = @_;
+    my $ret = $update->($self, @_);
+
+    my $class = ref($self);
+    return ( $ret->return_value ) unless $RT::IncrementalExport;
+    return ( $ret->return_value ) unless $ret;
+    return ( $ret->return_value ) if $class eq "RT::CachedGroupMember";
+
+    $self->_Handle->SimpleQuery( <<EOQ, $class, $self->__Value("Id") );
+INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
+                  VALUES (?, ?, 1, NOW())
+       ON DUPLICATE KEY UPDATE
+          AlteredAt = AlteredAt
+EOQ
+
+    return ( $ret->return_value );
+}
+
+
+sub Create {
+    my $self = shift;
+    my ($id, $msg) = $create->($self, @_);
+
+    if ($RT::IncrementalExport and $id and ref($self) ne "RT::CachedGroupMember") {
+        $self->_Handle->SimpleQuery( <<EOQ, ref($self), $id );
+INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
+                  VALUES (?, ?, 2, NOW())
+EOQ
+    }
+
+    if (wantarray) {
+        return ( $id, $msg );
+    } else {
+        return ( $id );
+    }
+}
+
+sub Delete {
+    my $self = shift;
+    my ($ok, $msg) = $delete->($self,@_);
+
+    if ($RT::IncrementalExport and $ok and ref($self) ne "RT::CachedGroupMember") {
+        $self->_Handle->SimpleQuery( <<EOQ, ref($self), $self->__Value("Id") );
+INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
+                  VALUES (?, ?, 3, NOW())
+       ON DUPLICATE KEY UPDATE
+          UpdateType = UpdateType + 2
+EOQ
+    }
+
+    if (wantarray) {
+        return ( $ok, $msg );
+    } else {
+        return ( $ok );
+    }
+}
+
+1;
diff --git a/docs/incremental-export/schema.mysql b/docs/incremental-export/schema.mysql
new file mode 100644 (file)
index 0000000..0af8938
--- /dev/null
@@ -0,0 +1,10 @@
+CREATE TABLE IncrementalRecords (
+  id         INTEGER NOT NULL AUTO_INCREMENT,
+  ObjectType VARCHAR(50) NOT NULL,
+  ObjectId   INTEGER NOT NULL,
+  UpdateType TINYINT NOT NULL,
+  AlteredAt  TIMESTAMP NOT NULL,
+  PRIMARY KEY(ObjectType, ObjectId),
+  UNIQUE KEY(id),
+  KEY(UpdateType)
+);
index c649b62..0ed73f4 100644 (file)
@@ -78,14 +78,13 @@ For a full list of fields, read the documentation for L<RT::User/Create>.
 =head2 C<@Groups>
 
     push @Groups, {
-        Domain      => 'UserDefined',
         Name        => 'Example Employees',
         Description => 'All of the employees of my company',
     };
 
 Creates a new L<RT::Group> for each hashref.  In almost all cases you'll want
 to follow the example above to create a group just as if you had done it from
-the admin interface.  B<Do not> omit the C<< Domain => 'UserDefined' >> line.
+the admin interface.
 
 Additionally, the C<MemberOf> field is specially handled to make it easier to
 add the new group to other groups.  C<MemberOf> may be a single value or an
@@ -145,7 +144,6 @@ L<RT::Queue/Create> for the fields you can use.
 =head2 C<@CustomFields>
 
     push @CustomFields, {
-        Queue       => 0,
         Name        => 'Favorite color',
         Type        => 'FreeformSingle',
         LookupType  => 'RT::Queue-RT::Ticket',
@@ -164,10 +162,15 @@ The name of this CF as displayed in RT.
 
 A short summary of what this CF is for.
 
-=item C<Queue>
+=item C<ApplyTo>
 
-May be a Name or ID.  The single queue or array ref of queues to apply this CF
-to.  This does not apply when C<LookupType> does not start with C<RT::Queue>.
+May be a single value, or an array reference of such; each should be
+either an ID or Name.  If omitted, the CF is applied globally.  This
+should not be used for User or Group custom fields.
+
+This argument may also be passed via C<Queue>, for backwards
+compatibility, which also defaults the C<LookupType> to
+C<RT::Queue-RT::Ticket>.
 
 =item C<Type>
 
@@ -215,6 +218,7 @@ is for Tickets, Transactions, Users, Groups, or Queues.  Possible values:
     RT::User                                # Users
     RT::Group                               # Groups
     RT::Queue                               # Queues
+    RT::Class-RT::Article                   # Articles
 
 Ticket CFs are the most common, meaning C<RT::Queue-RT::Ticket> is the most
 common C<LookupType>.
@@ -247,7 +251,6 @@ field.  This only makes sense for "Select" CFs.  An example:
 
     my $i = 1;
     push @CustomFields, {
-        Queue       => 0,                       # Globally applied
         LookupType  => 'RT::Queue-RT::Ticket',  # for Tickets
         Name        => 'Type of food',
         Type        => 'SelectSingle',  # SelectSingle is the same as: Type => 'Select', MaxValues => 1
@@ -301,6 +304,7 @@ granted.  This is B<different> than the user/group/role receiving the right.
 =item Granted on a custom field by name (or ID), potentially a global or queue
 
     CF => 'Name',
+    LookupType => 'RT::User',  # optional, in case you need to disambiguate
 
 =item Granted on a queue
 
@@ -311,6 +315,11 @@ granted.  This is B<different> than the user/group/role receiving the right.
     CF      => 'Name',
     Queue   => 'Name',
 
+=item Granted on some other object (article Classes, etc)
+
+    ObjectType => 'RT::Class',
+    ObjectId   => 'Name',
+
 =item Granted globally
 
 Specifying none of the above will get you a global right.
diff --git a/docs/reminders.pod b/docs/reminders.pod
new file mode 100644 (file)
index 0000000..c2bc67d
--- /dev/null
@@ -0,0 +1,67 @@
+=head1 Reminders
+
+Reminders can be attached to a ticket to notify you take some action
+on the ticket. Although there are fields like "Due" on tickets, some
+tickets have dependencies or sub-tasks that need to be completed before you
+can do the ticket. For a "Deploy New Certificate" ticket, for example, you may
+need to remind yourself to order the new cert first.
+
+Reminders are sort of mini-tickets and in fact they are implemented as
+tickets themselves.
+
+Each Reminder has:
+
+=over
+
+=item * Subject
+
+=item * Owner
+
+=item * Due date
+
+=item * Status (new, open, resolved, ...)
+
+=back
+
+=head1 Creating a Reminder
+
+Reminders are attached to tickets, so you create them in the Reminders section of
+the ticket display. Once you give it an Owner and a Due date, the Reminder will
+appear on the Owner's "At-a-glance" page by default.
+
+If you don't see reminders, it may be turned off. Display of reminders can be
+disabled with the C<$EnableReminders> flag in C<RT_SiteConfig.pm>. By default,
+reminders are turned on.
+
+=head1 Email Reminders
+
+While seeing reminders in the web display is handy, you may also want to send out
+email based on reminders that are due or are soon to be due. You can use the
+C<rt-crontool> utility to schedule a job to send these emails for you.
+
+To schedule the reminders, add a line like the following to your RT crontab:
+
+    0 6 * * * root /opt/rt4/bin/rt-crontool \
+                   --search RT::Search::FromSQL \
+                   --search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \
+                   --condition RT::Condition::BeforeDue \
+                   --condition-arg 2d \
+                   --action RT::Action::SendEmail \
+                   --action-arg Owner,AlwaysNotifyActor \
+                   --transaction first \
+                   --template 'Reminder'
+
+If you have modified the status values for reminders such that you have more
+active statuses than "open" and "new" you should add them as part of your
+"FromSQL" query. You typically won't want to send out email on "resolved"
+reminders, but you could add that to the query as well.
+
+The argument to C<RT::Condition::BeforeDue> is an amount of time in the form
+"1d2h3m4s" for 1 day and 2 hours and 3 minutes and 4 seconds. As shown in the
+example, single values can also be passed. The run frequency in your crontab
+should be consistent with the time period you set to avoid missing reminders.
+
+The template value refers to a Template in your RT system. You can use the
+default Reminder template or create your own in Admin > Global > Templates >
+Create. You can look at the default template for examples of the values
+you can use to populate the email.
diff --git a/docs/reporting/feeds.pod b/docs/reporting/feeds.pod
new file mode 100644 (file)
index 0000000..81260e9
--- /dev/null
@@ -0,0 +1,145 @@
+=encoding utf-8
+
+=head1 Feeds
+
+RT offers several feeds that provide RT data in formats suitable for
+integrating with external applications. This document describes the
+available feeds and some ways they can be used.
+
+The feeds are based on a ticket search you create using the RT Query
+Builder, available at Tickets > New Search or, starting in RT 4.2,
+Search > Tickets > New Search. After you create your search, the
+search results page has a Feeds menu in the upper right-hand corner.
+That menu contains the feeds described below.
+
+=head2 Spreadsheet
+
+If you click the Spreadsheet link, a tab-separated values (.tsv) file is
+downloaded containing the results from the search you performed in the
+browser. You can then import the file into a spreadsheet application like
+the OpenOffice spreadsheet or Microsoft Excel.
+
+Pulling ticket data into a spreadsheet can be handy if you want to
+manipulate a subset of your ticket data outside of RT. Depending on
+what you're doing with the data, once you have it in the form
+you need (sorted, summed, etc.) you can sometimes reproduce the report
+back in RT. This has the advatage of making it dynamic and you can share
+the resulting report with other users as a shared search or dashboard.
+
+Depending on your browser brand and settings, the downloaded spreadsheet
+may be given a .xls extension, a .tsv extension, or no extension at all.
+If it gets a .xls extension, the spreadsheet file will likely already be
+associated with a spreadsheet application. In this case, you can
+double-click on the file to open it. You may see a warning about the file
+format, since it is a tsv file and not a .xls file, and then the application
+will either convert the file automatically or open a dialog to guide you.
+
+If your system doesn't automatically associate the tsv file, the following
+sections describe how to manually import a tsv file in some common
+applications.
+
+=head3 Importing into Microsoft Excel
+
+If the file is given a .tsv extension or no extension, here's how to open
+it in Excel 2010:
+
+=over
+
+=item 1.
+
+Select File > Open, locate the file on your system and click Open.
+
+=item 2.
+
+In the Text Import Wizard, select Delimited, import starting at row 1,
+and leave the default File origin. Click Next.
+
+=item 3.
+
+In the Delimiters section, select Tab if it isn't selected by default.
+Leave the other settings with default values. Click Next.
+
+=item 4.
+
+The last dialog lets you define the column formats for the imported columns.
+You can also exclude some columns from the import. 'General' will try to
+guess for you. Click Finish.
+
+=back
+
+=head3 Importing into OpenOffice
+
+If OpenOffice doesn't automatically open the Text Import dialog when
+you try to open the file, here's how to open a tsv manually:
+
+=over
+
+=item 1.
+
+Open a new Spreadsheet document
+
+=item 2.
+
+Select Insert > Sheet From File...
+
+=item 3.
+
+In the file selection dialog, find the file downloaded from RT. By default,
+the name is Results.
+
+=item 4.
+
+In the Separator options, click the checkbox Separated by: Tab. Uncheck any
+other options that might be checked. Click OK.
+
+=item 5.
+
+On the Insert Sheet dialog, select where you want to put the new sheet and
+click OK.
+
+=back
+
+=head2 RSS
+
+You can use the RSS feed to subscribe using your RSS feed reader of
+choice. The feed entries provide the ticket subject, a link to the
+ticket, and the content of the first transaction on the ticket.
+
+=head2 iCal
+
+The iCal link uses your search to provide a feed suitable
+for subscribing to from a calendaring application like Mozilla Lightning
+(the Thunderbird calendar), Google Calendar, Microsoft Outlook, or Apple
+iCal. You can copy the link and use your calendar application's subscribe
+feature to pull in and display ticket dates.
+
+The feed provides Starts and Due dates from the selected tickets. In
+RT 4.0, the calendar events are day-long events, which can be handled
+differently in different calendar applications. The events also contain
+a URL linking to the ticket and some calendars will display this link
+with the event.
+
+RT 4.2 adds the L<RT_Config/$TimeInICal> option, which will include times
+in the iCal feed so you can have calendar events at a specific time. In
+addition, you can provide C<SingleEvent=1> as an additional query parameter
+to have tickets generate a single event using the Start and Due dates/times
+as the start and end values for the event. You can put the parameter on the
+end of the iCal feed URL, for example:
+
+    https://myrt.example.com/NoAuth/iCal/user/...?SingleEvent=1
+
+This is useful if you have tickets with shorter durations, like scheduled
+maintenance for example.
+
+=head2 Secret Tokens
+
+All of your RSS and iCal feeds embed a secret token that is specific to your RT
+user account.  You should never share your feed urls with other people,
+otherwise they can see tickets as your user.  If one of your feed urls is
+accidentally shared, you can reset your token to disable all old feed urls.  To
+do so, start by logging into RT and go to Logged in as … > Settings > About me.
+In the lower right-hand corner, there is a link "I want to reset my secret
+token" and it does just that.
+
+Note that this will disable all of your existing feeds. After updating
+the token, you'll need to update all of your feed urls.
diff --git a/docs/rt_perl.pod b/docs/rt_perl.pod
new file mode 100644 (file)
index 0000000..513bb59
--- /dev/null
@@ -0,0 +1,163 @@
+=head1 Perl for RT
+
+RT runs on Perl and there are many different approaches to installing
+and maintaining your Perl installation. This document reviews some of the
+options and pros and cons of different approaches.
+
+Perl has been around for a long time, so many different versions are
+installed on systems everywhere. We try to maintain a reasonable
+timeframe for backward compatibility, but beyond a certain age, running
+old versions of Perl is no longer safe or even possible with modern
+applications. We currently require at least version 5.10.1 which is
+old enough to be default on OSes from many years ago, but sufficiently
+new to support RT and the modules RT depends on.
+
+=head1 Default System Perls
+
+All Linux and Unix-type variants come with a version of Perl installed
+and many provide Perl and many CPAN modules as packages for easier
+maintenance and management. You can run RT on the vendor Perl on your
+system as long as it meets the minimum version requirement.
+
+When you run C<make testdeps> as part of your RT installation,
+you'll likely find that the RT will require you to upgrade some of the
+dependent modules to newer versions than those provided in the
+vendor packages. If you have any IT policy requirements to only use
+vendor packaged versions of software, this might be an issue. If
+so, you can consider installing an RT-only version of Perl.
+See L<"Stand-alone Perl">.
+
+Occasionally vendors introduce their own changes to their packaged version
+of Perl or modules and these might create issues when running RT.
+Also, the system Perl is also often used by other utilities on the system
+and modifying the default Perl too heavily can introduce issues for these
+other applications which might rely on an older version of a module, for
+example. Consider these factors before modifying your system Perl.
+
+Many packaging systems restore the system to the official packaged
+version of software when updates are applied. Since a Perl update is
+likely to have many or all packaged Perl modules as dependencies, this
+means an update to the vendor Perl will restore all of the modules you
+upgraded to their previous version. Therefore, if you decide to use
+the vendor Perl on your system, you need to note somewhere that you'll
+need to upgrade RT's dependencies any time the system Perl packages are
+updated. The L<rt-test-dependencies> tool provided in RT's sbin
+directory can help with this.
+
+=head1 Stand-alone Perl
+
+To avoid having modules unexpectedly downgraded as described above,
+we typically recommend installing a separate Perl to run RT. In doing so
+you take on the extra responsibility to patch that Perl if necessary,
+but you can plan this work as necessary rather than being surprised if
+RT has issues after a security package update is applied.
+
+Having a Perl version installed specifically for RT gives you the flexibility
+to upgrade or install a new module if needed to add a new extension or address
+a bug. You can then test just RT and not worry about possible side-effects
+on your system.
+
+You can install this Perl in an alternate location like C</opt/perl>, or
+to make it clear it's for RT, even C</opt/rt4/perl>. To make future
+upgrades easier, install in a version-specific directory like
+C</opt/perl-5.14.2>, then symlink C</opt/perl> to that directory. This
+makes it easy to switch to a newer version of Perl later by installing
+and just moving the symlink.
+
+If you install a stand-alone Perl, update your shell to put the path
+of the new C<perl> executable before the system Perl. You may want
+to set this in your shell profile for the user account you use to manage
+RT so you don't accidentally run commands or install modules in the
+wrong Perl installation.
+
+The following sections describe several approaches to installing a
+stand-alone Perl.
+
+=head2 Install from Source
+
+You can download Perl directly from L<http://www.perl.org> and follow
+the installation instructions. Typically this involves running C<Configure>,
+then C<make && make test && sudo make install>. For most installations,
+this C<Configure> command should be sufficient:
+
+    ./Configure -d -Dprefix=/opt/perl
+
+You can set the prefix to wherever you want Perl installed. Read the
+documentation provided with the distribution for more options.
+
+=head2 Perlbrew
+
+L<Perlbrew|http://perlbrew.pl> is a tool that makes it easy to manage multiple
+Perl installations. Once installed, the C<perlbrew> command provides options to
+build various versions of Perl, switch between version, update installed
+versions, and more.
+
+By default, C<perlbrew> installs all of its Perls in your C<$HOME> directory. If
+you want to install in an alternate location, you can set the C<PERLBREW_ROOT>
+environment variable:
+
+    export PERLBREW_ROOT=/opt/perl5
+    curl -kL http://install.perlbrew.pl | bash
+
+Since C<perlbrew> has a C<switch> command to use different installed Perl
+versions, you don't need to manually manage symlinks as described above.
+
+=head2 mod_perl
+
+If you plan to run RT with L<mod_perl|http://perl.apache.org> on a 64-bit system, you
+may need to run Configure with these options:
+
+    ./Configure -d -Dprefix=/opt/perl -A ccflags=-fPIC
+
+Then make sure you use your stand-alone perl when building and installing
+mod_perl. You find more details on these flags in the
+L<mod_perl installation documentation|http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites>.
+
+=head1 CPAN Modules
+
+RT requires modules from the
+L<Comprehensive Perl Archive Network|http://www.cpan.org> to run.
+Below are a few of the tools available to help download and install
+these modules from CPAN. These tools can work with RT's L<rt-test-dependencies>
+tool and the C<make testdeps> and C<make fixdeps> part of the installation
+process to get these modules installed.
+
+=head2 CPAN Shell
+
+The traditional tool for managing Perl modules is the CPAN shell,
+accessed with the C<cpan> command installed as part of Perl. To set up
+C<cpan> on an initial install, run the C<cpan> command and follow the
+prompts to set the initial configuration. You can set each option or allow
+it to automatically set some sensible defaults.
+
+The main options you'll need to set are the list of download servers and
+options for C<make install>. For download servers, you'll typically want to
+select some mirrors geographically close to you. If you typically run installs
+using C<sudo>, set C<make_install_make_command> to C<'sudo make'> and
+C<mbuild_install_build_command> to C<'sudo ./Build'>. Then install
+the CPAN bundle:
+
+    cpan>install Bundle::CPAN
+
+This installs some additional modules to add features to C<cpan>.
+
+Once you finish this initialization, RT's C<make fixdeps> should be able
+to handle the rest. Any time you need to install a new module or upgrade
+a module, you can just type C<cpan> and manage it from the cpan shell.
+
+=head2 cpanminus
+
+C<cpanminus>, or C<cpanm>, is a utility built to make it as easy as possible
+to install modules from CPAN. You can install the L<App::cpanminus> module
+itself from CPAN, or have it install itself:
+
+    curl -L http://cpanmin.us | perl - --sudo App::cpanminus
+
+Once installed, set the C<RT_FIX_DEPS_CMD> environment variable to
+have RT use C<cpanm> to install modules:
+
+    export RT_FIX_DEPS_CMD=/opt/perl/bin/cpanm
+
+Then run C<make fixdeps> and let RT install all of its dependencies.
+
+=cut
index 620f868..5bf4291 100644 (file)
@@ -32,11 +32,7 @@ months before being added to the public RT repository.
 
 Protect your RT installation by making it only accessible via SSL.  This
 will protect against users' passwords being sniffed as they go over the
-wire, as well as helping prevent phishing attacks.  If you use SSL, you
-will need to install some additional Perl libraries so that C<rt-mailgate>
-can connect.  You can use the C<--enable-ssl-mailgate> command to
-configure to automate the installation of these dependencies.  This is
-documented further in step 10 of the README.
+wire, as well as helping prevent phishing attacks.
 
 You should use a certificate signed by a reputable authority, or at very
 least a certificate signed by a consistent local CA, which you configure
index 5a9bd93..a5684e0 100644 (file)
@@ -52,7 +52,6 @@ spontaneously logged in as other users in the system.
 
         AddDefaultCharset UTF-8
 
-        Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
         ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
 
         DocumentRoot "/opt/rt4/share/html"
@@ -89,7 +88,6 @@ to return to the old default.
 
         AddDefaultCharset UTF-8
 
-        Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
         ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
 
         DocumentRoot "/opt/rt4/share/html"
@@ -187,10 +185,6 @@ With the nginx configuration:
             fastcgi_param  SERVER_NAME        $server_name;
             fastcgi_pass 127.0.0.1:9000;
         }
-
-        location /NoAuth/images {
-            root /opt/rt4/share/html;
-        }
     }
 
 
@@ -198,21 +192,16 @@ With the nginx configuration:
 
     server.modules += ( "mod_fastcgi" )
     $HTTP["host"] =~ "^rt.example.com" {
-        alias.url = (
-            "/NoAuth/images/" => "/opt/rt4/share/html/NoAuth/images/",
-        )
-        $HTTP["url"] !~ "^/NoAuth/images/" {
-            fastcgi.server = (
-                "/" => (
-                    "rt" => (
-                        "port"        => "9000",
-                        "bin-path"    => "/opt/rt4/sbin/rt-server.fcgi",
-                        "check-local" => "disable",
-                        "fix-root-scriptname" => "enable",
-                    )
+        fastcgi.server = (
+            "/" => (
+                "rt" => (
+                    "port"        => "9000",
+                    "bin-path"    => "/opt/rt4/sbin/rt-server.fcgi",
+                    "check-local" => "disable",
+                    "fix-root-scriptname" => "enable",
                 )
             )
-        }
+        )
     }
 
 
@@ -226,14 +215,13 @@ F<RT_SiteConfig.pm>:
     Set($WebPath, "/rt");
 
 Then you need to update your Apache configuration to match.  Prefix any RT
-related C<Alias>, C<ScriptAlias> and C<Location> directives with C</rt>.  You
+related C<ScriptAlias> and C<Location> directives with C</rt>.  You
 should also make sure C<DocumentRoot> is B<not> set to
 C</opt/rt4/share/html/>, otherwise RT's source will be served from C</>.
 
 For example: if you're using the sample FastCGI config above, you might change
 the relevant directives to:
 
-    Alias /rt/NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
     ScriptAlias /rt /opt/rt4/sbin/rt-server.fcgi/
 
     # Set DocumentRoot as appropriate for the other content you want to serve
index fdd8874..26ca3e9 100644 (file)
@@ -1,7 +1,7 @@
 #
 # RT was configured with:
 #
-#   $ ./configure --prefix=/www/var/rt/ --with-web-user=httpd --with-web-group=httpd --with-rt-group=uio-rt --with-apachectl=/www/sbin/apachectl --with-db-type=Pg --with-db-dba=postgres --disable-gpg
+#   $ ./configure --prefix=/www/var/rt/ --with-web-user=httpd --with-web-group=httpd --with-rt-group=uio-rt --with-db-type=Pg --with-db-dba=postgres --disable-gpg
 #
 
 package RT;
@@ -127,6 +127,26 @@ C<Set(@Plugins, (qw(Extension::QuickDelete RT::Extension::CommandByMail)));>
 
 Set(@Plugins, ());
 
+=item C<@StaticRoots>
+
+Set C<@StaticRoots> to serve extra paths with a static handler.  The
+contents of each hashref should be the the same arguments as
+L<Plack::Middleware::Static> takes.  These paths will be checked before
+any plugin or core static paths.
+
+Example:
+
+    Set( @StaticRoots,
+        {
+            path => qr{^/static/},
+            root => '/local/path/to/static/parent',
+        },
+    );
+
+=cut
+
+Set( @StaticRoots, () );
+
 =back
 
 
@@ -203,6 +223,15 @@ database.
 
 Set($DatabaseRequireSSL, undef);
 
+=item <$DatabaseAdmin>
+
+The name of the database administrator to connect to the database as
+during upgrades.
+
+=cut
+
+Set($DatabaseAdmin, "postgres");
+
 =back
 
 
@@ -221,7 +250,7 @@ message.
 
 =over 4
 
-=item C<$LogToSyslog>, C<$LogToScreen>
+=item C<$LogToSyslog>, C<$LogToSTDERR>
 
 The minimum level error that will be logged to the specific device.
 From lowest to highest priority, the levels are:
@@ -239,7 +268,7 @@ in your web server's error logs).
 =cut
 
 Set($LogToSyslog, "info");
-Set($LogToScreen, "info");
+Set($LogToSTDERR, "info");
 
 =item C<$LogToFile>, C<$LogDir>, C<$LogToFileNamed>
 
@@ -274,11 +303,9 @@ Set($LogStackTraces, "");
 
 =item C<@LogToSyslogConf>
 
-On Solaris or UnixWare, set to ( socket => 'inet' ).  Options here
-override any other options RT passes to L<Log::Dispatch::Syslog>.
-Other interesting flags include facility and logopt.  (See the
-L<Log::Dispatch::Syslog> documentation for more information.)  (Maybe
-ident too, if you have multiple RT installations.)
+Additional options to pass to L<Log::Dispatch::Syslog>; the most
+interesting flags include C<facility>, C<logopt>, and possibly C<ident>.
+See the L<Log::Dispatch::Syslog> documentation for more information.
 
 =cut
 
@@ -299,14 +326,7 @@ you're not dealing with historical C<$rtname> values, you'll likely
 never have to change this configuration.
 
 Be B<very careful> with it. Note that it overrides C<$rtname> for
-subject token matching and that you should use only "non-capturing"
-parenthesis grouping. For example:
-
-C<Set($EmailSubjectTagRegex, qr/(?:example.com|example.org)/i );>
-
-and NOT
-
-C<Set($EmailSubjectTagRegex, qr/(example.com|example.org)/i );>
+subject token matching.
 
 The setting below would make RT behave exactly as it does without the
 setting enabled.
@@ -318,8 +338,10 @@ setting enabled.
 =item C<$OwnerEmail>
 
 C<$OwnerEmail> is the address of a human who manages RT. RT will send
-errors generated by the mail gateway to this address.  This address
-should I<not> be an address that's managed by your RT instance.
+errors generated by the mail gateway to this address; it will also be
+displayed as the contact person on the RT's login page.  Because RT
+sends errors to this address, it should I<not> be an address that's
+managed by your RT instance, to avoid mail loops.
 
 =cut
 
@@ -387,9 +409,10 @@ already, you can generate a naive first pass regexp by using:
 
     perl etc/upgrade/generate-rtaddressregexp
 
-If left blank, RT will generate a regexp for you, based on your
-comment and correspond address settings on your queues; this comes at
-a small cost in start-up speed.
+If left blank, RT will compare each address to your configured
+C<$CorrespondAddress> and C<$CommentAddress> before searching for a
+Queue configured with a matching "Reply Address" or "Comment Address"
+on the Queue Admin page.
 
 =cut
 
@@ -423,13 +446,16 @@ Set($CanonicalizeOnCreate, 0);
 
 =item C<$ValidateUserEmailAddresses>
 
-If C<$ValidateUserEmailAddresses> is 1, RT will refuse to create
+By default C<$ValidateUserEmailAddresses> is 1, and RT will refuse to create
 users with an invalid email address (as specified in RFC 2822) or with
 an email address made of multiple email addresses.
 
+Set this to 0 to skip any email address validation.  Doing so may open up
+vulnerabilities.
+
 =cut
 
-Set($ValidateUserEmailAddresses, undef);
+Set($ValidateUserEmailAddresses, 1);
 
 =item C<@MailPlugins>
 
@@ -489,11 +515,8 @@ Set( $CheckMoreMSMailHeaders, 0);
 
 C<$MailCommand> defines which method RT will use to try to send mail.
 We know that 'sendmailpipe' works fairly well.  If 'sendmailpipe'
-doesn't work well for you, try 'sendmail'.  Other options are 'smtp'
-or 'qmail'.
-
-Note that you should remove the '-t' from C<$SendmailArguments> if you
-use 'sendmail' rather than 'sendmailpipe'
+doesn't work well for you, try 'sendmail'.  'qmail' is also a supported
+value.
 
 For testing purposes, or to simply disable sending mail out into the
 world, you can set C<$MailCommand> to 'testfile' which writes all mail
@@ -735,16 +758,14 @@ These options only take effect if C<$MailCommand> is 'sendmail' or
 =item C<$SendmailArguments>
 
 C<$SendmailArguments> defines what flags to pass to C<$SendmailPath>
-If you picked 'sendmailpipe', you MUST add a -t flag to
-C<$SendmailArguments> These options are good for most sendmail
-wrappers and work-a-likes.
+These options are good for most sendmail wrappers and work-a-likes.
 
 These arguments are good for sendmail brand sendmail 8 and newer:
-C<Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");>
+C<Set($SendmailArguments,"-oi -ODeliveryMode=b -OErrorMode=m");>
 
 =cut
 
-Set($SendmailArguments, "-oi -t");
+Set($SendmailArguments, "-oi");
 
 
 =item C<$SendmailBounceArguments>
@@ -768,39 +789,6 @@ Set($SendmailPath, "/usr/sbin/sendmail");
 
 =back
 
-=head2 SMTP configuration
-
-These options only take effect if C<$MailCommand> is 'smtp'
-
-=over 4
-
-=item C<$SMTPServer>
-
-C<$SMTPServer> should be set to the hostname of the SMTP server to use
-
-=cut
-
-Set($SMTPServer, undef);
-
-=item C<$SMTPFrom>
-
-C<$SMTPFrom> should be set to the 'From' address to use, if not the
-email's 'From'
-
-=cut
-
-Set($SMTPFrom, undef);
-
-=item C<$SMTPDebug>
-
-C<$SMTPDebug> should be set to 1 to debug SMTP mail sending
-
-=cut
-
-Set($SMTPDebug, 0);
-
-=back
-
 =head2 Other mailers
 
 =over 4
@@ -808,7 +796,7 @@ Set($SMTPDebug, 0);
 =item C<@MailParams>
 
 C<@MailParams> defines a list of options passed to $MailCommand if it
-is not 'sendmailpipe', 'sendmail', or 'smtp'
+is not 'sendmailpipe' or 'sendmail';
 
 =cut
 
@@ -826,11 +814,12 @@ Set(@MailParams, ());
 This determines the default stylesheet the RT web interface will use.
 RT ships with several themes by default:
 
-  web2            The default layout for RT 3.8
+  rudder          The default theme for RT 4.2
   aileron         The default layout for RT 4.0
+  web2            The default layout for RT 3.8
   ballard         Theme which doesn't rely on JavaScript for menuing
 
-This value actually specifies a directory in F<share/html/NoAuth/css/>
+This value actually specifies a directory in F<share/static/css/>
 from which RT will try to load the file main.css (which should @import
 any other files the stylesheet needs).  This allows you to easily and
 cleanly create your own stylesheets to apply to RT.  This option can
@@ -838,7 +827,7 @@ be overridden by users in their preferences.
 
 =cut
 
-Set($WebDefaultStylesheet, "aileron");
+Set($WebDefaultStylesheet, "rudder");
 
 =item C<$DefaultQueue>
 
@@ -877,6 +866,48 @@ custom field values from external sources at runtime.
 
 Set(@CustomFieldValuesSources, ());
 
+=item C<%CustomFieldGroupings>
+
+This option affects the display of ticket and user custom fields in the
+web interface. It does not address the sorting of custom fields within
+the groupings; which is controlled by the Ticket Custom Fields tab in
+Queue Configuration in the Admin UI.
+
+A nested datastructure defines how to group together custom fields
+under a mix of built-in and arbitrary headings ("groupings").
+
+Set C<%CustomFieldGroupings> to a nested structure similar to the following:
+
+    Set(%CustomFieldGroupings,
+        'RT::Ticket' => [
+            'Grouping Name'     => ['CF Name', 'Another CF'],
+            'Another Grouping'  => ['Some CF'],
+            'Dates'             => ['Shipped date'],
+        ],
+        'RT::User' => [
+            'Phones' => ['Fax number'],
+        ],
+    );
+
+The first level keys are record types for which CFs may be used, and the
+values are either hashrefs or arrayrefs -- if arrayrefs, then the
+ordering is preserved during display, otherwise groupings are displayed
+alphabetically.  The second level keys are the grouping names and the
+values are array refs containing a list of CF names.
+
+There are several special built-in groupings which RT displays in
+specific places (usually the collapsible box of the same title).  The
+ordering of these standard groupings cannot be modified.  You may also
+only append Custom Fields to the list in these boxes, not reorder or
+remove core fields.
+
+For C<RT::Ticket>, these groupings are: C<Basics>, C<Dates>, C<Links>, C<People>
+
+For C<RT::User>: C<Identity>, C<Access control>, C<Location>, C<Phones>
+
+Extensions may also add their own built-in groupings, refer to the individual
+extension documentation for those.
+
 =item C<$CanonicalizeRedirectURLs>
 
 Set C<$CanonicalizeRedirectURLs> to 1 to use C<$WebURL> when
@@ -893,32 +924,25 @@ enable this option.
 
 Set($CanonicalizeRedirectURLs, 0);
 
-=item C<@JSFiles>
+=item C<$CanonicalizeURLsInFeeds>
 
-A list of JavaScript files to be included in head.  Removing any of
-the default entries is not suggested.
+Set C<$CanonicalizeURLsInFeeds> to 1 to use C<$WebURL> in feeds
+rather than the one we get from request.
 
-If you're a plugin author, refer to RT->AddJavaScript.
+If you use RT behind a reverse proxy, you almost certainly want to
+enable this option.
 
 =cut
 
-Set(@JSFiles, qw/
-    jquery-1.4.2.min.js
-    jquery_noconflict.js
-    jquery-ui-1.8.4.custom.min.js
-    jquery-ui-timepicker-addon.js
-    jquery-ui-patch-datepicker.js
-    jquery.cookie.js
-    titlebox-state.js
-    util.js
-    userautocomplete.js
-    jquery.event.hover-1.0.js
-    superfish.js
-    supersubs.js
-    jquery.supposition.js
-    history-folding.js
-    late.js
-/);
+Set($CanonicalizeURLsInFeeds, 0);
+
+=item C<@JSFiles>
+
+A list of additional JavaScript files to be included in head.
+
+=cut
+
+Set(@JSFiles, qw//);
 
 =item C<$JSMinPath>
 
@@ -945,14 +969,73 @@ Set(@CSSFiles, qw//);
 
 =item C<$UsernameFormat>
 
-This determines how user info is displayed. 'concise' will show one of
-either NickName, RealName, Name or EmailAddress, depending on what
-exists and whether the user is privileged or not. 'verbose' will show
-RealName and EmailAddress.
+This determines how user info is displayed. 'concise' will show the
+first of RealName, Name or EmailAddress that has a value. 'verbose' will
+show EmailAddress, and the first of RealName or Name which is defined.
+
+=cut
+
+Set($UsernameFormat, "role");
+
+=item C<$UserSearchResultFormat>
+
+This controls the display of lists of users returned from the User
+Summary Search. The display of users in the Admin interface is
+controlled by C<%AdminSearchResultFormat>.
+
+=cut
+
+Set($UserSearchResultFormat,
+         q{ '<a href="__WebPath__/User/Summary.html?id=__id__">__id__</a>/TITLE:#'}
+        .q{,'<a href="__WebPath__/User/Summary.html?id=__id__">__Name__</a>/TITLE:Name'}
+        .q{,__RealName__, __EmailAddress__}
+);
+
+=item C<@UserSummaryPortlets>
+
+A list of portlets to be displayed on the User Summary page.
+By default, we show all of the available portlets.
+Extensions may provide their own portlets for this page.
+
+=cut
+
+Set(@UserSummaryPortlets, (qw/ExtraInfo CreateTicket ActiveTickets InactiveTickets/));
+
+=item C<$UserSummaryExtraInfo>
+
+This controls what information is displayed on the User Summary
+portal. By default the user's Real Name, Email Address and Username
+are displayed. You can remove these or add more as needed. 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.
 
 =cut
 
-Set($UsernameFormat, "concise");
+Set($UserSummaryExtraInfo, "RealName, EmailAddress, Name");
+
+=item C<$UserSummaryTicketListFormat>
+
+Control the appearance of the Active and Inactive ticket lists in the
+User Summary.
+
+=cut
+
+Set($UserSummaryTicketListFormat, 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',
+       Status,
+       QueueName,
+       Owner,
+       Priority,
+       '__NEWLINE__',
+       '',
+       '<small>__Requestors__</small>',
+       '<small>__CreatedRelative__</small>',
+       '<small>__ToldRelative__</small>',
+       '<small>__LastUpdatedRelative__</small>',
+       '<small>__TimeLeft__</small>'
+});
 
 =item C<$WebBaseURL>, C<$WebURL>
 
@@ -986,7 +1069,7 @@ Define the directory name to be used for images in RT web documents.
 
 =cut
 
-Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/");
+Set($WebImagesURL, RT->Config->Get('WebPath') . "/static/images/");
 
 =item C<$LogoURL>
 
@@ -1100,6 +1183,19 @@ At this time, this feature only applies to MySQL and PostgreSQL.
 
 Set($ChartsTimezonesInDB, 0);
 
+=item C<@ChartColors>
+
+An array of 6-digit hexadecimal RGB color values used for chart series.  By
+default there are 12 distinct colors.
+
+=cut
+
+Set(@ChartColors, qw(
+    66cc66 ff6666 ffcc66 663399
+    3333cc 339933 993333 996633
+    33cc33 cc3333 cc9933 6633cc
+));
+
 =back
 
 
@@ -1136,7 +1232,7 @@ user's customized homepage ("RT at a glance").
 Set(
     $HomepageComponents,
     [
-        qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches) # loc_qw
+        qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches FindUser) # loc_qw
     ]
 );
 
@@ -1152,16 +1248,13 @@ Set(
 =item C<$UseSQLForACLChecks>
 
 Historically, ACLs were checked on display, which could lead to empty
-search pages and wrong ticket counts.  Set C<$UseSQLForACLChecks> to 1
-to limit search results in SQL instead, which eliminates these
-problems.
-
-This option is still relatively new; it may result in performance
-problems in some cases, or significant speedups in others.
+search pages and wrong ticket counts.  Set C<$UseSQLForACLChecks> to 0
+to go back to this method; this will reduce the complexity of the
+generated SQL statements, at the cost of the aforementioned bugs.
 
 =cut
 
-Set($UseSQLForACLChecks, undef);
+Set($UseSQLForACLChecks, 1);
 
 =item C<$TicketsItemMapSize>
 
@@ -1201,7 +1294,7 @@ Set ($DefaultSearchResultFormat, qq{
    '<B><A HREF="__WebPath__/Ticket/Display.html?id=__id__">__Subject__</a></B>/TITLE:Subject',
    Status,
    QueueName,
-   OwnerName,
+   Owner,
    Priority,
    '__NEWLINE__',
    '',
@@ -1223,7 +1316,7 @@ Set($DefaultSelfServiceSearchResultFormat, qq{
    '<B><A HREF="__WebPath__/SelfService/Display.html?id=__id__">__Subject__</a></B>/TITLE:Subject',
    Status,
    Requestors,
-   OwnerName});
+   Owner});
 
 =item C<%FullTextSearch>
 
@@ -1303,6 +1396,20 @@ Ticket/Display.html.  This option can be controlled by users also.
 
 Set($MoreAboutRequestorTicketList, "Active");
 
+=item C<$MoreAboutRequestorTicketListFormat>
+
+Control the appearance of the ticket lists in the 'More About Requestors' box.
+
+=cut
+
+Set($MoreAboutRequestorTicketListFormat, q{
+       '<a href="__WebPath__/Ticket/Display.html?id=__id__">__id__</a>',
+       '__Owner__',
+       '<a href="__WebPath__/Ticket/Display.html?id=__id__">__Subject__</a>',
+       '__Status__',
+});
+
+
 =item C<$MoreAboutRequestorExtraInfo>
 
 By default, the 'More about requestor' box on Ticket/Display.html
@@ -1364,6 +1471,12 @@ 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.
 
+Autocompleter is automatically turned on if list contains more than
+50 users, but penalty of executing potentially slow query is still paid.
+
+Drop down doesn't show unprivileged users. If your setup allows unprivileged
+to own ticket then you have to enable autocompleting.
+
 =cut
 
 Set($AutocompleteOwners, 0);
@@ -1378,15 +1491,19 @@ is ignored. Helpful when owners list is huge in the query builder.
 
 Set($AutocompleteOwnersForSearch, 0);
 
-=item C<$UserAutocompleteFields>
+=item C<$UserSearchFields>
 
-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 !=.
+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($UserAutocompleteFields, {
+Set($UserSearchFields, {
     EmailAddress => 'STARTSWITH',
     Name         => 'STARTSWITH',
     RealName     => 'LIKE',
@@ -1402,6 +1519,23 @@ your users.
 
 Set($AllowUserAutocompleteForUnprivileged, 0);
 
+=item C<$TicketAutocompleteFields>
+
+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.
+
+=cut
+
+Set( $TicketAutocompleteFields, {
+    id      => 'STARTSWITH',
+    Subject => 'LIKE',
+});
+
 =item C<$DisplayTicketAfterQuickCreate>
 
 Enable this to redirect to the created ticket display page
@@ -1508,15 +1642,6 @@ for Rich Text settings.
 Set($MessageBoxWidth, undef);
 Set($MessageBoxHeight, 15);
 
-=item C<$MessageBoxWrap>
-
-Wrapping is disabled when using MessageBoxRichText because of a bad
-interaction between IE and wrapping with the Rich Text Editor.
-
-=cut
-
-Set($MessageBoxWrap, "SOFT");
-
 =item C<$MessageBoxRichText>
 
 Should "rich text" editing be enabled? This option lets your users
@@ -1570,15 +1695,39 @@ option can be&nbs