From 84fb5b46b6d278400211552181bac9e6def7d09d Mon Sep 17 00:00:00 2001 From: Mikal Kolbein Gule Date: Mon, 30 Apr 2012 12:22:09 +0200 Subject: [PATCH] Initial commit 4.0.5-3 --- bin/jsmin | Bin 0 -> 9718 bytes bin/rt | 2616 ++++ bin/rt-crontool | 487 + bin/rt-mailgate | 533 + docs/README | 344 + docs/UPGRADING-2.0 | 7 + docs/UPGRADING-3.0 | 18 + docs/UPGRADING-3.2 | 11 + docs/UPGRADING-3.4 | 12 + docs/UPGRADING-3.6 | 49 + docs/UPGRADING-3.8 | 192 + docs/UPGRADING-4.0 | 108 + docs/UPGRADING.mysql | 85 + docs/customizing/articles_introduction.pod | 155 + docs/customizing/templates.pod | 132 + docs/customizing/timezones_in_charts.pod | 88 + docs/extending/clickable_links.pod | 184 + docs/extending/external_custom_fields.pod | 90 + docs/extending/using_forms_widgets.pod | 113 + docs/full_text_indexing.pod | 174 + docs/glossary.pod | 30 + docs/hacking.pod | 301 + docs/network-diagram.svg | 6095 ++++++++ docs/schema.dot | 99 + docs/security.pod | 77 + docs/web_deployment.pod | 233 + etc/RT_Config.pm | 2671 ++++ etc/RT_Config.pm.orig | 2646 ++++ etc/acl.Oracle | 4 + etc/acl.Pg | 86 + etc/acl.mysql | 25 + etc/initialdata | 625 + etc/schema.Oracle | 481 + etc/schema.Pg | 715 + etc/schema.SQLite | 506 + etc/schema.mysql | 499 + lib/RT.pm | 818 + lib/RT/ACE.pm | 749 + lib/RT/ACL.pm | 337 + lib/RT/Action.pm | 197 + lib/RT/Action/AutoOpen.pm | 117 + lib/RT/Action/Autoreply.pm | 126 + lib/RT/Action/CreateTickets.pm | 1279 ++ lib/RT/Action/EscalatePriority.pm | 162 + lib/RT/Action/ExtractSubjectTag.pm | 97 + lib/RT/Action/LinearEscalate.pm | 276 + lib/RT/Action/Notify.pm | 166 + lib/RT/Action/NotifyAsComment.pm | 75 + lib/RT/Action/NotifyGroup.pm | 206 + lib/RT/Action/NotifyGroupAsComment.pm | 83 + lib/RT/Action/RecordComment.pm | 116 + lib/RT/Action/RecordCorrespondence.pm | 117 + lib/RT/Action/ResolveMembers.pm | 102 + lib/RT/Action/SendEmail.pm | 1139 ++ lib/RT/Action/SetPriority.pm | 77 + lib/RT/Action/SetStatus.pm | 152 + lib/RT/Action/UserDefined.pm | 89 + lib/RT/Approval.pm | 67 + lib/RT/Approval/Rule.pm | 81 + lib/RT/Approval/Rule/Created.pm | 73 + lib/RT/Approval/Rule/NewPending.pm | 99 + lib/RT/Approval/Rule/Passed.pm | 123 + lib/RT/Approval/Rule/Rejected.pm | 124 + lib/RT/Article.pm | 881 ++ lib/RT/Articles.pm | 925 ++ lib/RT/Attachment.pm | 1040 ++ lib/RT/Attachments.pm | 252 + lib/RT/Attribute.pm | 632 + lib/RT/Attributes.pm | 232 + lib/RT/Base.pm | 168 + lib/RT/CachedGroupMember.pm | 438 + lib/RT/CachedGroupMembers.pm | 188 + lib/RT/Class.pm | 621 + lib/RT/Classes.pm | 104 + lib/RT/Condition.pm | 211 + lib/RT/Condition/AnyTransaction.pm | 69 + lib/RT/Condition/BeforeDue.pm | 83 + lib/RT/Condition/CloseTicket.pm | 81 + lib/RT/Condition/Overdue.pm | 84 + lib/RT/Condition/OwnerChange.pm | 75 + lib/RT/Condition/PriorityChange.pm | 74 + lib/RT/Condition/PriorityExceeds.pm | 72 + lib/RT/Condition/QueueChange.pm | 72 + lib/RT/Condition/ReopenTicket.pm | 86 + lib/RT/Condition/StatusChange.pm | 142 + lib/RT/Condition/UserDefined.pm | 74 + lib/RT/Config.pm | 1366 ++ lib/RT/Crypt/GnuPG.pm | 2487 +++ lib/RT/CurrentUser.pm | 313 + lib/RT/CustomField.pm | 2086 +++ lib/RT/CustomFieldValue.pm | 336 + lib/RT/CustomFieldValues.pm | 113 + lib/RT/CustomFieldValues/External.pm | 219 + lib/RT/CustomFieldValues/Groups.pm | 80 + lib/RT/CustomFields.pm | 398 + lib/RT/Dashboard.pm | 459 + lib/RT/Dashboard/Mailer.pm | 580 + lib/RT/Dashboards.pm | 112 + lib/RT/Date.pm | 1074 ++ lib/RT/EmailParser.pm | 626 + lib/RT/Generated.pm | 81 + lib/RT/Generated.pm.in | 81 + lib/RT/Graph/Tickets.pm | 354 + lib/RT/Group.pm | 1413 ++ lib/RT/GroupMember.pm | 492 + lib/RT/GroupMembers.pm | 164 + lib/RT/Groups.pm | 475 + lib/RT/Handle.pm | 1185 ++ lib/RT/I18N.pm | 568 + lib/RT/I18N/cs.pm | 125 + lib/RT/I18N/i_default.pm | 108 + lib/RT/I18N/ru.pm | 83 + lib/RT/Installer.pm | 318 + lib/RT/Interface/CLI.pm | 253 + lib/RT/Interface/Email.pm | 1867 +++ lib/RT/Interface/Email/Auth/GnuPG.pm | 256 + lib/RT/Interface/Email/Auth/MailFrom.pm | 182 + lib/RT/Interface/REST.pm | 310 + lib/RT/Interface/Web.pm | 3132 ++++ lib/RT/Interface/Web/Handler.pm | 298 + lib/RT/Interface/Web/Menu.pm | 314 + lib/RT/Interface/Web/QueryBuilder.pm | 56 + lib/RT/Interface/Web/QueryBuilder/Tree.pm | 294 + .../Interface/Web/QueryBuilder/Tree.pm.orig | 294 + lib/RT/Interface/Web/QueryBuilder/Tree.pm.rej | 20 + lib/RT/Interface/Web/Request.pm | 168 + lib/RT/Interface/Web/Session.pm | 285 + lib/RT/Lifecycle.pm | 670 + lib/RT/Link.pm | 451 + lib/RT/Links.pm | 186 + lib/RT/ObjectClass.pm | 222 + lib/RT/ObjectClasses.pm | 87 + lib/RT/ObjectCustomField.pm | 424 + lib/RT/ObjectCustomFieldValue.pm | 758 + lib/RT/ObjectCustomFieldValues.pm | 175 + lib/RT/ObjectCustomFields.pm | 155 + lib/RT/ObjectTopic.pm | 214 + lib/RT/ObjectTopics.pm | 115 + lib/RT/Plugin.pm | 133 + lib/RT/Principal.pm | 822 + lib/RT/Principals.pm | 97 + lib/RT/Queue.pm | 1564 ++ lib/RT/Queues.pm | 131 + lib/RT/Record.pm | 1954 +++ lib/RT/Reminders.pm | 163 + lib/RT/Report/Tickets.pm | 329 + lib/RT/Report/Tickets/Entry.pm | 88 + lib/RT/Rule.pm | 119 + lib/RT/Ruleset.pm | 87 + lib/RT/SQL.pm | 296 + lib/RT/SavedSearch.pm | 174 + lib/RT/SavedSearches.pm | 122 + lib/RT/Scrip.pm | 1021 ++ lib/RT/ScripAction.pm | 416 + lib/RT/ScripActions.pm | 112 + lib/RT/ScripCondition.pm | 388 + lib/RT/ScripConditions.pm | 110 + lib/RT/Scrips.pm | 448 + lib/RT/Search.pm | 135 + lib/RT/Search/ActiveTicketsInQueue.pm | 91 + lib/RT/Search/FromSQL.pm | 99 + lib/RT/Search/Googleish.pm | 257 + lib/RT/SearchBuilder.pm | 365 + lib/RT/SearchBuilder.pm.orig | 352 + lib/RT/SharedSetting.pm | 518 + lib/RT/SharedSettings.pm | 155 + lib/RT/Shredder.pm | 873 ++ lib/RT/Shredder/ACE.pm | 101 + lib/RT/Shredder/Attachment.pm | 136 + lib/RT/Shredder/CachedGroupMember.pm | 143 + lib/RT/Shredder/Constants.pm | 144 + lib/RT/Shredder/CustomField.pm | 126 + lib/RT/Shredder/CustomFieldValue.pm | 94 + lib/RT/Shredder/Dependencies.pm | 149 + lib/RT/Shredder/Dependency.pm | 112 + lib/RT/Shredder/Exceptions.pm | 113 + lib/RT/Shredder/Group.pm | 185 + lib/RT/Shredder/GroupMember.pm | 183 + lib/RT/Shredder/Link.pm | 140 + lib/RT/Shredder/ObjectCustomFieldValue.pm | 116 + lib/RT/Shredder/POD.pm | 130 + lib/RT/Shredder/Plugin.pm | 253 + lib/RT/Shredder/Plugin/Attachments.pm | 141 + lib/RT/Shredder/Plugin/Base.pm | 188 + lib/RT/Shredder/Plugin/Base/Dump.pm | 70 + lib/RT/Shredder/Plugin/Base/Search.pm | 143 + lib/RT/Shredder/Plugin/Objects.pm | 107 + lib/RT/Shredder/Plugin/SQLDump.pm | 96 + lib/RT/Shredder/Plugin/Summary.pm | 188 + lib/RT/Shredder/Plugin/Tickets.pm | 153 + lib/RT/Shredder/Plugin/Users.pm | 254 + lib/RT/Shredder/Principal.pm | 127 + lib/RT/Shredder/Queue.pm | 107 + lib/RT/Shredder/Record.pm | 273 + lib/RT/Shredder/Scrip.pm | 130 + lib/RT/Shredder/ScripAction.pm | 100 + lib/RT/Shredder/ScripCondition.pm | 101 + lib/RT/Shredder/Template.pm | 120 + lib/RT/Shredder/Ticket.pm | 126 + lib/RT/Shredder/Transaction.pm | 115 + lib/RT/Shredder/User.pm | 191 + lib/RT/Squish.pm | 122 + lib/RT/Squish/CSS.pm | 105 + lib/RT/Squish/JS.pm | 127 + lib/RT/StyleGuide.pod | 930 ++ lib/RT/System.pm | 263 + lib/RT/Template.pm | 972 ++ lib/RT/Templates.pm | 175 + lib/RT/Test.pm | 1535 ++ lib/RT/Test/Apache.pm | 270 + lib/RT/Test/Email.pm | 130 + lib/RT/Test/GnuPG.pm | 360 + lib/RT/Test/Web.pm | 373 + lib/RT/Ticket.pm | 4192 +++++ lib/RT/Tickets.pm | 3552 +++++ lib/RT/Tickets_SQL.pm | 423 + lib/RT/Topic.pm | 376 + lib/RT/Topics.pm | 119 + lib/RT/Transaction.pm | 1612 ++ lib/RT/Transactions.pm | 174 + lib/RT/URI.pm | 271 + lib/RT/URI/a.pm | 92 + lib/RT/URI/base.pm | 147 + lib/RT/URI/fsck_com_article.pm | 216 + lib/RT/URI/fsck_com_rt.pm | 228 + lib/RT/URI/t.pm | 77 + lib/RT/User.pm | 2341 +++ lib/RT/Users.pm | 585 + lib/RT/Util.pm | 135 + local/bin/cron-escalate | 42 + local/bin/rt-delete.pl | 49 + local/bin/rt-get-messages | 24 + local/bin/rt-get-messages-test | 24 + local/bin/rt-remind | 379 + local/bin/rt-update-groups | 285 + local/html/Admin/Tools/BecomeUser.html | 112 + .../UiOCallbacks/Elements/ColumnMap/Once | 31 + .../UiOCallbacks/Elements/Header/Head | 1 + .../UiOCallbacks/Elements/Login/AfterForm | 162 + .../UiOCallbacks/Elements/Login/BeforeForm | 45 + .../UiOCallbacks/Elements/ShowUserConcise | 67 + .../UiOCallbacks/Elements/Tabs/Privileged | 82 + .../UiOCallbacks/Elements/Tabs/TicketMenu | 18 + .../Ticket/Display.html/BeforeActionList | 49 + .../UiOCallbacks/Ticket/Elements/Tabs/Default | 49 + local/html/Elements/ShowUserConcise | 67 + local/html/Helpers/Autocomplete/Users | 4 + local/html/NoAuth/css/3.4-compat/InHeader | 78 + local/html/NoAuth/css/3.4-compat/base.css | 62 + local/html/NoAuth/css/3.4-compat/boxes.css | 191 + .../NoAuth/css/3.4-compat/images/dhandler | 8 + .../images/source/background-gradient.png | Bin 0 -> 394 bytes local/html/NoAuth/css/3.4-compat/layout.css | 210 + local/html/NoAuth/css/3.4-compat/main.css | 62 + local/html/NoAuth/css/3.4-compat/misc.css | 58 + local/html/NoAuth/css/3.4-compat/msie-pie.css | 60 + local/html/NoAuth/css/3.4-compat/msie.css | 250 + local/html/NoAuth/css/3.4-compat/msie6.css | 96 + local/html/NoAuth/css/3.4-compat/nav.css | 291 + .../NoAuth/css/3.4-compat/ticket-lists.css | 236 + .../NoAuth/css/3.4-compat/ticket-search.css | 244 + local/html/NoAuth/css/3.4-compat/ticket.css | 280 + local/html/NoAuth/css/3.5-default/InHeader | 78 + local/html/NoAuth/css/3.5-default/base.css | 62 + local/html/NoAuth/css/3.5-default/boxes.css | 191 + .../NoAuth/css/3.5-default/images/dhandler | 8 + .../images/source/background-gradient.png | Bin 0 -> 394 bytes local/html/NoAuth/css/3.5-default/layout.css | 210 + local/html/NoAuth/css/3.5-default/main.css | 62 + local/html/NoAuth/css/3.5-default/misc.css | 58 + .../html/NoAuth/css/3.5-default/msie-pie.css | 60 + local/html/NoAuth/css/3.5-default/msie.css | 250 + local/html/NoAuth/css/3.5-default/msie6.css | 96 + local/html/NoAuth/css/3.5-default/nav.css | 291 + .../NoAuth/css/3.5-default/ticket-lists.css | 236 + .../NoAuth/css/3.5-default/ticket-search.css | 244 + local/html/NoAuth/css/3.5-default/ticket.css | 280 + local/html/NoAuth/css/web2/layout.css | 211 + local/html/NoAuth/images/so_logo.gif | Bin 0 -> 1842 bytes local/html/NoAuth/images/uio-name.gif | Bin 0 -> 9022 bytes local/html/NoAuth/images/uio_logo.gif | Bin 0 -> 4333 bytes local/html/Ticket/Export.html | 202 + local/html/Ticket/ForkAskQueue.html | 37 + .../RT/Interface/Email/Filter/SpamHeader.pm | 115 + .../RT/Interface/Email/Filter/TakeAction.pm | 684 + local/lib/RT/Transaction_Local.pm | 11 + local/lib/RT/User_Local.not-pm | 545 + .../man/auto/RT/Authen/ExternalAuth/.packlist | 6 + local/man/auto/RT/Extension/Drafts/.packlist | 2 + local/man/man3/RT::Authen::ExternalAuth.3pm | 206 + local/man/man3/RT::Extension::Drafts.3pm | 183 + .../etc/RT_SiteConfig.pm | 183 + .../ExternalAuth/Elements/Header/Head | 11 + .../Callbacks/ExternalAuth/autohandler/Auth | 1 + .../ExternalAuth/autohandler/Session | 12 + .../html/Elements/DoAuth | 22 + .../lib/RT/Authen/ExternalAuth.pm | 557 + .../lib/RT/Authen/ExternalAuth/DBI.pm | 457 + .../lib/RT/Authen/ExternalAuth/DBI/Cookie.pm | 31 + .../lib/RT/Authen/ExternalAuth/LDAP.pm | 480 + .../lib/perllocal.pod | 22 + .../etc/RT_SiteConfig.pm | 183 + .../ExternalAuth/Elements/Header/Head | 11 + .../Callbacks/ExternalAuth/autohandler/Auth | 1 + .../ExternalAuth/autohandler/Session | 12 + .../html/Elements/DoAuth | 22 + .../lib/RT/Authen/ExternalAuth.pm | 811 + .../lib/RT/Authen/ExternalAuth/DBI.pm | 443 + .../lib/RT/Authen/ExternalAuth/DBI/Cookie.pm | 31 + .../lib/RT/Authen/ExternalAuth/LDAP.pm | 418 + .../lib/RT/Authen/ExternalAuth/Test.pm | 147 + .../lib/perllocal.pod | 22 + .../etc/RT_SiteConfig.pm | 183 + .../ExternalAuth/Elements/Header/Head | 11 + .../Callbacks/ExternalAuth/autohandler/Auth | 1 + .../ExternalAuth/autohandler/Session | 12 + .../html/Elements/DoAuth | 22 + .../lib/RT/Authen/ExternalAuth.pm | 811 + .../lib/RT/Authen/ExternalAuth/DBI.pm | 443 + .../lib/RT/Authen/ExternalAuth/DBI/Cookie.pm | 31 + .../lib/RT/Authen/ExternalAuth/LDAP.pm | 418 + .../lib/RT/Authen/ExternalAuth/Test.pm | 147 + .../RT-Authen-ExternalAuth/lib/perllocal.pod | 22 + .../Drafts/Ticket/Display.html/BeforeDisplay | 15 + .../Drafts/Ticket/Update.html/AfterMessageBox | 23 + .../Drafts/Ticket/Update.html/Initial | 12 + .../lib/RT/Extension/Drafts.pm | 81 + .../RT-Extension-Drafts/lib/perllocal.pod | 22 + local/plugins/RT-Extension-Drafts/po/fr.po | 15 + sbin/rt-attributes-viewer | 122 + sbin/rt-clean-sessions | 190 + sbin/rt-dump-metadata | 251 + sbin/rt-email-dashboards | 173 + sbin/rt-email-digest | 376 + sbin/rt-email-group-admin | 509 + sbin/rt-fulltext-indexer | 453 + sbin/rt-preferences-viewer | 149 + sbin/rt-server | 283 + sbin/rt-server.fcgi | 286 + sbin/rt-session-viewer | 121 + sbin/rt-setup-database | 588 + sbin/rt-setup-fulltext-index | 714 + sbin/rt-shredder | 327 + sbin/rt-test-dependencies | 661 + sbin/rt-validator | 1182 ++ sbin/standalone_httpd | 282 + share/doc/README | 332 + share/fonts/Droid.README | 5 + share/fonts/DroidSans.ttf | Bin 0 -> 149076 bytes share/fonts/DroidSansFallback.ttf | Bin 0 -> 3022632 bytes .../Admin/Articles/Classes/CustomFields.html | 64 + .../Admin/Articles/Classes/GroupRights.html | 73 + share/html/Admin/Articles/Classes/Modify.html | 199 + .../html/Admin/Articles/Classes/Objects.html | 154 + share/html/Admin/Articles/Classes/Topics.html | 68 + .../Admin/Articles/Classes/UserRights.html | 72 + share/html/Admin/Articles/Classes/index.html | 91 + share/html/Admin/Articles/Elements/Topics | 215 + share/html/Admin/Articles/index.html | 50 + .../html/Admin/CustomFields/GroupRights.html | 78 + share/html/Admin/CustomFields/Modify.html | 313 + share/html/Admin/CustomFields/Objects.html | 162 + share/html/Admin/CustomFields/UserRights.html | 76 + share/html/Admin/CustomFields/index.html | 113 + share/html/Admin/Elements/AddCustomFieldValue | 88 + share/html/Admin/Elements/ConfigureMyRT | 82 + share/html/Admin/Elements/CreateUserCalled | 50 + share/html/Admin/Elements/EditCustomField | 159 + .../html/Admin/Elements/EditCustomFieldValues | 105 + .../Elements/EditCustomFieldValuesSource | 82 + share/html/Admin/Elements/EditCustomFields | 183 + .../html/Admin/Elements/EditQueueWatcherGroup | 56 + share/html/Admin/Elements/EditQueueWatchers | 79 + share/html/Admin/Elements/EditRights | 175 + .../Admin/Elements/EditRightsCategoryTabs | 129 + share/html/Admin/Elements/EditScrip | 204 + share/html/Admin/Elements/EditScrips | 119 + share/html/Admin/Elements/EditTemplates | 124 + share/html/Admin/Elements/EditUserComments | 56 + share/html/Admin/Elements/Header | 52 + .../Admin/Elements/ListGlobalCustomFields | 61 + share/html/Admin/Elements/ListGlobalScrips | 68 + share/html/Admin/Elements/ModifyTemplate | 81 + share/html/Admin/Elements/PickCustomFields | 98 + share/html/Admin/Elements/PickObjects | 81 + share/html/Admin/Elements/Portal | 52 + share/html/Admin/Elements/QueueRightsForUser | 64 + share/html/Admin/Elements/SelectCustomField | 71 + .../Elements/SelectCustomFieldLookupType | 60 + .../Elements/SelectCustomFieldRenderType | 70 + .../html/Admin/Elements/SelectCustomFieldType | 60 + share/html/Admin/Elements/SelectGroups | 62 + share/html/Admin/Elements/SelectModifyGroup | 57 + share/html/Admin/Elements/SelectModifyQueue | 57 + share/html/Admin/Elements/SelectModifyUser | 73 + .../html/Admin/Elements/SelectNewGroupMembers | 91 + share/html/Admin/Elements/SelectRights | 120 + share/html/Admin/Elements/SelectScrip | 72 + share/html/Admin/Elements/SelectScripAction | 82 + .../html/Admin/Elements/SelectScripCondition | 82 + .../Admin/Elements/SelectSingleOrMultiple | 67 + share/html/Admin/Elements/SelectStage | 75 + share/html/Admin/Elements/SelectTemplate | 77 + share/html/Admin/Elements/SelectUsers | 66 + share/html/Admin/Elements/ShowKeyInfo | 94 + .../Global/CustomFields/Class-Article.html | 54 + .../Admin/Global/CustomFields/Groups.html | 55 + .../Global/CustomFields/Queue-Tickets.html | 55 + .../CustomFields/Queue-Transactions.html | 55 + .../Admin/Global/CustomFields/Queues.html | 55 + .../html/Admin/Global/CustomFields/Users.html | 55 + .../html/Admin/Global/CustomFields/index.html | 104 + share/html/Admin/Global/GroupRights.html | 63 + share/html/Admin/Global/MyRT.html | 112 + share/html/Admin/Global/Scrip.html | 63 + share/html/Admin/Global/Scrips.html | 58 + share/html/Admin/Global/Template.html | 111 + share/html/Admin/Global/Templates.html | 58 + share/html/Admin/Global/Topics.html | 63 + share/html/Admin/Global/UserRights.html | 59 + share/html/Admin/Global/index.html | 50 + share/html/Admin/Groups/GroupRights.html | 73 + share/html/Admin/Groups/History.html | 63 + share/html/Admin/Groups/Members.html | 171 + share/html/Admin/Groups/Modify.html | 180 + share/html/Admin/Groups/UserRights.html | 74 + share/html/Admin/Groups/index.html | 139 + share/html/Admin/Queues/CustomField.html | 74 + share/html/Admin/Queues/CustomFields.html | 67 + share/html/Admin/Queues/GroupRights.html | 78 + share/html/Admin/Queues/History.html | 63 + share/html/Admin/Queues/Modify.html | 254 + share/html/Admin/Queues/People.html | 203 + share/html/Admin/Queues/Scrip.html | 77 + share/html/Admin/Queues/Scrips.html | 72 + share/html/Admin/Queues/Template.html | 124 + share/html/Admin/Queues/Templates.html | 65 + share/html/Admin/Queues/UserRights.html | 82 + share/html/Admin/Queues/index.html | 124 + share/html/Admin/Tools/Configuration.html | 272 + share/html/Admin/Tools/Queries.html | 129 + .../html/Admin/Tools/Shredder/Dumps/dhandler | 65 + .../Tools/Shredder/Elements/DumpFileLink | 61 + .../Tools/Shredder/Elements/Error/NoRights | 51 + .../Tools/Shredder/Elements/Error/NoStorage | 56 + .../Shredder/Elements/Object/RT--Attachment | 54 + .../Tools/Shredder/Elements/Object/RT--Ticket | 53 + .../Tools/Shredder/Elements/Object/RT--User | 53 + .../Tools/Shredder/Elements/ObjectCheckBox | 66 + .../Tools/Shredder/Elements/PluginArguments | 62 + .../Admin/Tools/Shredder/Elements/PluginHelp | 75 + .../Tools/Shredder/Elements/SelectObjects | 67 + .../Tools/Shredder/Elements/SelectPlugin | 73 + share/html/Admin/Tools/Shredder/autohandler | 60 + share/html/Admin/Tools/Shredder/index.html | 182 + share/html/Admin/Tools/Theme.html | 309 + share/html/Admin/Tools/index.html | 50 + share/html/Admin/Users/CustomFields.html | 66 + share/html/Admin/Users/GnuPG.html | 109 + share/html/Admin/Users/History.html | 63 + share/html/Admin/Users/Memberships.html | 136 + share/html/Admin/Users/Modify.html | 415 + share/html/Admin/Users/MyRT.html | 128 + share/html/Admin/Users/index.html | 173 + share/html/Admin/autohandler | 55 + share/html/Admin/index.html | 53 + share/html/Approvals/Display.html | 69 + share/html/Approvals/Elements/Approve | 110 + .../html/Approvals/Elements/PendingMyApproval | 108 + share/html/Approvals/Elements/ShowDependency | 109 + share/html/Approvals/autohandler | 53 + share/html/Approvals/index.html | 90 + share/html/Articles/Article/Delete.html | 106 + share/html/Articles/Article/Display.html | 92 + share/html/Articles/Article/Edit.html | 334 + .../html/Articles/Article/Elements/EditBasics | 73 + .../Article/Elements/EditCustomFields | 83 + .../html/Articles/Article/Elements/EditLinks | 113 + .../html/Articles/Article/Elements/EditTopics | 144 + .../Article/Elements/LinkEntryInstructions | 49 + .../Articles/Article/Elements/Preformatted | 127 + .../Article/Elements/SearchByCustomField | 70 + .../Article/Elements/SelectSavedSearches | 76 + .../Article/Elements/SelectSearchPrivacy | 62 + .../Articles/Article/Elements/ShowHistory | 76 + .../html/Articles/Article/Elements/ShowLinks | 92 + .../Article/Elements/ShowSavedSearches | 85 + .../Article/Elements/ShowSearchCriteria | 171 + .../html/Articles/Article/Elements/ShowTopics | 58 + .../Articles/Article/ExtractFromTicket.html | 105 + .../Articles/Article/ExtractIntoClass.html | 76 + .../Articles/Article/ExtractIntoTopic.html | 72 + share/html/Articles/Article/History.html | 57 + share/html/Articles/Article/PreCreate.html | 62 + share/html/Articles/Article/Search.html | 269 + share/html/Articles/Elements/BeforeMessageBox | 239 + share/html/Articles/Elements/CheckSkipCreate | 76 + share/html/Articles/Elements/CreateArticle | 59 + share/html/Articles/Elements/GotoArticle | 73 + share/html/Articles/Elements/Header | 48 + share/html/Articles/Elements/IncludeArticle | 99 + share/html/Articles/Elements/NewestArticles | 80 + share/html/Articles/Elements/QuickSearch | 59 + share/html/Articles/Elements/SelectClass | 95 + share/html/Articles/Elements/ShowTopic | 64 + share/html/Articles/Elements/ShowTopicLink | 27 + share/html/Articles/Elements/UpdatedArticles | 81 + share/html/Articles/Topics.html | 203 + share/html/Articles/index.html | 63 + .../Dashboards/Elements/DashboardsForObject | 81 + share/html/Dashboards/Elements/Deleted | 62 + share/html/Dashboards/Elements/HiddenSearches | 82 + .../html/Dashboards/Elements/ListOfDashboards | 82 + share/html/Dashboards/Elements/SelectPrivacy | 70 + share/html/Dashboards/Elements/ShowDashboards | 71 + .../Dashboards/Elements/ShowPortlet/component | 54 + .../Dashboards/Elements/ShowPortlet/dashboard | 89 + .../Dashboards/Elements/ShowPortlet/search | 63 + share/html/Dashboards/Modify.html | 176 + share/html/Dashboards/Queries.html | 276 + share/html/Dashboards/Render.html | 143 + share/html/Dashboards/Subscription.html | 300 + share/html/Dashboards/dhandler | 56 + share/html/Dashboards/index.html | 53 + share/html/Download/CustomFieldValue/dhandler | 80 + share/html/Elements/BevelBoxRaisedEnd | 50 + share/html/Elements/BevelBoxRaisedStart | 50 + share/html/Elements/CSRF | 74 + share/html/Elements/Callback | 53 + share/html/Elements/Checkbox | 63 + share/html/Elements/CollectionAsTable/Header | 146 + .../Elements/CollectionAsTable/ParseFormat | 109 + share/html/Elements/CollectionAsTable/Row | 143 + share/html/Elements/CollectionList | 203 + share/html/Elements/CollectionListPaging | 110 + share/html/Elements/ColumnMap | 177 + share/html/Elements/CreateTicket | 59 + share/html/Elements/Dashboards | 57 + share/html/Elements/EditCustomField | 116 + .../html/Elements/EditCustomFieldAutocomplete | 109 + share/html/Elements/EditCustomFieldBinary | 62 + share/html/Elements/EditCustomFieldCombobox | 69 + share/html/Elements/EditCustomFieldDate | 62 + share/html/Elements/EditCustomFieldDateTime | 62 + share/html/Elements/EditCustomFieldFreeform | 71 + share/html/Elements/EditCustomFieldIPAddress | 50 + .../Elements/EditCustomFieldIPAddressRange | 50 + share/html/Elements/EditCustomFieldImage | 62 + share/html/Elements/EditCustomFieldSelect | 203 + share/html/Elements/EditCustomFieldText | 67 + share/html/Elements/EditCustomFieldWikitext | 67 + share/html/Elements/EditLinks | 179 + share/html/Elements/EditPassword | 81 + share/html/Elements/EditTimeValue | 65 + share/html/Elements/EmailInput | 53 + share/html/Elements/Error | 90 + share/html/Elements/Footer | 74 + share/html/Elements/Framekiller | 67 + share/html/Elements/GnuPG/KeyIssues | 92 + .../Elements/GnuPG/SelectKeyForEncryption | 81 + share/html/Elements/GnuPG/SelectKeyForSigning | 64 + share/html/Elements/GnuPG/SignEncryptWidget | 177 + share/html/Elements/GotoTicket | 50 + share/html/Elements/Header | 154 + share/html/Elements/HeaderJavascript | 87 + share/html/Elements/ListActions | 95 + share/html/Elements/ListMenu | 90 + share/html/Elements/Login | 106 + share/html/Elements/Logo | 93 + share/html/Elements/MakeClicky | 203 + share/html/Elements/Menu | 84 + share/html/Elements/MessageBox | 92 + share/html/Elements/MyAdminQueues | 52 + share/html/Elements/MyRT | 108 + share/html/Elements/MyReminders | 60 + share/html/Elements/MyRequests | 49 + share/html/Elements/MySupportQueues | 52 + share/html/Elements/MyTickets | 49 + share/html/Elements/PageLayout | 59 + share/html/Elements/PersonalQuickbar | 57 + share/html/Elements/QueriesAsComment | 58 + share/html/Elements/QueryString | 64 + share/html/Elements/QueueSummaryByLifecycle | 145 + share/html/Elements/QueueSummaryByStatus | 139 + share/html/Elements/QuickCreate | 81 + share/html/Elements/Quicksearch | 66 + share/html/Elements/RT__Article/ColumnMap | 107 + share/html/Elements/RT__Class/ColumnMap | 76 + share/html/Elements/RT__CustomField/ColumnMap | 180 + share/html/Elements/RT__Dashboard/ColumnMap | 134 + share/html/Elements/RT__Group/ColumnMap | 92 + share/html/Elements/RT__Queue/ColumnMap | 106 + share/html/Elements/RT__SavedSearch/ColumnMap | 85 + share/html/Elements/RT__Scrip/ColumnMap | 107 + share/html/Elements/RT__Template/ColumnMap | 87 + share/html/Elements/RT__Ticket/ColumnMap | 333 + share/html/Elements/RT__User/ColumnMap | 151 + share/html/Elements/Refresh | 69 + share/html/Elements/RefreshHomepage | 54 + share/html/Elements/SavedSearches | 76 + share/html/Elements/ScrubHTML | 53 + share/html/Elements/Section | 51 + share/html/Elements/SelectAttachmentField | 58 + share/html/Elements/SelectBoolean | 71 + share/html/Elements/SelectCustomFieldOperator | 64 + share/html/Elements/SelectCustomFieldValue | 65 + share/html/Elements/SelectDate | 76 + share/html/Elements/SelectDateRelation | 60 + share/html/Elements/SelectDateType | 60 + share/html/Elements/SelectEqualityOperator | 64 + share/html/Elements/SelectGroups | 68 + share/html/Elements/SelectIPRelation | 64 + share/html/Elements/SelectLang | 80 + share/html/Elements/SelectLinkType | 57 + share/html/Elements/SelectMatch | 82 + share/html/Elements/SelectNewTicketQueue | 61 + share/html/Elements/SelectOwner | 81 + share/html/Elements/SelectOwnerAutocomplete | 102 + share/html/Elements/SelectOwnerDropdown | 99 + share/html/Elements/SelectPriority | 55 + share/html/Elements/SelectQueue | 114 + share/html/Elements/SelectResultsPerPage | 68 + share/html/Elements/SelectSortOrder | 65 + share/html/Elements/SelectStatus | 99 + share/html/Elements/SelectTicketSortBy | 62 + share/html/Elements/SelectTicketTypes | 58 + share/html/Elements/SelectTimeUnits | 62 + share/html/Elements/SelectTimezone | 75 + share/html/Elements/SelectUsers | 81 + share/html/Elements/SelectWatcherType | 71 + share/html/Elements/SetupSessionCookie | 57 + share/html/Elements/ShowCustomFieldBinary | 51 + share/html/Elements/ShowCustomFieldDate | 57 + share/html/Elements/ShowCustomFieldDateTime | 57 + share/html/Elements/ShowCustomFieldImage | 53 + share/html/Elements/ShowCustomFieldText | 56 + share/html/Elements/ShowCustomFieldWikitext | 58 + share/html/Elements/ShowCustomFields | 131 + share/html/Elements/ShowLink | 71 + share/html/Elements/ShowLinks | 179 + share/html/Elements/ShowMemberships | 92 + share/html/Elements/ShowRelationLabel | 62 + share/html/Elements/ShowReminders | 101 + share/html/Elements/ShowSearch | 160 + share/html/Elements/ShowUser | 72 + share/html/Elements/ShowUserConcise | 67 + share/html/Elements/ShowUserEmailFrequency | 56 + share/html/Elements/ShowUserVerbose | 71 + share/html/Elements/SimpleSearch | 53 + share/html/Elements/Submit | 127 + share/html/Elements/Tabs | 888 ++ share/html/Elements/TicketList | 70 + share/html/Elements/TitleBox | 51 + share/html/Elements/TitleBoxEnd | 51 + share/html/Elements/TitleBoxStart | 51 + share/html/Elements/ValidateCustomFields | 125 + share/html/Elements/WidgetBar | 58 + .../Helpers/Autocomplete/CustomFieldValues | 134 + share/html/Helpers/Autocomplete/Groups | 88 + share/html/Helpers/Autocomplete/Owners | 150 + share/html/Helpers/Autocomplete/Users | 130 + share/html/Helpers/TicketHistory | 67 + share/html/Helpers/Toggle/ShowRequestor | 65 + share/html/Helpers/Toggle/TicketBookmark | 55 + share/html/Install/Basics.html | 111 + share/html/Install/DatabaseDetails.html | 201 + share/html/Install/DatabaseType.html | 90 + share/html/Install/Elements/Errors | 63 + share/html/Install/Elements/Wrapper | 59 + share/html/Install/Finish.html | 96 + share/html/Install/Global.html | 120 + share/html/Install/Initialize.html | 147 + share/html/Install/Sendmail.html | 107 + share/html/Install/autohandler | 67 + share/html/Install/index.html | 143 + share/html/NoAuth/Helpers/CustomLogo/dhandler | 61 + share/html/NoAuth/Login.html | 52 + share/html/NoAuth/Logout.html | 85 + share/html/NoAuth/Reminder.html | 50 + share/html/NoAuth/RichText/autohandler | 56 + .../NoAuth/RichText/ckeditor/LICENSE.html | 1334 ++ .../RichText/ckeditor/adapters/jquery.js | 6 + .../html/NoAuth/RichText/ckeditor/ckeditor.js | 135 + share/html/NoAuth/RichText/ckeditor/config.js | 47 + .../NoAuth/RichText/ckeditor/contents.css | 35 + .../RichText/ckeditor/images/spacer.gif | Bin 0 -> 43 bytes .../RichText/ckeditor/lang/_languages.js | 6 + .../ckeditor/lang/_translationstatus.txt | 60 + .../html/NoAuth/RichText/ckeditor/lang/af.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ar.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/bg.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/bn.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/bs.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ca.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/cs.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/cy.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/da.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/de.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/el.js | 6 + .../NoAuth/RichText/ckeditor/lang/en-au.js | 6 + .../NoAuth/RichText/ckeditor/lang/en-ca.js | 6 + .../NoAuth/RichText/ckeditor/lang/en-gb.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/en.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/eo.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/es.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/et.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/eu.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/fa.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/fi.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/fo.js | 6 + .../NoAuth/RichText/ckeditor/lang/fr-ca.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/fr.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/gl.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/gu.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/he.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/hi.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/hr.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/hu.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/is.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/it.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ja.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/km.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ko.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/lt.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/lv.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/mn.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ms.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/nb.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/nl.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/no.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/pl.js | 6 + .../NoAuth/RichText/ckeditor/lang/pt-br.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/pt.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ro.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/ru.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/sk.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/sl.js | 6 + .../NoAuth/RichText/ckeditor/lang/sr-latn.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/sr.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/sv.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/th.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/tr.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/uk.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/vi.js | 6 + .../NoAuth/RichText/ckeditor/lang/zh-cn.js | 6 + .../html/NoAuth/RichText/ckeditor/lang/zh.js | 6 + .../plugins/a11yhelp/dialogs/a11yhelp.js | 7 + .../ckeditor/plugins/a11yhelp/lang/en.js | 6 + .../ckeditor/plugins/a11yhelp/lang/he.js | 6 + .../ckeditor/plugins/about/dialogs/about.js | 6 + .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 2759 bytes .../ckeditor/plugins/autogrow/plugin.js | 6 + .../plugins/clipboard/dialogs/paste.js | 7 + .../colordialog/dialogs/colordialog.js | 7 + .../plugins/dialog/dialogDefinition.js | 4 + .../ckeditor/plugins/div/dialogs/div.js | 8 + .../ckeditor/plugins/find/dialogs/find.js | 9 + .../ckeditor/plugins/flash/dialogs/flash.js | 9 + .../plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes .../ckeditor/plugins/forms/dialogs/button.js | 6 + .../plugins/forms/dialogs/checkbox.js | 6 + .../ckeditor/plugins/forms/dialogs/form.js | 6 + .../plugins/forms/dialogs/hiddenfield.js | 6 + .../ckeditor/plugins/forms/dialogs/radio.js | 6 + .../ckeditor/plugins/forms/dialogs/select.js | 9 + .../plugins/forms/dialogs/textarea.js | 6 + .../plugins/forms/dialogs/textfield.js | 7 + .../plugins/forms/images/hiddenfield.gif | Bin 0 -> 105 bytes .../ckeditor/plugins/iframedialog/plugin.js | 6 + .../ckeditor/plugins/image/dialogs/image.js | 13 + .../ckeditor/plugins/link/dialogs/anchor.js | 6 + .../ckeditor/plugins/link/dialogs/link.js | 11 + .../ckeditor/plugins/link/images/anchor.gif | Bin 0 -> 184 bytes .../plugins/liststyle/dialogs/liststyle.js | 7 + .../plugins/pagebreak/images/pagebreak.gif | Bin 0 -> 54 bytes .../plugins/pastefromword/filter/default.js | 10 + .../plugins/pastetext/dialogs/pastetext.js | 6 + .../ckeditor/plugins/scayt/dialogs/options.js | 8 + .../plugins/scayt/dialogs/toolbar.css | 6 + .../showblocks/images/block_address.png | Bin 0 -> 171 bytes .../showblocks/images/block_blockquote.png | Bin 0 -> 181 bytes .../plugins/showblocks/images/block_div.png | Bin 0 -> 136 bytes .../plugins/showblocks/images/block_h1.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h2.png | Bin 0 -> 134 bytes .../plugins/showblocks/images/block_h3.png | Bin 0 -> 131 bytes .../plugins/showblocks/images/block_h4.png | Bin 0 -> 133 bytes .../plugins/showblocks/images/block_h5.png | Bin 0 -> 133 bytes .../plugins/showblocks/images/block_h6.png | Bin 0 -> 129 bytes .../plugins/showblocks/images/block_p.png | Bin 0 -> 119 bytes .../plugins/showblocks/images/block_pre.png | Bin 0 -> 136 bytes .../ckeditor/plugins/smiley/dialogs/smiley.js | 7 + .../plugins/smiley/images/angel_smile.gif | Bin 0 -> 465 bytes .../plugins/smiley/images/angry_smile.gif | Bin 0 -> 443 bytes .../plugins/smiley/images/broken_heart.gif | Bin 0 -> 192 bytes .../plugins/smiley/images/confused_smile.gif | Bin 0 -> 464 bytes .../plugins/smiley/images/cry_smile.gif | Bin 0 -> 468 bytes .../plugins/smiley/images/devil_smile.gif | Bin 0 -> 436 bytes .../smiley/images/embaressed_smile.gif | Bin 0 -> 442 bytes .../plugins/smiley/images/envelope.gif | Bin 0 -> 426 bytes .../ckeditor/plugins/smiley/images/heart.gif | Bin 0 -> 183 bytes .../ckeditor/plugins/smiley/images/kiss.gif | Bin 0 -> 241 bytes .../plugins/smiley/images/lightbulb.gif | Bin 0 -> 368 bytes .../plugins/smiley/images/omg_smile.gif | Bin 0 -> 451 bytes .../plugins/smiley/images/regular_smile.gif | Bin 0 -> 450 bytes .../plugins/smiley/images/sad_smile.gif | Bin 0 -> 460 bytes .../plugins/smiley/images/shades_smile.gif | Bin 0 -> 449 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 0 -> 442 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 0 -> 408 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 0 -> 396 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 0 -> 446 bytes .../images/whatchutalkingabout_smile.gif | Bin 0 -> 452 bytes .../plugins/smiley/images/wink_smile.gif | Bin 0 -> 458 bytes .../specialchar/dialogs/specialchar.js | 7 + .../ckeditor/plugins/styles/styles/default.js | 6 + .../ckeditor/plugins/table/dialogs/table.js | 9 + .../ckeditor/plugins/tableresize/plugin.js | 7 + .../plugins/tabletools/dialogs/tableCell.js | 8 + .../plugins/templates/dialogs/templates.js | 7 + .../plugins/templates/templates/default.js | 6 + .../templates/templates/images/template1.gif | Bin 0 -> 375 bytes .../templates/templates/images/template2.gif | Bin 0 -> 333 bytes .../templates/templates/images/template3.gif | Bin 0 -> 422 bytes .../plugins/uicolor/dialogs/uicolor.js | 7 + .../ckeditor/plugins/uicolor/lang/en.js | 6 + .../ckeditor/plugins/uicolor/plugin.js | 6 + .../ckeditor/plugins/uicolor/uicolor.gif | Bin 0 -> 1108 bytes .../plugins/uicolor/yui/assets/hue_bg.png | Bin 0 -> 1120 bytes .../plugins/uicolor/yui/assets/hue_thumb.png | Bin 0 -> 195 bytes .../uicolor/yui/assets/picker_mask.png | Bin 0 -> 12174 bytes .../uicolor/yui/assets/picker_thumb.png | Bin 0 -> 192 bytes .../plugins/uicolor/yui/assets/yui.css | 6 + .../ckeditor/plugins/uicolor/yui/yui.js | 76 + .../ckeditor/plugins/wsc/dialogs/ciframe.html | 49 + .../plugins/wsc/dialogs/tmpFrameset.html | 52 + .../ckeditor/plugins/wsc/dialogs/wsc.css | 6 + .../ckeditor/plugins/wsc/dialogs/wsc.js | 7 + .../RichText/ckeditor/skins/kama/dialog.css | 9 + .../RichText/ckeditor/skins/kama/editor.css | 12 + .../RichText/ckeditor/skins/kama/icons.png | Bin 0 -> 4918 bytes .../ckeditor/skins/kama/icons_rtl.png | Bin 0 -> 4935 bytes .../skins/kama/images/dialog_sides.gif | Bin 0 -> 48 bytes .../skins/kama/images/dialog_sides.png | Bin 0 -> 178 bytes .../skins/kama/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../ckeditor/skins/kama/images/mini.gif | Bin 0 -> 183 bytes .../ckeditor/skins/kama/images/noimage.png | Bin 0 -> 2115 bytes .../ckeditor/skins/kama/images/sprites.png | Bin 0 -> 7086 bytes .../skins/kama/images/sprites_ie6.png | Bin 0 -> 2724 bytes .../skins/kama/images/toolbar_start.gif | Bin 0 -> 105 bytes .../RichText/ckeditor/skins/kama/skin.js | 7 + .../ckeditor/skins/kama/templates.css | 6 + .../ckeditor/skins/office2003/dialog.css | 9 + .../ckeditor/skins/office2003/editor.css | 13 + .../ckeditor/skins/office2003/icons.png | Bin 0 -> 4918 bytes .../ckeditor/skins/office2003/icons_rtl.png | Bin 0 -> 4935 bytes .../skins/office2003/images/dialog_sides.gif | Bin 0 -> 48 bytes .../skins/office2003/images/dialog_sides.png | Bin 0 -> 178 bytes .../office2003/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../ckeditor/skins/office2003/images/mini.gif | Bin 0 -> 183 bytes .../skins/office2003/images/noimage.png | Bin 0 -> 2115 bytes .../skins/office2003/images/sprites.png | Bin 0 -> 6119 bytes .../skins/office2003/images/sprites_ie6.png | Bin 0 -> 2715 bytes .../ckeditor/skins/office2003/skin.js | 6 + .../ckeditor/skins/office2003/templates.css | 6 + .../RichText/ckeditor/skins/v2/dialog.css | 8 + .../RichText/ckeditor/skins/v2/editor.css | 12 + .../RichText/ckeditor/skins/v2/icons.png | Bin 0 -> 4918 bytes .../RichText/ckeditor/skins/v2/icons_rtl.png | Bin 0 -> 4935 bytes .../ckeditor/skins/v2/images/dialog_sides.gif | Bin 0 -> 48 bytes .../ckeditor/skins/v2/images/dialog_sides.png | Bin 0 -> 178 bytes .../skins/v2/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../ckeditor/skins/v2/images/mini.gif | Bin 0 -> 183 bytes .../ckeditor/skins/v2/images/noimage.png | Bin 0 -> 2115 bytes .../ckeditor/skins/v2/images/sprites.png | Bin 0 -> 5389 bytes .../ckeditor/skins/v2/images/sprites_ie6.png | Bin 0 -> 492 bytes .../skins/v2/images/toolbar_start.gif | Bin 0 -> 105 bytes .../NoAuth/RichText/ckeditor/skins/v2/skin.js | 6 + .../RichText/ckeditor/skins/v2/templates.css | 6 + .../RichText/ckeditor/themes/default/theme.js | 8 + share/html/NoAuth/RichText/dhandler | 69 + share/html/NoAuth/css/aileron/InHeader | 64 + share/html/NoAuth/css/aileron/base.css | 62 + share/html/NoAuth/css/aileron/boxes.css | 184 + share/html/NoAuth/css/aileron/forms.css | 79 + share/html/NoAuth/css/aileron/images/dhandler | 8 + .../images/source/background-gradient.png | Bin 0 -> 394 bytes share/html/NoAuth/css/aileron/layout.css | 174 + share/html/NoAuth/css/aileron/login.css | 50 + share/html/NoAuth/css/aileron/main.css | 63 + share/html/NoAuth/css/aileron/misc.css | 58 + share/html/NoAuth/css/aileron/msie.css | 188 + share/html/NoAuth/css/aileron/msie6.css | 86 + share/html/NoAuth/css/aileron/nav.css | 164 + .../html/NoAuth/css/aileron/ticket-lists.css | 236 + .../html/NoAuth/css/aileron/ticket-search.css | 242 + share/html/NoAuth/css/aileron/ticket.css | 289 + share/html/NoAuth/css/autohandler | 66 + share/html/NoAuth/css/ballard/InHeader | 54 + share/html/NoAuth/css/ballard/base.css | 62 + share/html/NoAuth/css/ballard/boxes.css | 184 + share/html/NoAuth/css/ballard/images/dhandler | 8 + .../images/source/background-gradient.png | Bin 0 -> 394 bytes share/html/NoAuth/css/ballard/layout.css | 173 + share/html/NoAuth/css/ballard/main.css | 62 + share/html/NoAuth/css/ballard/misc.css | 58 + share/html/NoAuth/css/ballard/msie.css | 242 + share/html/NoAuth/css/ballard/msie6.css | 88 + share/html/NoAuth/css/ballard/nav.css | 189 + .../html/NoAuth/css/ballard/ticket-lists.css | 236 + .../html/NoAuth/css/ballard/ticket-search.css | 243 + share/html/NoAuth/css/ballard/ticket.css | 275 + share/html/NoAuth/css/base/admin.css | 97 + share/html/NoAuth/css/base/articles.css | 54 + share/html/NoAuth/css/base/collection.css | 50 + share/html/NoAuth/css/base/farbtastic.css | 98 + share/html/NoAuth/css/base/forms.css | 270 + .../html/NoAuth/css/base/history-folding.css | 91 + share/html/NoAuth/css/base/jquery-ui.css | 50 + .../css/base/jquery-ui.custom.modified.css | 454 + share/html/NoAuth/css/base/login.css | 102 + share/html/NoAuth/css/base/main.css | 73 + share/html/NoAuth/css/base/misc.css | 110 + share/html/NoAuth/css/base/nav.css | 64 + share/html/NoAuth/css/base/portlets.css | 64 + share/html/NoAuth/css/base/rights-editor.css | 177 + .../html/NoAuth/css/base/superfish-navbar.css | 93 + .../NoAuth/css/base/superfish-vertical.css | 23 + share/html/NoAuth/css/base/superfish.css | 136 + share/html/NoAuth/css/base/tablesorter.css | 52 + share/html/NoAuth/css/base/theme-editor.css | 111 + share/html/NoAuth/css/base/ticket-form.css | 129 + share/html/NoAuth/css/base/ticket.css | 146 + share/html/NoAuth/css/base/tools.css | 54 + share/html/NoAuth/css/base/ui.timepickr.css | 56 + .../NoAuth/css/base/ui.timepickr.custom.css | 54 + share/html/NoAuth/css/base/yui-fonts.css | 7 + share/html/NoAuth/css/dhandler | 64 + .../html/NoAuth/css/images/arrows-ffffff.gif | Bin 0 -> 114 bytes .../html/NoAuth/css/images/arrows-ffffff.png | Bin 0 -> 244 bytes share/html/NoAuth/css/images/arrows-grey.gif | Bin 0 -> 114 bytes share/html/NoAuth/css/images/arrows-grey.png | Bin 0 -> 256 bytes share/html/NoAuth/css/images/shadow.gif | Bin 0 -> 807 bytes share/html/NoAuth/css/images/shadow.png | Bin 0 -> 1698 bytes share/html/NoAuth/css/print.css | 220 + share/html/NoAuth/css/web2/InHeader | 75 + share/html/NoAuth/css/web2/base.css | 62 + share/html/NoAuth/css/web2/boxes.css | 191 + share/html/NoAuth/css/web2/images/dhandler | 8 + .../images/source/background-gradient.png | Bin 0 -> 394 bytes share/html/NoAuth/css/web2/layout.css | 210 + share/html/NoAuth/css/web2/main.css | 62 + share/html/NoAuth/css/web2/misc.css | 58 + share/html/NoAuth/css/web2/msie.css | 250 + share/html/NoAuth/css/web2/msie6.css | 96 + share/html/NoAuth/css/web2/nav.css | 291 + share/html/NoAuth/css/web2/ticket-lists.css | 236 + share/html/NoAuth/css/web2/ticket-search.css | 244 + share/html/NoAuth/css/web2/ticket.css | 280 + share/html/NoAuth/iCal/dhandler | 122 + share/html/NoAuth/images/autohandler | 8 + share/html/NoAuth/images/bpslogo.png | Bin 0 -> 3929 bytes share/html/NoAuth/images/css/cb-light.gif | Bin 0 -> 186 bytes share/html/NoAuth/images/css/cb.gif | Bin 0 -> 163 bytes share/html/NoAuth/images/css/cbr-b2g.gif | Bin 0 -> 135 bytes share/html/NoAuth/images/css/cbr-b2lb.gif | Bin 0 -> 137 bytes share/html/NoAuth/images/css/cbr-gray.gif | Bin 0 -> 137 bytes share/html/NoAuth/images/css/cbr-trans.gif | Bin 0 -> 183 bytes share/html/NoAuth/images/css/cbr.gif | Bin 0 -> 188 bytes share/html/NoAuth/images/css/ct-light.gif | Bin 0 -> 162 bytes share/html/NoAuth/images/css/ct.gif | Bin 0 -> 162 bytes share/html/NoAuth/images/css/ctr-b2g.gif | Bin 0 -> 136 bytes share/html/NoAuth/images/css/ctr-b2lb.gif | Bin 0 -> 114 bytes share/html/NoAuth/images/css/ctr-gray.gif | Bin 0 -> 138 bytes share/html/NoAuth/images/css/ctr-trans.gif | Bin 0 -> 182 bytes share/html/NoAuth/images/css/ctr.gif | Bin 0 -> 188 bytes .../html/NoAuth/images/css/dark-arrow-up.png | Bin 0 -> 346 bytes share/html/NoAuth/images/css/dark-arrow.png | Bin 0 -> 337 bytes .../images/css/fieldbg-autocomplete.gif | Bin 0 -> 1164 bytes .../html/NoAuth/images/css/light-arrow-up.png | Bin 0 -> 348 bytes share/html/NoAuth/images/css/light-arrow.png | Bin 0 -> 340 bytes .../html/NoAuth/images/css/rolldown-arrow.gif | Bin 0 -> 98 bytes .../html/NoAuth/images/css/rolldown-arrow.png | Bin 0 -> 259 bytes share/html/NoAuth/images/css/rollup-arrow.gif | Bin 0 -> 97 bytes share/html/NoAuth/images/empty_star.gif | Bin 0 -> 914 bytes .../html/NoAuth/images/farbtastic/marker.png | Bin 0 -> 652 bytes share/html/NoAuth/images/farbtastic/mask.png | Bin 0 -> 2020 bytes share/html/NoAuth/images/farbtastic/wheel.png | Bin 0 -> 11733 bytes share/html/NoAuth/images/favicon.png | Bin 0 -> 335 bytes .../images/jquery_ui/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 384 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../jquery_ui/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../jquery_ui/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../jquery_ui/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../jquery_ui/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../jquery_ui/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../jquery_ui/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_4488cc_256x240.png | Bin 0 -> 1936 bytes .../jquery_ui/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_888888_256x240.png | Bin 0 -> 5355 bytes .../jquery_ui/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../jquery_ui/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes share/html/NoAuth/images/star.gif | Bin 0 -> 161 bytes share/html/NoAuth/images/tablesorter/asc.gif | Bin 0 -> 54 bytes share/html/NoAuth/images/tablesorter/bg.gif | Bin 0 -> 64 bytes share/html/NoAuth/images/tablesorter/desc.gif | Bin 0 -> 54 bytes share/html/NoAuth/images/test.png | 2 + share/html/NoAuth/js/IE7/IE7.js | 2 + share/html/NoAuth/js/IE7/IE8.js | 2 + share/html/NoAuth/js/IE7/blank.gif | Bin 0 -> 48 bytes share/html/NoAuth/js/IE7/ie7-recalc.js | 2 + share/html/NoAuth/js/IE7/ie7-squish.js | 36 + share/html/NoAuth/js/autohandler | 62 + share/html/NoAuth/js/cascaded.js | 104 + share/html/NoAuth/js/class.js | 15 + share/html/NoAuth/js/combobox.js | 262 + share/html/NoAuth/js/dhandler | 65 + share/html/NoAuth/js/farbtastic.js | 347 + share/html/NoAuth/js/history-folding.js | 73 + share/html/NoAuth/js/jquery-1.4.2.min.js | 154 + .../NoAuth/js/jquery-ui-1.8.4.custom.min.js | 224 + .../NoAuth/js/jquery-ui-patch-datepicker.js | 61 + .../html/NoAuth/js/jquery.event.hover-1.0.js | 85 + share/html/NoAuth/js/jquery.supposition.js | 83 + .../html/NoAuth/js/jquery.tablesorter.min.js | 16 + share/html/NoAuth/js/jquery_noconflict.js | 51 + share/html/NoAuth/js/late.js | 49 + share/html/NoAuth/js/list.js | 112 + share/html/NoAuth/js/superfish.js | 121 + share/html/NoAuth/js/supersubs.js | 90 + share/html/NoAuth/js/titlebox-state.js | 83 + share/html/NoAuth/js/ui.timepickr.js | 941 ++ share/html/NoAuth/js/userautocomplete.js | 110 + share/html/NoAuth/js/util.js | 361 + share/html/NoAuth/rss/dhandler | 48 + share/html/Prefs/MyRT.html | 166 + share/html/Prefs/Other.html | 109 + share/html/Prefs/Quicksearch.html | 90 + share/html/Prefs/Search.html | 107 + share/html/Prefs/SearchOptions.html | 107 + share/html/REST/1.0/Forms/attachment/default | 102 + share/html/REST/1.0/Forms/group/customfields | 96 + share/html/REST/1.0/Forms/group/default | 203 + share/html/REST/1.0/Forms/group/ns | 62 + share/html/REST/1.0/Forms/queue/customfields | 96 + share/html/REST/1.0/Forms/queue/default | 186 + share/html/REST/1.0/Forms/queue/ns | 62 + .../REST/1.0/Forms/queue/ticketcustomfields | 97 + share/html/REST/1.0/Forms/ticket/attachments | 136 + share/html/REST/1.0/Forms/ticket/comment | 152 + share/html/REST/1.0/Forms/ticket/default | 454 + share/html/REST/1.0/Forms/ticket/history | 206 + share/html/REST/1.0/Forms/ticket/links | 172 + share/html/REST/1.0/Forms/ticket/merge | 96 + share/html/REST/1.0/Forms/ticket/take | 135 + share/html/REST/1.0/Forms/transaction/default | 141 + share/html/REST/1.0/Forms/user/default | 188 + share/html/REST/1.0/Forms/user/ns | 65 + share/html/REST/1.0/NoAuth/mail-gateway | 84 + share/html/REST/1.0/autohandler | 56 + share/html/REST/1.0/dhandler | 326 + share/html/REST/1.0/logout | 51 + share/html/REST/1.0/search/dhandler | 56 + share/html/REST/1.0/search/ticket | 165 + share/html/REST/1.0/ticket/comment | 177 + share/html/REST/1.0/ticket/link | 123 + share/html/REST/1.0/ticket/merge | 102 + share/html/Search/Article.html | 52 + share/html/Search/Build.html | 331 + share/html/Search/Bulk.html | 437 + share/html/Search/Chart | 207 + share/html/Search/Chart.html | 135 + share/html/Search/Edit.html | 89 + share/html/Search/Elements/Article | 64 + share/html/Search/Elements/BuildFormatString | 251 + share/html/Search/Elements/Chart | 153 + share/html/Search/Elements/ConditionRow | 97 + share/html/Search/Elements/DisplayOptions | 53 + share/html/Search/Elements/EditFormat | 126 + share/html/Search/Elements/EditQuery | 243 + share/html/Search/Elements/EditSearches | 323 + share/html/Search/Elements/EditSort | 140 + share/html/Search/Elements/Graph | 50 + share/html/Search/Elements/NewListActions | 66 + share/html/Search/Elements/PickBasics | 214 + share/html/Search/Elements/PickCFs | 133 + share/html/Search/Elements/PickCriteria | 72 + share/html/Search/Elements/ResultsRSSView | 143 + share/html/Search/Elements/SearchPrivacy | 61 + share/html/Search/Elements/SearchesForObject | 65 + share/html/Search/Elements/SelectAndOr | 53 + share/html/Search/Elements/SelectChartType | 58 + share/html/Search/Elements/SelectGroup | 67 + share/html/Search/Elements/SelectGroupBy | 63 + share/html/Search/Elements/SelectLinks | 66 + share/html/Search/Elements/SelectPersonType | 84 + share/html/Search/Elements/SelectSearchObject | 64 + .../Search/Elements/SelectSearchesForObjects | 68 + share/html/Search/Graph.html | 50 + share/html/Search/Results.html | 191 + share/html/Search/Results.rdf | 48 + share/html/Search/Results.tsv | 136 + share/html/Search/Simple.html | 129 + share/html/SelfService/Article/Display.html | 73 + share/html/SelfService/Article/Search.html | 114 + share/html/SelfService/Article/autohandler | 58 + share/html/SelfService/Attachment/dhandler | 51 + share/html/SelfService/Closed.html | 60 + share/html/SelfService/Create.html | 149 + .../html/SelfService/CreateTicketInQueue.html | 63 + share/html/SelfService/Display.html | 231 + share/html/SelfService/Elements/GotoTicket | 50 + share/html/SelfService/Elements/Header | 49 + share/html/SelfService/Elements/MyRequests | 79 + share/html/SelfService/Elements/SearchArticle | 51 + share/html/SelfService/Error.html | 71 + share/html/SelfService/Prefs.html | 96 + share/html/SelfService/Update.html | 112 + share/html/SelfService/index.html | 59 + .../Ticket/Attachment/WithHeaders/dhandler | 78 + share/html/Ticket/Attachment/dhandler | 91 + share/html/Ticket/Create.html | 466 + share/html/Ticket/Display.html | 229 + share/html/Ticket/Elements/AddAttachments | 61 + share/html/Ticket/Elements/AddWatchers | 147 + share/html/Ticket/Elements/Bookmark | 93 + share/html/Ticket/Elements/BulkLinks | 195 + share/html/Ticket/Elements/ClickToShowHistory | 60 + share/html/Ticket/Elements/EditBasics | 144 + share/html/Ticket/Elements/EditCustomFields | 114 + share/html/Ticket/Elements/EditDates | 78 + share/html/Ticket/Elements/EditPeople | 93 + .../Elements/EditTransactionCustomFields | 107 + share/html/Ticket/Elements/EditWatchers | 86 + share/html/Ticket/Elements/FindAttachments | 95 + share/html/Ticket/Elements/FindTransactions | 72 + share/html/Ticket/Elements/FoldStanzaJS | 50 + .../html/Ticket/Elements/LoadTextAttachments | 93 + share/html/Ticket/Elements/PreviewScrips | 119 + share/html/Ticket/Elements/Reminders | 168 + share/html/Ticket/Elements/ShowAttachments | 116 + share/html/Ticket/Elements/ShowBasics | 90 + share/html/Ticket/Elements/ShowCustomFields | 51 + share/html/Ticket/Elements/ShowDates | 92 + share/html/Ticket/Elements/ShowDependencies | 66 + share/html/Ticket/Elements/ShowGnuPGStatus | 177 + share/html/Ticket/Elements/ShowGroupMembers | 67 + share/html/Ticket/Elements/ShowHistory | 161 + share/html/Ticket/Elements/ShowMembers | 69 + share/html/Ticket/Elements/ShowMessageHeaders | 91 + share/html/Ticket/Elements/ShowMessageStanza | 188 + share/html/Ticket/Elements/ShowParents | 63 + share/html/Ticket/Elements/ShowPeople | 74 + share/html/Ticket/Elements/ShowPriority | 51 + share/html/Ticket/Elements/ShowQueue | 64 + share/html/Ticket/Elements/ShowRequestor | 189 + .../Ticket/Elements/ShowRequestorExtraInfo | 89 + .../html/Ticket/Elements/ShowRequestorTickets | 79 + .../Elements/ShowRequestorTicketsActive | 60 + .../Ticket/Elements/ShowRequestorTicketsAll | 53 + .../Elements/ShowRequestorTicketsInactive | 60 + .../Ticket/Elements/ShowSimplifiedRecipients | 100 + share/html/Ticket/Elements/ShowSummary | 111 + share/html/Ticket/Elements/ShowTime | 59 + share/html/Ticket/Elements/ShowTransaction | 240 + .../Elements/ShowTransactionAttachments | 281 + share/html/Ticket/Elements/ShowUpdateStatus | 63 + share/html/Ticket/Elements/ShowUserEntry | 56 + share/html/Ticket/Elements/UpdateCc | 96 + share/html/Ticket/Forward.html | 129 + share/html/Ticket/GnuPG.html | 100 + .../Graphs/Elements/EditGraphProperties | 167 + share/html/Ticket/Graphs/Elements/ShowGraph | 72 + share/html/Ticket/Graphs/Elements/ShowLegends | 73 + share/html/Ticket/Graphs/dhandler | 82 + share/html/Ticket/Graphs/index.html | 110 + share/html/Ticket/History.html | 89 + share/html/Ticket/Modify.html | 94 + share/html/Ticket/ModifyAll.html | 240 + share/html/Ticket/ModifyDates.html | 77 + share/html/Ticket/ModifyLinks.html | 82 + share/html/Ticket/ModifyPeople.html | 139 + share/html/Ticket/Reminders.html | 72 + share/html/Ticket/ShowEmailRecord.html | 96 + share/html/Ticket/Update.html | 336 + share/html/Ticket/Update.html.rej | 10 + share/html/Ticket/autohandler | 20 + share/html/Tools/MyDay.html | 113 + share/html/Tools/MyReminders.html | 55 + share/html/Tools/Offline.html | 166 + share/html/Tools/index.html | 50 + share/html/User/Prefs.html | 302 + share/html/Widgets/BulkEdit | 67 + share/html/Widgets/BulkProcess | 73 + share/html/Widgets/ComboBox | 77 + share/html/Widgets/FinalizeWidgetArguments | 65 + share/html/Widgets/Form/Boolean | 103 + share/html/Widgets/Form/Integer | 104 + share/html/Widgets/Form/Select | 170 + share/html/Widgets/Form/String | 108 + share/html/Widgets/SavedSearch | 189 + share/html/Widgets/SelectionBox | 254 + share/html/Widgets/TitleBox | 58 + share/html/Widgets/TitleBoxEnd | 59 + share/html/Widgets/TitleBoxStart | 96 + share/html/autohandler | 59 + share/html/dhandler | 54 + share/html/index.html | 143 + share/html/l | 52 + share/html/l_unsafe | 52 + share/html/m/_elements/footer | 55 + share/html/m/_elements/full_site_link | 48 + share/html/m/_elements/header | 72 + share/html/m/_elements/menu | 110 + share/html/m/_elements/raw_style | 487 + share/html/m/_elements/ticket_list | 116 + share/html/m/_elements/ticket_menu | 78 + share/html/m/_elements/wrapper | 62 + share/html/m/dhandler | 52 + share/html/m/index.html | 51 + share/html/m/login | 131 + share/html/m/logout | 54 + share/html/m/style.css | 52 + share/html/m/ticket/autohandler | 8 + share/html/m/ticket/create | 443 + share/html/m/ticket/create.orig | 442 + share/html/m/ticket/history | 78 + share/html/m/ticket/modify | 47 + share/html/m/ticket/reply | 257 + share/html/m/ticket/select_create_queue | 65 + share/html/m/ticket/show | 482 + share/html/m/tickets/search | 111 + share/po/bg.po | 9473 +++++++++++ share/po/cs.po | 9541 +++++++++++ share/po/da.po | 11032 +++++++++++++ share/po/de.po | 10152 ++++++++++++ share/po/el.po | 9449 +++++++++++ share/po/en.po | 23 + share/po/en_GB.po | 7654 +++++++++ share/po/es.po | 11165 +++++++++++++ share/po/et.po | 9225 +++++++++++ share/po/fi.po | 10534 +++++++++++++ share/po/fr.po | 9949 ++++++++++++ share/po/he.po | 9241 +++++++++++ share/po/hr.po | 10514 +++++++++++++ share/po/hu.po | 9443 +++++++++++ share/po/id.po | 9870 ++++++++++++ share/po/is.po | 8873 +++++++++++ share/po/it.po | 11177 +++++++++++++ share/po/ja.po | 9295 +++++++++++ share/po/lt.po | 9665 ++++++++++++ share/po/lv.po | 9446 +++++++++++ share/po/mk.po | 8721 +++++++++++ share/po/nb.po | 11105 +++++++++++++ share/po/nl.po | 10517 +++++++++++++ share/po/nn.po | 9562 +++++++++++ share/po/pl.po | 10816 +++++++++++++ share/po/pt.po | 9633 ++++++++++++ share/po/pt_BR.po | 11233 +++++++++++++ share/po/pt_PT.po | 9053 +++++++++++ share/po/rt.pot | 8696 ++++++++++ share/po/ru.po | 9611 ++++++++++++ share/po/sl.po | 9438 +++++++++++ share/po/sv.po | 9792 ++++++++++++ share/po/tr.po | 9634 ++++++++++++ share/po/zh_CN.po | 13016 +++++++++++++++ share/po/zh_TW.po | 13049 ++++++++++++++++ 1279 files changed, 528381 insertions(+) create mode 100755 bin/jsmin create mode 100755 bin/rt create mode 100755 bin/rt-crontool create mode 100755 bin/rt-mailgate create mode 100644 docs/README create mode 100644 docs/UPGRADING-2.0 create mode 100644 docs/UPGRADING-3.0 create mode 100644 docs/UPGRADING-3.2 create mode 100644 docs/UPGRADING-3.4 create mode 100644 docs/UPGRADING-3.6 create mode 100644 docs/UPGRADING-3.8 create mode 100644 docs/UPGRADING-4.0 create mode 100644 docs/UPGRADING.mysql create mode 100644 docs/customizing/articles_introduction.pod create mode 100644 docs/customizing/templates.pod create mode 100644 docs/customizing/timezones_in_charts.pod create mode 100644 docs/extending/clickable_links.pod create mode 100644 docs/extending/external_custom_fields.pod create mode 100644 docs/extending/using_forms_widgets.pod create mode 100644 docs/full_text_indexing.pod create mode 100644 docs/glossary.pod create mode 100644 docs/hacking.pod create mode 100644 docs/network-diagram.svg create mode 100644 docs/schema.dot create mode 100644 docs/security.pod create mode 100644 docs/web_deployment.pod create mode 100644 etc/RT_Config.pm create mode 100644 etc/RT_Config.pm.orig create mode 100644 etc/acl.Oracle create mode 100644 etc/acl.Pg create mode 100644 etc/acl.mysql create mode 100644 etc/initialdata create mode 100644 etc/schema.Oracle create mode 100644 etc/schema.Pg create mode 100644 etc/schema.SQLite create mode 100644 etc/schema.mysql create mode 100644 lib/RT.pm create mode 100644 lib/RT/ACE.pm create mode 100644 lib/RT/ACL.pm create mode 100644 lib/RT/Action.pm create mode 100644 lib/RT/Action/AutoOpen.pm create mode 100644 lib/RT/Action/Autoreply.pm create mode 100644 lib/RT/Action/CreateTickets.pm create mode 100644 lib/RT/Action/EscalatePriority.pm create mode 100644 lib/RT/Action/ExtractSubjectTag.pm create mode 100644 lib/RT/Action/LinearEscalate.pm create mode 100644 lib/RT/Action/Notify.pm create mode 100644 lib/RT/Action/NotifyAsComment.pm create mode 100644 lib/RT/Action/NotifyGroup.pm create mode 100644 lib/RT/Action/NotifyGroupAsComment.pm create mode 100644 lib/RT/Action/RecordComment.pm create mode 100644 lib/RT/Action/RecordCorrespondence.pm create mode 100644 lib/RT/Action/ResolveMembers.pm create mode 100644 lib/RT/Action/SendEmail.pm create mode 100644 lib/RT/Action/SetPriority.pm create mode 100644 lib/RT/Action/SetStatus.pm create mode 100644 lib/RT/Action/UserDefined.pm create mode 100644 lib/RT/Approval.pm create mode 100644 lib/RT/Approval/Rule.pm create mode 100644 lib/RT/Approval/Rule/Created.pm create mode 100644 lib/RT/Approval/Rule/NewPending.pm create mode 100644 lib/RT/Approval/Rule/Passed.pm create mode 100644 lib/RT/Approval/Rule/Rejected.pm create mode 100644 lib/RT/Article.pm create mode 100644 lib/RT/Articles.pm create mode 100644 lib/RT/Attachment.pm create mode 100644 lib/RT/Attachments.pm create mode 100644 lib/RT/Attribute.pm create mode 100644 lib/RT/Attributes.pm create mode 100644 lib/RT/Base.pm create mode 100644 lib/RT/CachedGroupMember.pm create mode 100644 lib/RT/CachedGroupMembers.pm create mode 100644 lib/RT/Class.pm create mode 100644 lib/RT/Classes.pm create mode 100644 lib/RT/Condition.pm create mode 100644 lib/RT/Condition/AnyTransaction.pm create mode 100644 lib/RT/Condition/BeforeDue.pm create mode 100644 lib/RT/Condition/CloseTicket.pm create mode 100644 lib/RT/Condition/Overdue.pm create mode 100644 lib/RT/Condition/OwnerChange.pm create mode 100644 lib/RT/Condition/PriorityChange.pm create mode 100644 lib/RT/Condition/PriorityExceeds.pm create mode 100644 lib/RT/Condition/QueueChange.pm create mode 100644 lib/RT/Condition/ReopenTicket.pm create mode 100644 lib/RT/Condition/StatusChange.pm create mode 100644 lib/RT/Condition/UserDefined.pm create mode 100644 lib/RT/Config.pm create mode 100644 lib/RT/Crypt/GnuPG.pm create mode 100644 lib/RT/CurrentUser.pm create mode 100644 lib/RT/CustomField.pm create mode 100644 lib/RT/CustomFieldValue.pm create mode 100644 lib/RT/CustomFieldValues.pm create mode 100644 lib/RT/CustomFieldValues/External.pm create mode 100644 lib/RT/CustomFieldValues/Groups.pm create mode 100644 lib/RT/CustomFields.pm create mode 100644 lib/RT/Dashboard.pm create mode 100644 lib/RT/Dashboard/Mailer.pm create mode 100644 lib/RT/Dashboards.pm create mode 100644 lib/RT/Date.pm create mode 100644 lib/RT/EmailParser.pm create mode 100644 lib/RT/Generated.pm create mode 100644 lib/RT/Generated.pm.in create mode 100644 lib/RT/Graph/Tickets.pm create mode 100644 lib/RT/Group.pm create mode 100644 lib/RT/GroupMember.pm create mode 100644 lib/RT/GroupMembers.pm create mode 100644 lib/RT/Groups.pm create mode 100644 lib/RT/Handle.pm create mode 100644 lib/RT/I18N.pm create mode 100644 lib/RT/I18N/cs.pm create mode 100644 lib/RT/I18N/i_default.pm create mode 100644 lib/RT/I18N/ru.pm create mode 100644 lib/RT/Installer.pm create mode 100644 lib/RT/Interface/CLI.pm create mode 100644 lib/RT/Interface/Email.pm create mode 100644 lib/RT/Interface/Email/Auth/GnuPG.pm create mode 100644 lib/RT/Interface/Email/Auth/MailFrom.pm create mode 100644 lib/RT/Interface/REST.pm create mode 100644 lib/RT/Interface/Web.pm create mode 100644 lib/RT/Interface/Web/Handler.pm create mode 100644 lib/RT/Interface/Web/Menu.pm create mode 100644 lib/RT/Interface/Web/QueryBuilder.pm create mode 100644 lib/RT/Interface/Web/QueryBuilder/Tree.pm create mode 100644 lib/RT/Interface/Web/QueryBuilder/Tree.pm.orig create mode 100644 lib/RT/Interface/Web/QueryBuilder/Tree.pm.rej create mode 100644 lib/RT/Interface/Web/Request.pm create mode 100644 lib/RT/Interface/Web/Session.pm create mode 100644 lib/RT/Lifecycle.pm create mode 100644 lib/RT/Link.pm create mode 100644 lib/RT/Links.pm create mode 100644 lib/RT/ObjectClass.pm create mode 100644 lib/RT/ObjectClasses.pm create mode 100644 lib/RT/ObjectCustomField.pm create mode 100644 lib/RT/ObjectCustomFieldValue.pm create mode 100644 lib/RT/ObjectCustomFieldValues.pm create mode 100644 lib/RT/ObjectCustomFields.pm create mode 100644 lib/RT/ObjectTopic.pm create mode 100644 lib/RT/ObjectTopics.pm create mode 100644 lib/RT/Plugin.pm create mode 100644 lib/RT/Principal.pm create mode 100644 lib/RT/Principals.pm create mode 100644 lib/RT/Queue.pm create mode 100644 lib/RT/Queues.pm create mode 100644 lib/RT/Record.pm create mode 100644 lib/RT/Reminders.pm create mode 100644 lib/RT/Report/Tickets.pm create mode 100644 lib/RT/Report/Tickets/Entry.pm create mode 100644 lib/RT/Rule.pm create mode 100644 lib/RT/Ruleset.pm create mode 100644 lib/RT/SQL.pm create mode 100644 lib/RT/SavedSearch.pm create mode 100644 lib/RT/SavedSearches.pm create mode 100644 lib/RT/Scrip.pm create mode 100644 lib/RT/ScripAction.pm create mode 100644 lib/RT/ScripActions.pm create mode 100644 lib/RT/ScripCondition.pm create mode 100644 lib/RT/ScripConditions.pm create mode 100644 lib/RT/Scrips.pm create mode 100644 lib/RT/Search.pm create mode 100644 lib/RT/Search/ActiveTicketsInQueue.pm create mode 100644 lib/RT/Search/FromSQL.pm create mode 100644 lib/RT/Search/Googleish.pm create mode 100644 lib/RT/SearchBuilder.pm create mode 100644 lib/RT/SearchBuilder.pm.orig create mode 100644 lib/RT/SharedSetting.pm create mode 100644 lib/RT/SharedSettings.pm create mode 100644 lib/RT/Shredder.pm create mode 100644 lib/RT/Shredder/ACE.pm create mode 100644 lib/RT/Shredder/Attachment.pm create mode 100644 lib/RT/Shredder/CachedGroupMember.pm create mode 100644 lib/RT/Shredder/Constants.pm create mode 100644 lib/RT/Shredder/CustomField.pm create mode 100644 lib/RT/Shredder/CustomFieldValue.pm create mode 100644 lib/RT/Shredder/Dependencies.pm create mode 100644 lib/RT/Shredder/Dependency.pm create mode 100644 lib/RT/Shredder/Exceptions.pm create mode 100644 lib/RT/Shredder/Group.pm create mode 100644 lib/RT/Shredder/GroupMember.pm create mode 100644 lib/RT/Shredder/Link.pm create mode 100644 lib/RT/Shredder/ObjectCustomFieldValue.pm create mode 100644 lib/RT/Shredder/POD.pm create mode 100644 lib/RT/Shredder/Plugin.pm create mode 100644 lib/RT/Shredder/Plugin/Attachments.pm create mode 100644 lib/RT/Shredder/Plugin/Base.pm create mode 100644 lib/RT/Shredder/Plugin/Base/Dump.pm create mode 100644 lib/RT/Shredder/Plugin/Base/Search.pm create mode 100644 lib/RT/Shredder/Plugin/Objects.pm create mode 100644 lib/RT/Shredder/Plugin/SQLDump.pm create mode 100644 lib/RT/Shredder/Plugin/Summary.pm create mode 100644 lib/RT/Shredder/Plugin/Tickets.pm create mode 100644 lib/RT/Shredder/Plugin/Users.pm create mode 100644 lib/RT/Shredder/Principal.pm create mode 100644 lib/RT/Shredder/Queue.pm create mode 100644 lib/RT/Shredder/Record.pm create mode 100644 lib/RT/Shredder/Scrip.pm create mode 100644 lib/RT/Shredder/ScripAction.pm create mode 100644 lib/RT/Shredder/ScripCondition.pm create mode 100644 lib/RT/Shredder/Template.pm create mode 100644 lib/RT/Shredder/Ticket.pm create mode 100644 lib/RT/Shredder/Transaction.pm create mode 100644 lib/RT/Shredder/User.pm create mode 100644 lib/RT/Squish.pm create mode 100644 lib/RT/Squish/CSS.pm create mode 100644 lib/RT/Squish/JS.pm create mode 100644 lib/RT/StyleGuide.pod create mode 100644 lib/RT/System.pm create mode 100644 lib/RT/Template.pm create mode 100644 lib/RT/Templates.pm create mode 100644 lib/RT/Test.pm create mode 100644 lib/RT/Test/Apache.pm create mode 100644 lib/RT/Test/Email.pm create mode 100644 lib/RT/Test/GnuPG.pm create mode 100644 lib/RT/Test/Web.pm create mode 100644 lib/RT/Ticket.pm create mode 100644 lib/RT/Tickets.pm create mode 100644 lib/RT/Tickets_SQL.pm create mode 100644 lib/RT/Topic.pm create mode 100644 lib/RT/Topics.pm create mode 100644 lib/RT/Transaction.pm create mode 100644 lib/RT/Transactions.pm create mode 100644 lib/RT/URI.pm create mode 100644 lib/RT/URI/a.pm create mode 100644 lib/RT/URI/base.pm create mode 100644 lib/RT/URI/fsck_com_article.pm create mode 100644 lib/RT/URI/fsck_com_rt.pm create mode 100644 lib/RT/URI/t.pm create mode 100644 lib/RT/User.pm create mode 100644 lib/RT/Users.pm create mode 100644 lib/RT/Util.pm create mode 100755 local/bin/cron-escalate create mode 100755 local/bin/rt-delete.pl create mode 100755 local/bin/rt-get-messages create mode 100755 local/bin/rt-get-messages-test create mode 100755 local/bin/rt-remind create mode 100755 local/bin/rt-update-groups create mode 100644 local/html/Admin/Tools/BecomeUser.html create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/ColumnMap/Once create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/Header/Head create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/Login/AfterForm create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/Login/BeforeForm create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/ShowUserConcise create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/Tabs/Privileged create mode 100644 local/html/Callbacks/UiOCallbacks/Elements/Tabs/TicketMenu create mode 100644 local/html/Callbacks/UiOCallbacks/Ticket/Display.html/BeforeActionList create mode 100644 local/html/Callbacks/UiOCallbacks/Ticket/Elements/Tabs/Default create mode 100644 local/html/Elements/ShowUserConcise create mode 100644 local/html/Helpers/Autocomplete/Users create mode 100644 local/html/NoAuth/css/3.4-compat/InHeader create mode 100644 local/html/NoAuth/css/3.4-compat/base.css create mode 100644 local/html/NoAuth/css/3.4-compat/boxes.css create mode 100644 local/html/NoAuth/css/3.4-compat/images/dhandler create mode 100644 local/html/NoAuth/css/3.4-compat/images/source/background-gradient.png create mode 100644 local/html/NoAuth/css/3.4-compat/layout.css create mode 100644 local/html/NoAuth/css/3.4-compat/main.css create mode 100644 local/html/NoAuth/css/3.4-compat/misc.css create mode 100644 local/html/NoAuth/css/3.4-compat/msie-pie.css create mode 100644 local/html/NoAuth/css/3.4-compat/msie.css create mode 100644 local/html/NoAuth/css/3.4-compat/msie6.css create mode 100644 local/html/NoAuth/css/3.4-compat/nav.css create mode 100644 local/html/NoAuth/css/3.4-compat/ticket-lists.css create mode 100644 local/html/NoAuth/css/3.4-compat/ticket-search.css create mode 100644 local/html/NoAuth/css/3.4-compat/ticket.css create mode 100644 local/html/NoAuth/css/3.5-default/InHeader create mode 100644 local/html/NoAuth/css/3.5-default/base.css create mode 100644 local/html/NoAuth/css/3.5-default/boxes.css create mode 100644 local/html/NoAuth/css/3.5-default/images/dhandler create mode 100644 local/html/NoAuth/css/3.5-default/images/source/background-gradient.png create mode 100644 local/html/NoAuth/css/3.5-default/layout.css create mode 100644 local/html/NoAuth/css/3.5-default/main.css create mode 100644 local/html/NoAuth/css/3.5-default/misc.css create mode 100644 local/html/NoAuth/css/3.5-default/msie-pie.css create mode 100644 local/html/NoAuth/css/3.5-default/msie.css create mode 100644 local/html/NoAuth/css/3.5-default/msie6.css create mode 100644 local/html/NoAuth/css/3.5-default/nav.css create mode 100644 local/html/NoAuth/css/3.5-default/ticket-lists.css create mode 100644 local/html/NoAuth/css/3.5-default/ticket-search.css create mode 100644 local/html/NoAuth/css/3.5-default/ticket.css create mode 100644 local/html/NoAuth/css/web2/layout.css create mode 100644 local/html/NoAuth/images/so_logo.gif create mode 100644 local/html/NoAuth/images/uio-name.gif create mode 100755 local/html/NoAuth/images/uio_logo.gif create mode 100644 local/html/Ticket/Export.html create mode 100644 local/html/Ticket/ForkAskQueue.html create mode 100755 local/lib/RT/Interface/Email/Filter/SpamHeader.pm create mode 100644 local/lib/RT/Interface/Email/Filter/TakeAction.pm create mode 100755 local/lib/RT/Transaction_Local.pm create mode 100755 local/lib/RT/User_Local.not-pm create mode 100644 local/man/auto/RT/Authen/ExternalAuth/.packlist create mode 100644 local/man/auto/RT/Extension/Drafts/.packlist create mode 100644 local/man/man3/RT::Authen::ExternalAuth.3pm create mode 100644 local/man/man3/RT::Extension::Drafts.3pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/etc/RT_SiteConfig.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/html/Callbacks/ExternalAuth/Elements/Header/Head create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/html/Callbacks/ExternalAuth/autohandler/Auth create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/html/Callbacks/ExternalAuth/autohandler/Session create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/html/Elements/DoAuth create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/lib/RT/Authen/ExternalAuth.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/lib/RT/Authen/ExternalAuth/DBI.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/lib/RT/Authen/ExternalAuth/LDAP.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.mikal-fixx/lib/perllocal.pod create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/etc/RT_SiteConfig.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/html/Callbacks/ExternalAuth/Elements/Header/Head create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/html/Callbacks/ExternalAuth/autohandler/Auth create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/html/Callbacks/ExternalAuth/autohandler/Session create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/html/Elements/DoAuth create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/RT/Authen/ExternalAuth.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/RT/Authen/ExternalAuth/DBI.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/RT/Authen/ExternalAuth/LDAP.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/RT/Authen/ExternalAuth/Test.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth.multiple-emails/lib/perllocal.pod create mode 100644 local/plugins/RT-Authen-ExternalAuth/etc/RT_SiteConfig.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAuth/Elements/Header/Head create mode 100644 local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAuth/autohandler/Auth create mode 100644 local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAuth/autohandler/Session create mode 100644 local/plugins/RT-Authen-ExternalAuth/html/Elements/DoAuth create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/Test.pm create mode 100644 local/plugins/RT-Authen-ExternalAuth/lib/perllocal.pod create mode 100644 local/plugins/RT-Extension-Drafts/html/Callbacks/Drafts/Ticket/Display.html/BeforeDisplay create mode 100644 local/plugins/RT-Extension-Drafts/html/Callbacks/Drafts/Ticket/Update.html/AfterMessageBox create mode 100644 local/plugins/RT-Extension-Drafts/html/Callbacks/Drafts/Ticket/Update.html/Initial create mode 100644 local/plugins/RT-Extension-Drafts/lib/RT/Extension/Drafts.pm create mode 100644 local/plugins/RT-Extension-Drafts/lib/perllocal.pod create mode 100644 local/plugins/RT-Extension-Drafts/po/fr.po create mode 100755 sbin/rt-attributes-viewer create mode 100755 sbin/rt-clean-sessions create mode 100755 sbin/rt-dump-metadata create mode 100755 sbin/rt-email-dashboards create mode 100755 sbin/rt-email-digest create mode 100755 sbin/rt-email-group-admin create mode 100755 sbin/rt-fulltext-indexer create mode 100755 sbin/rt-preferences-viewer create mode 100755 sbin/rt-server create mode 100755 sbin/rt-server.fcgi create mode 100755 sbin/rt-session-viewer create mode 100755 sbin/rt-setup-database create mode 100755 sbin/rt-setup-fulltext-index create mode 100755 sbin/rt-shredder create mode 100755 sbin/rt-test-dependencies create mode 100755 sbin/rt-validator create mode 100755 sbin/standalone_httpd create mode 100644 share/doc/README create mode 100644 share/fonts/Droid.README create mode 100644 share/fonts/DroidSans.ttf create mode 100644 share/fonts/DroidSansFallback.ttf create mode 100644 share/html/Admin/Articles/Classes/CustomFields.html create mode 100644 share/html/Admin/Articles/Classes/GroupRights.html create mode 100644 share/html/Admin/Articles/Classes/Modify.html create mode 100644 share/html/Admin/Articles/Classes/Objects.html create mode 100644 share/html/Admin/Articles/Classes/Topics.html create mode 100644 share/html/Admin/Articles/Classes/UserRights.html create mode 100644 share/html/Admin/Articles/Classes/index.html create mode 100644 share/html/Admin/Articles/Elements/Topics create mode 100644 share/html/Admin/Articles/index.html create mode 100644 share/html/Admin/CustomFields/GroupRights.html create mode 100644 share/html/Admin/CustomFields/Modify.html create mode 100644 share/html/Admin/CustomFields/Objects.html create mode 100644 share/html/Admin/CustomFields/UserRights.html create mode 100644 share/html/Admin/CustomFields/index.html create mode 100644 share/html/Admin/Elements/AddCustomFieldValue create mode 100644 share/html/Admin/Elements/ConfigureMyRT create mode 100644 share/html/Admin/Elements/CreateUserCalled create mode 100644 share/html/Admin/Elements/EditCustomField create mode 100644 share/html/Admin/Elements/EditCustomFieldValues create mode 100644 share/html/Admin/Elements/EditCustomFieldValuesSource create mode 100644 share/html/Admin/Elements/EditCustomFields create mode 100644 share/html/Admin/Elements/EditQueueWatcherGroup create mode 100644 share/html/Admin/Elements/EditQueueWatchers create mode 100644 share/html/Admin/Elements/EditRights create mode 100644 share/html/Admin/Elements/EditRightsCategoryTabs create mode 100644 share/html/Admin/Elements/EditScrip create mode 100644 share/html/Admin/Elements/EditScrips create mode 100644 share/html/Admin/Elements/EditTemplates create mode 100644 share/html/Admin/Elements/EditUserComments create mode 100644 share/html/Admin/Elements/Header create mode 100644 share/html/Admin/Elements/ListGlobalCustomFields create mode 100644 share/html/Admin/Elements/ListGlobalScrips create mode 100644 share/html/Admin/Elements/ModifyTemplate create mode 100644 share/html/Admin/Elements/PickCustomFields create mode 100644 share/html/Admin/Elements/PickObjects create mode 100644 share/html/Admin/Elements/Portal create mode 100644 share/html/Admin/Elements/QueueRightsForUser create mode 100644 share/html/Admin/Elements/SelectCustomField create mode 100644 share/html/Admin/Elements/SelectCustomFieldLookupType create mode 100644 share/html/Admin/Elements/SelectCustomFieldRenderType create mode 100644 share/html/Admin/Elements/SelectCustomFieldType create mode 100644 share/html/Admin/Elements/SelectGroups create mode 100644 share/html/Admin/Elements/SelectModifyGroup create mode 100644 share/html/Admin/Elements/SelectModifyQueue create mode 100644 share/html/Admin/Elements/SelectModifyUser create mode 100644 share/html/Admin/Elements/SelectNewGroupMembers create mode 100644 share/html/Admin/Elements/SelectRights create mode 100644 share/html/Admin/Elements/SelectScrip create mode 100644 share/html/Admin/Elements/SelectScripAction create mode 100644 share/html/Admin/Elements/SelectScripCondition create mode 100644 share/html/Admin/Elements/SelectSingleOrMultiple create mode 100644 share/html/Admin/Elements/SelectStage create mode 100644 share/html/Admin/Elements/SelectTemplate create mode 100644 share/html/Admin/Elements/SelectUsers create mode 100644 share/html/Admin/Elements/ShowKeyInfo create mode 100644 share/html/Admin/Global/CustomFields/Class-Article.html create mode 100644 share/html/Admin/Global/CustomFields/Groups.html create mode 100644 share/html/Admin/Global/CustomFields/Queue-Tickets.html create mode 100644 share/html/Admin/Global/CustomFields/Queue-Transactions.html create mode 100644 share/html/Admin/Global/CustomFields/Queues.html create mode 100644 share/html/Admin/Global/CustomFields/Users.html create mode 100644 share/html/Admin/Global/CustomFields/index.html create mode 100644 share/html/Admin/Global/GroupRights.html create mode 100644 share/html/Admin/Global/MyRT.html create mode 100644 share/html/Admin/Global/Scrip.html create mode 100644 share/html/Admin/Global/Scrips.html create mode 100644 share/html/Admin/Global/Template.html create mode 100644 share/html/Admin/Global/Templates.html create mode 100644 share/html/Admin/Global/Topics.html create mode 100644 share/html/Admin/Global/UserRights.html create mode 100644 share/html/Admin/Global/index.html create mode 100644 share/html/Admin/Groups/GroupRights.html create mode 100644 share/html/Admin/Groups/History.html create mode 100644 share/html/Admin/Groups/Members.html create mode 100644 share/html/Admin/Groups/Modify.html create mode 100644 share/html/Admin/Groups/UserRights.html create mode 100644 share/html/Admin/Groups/index.html create mode 100644 share/html/Admin/Queues/CustomField.html create mode 100644 share/html/Admin/Queues/CustomFields.html create mode 100644 share/html/Admin/Queues/GroupRights.html create mode 100644 share/html/Admin/Queues/History.html create mode 100644 share/html/Admin/Queues/Modify.html create mode 100644 share/html/Admin/Queues/People.html create mode 100644 share/html/Admin/Queues/Scrip.html create mode 100644 share/html/Admin/Queues/Scrips.html create mode 100644 share/html/Admin/Queues/Template.html create mode 100644 share/html/Admin/Queues/Templates.html create mode 100644 share/html/Admin/Queues/UserRights.html create mode 100644 share/html/Admin/Queues/index.html create mode 100644 share/html/Admin/Tools/Configuration.html create mode 100644 share/html/Admin/Tools/Queries.html create mode 100644 share/html/Admin/Tools/Shredder/Dumps/dhandler create mode 100644 share/html/Admin/Tools/Shredder/Elements/DumpFileLink create mode 100644 share/html/Admin/Tools/Shredder/Elements/Error/NoRights create mode 100644 share/html/Admin/Tools/Shredder/Elements/Error/NoStorage create mode 100644 share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment create mode 100644 share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket create mode 100644 share/html/Admin/Tools/Shredder/Elements/Object/RT--User create mode 100644 share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox create mode 100644 share/html/Admin/Tools/Shredder/Elements/PluginArguments create mode 100644 share/html/Admin/Tools/Shredder/Elements/PluginHelp create mode 100644 share/html/Admin/Tools/Shredder/Elements/SelectObjects create mode 100644 share/html/Admin/Tools/Shredder/Elements/SelectPlugin create mode 100644 share/html/Admin/Tools/Shredder/autohandler create mode 100644 share/html/Admin/Tools/Shredder/index.html create mode 100644 share/html/Admin/Tools/Theme.html create mode 100644 share/html/Admin/Tools/index.html create mode 100644 share/html/Admin/Users/CustomFields.html create mode 100644 share/html/Admin/Users/GnuPG.html create mode 100644 share/html/Admin/Users/History.html create mode 100644 share/html/Admin/Users/Memberships.html create mode 100644 share/html/Admin/Users/Modify.html create mode 100644 share/html/Admin/Users/MyRT.html create mode 100644 share/html/Admin/Users/index.html create mode 100644 share/html/Admin/autohandler create mode 100644 share/html/Admin/index.html create mode 100644 share/html/Approvals/Display.html create mode 100644 share/html/Approvals/Elements/Approve create mode 100644 share/html/Approvals/Elements/PendingMyApproval create mode 100644 share/html/Approvals/Elements/ShowDependency create mode 100644 share/html/Approvals/autohandler create mode 100644 share/html/Approvals/index.html create mode 100644 share/html/Articles/Article/Delete.html create mode 100644 share/html/Articles/Article/Display.html create mode 100644 share/html/Articles/Article/Edit.html create mode 100644 share/html/Articles/Article/Elements/EditBasics create mode 100644 share/html/Articles/Article/Elements/EditCustomFields create mode 100644 share/html/Articles/Article/Elements/EditLinks create mode 100644 share/html/Articles/Article/Elements/EditTopics create mode 100644 share/html/Articles/Article/Elements/LinkEntryInstructions create mode 100644 share/html/Articles/Article/Elements/Preformatted create mode 100644 share/html/Articles/Article/Elements/SearchByCustomField create mode 100644 share/html/Articles/Article/Elements/SelectSavedSearches create mode 100644 share/html/Articles/Article/Elements/SelectSearchPrivacy create mode 100644 share/html/Articles/Article/Elements/ShowHistory create mode 100644 share/html/Articles/Article/Elements/ShowLinks create mode 100644 share/html/Articles/Article/Elements/ShowSavedSearches create mode 100644 share/html/Articles/Article/Elements/ShowSearchCriteria create mode 100644 share/html/Articles/Article/Elements/ShowTopics create mode 100644 share/html/Articles/Article/ExtractFromTicket.html create mode 100644 share/html/Articles/Article/ExtractIntoClass.html create mode 100644 share/html/Articles/Article/ExtractIntoTopic.html create mode 100644 share/html/Articles/Article/History.html create mode 100644 share/html/Articles/Article/PreCreate.html create mode 100644 share/html/Articles/Article/Search.html create mode 100644 share/html/Articles/Elements/BeforeMessageBox create mode 100644 share/html/Articles/Elements/CheckSkipCreate create mode 100644 share/html/Articles/Elements/CreateArticle create mode 100644 share/html/Articles/Elements/GotoArticle create mode 100644 share/html/Articles/Elements/Header create mode 100644 share/html/Articles/Elements/IncludeArticle create mode 100644 share/html/Articles/Elements/NewestArticles create mode 100644 share/html/Articles/Elements/QuickSearch create mode 100644 share/html/Articles/Elements/SelectClass create mode 100644 share/html/Articles/Elements/ShowTopic create mode 100644 share/html/Articles/Elements/ShowTopicLink create mode 100644 share/html/Articles/Elements/UpdatedArticles create mode 100644 share/html/Articles/Topics.html create mode 100644 share/html/Articles/index.html create mode 100644 share/html/Dashboards/Elements/DashboardsForObject create mode 100644 share/html/Dashboards/Elements/Deleted create mode 100644 share/html/Dashboards/Elements/HiddenSearches create mode 100644 share/html/Dashboards/Elements/ListOfDashboards create mode 100644 share/html/Dashboards/Elements/SelectPrivacy create mode 100644 share/html/Dashboards/Elements/ShowDashboards create mode 100644 share/html/Dashboards/Elements/ShowPortlet/component create mode 100644 share/html/Dashboards/Elements/ShowPortlet/dashboard create mode 100644 share/html/Dashboards/Elements/ShowPortlet/search create mode 100644 share/html/Dashboards/Modify.html create mode 100644 share/html/Dashboards/Queries.html create mode 100644 share/html/Dashboards/Render.html create mode 100644 share/html/Dashboards/Subscription.html create mode 100644 share/html/Dashboards/dhandler create mode 100644 share/html/Dashboards/index.html create mode 100644 share/html/Download/CustomFieldValue/dhandler create mode 100644 share/html/Elements/BevelBoxRaisedEnd create mode 100644 share/html/Elements/BevelBoxRaisedStart create mode 100644 share/html/Elements/CSRF create mode 100644 share/html/Elements/Callback create mode 100644 share/html/Elements/Checkbox create mode 100644 share/html/Elements/CollectionAsTable/Header create mode 100644 share/html/Elements/CollectionAsTable/ParseFormat create mode 100644 share/html/Elements/CollectionAsTable/Row create mode 100644 share/html/Elements/CollectionList create mode 100644 share/html/Elements/CollectionListPaging create mode 100644 share/html/Elements/ColumnMap create mode 100644 share/html/Elements/CreateTicket create mode 100644 share/html/Elements/Dashboards create mode 100644 share/html/Elements/EditCustomField create mode 100644 share/html/Elements/EditCustomFieldAutocomplete create mode 100644 share/html/Elements/EditCustomFieldBinary create mode 100644 share/html/Elements/EditCustomFieldCombobox create mode 100644 share/html/Elements/EditCustomFieldDate create mode 100644 share/html/Elements/EditCustomFieldDateTime create mode 100644 share/html/Elements/EditCustomFieldFreeform create mode 100644 share/html/Elements/EditCustomFieldIPAddress create mode 100644 share/html/Elements/EditCustomFieldIPAddressRange create mode 100644 share/html/Elements/EditCustomFieldImage create mode 100644 share/html/Elements/EditCustomFieldSelect create mode 100644 share/html/Elements/EditCustomFieldText create mode 100644 share/html/Elements/EditCustomFieldWikitext create mode 100644 share/html/Elements/EditLinks create mode 100644 share/html/Elements/EditPassword create mode 100644 share/html/Elements/EditTimeValue create mode 100644 share/html/Elements/EmailInput create mode 100644 share/html/Elements/Error create mode 100644 share/html/Elements/Footer create mode 100644 share/html/Elements/Framekiller create mode 100644 share/html/Elements/GnuPG/KeyIssues create mode 100644 share/html/Elements/GnuPG/SelectKeyForEncryption create mode 100644 share/html/Elements/GnuPG/SelectKeyForSigning create mode 100644 share/html/Elements/GnuPG/SignEncryptWidget create mode 100644 share/html/Elements/GotoTicket create mode 100644 share/html/Elements/Header create mode 100644 share/html/Elements/HeaderJavascript create mode 100644 share/html/Elements/ListActions create mode 100644 share/html/Elements/ListMenu create mode 100644 share/html/Elements/Login create mode 100644 share/html/Elements/Logo create mode 100644 share/html/Elements/MakeClicky create mode 100644 share/html/Elements/Menu create mode 100644 share/html/Elements/MessageBox create mode 100644 share/html/Elements/MyAdminQueues create mode 100644 share/html/Elements/MyRT create mode 100644 share/html/Elements/MyReminders create mode 100644 share/html/Elements/MyRequests create mode 100644 share/html/Elements/MySupportQueues create mode 100644 share/html/Elements/MyTickets create mode 100644 share/html/Elements/PageLayout create mode 100644 share/html/Elements/PersonalQuickbar create mode 100644 share/html/Elements/QueriesAsComment create mode 100644 share/html/Elements/QueryString create mode 100644 share/html/Elements/QueueSummaryByLifecycle create mode 100644 share/html/Elements/QueueSummaryByStatus create mode 100644 share/html/Elements/QuickCreate create mode 100644 share/html/Elements/Quicksearch create mode 100644 share/html/Elements/RT__Article/ColumnMap create mode 100644 share/html/Elements/RT__Class/ColumnMap create mode 100644 share/html/Elements/RT__CustomField/ColumnMap create mode 100644 share/html/Elements/RT__Dashboard/ColumnMap create mode 100644 share/html/Elements/RT__Group/ColumnMap create mode 100644 share/html/Elements/RT__Queue/ColumnMap create mode 100644 share/html/Elements/RT__SavedSearch/ColumnMap create mode 100644 share/html/Elements/RT__Scrip/ColumnMap create mode 100644 share/html/Elements/RT__Template/ColumnMap create mode 100644 share/html/Elements/RT__Ticket/ColumnMap create mode 100644 share/html/Elements/RT__User/ColumnMap create mode 100644 share/html/Elements/Refresh create mode 100644 share/html/Elements/RefreshHomepage create mode 100644 share/html/Elements/SavedSearches create mode 100644 share/html/Elements/ScrubHTML create mode 100644 share/html/Elements/Section create mode 100644 share/html/Elements/SelectAttachmentField create mode 100644 share/html/Elements/SelectBoolean create mode 100644 share/html/Elements/SelectCustomFieldOperator create mode 100644 share/html/Elements/SelectCustomFieldValue create mode 100644 share/html/Elements/SelectDate create mode 100644 share/html/Elements/SelectDateRelation create mode 100644 share/html/Elements/SelectDateType create mode 100644 share/html/Elements/SelectEqualityOperator create mode 100644 share/html/Elements/SelectGroups create mode 100644 share/html/Elements/SelectIPRelation create mode 100644 share/html/Elements/SelectLang create mode 100644 share/html/Elements/SelectLinkType create mode 100644 share/html/Elements/SelectMatch create mode 100644 share/html/Elements/SelectNewTicketQueue create mode 100644 share/html/Elements/SelectOwner create mode 100644 share/html/Elements/SelectOwnerAutocomplete create mode 100644 share/html/Elements/SelectOwnerDropdown create mode 100644 share/html/Elements/SelectPriority create mode 100644 share/html/Elements/SelectQueue create mode 100644 share/html/Elements/SelectResultsPerPage create mode 100644 share/html/Elements/SelectSortOrder create mode 100644 share/html/Elements/SelectStatus create mode 100644 share/html/Elements/SelectTicketSortBy create mode 100644 share/html/Elements/SelectTicketTypes create mode 100644 share/html/Elements/SelectTimeUnits create mode 100644 share/html/Elements/SelectTimezone create mode 100644 share/html/Elements/SelectUsers create mode 100644 share/html/Elements/SelectWatcherType create mode 100644 share/html/Elements/SetupSessionCookie create mode 100644 share/html/Elements/ShowCustomFieldBinary create mode 100644 share/html/Elements/ShowCustomFieldDate create mode 100644 share/html/Elements/ShowCustomFieldDateTime create mode 100644 share/html/Elements/ShowCustomFieldImage create mode 100644 share/html/Elements/ShowCustomFieldText create mode 100644 share/html/Elements/ShowCustomFieldWikitext create mode 100644 share/html/Elements/ShowCustomFields create mode 100644 share/html/Elements/ShowLink create mode 100644 share/html/Elements/ShowLinks create mode 100644 share/html/Elements/ShowMemberships create mode 100644 share/html/Elements/ShowRelationLabel create mode 100644 share/html/Elements/ShowReminders create mode 100644 share/html/Elements/ShowSearch create mode 100644 share/html/Elements/ShowUser create mode 100644 share/html/Elements/ShowUserConcise create mode 100644 share/html/Elements/ShowUserEmailFrequency create mode 100644 share/html/Elements/ShowUserVerbose create mode 100644 share/html/Elements/SimpleSearch create mode 100644 share/html/Elements/Submit create mode 100644 share/html/Elements/Tabs create mode 100644 share/html/Elements/TicketList create mode 100644 share/html/Elements/TitleBox create mode 100644 share/html/Elements/TitleBoxEnd create mode 100644 share/html/Elements/TitleBoxStart create mode 100644 share/html/Elements/ValidateCustomFields create mode 100644 share/html/Elements/WidgetBar create mode 100644 share/html/Helpers/Autocomplete/CustomFieldValues create mode 100644 share/html/Helpers/Autocomplete/Groups create mode 100644 share/html/Helpers/Autocomplete/Owners create mode 100644 share/html/Helpers/Autocomplete/Users create mode 100644 share/html/Helpers/TicketHistory create mode 100644 share/html/Helpers/Toggle/ShowRequestor create mode 100644 share/html/Helpers/Toggle/TicketBookmark create mode 100644 share/html/Install/Basics.html create mode 100644 share/html/Install/DatabaseDetails.html create mode 100644 share/html/Install/DatabaseType.html create mode 100644 share/html/Install/Elements/Errors create mode 100644 share/html/Install/Elements/Wrapper create mode 100644 share/html/Install/Finish.html create mode 100644 share/html/Install/Global.html create mode 100644 share/html/Install/Initialize.html create mode 100644 share/html/Install/Sendmail.html create mode 100644 share/html/Install/autohandler create mode 100644 share/html/Install/index.html create mode 100644 share/html/NoAuth/Helpers/CustomLogo/dhandler create mode 100644 share/html/NoAuth/Login.html create mode 100644 share/html/NoAuth/Logout.html create mode 100644 share/html/NoAuth/Reminder.html create mode 100644 share/html/NoAuth/RichText/autohandler create mode 100644 share/html/NoAuth/RichText/ckeditor/LICENSE.html create mode 100644 share/html/NoAuth/RichText/ckeditor/adapters/jquery.js create mode 100644 share/html/NoAuth/RichText/ckeditor/ckeditor.js create mode 100644 share/html/NoAuth/RichText/ckeditor/config.js create mode 100644 share/html/NoAuth/RichText/ckeditor/contents.css create mode 100644 share/html/NoAuth/RichText/ckeditor/images/spacer.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/_languages.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/af.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ar.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/bg.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/bn.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/bs.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ca.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/cs.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/cy.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/da.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/de.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/el.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/en-au.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/en-ca.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/en-gb.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/en.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/eo.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/es.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/et.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/eu.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/fa.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/fi.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/fo.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/fr.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/gl.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/gu.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/he.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/hi.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/hr.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/hu.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/is.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/it.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ja.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/km.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ko.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/lt.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/lv.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/mn.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ms.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/nb.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/nl.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/no.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/pl.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/pt-br.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/pt.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ro.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/ru.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/sk.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/sl.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/sr.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/sv.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/th.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/tr.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/uk.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/vi.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js create mode 100644 share/html/NoAuth/RichText/ckeditor/lang/zh.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/logo_ckeditor.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/flash/images/placeholder.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/forms/images/hiddenfield.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/link/images/anchor.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/pagebreak/images/pagebreak.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_address.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_blockquote.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_div.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h1.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h2.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h3.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h4.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h5.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h6.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_p.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_pre.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angel_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angry_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/broken_heart.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/confused_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/cry_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/devil_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/embaressed_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/envelope.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/heart.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/kiss.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/lightbulb.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/omg_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/regular_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/sad_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/shades_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/teeth_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_down.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_up.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/tounge_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/wink_smile.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template1.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template2.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template3.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/uicolor.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_bg.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_mask.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css create mode 100644 share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js create mode 100644 share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css create mode 100644 share/html/NoAuth/RichText/ckeditor/themes/default/theme.js create mode 100644 share/html/NoAuth/RichText/dhandler create mode 100644 share/html/NoAuth/css/aileron/InHeader create mode 100644 share/html/NoAuth/css/aileron/base.css create mode 100644 share/html/NoAuth/css/aileron/boxes.css create mode 100644 share/html/NoAuth/css/aileron/forms.css create mode 100644 share/html/NoAuth/css/aileron/images/dhandler create mode 100644 share/html/NoAuth/css/aileron/images/source/background-gradient.png create mode 100644 share/html/NoAuth/css/aileron/layout.css create mode 100644 share/html/NoAuth/css/aileron/login.css create mode 100644 share/html/NoAuth/css/aileron/main.css create mode 100644 share/html/NoAuth/css/aileron/misc.css create mode 100644 share/html/NoAuth/css/aileron/msie.css create mode 100644 share/html/NoAuth/css/aileron/msie6.css create mode 100644 share/html/NoAuth/css/aileron/nav.css create mode 100644 share/html/NoAuth/css/aileron/ticket-lists.css create mode 100644 share/html/NoAuth/css/aileron/ticket-search.css create mode 100644 share/html/NoAuth/css/aileron/ticket.css create mode 100644 share/html/NoAuth/css/autohandler create mode 100644 share/html/NoAuth/css/ballard/InHeader create mode 100644 share/html/NoAuth/css/ballard/base.css create mode 100644 share/html/NoAuth/css/ballard/boxes.css create mode 100644 share/html/NoAuth/css/ballard/images/dhandler create mode 100644 share/html/NoAuth/css/ballard/images/source/background-gradient.png create mode 100644 share/html/NoAuth/css/ballard/layout.css create mode 100644 share/html/NoAuth/css/ballard/main.css create mode 100644 share/html/NoAuth/css/ballard/misc.css create mode 100644 share/html/NoAuth/css/ballard/msie.css create mode 100644 share/html/NoAuth/css/ballard/msie6.css create mode 100644 share/html/NoAuth/css/ballard/nav.css create mode 100644 share/html/NoAuth/css/ballard/ticket-lists.css create mode 100644 share/html/NoAuth/css/ballard/ticket-search.css create mode 100644 share/html/NoAuth/css/ballard/ticket.css create mode 100644 share/html/NoAuth/css/base/admin.css create mode 100644 share/html/NoAuth/css/base/articles.css create mode 100644 share/html/NoAuth/css/base/collection.css create mode 100644 share/html/NoAuth/css/base/farbtastic.css create mode 100644 share/html/NoAuth/css/base/forms.css create mode 100644 share/html/NoAuth/css/base/history-folding.css create mode 100644 share/html/NoAuth/css/base/jquery-ui.css create mode 100644 share/html/NoAuth/css/base/jquery-ui.custom.modified.css create mode 100644 share/html/NoAuth/css/base/login.css create mode 100644 share/html/NoAuth/css/base/main.css create mode 100644 share/html/NoAuth/css/base/misc.css create mode 100644 share/html/NoAuth/css/base/nav.css create mode 100644 share/html/NoAuth/css/base/portlets.css create mode 100644 share/html/NoAuth/css/base/rights-editor.css create mode 100644 share/html/NoAuth/css/base/superfish-navbar.css create mode 100644 share/html/NoAuth/css/base/superfish-vertical.css create mode 100644 share/html/NoAuth/css/base/superfish.css create mode 100644 share/html/NoAuth/css/base/tablesorter.css create mode 100644 share/html/NoAuth/css/base/theme-editor.css create mode 100644 share/html/NoAuth/css/base/ticket-form.css create mode 100644 share/html/NoAuth/css/base/ticket.css create mode 100644 share/html/NoAuth/css/base/tools.css create mode 100644 share/html/NoAuth/css/base/ui.timepickr.css create mode 100644 share/html/NoAuth/css/base/ui.timepickr.custom.css create mode 100644 share/html/NoAuth/css/base/yui-fonts.css create mode 100644 share/html/NoAuth/css/dhandler create mode 100644 share/html/NoAuth/css/images/arrows-ffffff.gif create mode 100644 share/html/NoAuth/css/images/arrows-ffffff.png create mode 100644 share/html/NoAuth/css/images/arrows-grey.gif create mode 100644 share/html/NoAuth/css/images/arrows-grey.png create mode 100644 share/html/NoAuth/css/images/shadow.gif create mode 100644 share/html/NoAuth/css/images/shadow.png create mode 100644 share/html/NoAuth/css/print.css create mode 100644 share/html/NoAuth/css/web2/InHeader create mode 100644 share/html/NoAuth/css/web2/base.css create mode 100644 share/html/NoAuth/css/web2/boxes.css create mode 100644 share/html/NoAuth/css/web2/images/dhandler create mode 100644 share/html/NoAuth/css/web2/images/source/background-gradient.png create mode 100644 share/html/NoAuth/css/web2/layout.css create mode 100644 share/html/NoAuth/css/web2/main.css create mode 100644 share/html/NoAuth/css/web2/misc.css create mode 100644 share/html/NoAuth/css/web2/msie.css create mode 100644 share/html/NoAuth/css/web2/msie6.css create mode 100644 share/html/NoAuth/css/web2/nav.css create mode 100644 share/html/NoAuth/css/web2/ticket-lists.css create mode 100644 share/html/NoAuth/css/web2/ticket-search.css create mode 100644 share/html/NoAuth/css/web2/ticket.css create mode 100644 share/html/NoAuth/iCal/dhandler create mode 100644 share/html/NoAuth/images/autohandler create mode 100644 share/html/NoAuth/images/bpslogo.png create mode 100644 share/html/NoAuth/images/css/cb-light.gif create mode 100644 share/html/NoAuth/images/css/cb.gif create mode 100644 share/html/NoAuth/images/css/cbr-b2g.gif create mode 100644 share/html/NoAuth/images/css/cbr-b2lb.gif create mode 100644 share/html/NoAuth/images/css/cbr-gray.gif create mode 100644 share/html/NoAuth/images/css/cbr-trans.gif create mode 100644 share/html/NoAuth/images/css/cbr.gif create mode 100644 share/html/NoAuth/images/css/ct-light.gif create mode 100644 share/html/NoAuth/images/css/ct.gif create mode 100644 share/html/NoAuth/images/css/ctr-b2g.gif create mode 100644 share/html/NoAuth/images/css/ctr-b2lb.gif create mode 100644 share/html/NoAuth/images/css/ctr-gray.gif create mode 100644 share/html/NoAuth/images/css/ctr-trans.gif create mode 100644 share/html/NoAuth/images/css/ctr.gif create mode 100644 share/html/NoAuth/images/css/dark-arrow-up.png create mode 100644 share/html/NoAuth/images/css/dark-arrow.png create mode 100644 share/html/NoAuth/images/css/fieldbg-autocomplete.gif create mode 100644 share/html/NoAuth/images/css/light-arrow-up.png create mode 100644 share/html/NoAuth/images/css/light-arrow.png create mode 100644 share/html/NoAuth/images/css/rolldown-arrow.gif create mode 100644 share/html/NoAuth/images/css/rolldown-arrow.png create mode 100644 share/html/NoAuth/images/css/rollup-arrow.gif create mode 100644 share/html/NoAuth/images/empty_star.gif create mode 100644 share/html/NoAuth/images/farbtastic/marker.png create mode 100644 share/html/NoAuth/images/farbtastic/mask.png create mode 100644 share/html/NoAuth/images/farbtastic/wheel.png create mode 100644 share/html/NoAuth/images/favicon.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png create mode 100644 share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png create mode 100644 share/html/NoAuth/images/star.gif create mode 100644 share/html/NoAuth/images/tablesorter/asc.gif create mode 100644 share/html/NoAuth/images/tablesorter/bg.gif create mode 100644 share/html/NoAuth/images/tablesorter/desc.gif create mode 100644 share/html/NoAuth/images/test.png create mode 100644 share/html/NoAuth/js/IE7/IE7.js create mode 100644 share/html/NoAuth/js/IE7/IE8.js create mode 100644 share/html/NoAuth/js/IE7/blank.gif create mode 100644 share/html/NoAuth/js/IE7/ie7-recalc.js create mode 100644 share/html/NoAuth/js/IE7/ie7-squish.js create mode 100644 share/html/NoAuth/js/autohandler create mode 100644 share/html/NoAuth/js/cascaded.js create mode 100644 share/html/NoAuth/js/class.js create mode 100644 share/html/NoAuth/js/combobox.js create mode 100644 share/html/NoAuth/js/dhandler create mode 100644 share/html/NoAuth/js/farbtastic.js create mode 100644 share/html/NoAuth/js/history-folding.js create mode 100644 share/html/NoAuth/js/jquery-1.4.2.min.js create mode 100644 share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js create mode 100644 share/html/NoAuth/js/jquery-ui-patch-datepicker.js create mode 100644 share/html/NoAuth/js/jquery.event.hover-1.0.js create mode 100644 share/html/NoAuth/js/jquery.supposition.js create mode 100644 share/html/NoAuth/js/jquery.tablesorter.min.js create mode 100644 share/html/NoAuth/js/jquery_noconflict.js create mode 100644 share/html/NoAuth/js/late.js create mode 100644 share/html/NoAuth/js/list.js create mode 100644 share/html/NoAuth/js/superfish.js create mode 100644 share/html/NoAuth/js/supersubs.js create mode 100644 share/html/NoAuth/js/titlebox-state.js create mode 100644 share/html/NoAuth/js/ui.timepickr.js create mode 100644 share/html/NoAuth/js/userautocomplete.js create mode 100644 share/html/NoAuth/js/util.js create mode 100644 share/html/NoAuth/rss/dhandler create mode 100644 share/html/Prefs/MyRT.html create mode 100644 share/html/Prefs/Other.html create mode 100644 share/html/Prefs/Quicksearch.html create mode 100644 share/html/Prefs/Search.html create mode 100644 share/html/Prefs/SearchOptions.html create mode 100644 share/html/REST/1.0/Forms/attachment/default create mode 100644 share/html/REST/1.0/Forms/group/customfields create mode 100644 share/html/REST/1.0/Forms/group/default create mode 100644 share/html/REST/1.0/Forms/group/ns create mode 100644 share/html/REST/1.0/Forms/queue/customfields create mode 100644 share/html/REST/1.0/Forms/queue/default create mode 100644 share/html/REST/1.0/Forms/queue/ns create mode 100644 share/html/REST/1.0/Forms/queue/ticketcustomfields create mode 100644 share/html/REST/1.0/Forms/ticket/attachments create mode 100644 share/html/REST/1.0/Forms/ticket/comment create mode 100644 share/html/REST/1.0/Forms/ticket/default create mode 100644 share/html/REST/1.0/Forms/ticket/history create mode 100644 share/html/REST/1.0/Forms/ticket/links create mode 100644 share/html/REST/1.0/Forms/ticket/merge create mode 100644 share/html/REST/1.0/Forms/ticket/take create mode 100644 share/html/REST/1.0/Forms/transaction/default create mode 100644 share/html/REST/1.0/Forms/user/default create mode 100644 share/html/REST/1.0/Forms/user/ns create mode 100644 share/html/REST/1.0/NoAuth/mail-gateway create mode 100644 share/html/REST/1.0/autohandler create mode 100644 share/html/REST/1.0/dhandler create mode 100644 share/html/REST/1.0/logout create mode 100644 share/html/REST/1.0/search/dhandler create mode 100644 share/html/REST/1.0/search/ticket create mode 100644 share/html/REST/1.0/ticket/comment create mode 100644 share/html/REST/1.0/ticket/link create mode 100644 share/html/REST/1.0/ticket/merge create mode 100644 share/html/Search/Article.html create mode 100644 share/html/Search/Build.html create mode 100644 share/html/Search/Bulk.html create mode 100644 share/html/Search/Chart create mode 100644 share/html/Search/Chart.html create mode 100644 share/html/Search/Edit.html create mode 100644 share/html/Search/Elements/Article create mode 100644 share/html/Search/Elements/BuildFormatString create mode 100644 share/html/Search/Elements/Chart create mode 100644 share/html/Search/Elements/ConditionRow create mode 100644 share/html/Search/Elements/DisplayOptions create mode 100644 share/html/Search/Elements/EditFormat create mode 100644 share/html/Search/Elements/EditQuery create mode 100644 share/html/Search/Elements/EditSearches create mode 100644 share/html/Search/Elements/EditSort create mode 100644 share/html/Search/Elements/Graph create mode 100644 share/html/Search/Elements/NewListActions create mode 100644 share/html/Search/Elements/PickBasics create mode 100644 share/html/Search/Elements/PickCFs create mode 100644 share/html/Search/Elements/PickCriteria create mode 100644 share/html/Search/Elements/ResultsRSSView create mode 100644 share/html/Search/Elements/SearchPrivacy create mode 100644 share/html/Search/Elements/SearchesForObject create mode 100644 share/html/Search/Elements/SelectAndOr create mode 100644 share/html/Search/Elements/SelectChartType create mode 100644 share/html/Search/Elements/SelectGroup create mode 100644 share/html/Search/Elements/SelectGroupBy create mode 100644 share/html/Search/Elements/SelectLinks create mode 100644 share/html/Search/Elements/SelectPersonType create mode 100644 share/html/Search/Elements/SelectSearchObject create mode 100644 share/html/Search/Elements/SelectSearchesForObjects create mode 100644 share/html/Search/Graph.html create mode 100644 share/html/Search/Results.html create mode 100644 share/html/Search/Results.rdf create mode 100644 share/html/Search/Results.tsv create mode 100644 share/html/Search/Simple.html create mode 100644 share/html/SelfService/Article/Display.html create mode 100644 share/html/SelfService/Article/Search.html create mode 100644 share/html/SelfService/Article/autohandler create mode 100644 share/html/SelfService/Attachment/dhandler create mode 100644 share/html/SelfService/Closed.html create mode 100644 share/html/SelfService/Create.html create mode 100644 share/html/SelfService/CreateTicketInQueue.html create mode 100644 share/html/SelfService/Display.html create mode 100644 share/html/SelfService/Elements/GotoTicket create mode 100644 share/html/SelfService/Elements/Header create mode 100644 share/html/SelfService/Elements/MyRequests create mode 100644 share/html/SelfService/Elements/SearchArticle create mode 100644 share/html/SelfService/Error.html create mode 100644 share/html/SelfService/Prefs.html create mode 100644 share/html/SelfService/Update.html create mode 100644 share/html/SelfService/index.html create mode 100644 share/html/Ticket/Attachment/WithHeaders/dhandler create mode 100644 share/html/Ticket/Attachment/dhandler create mode 100644 share/html/Ticket/Create.html create mode 100644 share/html/Ticket/Display.html create mode 100644 share/html/Ticket/Elements/AddAttachments create mode 100644 share/html/Ticket/Elements/AddWatchers create mode 100644 share/html/Ticket/Elements/Bookmark create mode 100644 share/html/Ticket/Elements/BulkLinks create mode 100644 share/html/Ticket/Elements/ClickToShowHistory create mode 100644 share/html/Ticket/Elements/EditBasics create mode 100644 share/html/Ticket/Elements/EditCustomFields create mode 100644 share/html/Ticket/Elements/EditDates create mode 100644 share/html/Ticket/Elements/EditPeople create mode 100644 share/html/Ticket/Elements/EditTransactionCustomFields create mode 100644 share/html/Ticket/Elements/EditWatchers create mode 100644 share/html/Ticket/Elements/FindAttachments create mode 100644 share/html/Ticket/Elements/FindTransactions create mode 100644 share/html/Ticket/Elements/FoldStanzaJS create mode 100644 share/html/Ticket/Elements/LoadTextAttachments create mode 100644 share/html/Ticket/Elements/PreviewScrips create mode 100644 share/html/Ticket/Elements/Reminders create mode 100644 share/html/Ticket/Elements/ShowAttachments create mode 100644 share/html/Ticket/Elements/ShowBasics create mode 100644 share/html/Ticket/Elements/ShowCustomFields create mode 100644 share/html/Ticket/Elements/ShowDates create mode 100644 share/html/Ticket/Elements/ShowDependencies create mode 100644 share/html/Ticket/Elements/ShowGnuPGStatus create mode 100644 share/html/Ticket/Elements/ShowGroupMembers create mode 100644 share/html/Ticket/Elements/ShowHistory create mode 100644 share/html/Ticket/Elements/ShowMembers create mode 100644 share/html/Ticket/Elements/ShowMessageHeaders create mode 100644 share/html/Ticket/Elements/ShowMessageStanza create mode 100644 share/html/Ticket/Elements/ShowParents create mode 100644 share/html/Ticket/Elements/ShowPeople create mode 100644 share/html/Ticket/Elements/ShowPriority create mode 100644 share/html/Ticket/Elements/ShowQueue create mode 100644 share/html/Ticket/Elements/ShowRequestor create mode 100644 share/html/Ticket/Elements/ShowRequestorExtraInfo create mode 100644 share/html/Ticket/Elements/ShowRequestorTickets create mode 100644 share/html/Ticket/Elements/ShowRequestorTicketsActive create mode 100644 share/html/Ticket/Elements/ShowRequestorTicketsAll create mode 100644 share/html/Ticket/Elements/ShowRequestorTicketsInactive create mode 100644 share/html/Ticket/Elements/ShowSimplifiedRecipients create mode 100644 share/html/Ticket/Elements/ShowSummary create mode 100644 share/html/Ticket/Elements/ShowTime create mode 100644 share/html/Ticket/Elements/ShowTransaction create mode 100644 share/html/Ticket/Elements/ShowTransactionAttachments create mode 100644 share/html/Ticket/Elements/ShowUpdateStatus create mode 100644 share/html/Ticket/Elements/ShowUserEntry create mode 100644 share/html/Ticket/Elements/UpdateCc create mode 100644 share/html/Ticket/Forward.html create mode 100644 share/html/Ticket/GnuPG.html create mode 100644 share/html/Ticket/Graphs/Elements/EditGraphProperties create mode 100644 share/html/Ticket/Graphs/Elements/ShowGraph create mode 100644 share/html/Ticket/Graphs/Elements/ShowLegends create mode 100644 share/html/Ticket/Graphs/dhandler create mode 100644 share/html/Ticket/Graphs/index.html create mode 100644 share/html/Ticket/History.html create mode 100644 share/html/Ticket/Modify.html create mode 100644 share/html/Ticket/ModifyAll.html create mode 100644 share/html/Ticket/ModifyDates.html create mode 100644 share/html/Ticket/ModifyLinks.html create mode 100644 share/html/Ticket/ModifyPeople.html create mode 100644 share/html/Ticket/Reminders.html create mode 100644 share/html/Ticket/ShowEmailRecord.html create mode 100644 share/html/Ticket/Update.html create mode 100644 share/html/Ticket/Update.html.rej create mode 100644 share/html/Ticket/autohandler create mode 100644 share/html/Tools/MyDay.html create mode 100644 share/html/Tools/MyReminders.html create mode 100644 share/html/Tools/Offline.html create mode 100644 share/html/Tools/index.html create mode 100644 share/html/User/Prefs.html create mode 100644 share/html/Widgets/BulkEdit create mode 100644 share/html/Widgets/BulkProcess create mode 100644 share/html/Widgets/ComboBox create mode 100644 share/html/Widgets/FinalizeWidgetArguments create mode 100644 share/html/Widgets/Form/Boolean create mode 100644 share/html/Widgets/Form/Integer create mode 100644 share/html/Widgets/Form/Select create mode 100644 share/html/Widgets/Form/String create mode 100644 share/html/Widgets/SavedSearch create mode 100644 share/html/Widgets/SelectionBox create mode 100644 share/html/Widgets/TitleBox create mode 100644 share/html/Widgets/TitleBoxEnd create mode 100644 share/html/Widgets/TitleBoxStart create mode 100644 share/html/autohandler create mode 100644 share/html/dhandler create mode 100644 share/html/index.html create mode 100644 share/html/l create mode 100644 share/html/l_unsafe create mode 100644 share/html/m/_elements/footer create mode 100644 share/html/m/_elements/full_site_link create mode 100644 share/html/m/_elements/header create mode 100644 share/html/m/_elements/menu create mode 100644 share/html/m/_elements/raw_style create mode 100644 share/html/m/_elements/ticket_list create mode 100644 share/html/m/_elements/ticket_menu create mode 100644 share/html/m/_elements/wrapper create mode 100644 share/html/m/dhandler create mode 100644 share/html/m/index.html create mode 100644 share/html/m/login create mode 100644 share/html/m/logout create mode 100644 share/html/m/style.css create mode 100644 share/html/m/ticket/autohandler create mode 100644 share/html/m/ticket/create create mode 100644 share/html/m/ticket/create.orig create mode 100644 share/html/m/ticket/history create mode 100644 share/html/m/ticket/modify create mode 100644 share/html/m/ticket/reply create mode 100644 share/html/m/ticket/select_create_queue create mode 100644 share/html/m/ticket/show create mode 100644 share/html/m/tickets/search create mode 100644 share/po/bg.po create mode 100644 share/po/cs.po create mode 100644 share/po/da.po create mode 100644 share/po/de.po create mode 100644 share/po/el.po create mode 100644 share/po/en.po create mode 100644 share/po/en_GB.po create mode 100644 share/po/es.po create mode 100644 share/po/et.po create mode 100644 share/po/fi.po create mode 100644 share/po/fr.po create mode 100644 share/po/he.po create mode 100644 share/po/hr.po create mode 100644 share/po/hu.po create mode 100644 share/po/id.po create mode 100644 share/po/is.po create mode 100644 share/po/it.po create mode 100644 share/po/ja.po create mode 100644 share/po/lt.po create mode 100644 share/po/lv.po create mode 100644 share/po/mk.po create mode 100644 share/po/nb.po create mode 100644 share/po/nl.po create mode 100644 share/po/nn.po create mode 100644 share/po/pl.po create mode 100644 share/po/pt.po create mode 100644 share/po/pt_BR.po create mode 100644 share/po/pt_PT.po create mode 100644 share/po/rt.pot create mode 100644 share/po/ru.po create mode 100644 share/po/sl.po create mode 100644 share/po/sv.po create mode 100644 share/po/tr.po create mode 100644 share/po/zh_CN.po create mode 100644 share/po/zh_TW.po diff --git a/bin/jsmin b/bin/jsmin new file mode 100755 index 0000000000000000000000000000000000000000..6bf8f2cd35f0c21db695cad6167f398b21055626 GIT binary patch literal 9718 zcmcIq3vg7|c|N<#m1G&QD*-k(a@g1+7Phq#4}&n!TpahEAOsB~!POg~v*bowW_# ze*bw~-MvVePG@p<_Wb|<{g3m!=iGblJ=z)B;`Ml#N?!H{jHEG5=a9%5YhA=eiM6sS zrn8T*rK|#ohQH1=LWhJHjw>3F^$4r_NIw$EFIdaXLAyDlXn_JFDXQ8>ZKHp^j92f~A(5;T zVI4f5p}a4EJ@&fUOMJIq75VLGO5riUVrK?YU0-Idw6KoA9awZY?>A{mZU$rS$pJ_Qy<=_nlhXJx&74q zKmMnWew%bumg;}z39@6JfS0ga@Taumt}oX2?TH4~|Bt1HTPPek`3D`cV($b)b#W)^ zpV{z-=fF44fw#|rFPj4o0k36uu;9XOaH8!*8}TPR;KCo2_!1Y+45NQAl{7MDG;JCN z!!Y&GsH|nN;ke0+u1Afbtl7gdW^X)6c`9oXiKWx5@6+kH8Do7z>3GuYc+T3oe3atuJJ?LU||2!BungjHwl)W>KVe_&+A+pnT-JGMjM`NUtYA0Q* zYMe=@+DUjd0WzunB3#W)QeBquE5X~BCip83oaUHH;|^S18>E|X;Li19+JQT-pP~b& zvQ-M_u2xOF1ZiS3nmh3(>Ke}dW7YZ6gXx+eD=jyX`^8F-J7foK~ z@;;KONt0t-eu89b%H(M-?g)f{P;pD;tAQMO7aIH|Fx`!?8hx3Chd}7S>mM-(E7o2HNIRE-CGCa1a3I($4 z!!HN0mSZ-DpaE!D%Y$VC5-A;b!G|5xmX&%c)m~|UHIg!DInSy zurv>+RhourMfG;~rA**@FQdYA%uTN1)HQCBh zn#qVB1QF4BK@+DCFt5FUNS5|BKcWQlM>LQvuAJq%z&y7C2 zKnH#GNB5xAA5*7M9~d`Er86WbmQAdp(a}<*UmWLF{m9p!GY?qW>+c5 zrKLIhakItJ`Z@a_(A>OMsv@`dkmrg|ItS_!SBxVU@wV8GdG7dAt{>x$Ph~3#lYhbc z;|ClNBV}=u7m$k(K0Cw~9wNu}hq*^7`vr{D4sLsHbX<U#7VS&vL6Fy zX-A;Q6|2qGTrnv6-_nx65cTJXiUrg!rsosnvl>2UXs4NYn8XGi;^RET{bn#%ydMi& zF=*bMD>j<7Q}<#_&FWn7Gp3d+Hf5KHK(+9k+8`>T5#MZS*DH95PnDH8fmTeOrAqS> z|DD9YhB)~mGE4gze5mHDc+J1WvC|^XVi9M)C~yRhQ-?%>r-&c2w9j+r`_1K4=UQ4X zmgb5p%-eFsyHWA_T=6NY_+e4;8WHD{@GVTOwzO@clpkO)&_A-2hbZ!GqLdKv)xzs; z@RoKvFR$c3@db>Mz1#)!hp&e7+3^dV*U^(~ss(Fb`1$bJabMWiIUcqGKl}vE2TL2% zXnI`23M!^iV-f2*oM6A9^Xj3W3A7fmIY(Pv;ceO-o%>@x(QqY_?`;?lKiAam3$n;_ z%Qq4MJ`u^A4bzeQp@w2OzqbLq`PJ6Qir3rnH@foghR@#cb>)9C@$hdk`A)oP*01~z zx-W_3-;d+aFBe);AqZ z(0w?i-(ep!gYjf=XRJS)h^B*`!$av z*#4j3Y99L#;C0Yna_YSoZU1ioe;xWKXxUQb`}X+AfMWhV{>yNIeFgQM(HA^Q{~F*^ z=z}Pzt@rNb@u}U{@xKDSa|Sg4TZDL*f#<=q9beQwS79vBbCqB6p7cF8&-=**Xuh3r zJH(R$+_J){ij)F^u=$dPlK!QnWKR)RSFH+prh*eLyJJ#i+te+QIULQ|^zZm$l6u6s^ciy-z{rMk`}%(jD} zYhC%P^`IbuD%s!)*buAy)phxYz-TQ{{%U=BUM>)7J%I^N?*5~-pRQ%)udd%}+0fgh zpE@g1c8VT=p4J8>tMwr${e#lqU4IF)gJ8&1`K$Fvm;T+-P?hg)|8bZ9h+Kb0q`z7Z z$)DD2xBp3C)F)IwN@_iCkp-%L7Fu~$tprfoW1RkBxt@fj|B%C$SXnK5A35dnSLf|x z(*OIa!ZJ=kQboS*@>l!Mzye_*i88m#SHK7us=w<0VYz<|OUM6GhLXCf!@lqGSLf5} z+?wuroJqA`VSfw8S^g+)nJJC>Ibj<~=}7MK$Dkt?k~6h1(!daSW&8~ z<-{H*Agef+#y7&CGu#PlF*F)qZte zTqXTml%b@m-3opO47J~Fr~DsKhLXze}nL0_n%D;O_E;)$F;CYU|Z+Qua(n?(>u5RdXKH;c#{+mzr#m6e`!KuIdgfI6@J33lQ|0(VtUKLKi1R+& z&8v0Asr0eM_It>3{5Jc2OgVnL{k%|)V>T}Ac0!!@Io?w_l|Dvq+sc!;4r`ZvmUsq1FH#9Jh; zuE$~E6z7;L&Rq3B&f{Q_bdA>^alDpI2Xt^V>04kuvy9`P1E+FZ=q7VJ zHO+zRJkHJ6MHlcOJuS0$4Z5buC-1bUb-H&l4vI9Jhl4j_^Iq;J_&WxSn zMmT=+I`h3b?0*8hmd&g`YTW;I4*NHN2WDySZ+V=X-#=HQ;k8~rJLZ~)w{v_UqnCfq z)Bv3Njb1NOqWfS<28)lmr{!I9Q!%PXW3tRqKSm#6+P=on;A2UlUsVv-oE?MokpZ<*KWMI zH;j%lXli7Fc<(St>zR0-@68Sl zKBLO%+}^>9*|M|kkxoNNRE*+hO5sobyp;VJ9I&FY=0L2Cvdxr5QmF&cfmpPc#WQV* zp@C>JJIL_u02_+M4zMI0F+_VzI+)<@%-9-vbaPw8cy!B_U7fp)-EEsAoz!AFk}#s_ zbo3b`mh3GD_!kY#=y-g4+aq1=j7}KDCkZg)-zW5BvIalLu;H>VA&hOGGH~`9&)}e? zJrT`hVj2ETgswZkW{?rwUp%;s@D&CBfWpXTVyGrW`cT4UWH_qGt#8t2QU +# +# (Except where explicitly superseded by other copyright notices) +# +# +# LICENSE: +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 or visit their web page on the internet at +# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +# +# +# CONTRIBUTION SUBMISSION POLICY: +# +# (The following paragraph is not intended to limit the rights granted +# to you to modify and distribute this software under the terms of +# the GNU General Public License and is only of importance to you if +# you choose to contribute your changes and enhancements to the +# community by submitting them to Best Practical Solutions, LLC.) +# +# By intentionally submitting any modifications, corrections or +# derivatives to this work, or any other work intended for use with +# Request Tracker, to Best Practical Solutions, LLC, you confirm that +# you are the copyright holder for those contributions and you grant +# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +# royalty-free, perpetual, license to use, copy, create derivative +# works based on those contributions, and sublicense and distribute +# those contributions and any derivatives thereof. +# +# END BPS TAGGED BLOCK }}} +# Designed and implemented for Best Practical Solutions, LLC by +# Abhijit Menon-Sen + +use strict; + +if ( $ARGV[0] && $ARGV[0] =~ /^(?:--help|-h)$/ ) { + require Pod::Usage; + print Pod::Usage::pod2usage( { verbose => 2 } ); + exit; +} + +# This program is intentionally written to have as few non-core module +# dependencies as possible. It should stay that way. + +use Cwd; +use LWP; +use Text::ParseWords; +use HTTP::Request::Common; +use HTTP::Headers; +use Term::ReadLine; +use Time::Local; # used in prettyshow + +# strong (GSSAPI based) authentication is supported if the server does provide +# it and the perl modules GSSAPI and LWP::Authen::Negotiate are installed +# it can be suppressed by setting externalauth=0 (default is undef) +eval { require GSSAPI }; +my $no_strong_auth = 'missing perl module GSSAPI'; +if ( ! $@ ) { + eval {require LWP::Authen::Negotiate}; + $no_strong_auth = $@ ? 'missing perl module LWP::Authen::Negotiate' : 0; +} + +# We derive configuration information from hardwired defaults, dotfiles, +# and the RT* environment variables (in increasing order of precedence). +# Session information is stored in ~/.rt_sessions. + +my $VERSION = 0.02; +my $HOME = eval{(getpwuid($<))[7]} + || $ENV{HOME} || $ENV{LOGDIR} || $ENV{HOMEPATH} + || "."; +my %config = ( + ( + debug => 0, + user => eval{(getpwuid($<))[0]} || $ENV{USER} || $ENV{USERNAME}, + passwd => undef, + server => 'http://localhost/', + query => "Status!='resolved' and Status!='rejected'", + orderby => 'id', + queue => undef, +# to protect against unlimited searches a better choice would be +# queue => 'Unknown_Queue', +# setting externalauth => undef will try GSSAPI auth if the corresponding perl +# modules are installed, externalauth => 0 is the backward compatible choice + externalauth => 0, + ), + config_from_file($ENV{RTCONFIG} || ".rtrc"), + config_from_env() +); +my $session = Session->new("$HOME/.rt_sessions"); +my $REST = "$config{server}/REST/1.0"; +$no_strong_auth = 'switched off by externalauth=0' + if defined $config{externalauth}; + + +my $prompt = 'rt> '; + +sub whine; +sub DEBUG { warn @_ if $config{debug} >= shift } + +# These regexes are used by command handlers to parse arguments. +# (XXX: Ask Autrijus how i18n changes these definitions.) + +my $name = '[\w.-]+'; +my $CF_name = '[\sa-z0-9_ :()/-]+'; +my $field = '(?i:[a-z][a-z0-9_-]*|C(?:ustom)?F(?:ield)?-'.$CF_name.'|CF\.\{'.$CF_name.'\})'; +my $label = '[a-zA-Z0-9@_.+-]+'; +my $labels = "(?:$label,)*$label"; +my $idlist = '(?:(?:\d+-)?\d+,)*(?:\d+-)?\d+'; + +# Our command line looks like this: +# +# rt [options] [arguments] +# +# We'll parse just enough of it to decide upon an action to perform, and +# leave the rest to per-action handlers to interpret appropriately. + +my %handlers = ( +# handler => [ ...aliases... ], + version => ["version", "ver"], + shell => ["shell"], + logout => ["logout"], + help => ["help", "man"], + show => ["show", "cat"], + edit => ["create", "edit", "new", "ed"], + list => ["search", "list", "ls"], + comment => ["comment", "correspond"], + link => ["link", "ln"], + merge => ["merge"], + grant => ["grant", "revoke"], + take => ["take", "steal", "untake"], + quit => ["quit", "exit"], + setcommand => ["del", "delete", "give", "res", "resolve", + "subject"], +); + +my %actions; +foreach my $fn (keys %handlers) { + foreach my $alias (@{ $handlers{$fn} }) { + $actions{$alias} = \&{"$fn"}; + } +} + +# Once we find and call an appropriate handler, we're done. + +sub handler { + my $action; + + push @ARGV, 'shell' if (!@ARGV); # default to shell mode + shift @ARGV if ($ARGV[0] eq 'rt'); # ignore a leading 'rt' + if (@ARGV && exists $actions{$ARGV[0]}) { + $action = shift @ARGV; + return $actions{$action}->($action); + } + else { + print STDERR "rt: Unknown command '@ARGV'.\n"; + print STDERR "rt: For help, run 'rt help'.\n"; + return 1; + } +} + +exit handler(); + +# Handler functions. +# ------------------ +# +# The following subs are handlers for each entry in %actions. + +sub shell { + $|=1; + my $term = Term::ReadLine->new('RT CLI'); + while ( defined ($_ = $term->readline($prompt)) ) { + next if /^#/ || /^\s*$/; + + @ARGV = shellwords($_); + handler(); + } +} + +sub version { + print "rt $VERSION\n"; + return 0; +} + +sub logout { + submit("$REST/logout") if defined $session->cookie; + return 0; +} + +sub quit { + logout(); + exit; +} + +my %help; +sub help { + my ($action, $type, $rv) = @_; + $rv = defined $rv ? $rv : 0; + my $key; + + # What help topics do we know about? + if (!%help) { + local $/ = undef; + foreach my $item (@{ Form::parse() }) { + my $title = $item->[2]{Title}; + my @titles = ref $title eq 'ARRAY' ? @$title : $title; + + foreach $title (grep $_, @titles) { + $help{$title} = $item->[2]{Text}; + } + } + } + + # What does the user want help with? + undef $action if ($action && $actions{$action} eq \&help); + unless ($action || $type) { + # If we don't know, we'll look for clues in @ARGV. + foreach (@ARGV) { + if (exists $help{$_}) { $key = $_; last; } + } + unless ($key) { + # Tolerate possibly plural words. + foreach (@ARGV) { + if ($_ =~ s/s$// && exists $help{$_}) { $key = $_; last; } + } + } + } + + if ($type && $action) { + $key = "$type.$action"; + } + $key ||= $type || $action || "introduction"; + + # Find a suitable topic to display. + while (!exists $help{$key}) { + if ($type && $action) { + if ($key eq "$type.$action") { $key = $action; } + elsif ($key eq $action) { $key = $type; } + else { $key = "introduction"; } + } + else { + $key = "introduction"; + } + } + + print STDERR $help{$key}, "\n\n"; + return $rv; +} + +# Displays a list of objects that match some specified condition. + +sub list { + my ($q, $type, %data); + my $orderby = $config{orderby}; + + if ($config{orderby}) { + $data{orderby} = $config{orderby}; + } + my $bad = 0; + my $rawprint = 0; + my $reverse_sort = 0; + my $queue = $config{queue}; + + while (@ARGV) { + $_ = shift @ARGV; + + if (/^-t$/) { + $bad = 1, last unless defined($type = get_type_argument()); + } + elsif (/^-S$/) { + $bad = 1, last unless get_var_argument(\%data); + } + elsif (/^-o$/) { + $data{'orderby'} = shift @ARGV; + } + elsif (/^-([isl])$/) { + $data{format} = $1; + $rawprint = 1; + } + elsif (/^-q$/) { + $queue = shift @ARGV; + } + elsif (/^-r$/) { + $reverse_sort = 1; + } + elsif (/^-f$/) { + if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) { + whine "No valid field list in '-f $ARGV[0]'."; + $bad = 1; last; + } + $data{fields} = shift @ARGV; + $data{format} = 's' if ! $data{format}; + $rawprint = 1; + } + elsif (!defined $q && !/^-/) { + $q = $_; + } + else { + my $datum = /^-/ ? "option" : "argument"; + whine "Unrecognised $datum '$_'."; + $bad = 1; last; + } + } + if ( ! $rawprint and ! exists $data{format} ) { + $data{format} = 'l'; + } + if ( $reverse_sort and $data{orderby} =~ /^-/ ) { + $data{orderby} =~ s/^-/+/; + } elsif ($reverse_sort) { + $data{orderby} =~ s/^\+?(.*)/-$1/; + } + + if (!defined $q) { + $q = $config{query}; + } + + $q =~ s/^#//; # get rid of leading hash + if ($q =~ /^\d+$/) { + # only digits, must be an id, formulate a correct query + $q = "id=$q" if $q =~ /^\d+$/; + } else { + # a string only, take it as an owner or requestor (quoting done later) + $q = "(Owner=$q or Requestor like $q) and $config{query}" + if $q =~ /^[\w\-]+$/; + # always add a query for a specific queue or (comma separated) queues + $queue =~ s/,/ or Queue=/g if $queue; + $q .= " and (Queue=$queue)" if $queue and $q and $q !~ /Queue\s*=/i + and $q !~ /id\s*=/i; + } + # correctly quote strings in a query + $q =~ s/(=|like\s)\s*([^'\d\s]\S*)\b/$1\'$2\'/g; + + $type ||= "ticket"; + unless ($type && defined $q) { + my $item = $type ? "query string" : "object type"; + whine "No $item specified."; + $bad = 1; + } + #return help("list", $type) if $bad; + return suggest_help("list", $type, $bad) if $bad; + + print "Query:$q\n" if ! $rawprint; + my $r = submit("$REST/search/$type", { query => $q, %data }); + if ( $rawprint ) { + print $r->content; + } else { + my $forms = Form::parse($r->content); + prettylist ($forms); + } + return 0; +} + +# Displays selected information about a single object. + +sub show { + my ($type, @objects, %data); + my $slurped = 0; + my $bad = 0; + my $rawprint = 0; + my $histspec; + + while (@ARGV) { + $_ = shift @ARGV; + s/^#// if /^#\d+/; # get rid of leading hash + if (/^-t$/) { + $bad = 1, last unless defined($type = get_type_argument()); + } + elsif (/^-S$/) { + $bad = 1, last unless get_var_argument(\%data); + } + elsif (/^-([isl])$/) { + $data{format} = $1; + $rawprint = 1; + } + elsif (/^-$/ && !$slurped) { + chomp(my @lines = ); + foreach (@lines) { + unless (is_object_spec($_, $type)) { + whine "Invalid object on STDIN: '$_'."; + $bad = 1; last; + } + push @objects, $_; + } + $slurped = 1; + } + elsif (/^-f$/) { + if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) { + whine "No valid field list in '-f $ARGV[0]'."; + $bad = 1; last; + } + $data{fields} = shift @ARGV; + # option f requires short raw listing format + $data{format} = 's'; + $rawprint = 1; + } + elsif (/^\d+$/ and my $spc2 = is_object_spec("ticket/$_", $type)) { + push @objects, $spc2; + $histspec = is_object_spec("ticket/$_/history", $type); + } + elsif (/^\d+\// and my $spc3 = is_object_spec("ticket/$_", $type)) { + push @objects, $spc3; + $rawprint = 1 if $_ =~ /\/content$/; + } + elsif (my $spec = is_object_spec($_, $type)) { + push @objects, $spec; + $rawprint = 1 if $_ =~ /\/content$/ or $_ !~ /^ticket/; + } + else { + my $datum = /^-/ ? "option" : "argument"; + whine "Unrecognised $datum '$_'."; + $bad = 1; last; + } + } + if ( ! $rawprint ) { + push @objects, $histspec if $histspec; + $data{format} = 'l' if ! exists $data{format}; + } + + unless (@objects) { + whine "No objects specified."; + $bad = 1; + } + #return help("show", $type) if $bad; + return suggest_help("show", $type, $bad) if $bad; + + my $r = submit("$REST/show", { id => \@objects, %data }); + my $c = $r->content; + # if this isn't a text reply, remove the trailing newline so we + # don't corrupt things like tarballs when people do + # show ticket/id/attachments/id/content > foo.tar.gz + if ($r->content_type !~ /^text\//) { + chomp($c); + $rawprint = 1; + } + if ( $rawprint ) { + print $c; + } else { + # I do not know how to get more than one form correctly returned + $c =~ s!^RT/[\d\.]+ 200 Ok$!--!mg; + my $forms = Form::parse($c); + prettyshow ($forms); + } + return 0; +} + +# To create a new object, we ask the server for a form with the defaults +# filled in, allow the user to edit it, and send the form back. +# +# To edit an object, we must ask the server for a form representing that +# object, make changes requested by the user (either on the command line +# or interactively via $EDITOR), and send the form back. + +sub edit { + my ($action) = @_; + my (%data, $type, @objects); + my ($cl, $text, $edit, $input, $output); + + use vars qw(%set %add %del); + %set = %add = %del = (); + my $slurped = 0; + my $bad = 0; + + while (@ARGV) { + $_ = shift @ARGV; + s/^#// if /^#\d+/; # get rid of leading hash + + if (/^-e$/) { $edit = 1 } + elsif (/^-i$/) { $input = 1 } + elsif (/^-o$/) { $output = 1 } + elsif (/^-t$/) { + $bad = 1, last unless defined($type = get_type_argument()); + } + elsif (/^-S$/) { + $bad = 1, last unless get_var_argument(\%data); + } + elsif (/^-$/ && !($slurped || $input)) { + chomp(my @lines = ); + foreach (@lines) { + unless (is_object_spec($_, $type)) { + whine "Invalid object on STDIN: '$_'."; + $bad = 1; last; + } + push @objects, $_; + } + $slurped = 1; + } + elsif (/^set$/i) { + my $vars = 0; + + while (@ARGV && $ARGV[0] =~ /^($field)([+-]?=)(.*)$/s) { + my ($key, $op, $val) = ($1, $2, $3); + my $hash = ($op eq '=') ? \%set : ($op =~ /^\+/) ? \%add : \%del; + + vpush($hash, lc $key, $val); + shift @ARGV; + $vars++; + } + unless ($vars) { + whine "No variables to set."; + $bad = 1; last; + } + $cl = $vars; + } + elsif (/^(?:add|del)$/i) { + my $vars = 0; + my $hash = ($_ eq "add") ? \%add : \%del; + + while (@ARGV && $ARGV[0] =~ /^($field)=(.*)$/s) { + my ($key, $val) = ($1, $2); + + vpush($hash, lc $key, $val); + shift @ARGV; + $vars++; + } + unless ($vars) { + whine "No variables to set."; + $bad = 1; last; + } + $cl = $vars; + } + elsif (/^\d+$/ and my $spc2 = is_object_spec("ticket/$_", $type)) { + push @objects, $spc2; + } + elsif (my $spec = is_object_spec($_, $type)) { + push @objects, $spec; + } + else { + my $datum = /^-/ ? "option" : "argument"; + whine "Unrecognised $datum '$_'."; + $bad = 1; last; + } + } + + if ($action =~ /^ed(?:it)?$/) { + unless (@objects) { + whine "No objects specified."; + $bad = 1; + } + } + else { + if (@objects) { + whine "You shouldn't specify objects as arguments to $action."; + $bad = 1; + } + unless ($type) { + whine "What type of object do you want to create?"; + $bad = 1; + } + @objects = ("$type/new") if defined($type); + } + #return help($action, $type) if $bad; + return suggest_help($action, $type, $bad) if $bad; + + # We need a form to make changes to. We usually ask the server for + # one, but we can avoid that if we are fed one on STDIN, or if the + # user doesn't want to edit the form by hand, and the command line + # specifies only simple variable assignments. We *should* get a + # form if we're creating a new ticket, so that the default values + # get filled in properly. + + my @new_objects = grep /\/new$/, @objects; + + if ($input) { + local $/ = undef; + $text = ; + } + elsif ($edit || %add || %del || !$cl || @new_objects) { + my $r = submit("$REST/show", { id => \@objects, format => 'l' }); + $text = $r->content; + } + + # If any changes were specified on the command line, apply them. + if ($cl) { + if ($text) { + # We're updating forms from the server. + my $forms = Form::parse($text); + + foreach my $form (@$forms) { + my ($c, $o, $k, $e) = @$form; + my ($key, $val); + + next if ($e || !@$o); + + local %add = %add; + local %del = %del; + local %set = %set; + + # Make changes to existing fields. + foreach $key (@$o) { + if (exists $add{lc $key}) { + $val = delete $add{lc $key}; + vpush($k, $key, $val); + $k->{$key} = vsplit($k->{$key}) if $val =~ /[,\n]/; + } + if (exists $del{lc $key}) { + $val = delete $del{lc $key}; + my %val = map {$_=>1} @{ vsplit($val) }; + $k->{$key} = vsplit($k->{$key}); + @{$k->{$key}} = grep {!exists $val{$_}} @{$k->{$key}}; + } + if (exists $set{lc $key}) { + $k->{$key} = delete $set{lc $key}; + } + } + + # Then update the others. + foreach $key (keys %set) { vpush($k, $key, $set{$key}) } + foreach $key (keys %add) { + vpush($k, $key, $add{$key}); + $k->{$key} = vsplit($k->{$key}); + } + push @$o, (keys %add, keys %set); + } + + $text = Form::compose($forms); + } + else { + # We're rolling our own set of forms. + my @forms; + foreach (@objects) { + my ($type, $ids, $args) = + m{^($name)/($idlist|$labels)(?:(/.*))?$}o; + + $args ||= ""; + foreach my $obj (expand_list($ids)) { + my %set = (%set, id => "$type/$obj$args"); + push @forms, ["", [keys %set], \%set]; + } + } + $text = Form::compose(\@forms); + } + } + + if ($output) { + print $text; + return 0; + } + + my $synerr = 0; + +EDIT: + # We'll let the user edit the form before sending it to the server, + # unless we have enough information to submit it non-interactively. + if ($edit || (!$input && !$cl)) { + my $newtext = vi($text); + # We won't resubmit a bad form unless it was changed. + $text = ($synerr && $newtext eq $text) ? undef : $newtext; + } + + if ($text) { + my $r = submit("$REST/edit", {content => $text, %data}); + if ($r->code == 409) { + # 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; + $synerr = 1; + goto EDIT; + } + else { + print $r->content; + return 0; + } + } + print $r->content; + } + return 0; +} + +# handler for special edit commands. A valid edit command is constructed and +# further work is delegated to the edit handler + +sub setcommand { + my ($action) = @_; + my ($id, $bad, $what); + if ( @ARGV ) { + $_ = shift @ARGV; + $id = $1 if (m|^(?:ticket/)?($idlist)$|); + } + if ( ! $id ) { + $bad = 1; + whine "No ticket number specified."; + } + if ( @ARGV ) { + if ($action eq 'subject') { + my $subject = '"'.join (" ", @ARGV).'"'; + @ARGV = (); + $what = "subject=$subject"; + } elsif ($action eq 'give') { + my $owner = shift @ARGV; + $what = "owner=$owner"; + } + } else { + if ( $action eq 'delete' or $action eq 'del' ) { + $what = "status=deleted"; + } elsif ($action eq 'resolve' or $action eq 'res' ) { + $what = "status=resolved"; + } elsif ($action eq 'take' ) { + $what = "owner=$config{user}"; + } elsif ($action eq 'untake') { + $what = "owner=Nobody"; + } + } + if (@ARGV) { + $bad = 1; + whine "Extraneous arguments for action $action: @ARGV."; + } + if ( ! $what ) { + $bad = 1; + whine "unrecognized action $action."; + } + return help("edit", undef, $bad) if $bad; + @ARGV = ( $id, "set", $what ); + print "Executing: rt edit @ARGV\n"; + return edit("edit"); +} + +# We roll "comment" and "correspond" into the same handler. + +sub comment { + my ($action) = @_; + my (%data, $id, @files, @bcc, @cc, $msg, $wtime, $edit); + my $bad = 0; + + while (@ARGV) { + $_ = shift @ARGV; + + if (/^-e$/) { + $edit = 1; + } + elsif (/^-[abcmw]$/) { + unless (@ARGV) { + whine "No argument specified with $_."; + $bad = 1; last; + } + + if (/-a/) { + unless (-f $ARGV[0] && -r $ARGV[0]) { + whine "Cannot read attachment: '$ARGV[0]'."; + return 0; + } + push @files, shift @ARGV; + } + elsif (/-([bc])/) { + my $a = $_ eq "-b" ? \@bcc : \@cc; + @$a = split /\s*,\s*/, shift @ARGV; + } + elsif (/-m/) { + $msg = shift @ARGV; + if ( $msg =~ /^-$/ ) { + undef $msg; + while () { $msg .= $_ } + } + } + + elsif (/-w/) { $wtime = shift @ARGV } + } + elsif (!$id && m|^(?:ticket/)?($idlist)$|) { + $id = $1; + } + else { + my $datum = /^-/ ? "option" : "argument"; + whine "Unrecognised $datum '$_'."; + $bad = 1; last; + } + } + + unless ($id) { + whine "No object specified."; + $bad = 1; + } + #return help($action, "ticket") if $bad; + return suggest_help($action, "ticket") if $bad; + + my $form = [ + "", + [ "Ticket", "Action", "Cc", "Bcc", "Attachment", "TimeWorked", "Text" ], + { + Ticket => $id, + Action => $action, + Cc => [ @cc ], + Bcc => [ @bcc ], + Attachment => [ @files ], + TimeWorked => $wtime || '', + Text => $msg || '', + Status => '' + } + ]; + + my $text = Form::compose([ $form ]); + + if ($edit || !$msg) { + my $error = 0; + my ($c, $o, $k, $e); + + do { + my $ntext = vi($text); + return if ($error && $ntext eq $text); + $text = $ntext; + $form = Form::parse($text); + $error = 0; + + ($c, $o, $k, $e) = @{ $form->[0] }; + if ($e) { + $error = 1; + $c = "# Syntax error."; + goto NEXT; + } + elsif (!@$o) { + return 0; + } + @files = @{ vsplit($k->{Attachment}) }; + + NEXT: + $text = Form::compose([[$c, $o, $k, $e]]); + } while ($error); + } + + my $i = 1; + foreach my $file (@files) { + $data{"attachment_$i"} = bless([ $file ], "Attachment"); + $i++; + } + $data{content} = $text; + + my $r = submit("$REST/ticket/$id/comment", \%data); + print $r->content; + return 0; +} + +# Merge one ticket into another. + +sub merge { + my @id; + my $bad = 0; + + while (@ARGV) { + $_ = shift @ARGV; + s/^#// if /^#\d+/; # get rid of leading hash + + if (/^\d+$/) { + push @id, $_; + } + else { + whine "Unrecognised argument: '$_'."; + $bad = 1; last; + } + } + + unless (@id == 2) { + my $evil = @id > 2 ? "many" : "few"; + whine "Too $evil arguments specified."; + $bad = 1; + } + #return help("merge", "ticket") if $bad; + return suggest_help("merge", "ticket", $bad) if $bad; + + my $r = submit("$REST/ticket/$id[0]/merge/$id[1]"); + print $r->content; + return 0; +} + +# Link one ticket to another. + +sub link { + my ($bad, $del, %data) = (0, 0, ()); + my $type; + + my %ltypes = map { lc $_ => $_ } qw(DependsOn DependedOnBy RefersTo + ReferredToBy HasMember MemberOf); + + while (@ARGV && $ARGV[0] =~ /^-/) { + $_ = shift @ARGV; + + if (/^-d$/) { + $del = 1; + } + elsif (/^-t$/) { + $bad = 1, last unless defined($type = get_type_argument()); + } + else { + whine "Unrecognised option: '$_'."; + $bad = 1; last; + } + } + + $type = "ticket" unless $type; # default type to tickets + + if (@ARGV == 3) { + my ($from, $rel, $to) = @ARGV; + if ($from !~ /^\d+$/ || $to !~ /^\d+$/) { + my $bad = $from =~ /^\d+$/ ? $to : $from; + whine "Invalid $type ID '$bad' specified."; + $bad = 1; + } + if (($type eq "ticket") && ( ! exists $ltypes{lc $rel})) { + whine "Invalid link '$rel' for type $type specified."; + $bad = 1; + } + %data = (id => $from, rel => $rel, to => $to, del => $del); + } + else { + my $bad = @ARGV < 3 ? "few" : "many"; + whine "Too $bad arguments specified."; + $bad = 1; + } + return suggest_help("link", $type, $bad) if $bad; + + my $r = submit("$REST/$type/link", \%data); + print $r->content; + return 0; +} + +# Take/steal a ticket +sub take { + my ($cmd) = @_; + my ($bad, %data) = (0, ()); + + my $id; + + # get the ticket id + if (@ARGV == 1) { + ($id) = @ARGV; + unless ($id =~ /^\d+$/) { + whine "Invalid ticket ID $id specified."; + $bad = 1; + } + my $form = [ + "", + [ "Ticket", "Action" ], + { + Ticket => $id, + Action => $cmd, + Status => '', + } + ]; + + my $text = Form::compose([ $form ]); + $data{content} = $text; + } + else { + $bad = @ARGV < 1 ? "few" : "many"; + whine "Too $bad arguments specified."; + $bad = 1; + } + return suggest_help("take", "ticket", $bad) if $bad; + + my $r = submit("$REST/ticket/$id/take", \%data); + print $r->content; + return 0; +} + +# Grant/revoke a user's rights. + +sub grant { + my ($cmd) = @_; + + my $revoke = 0; + while (@ARGV) { + } + + $revoke = 1 if $cmd->{action} eq 'revoke'; + return 0; +} + +# Client <-> Server communication. +# -------------------------------- +# +# This function composes and sends an HTTP request to the RT server, and +# interprets the response. It takes a request URI, and optional request +# data (a string, or a reference to a set of key-value pairs). + +sub submit { + my ($uri, $content) = @_; + my ($req, $data); + my $ua = LWP::UserAgent->new(agent => "RT/3.0b", env_proxy => 1); + my $h = HTTP::Headers->new; + + # Did the caller specify any data to send with the request? + $data = []; + if (defined $content) { + unless (ref $content) { + # If it's just a string, make sure LWP handles it properly. + # (By pretending that it's a file!) + $content = [ content => [undef, "", Content => $content] ]; + } + elsif (ref $content eq 'HASH') { + my @data; + foreach my $k (keys %$content) { + if (ref $content->{$k} eq 'ARRAY') { + foreach my $v (@{ $content->{$k} }) { + push @data, $k, $v; + } + } + else { push @data, $k, $content->{$k} } + } + $content = \@data; + } + $data = $content; + } + + # Should we send authentication information to start a new session? + my $how = $config{server} =~ /^https/ ? 'over SSL' : 'unencrypted'; + (my $server = $config{server}) =~ s/^.*\/\/([^\/]+)\/?/$1/; + if ($config{externalauth}) { + $h->authorization_basic($config{user}, $config{passwd} || read_passwd() ); + print " Password will be sent to $server $how\n", + " Press CTRL-C now if you do not want to continue\n" + if ! $config{passwd}; + } elsif ( $no_strong_auth ) { + if (!defined $session->cookie) { + print " Strong encryption not available, $no_strong_auth\n", + " Password will be sent to $server $how\n", + " Press CTRL-C now if you do not want to continue\n" + if ! $config{passwd}; + push @$data, ( user => $config{user} ); + push @$data, ( pass => $config{passwd} || read_passwd() ); + } + } + + # Now, we construct the request. + if (@$data) { + $req = POST($uri, $data, Content_Type => 'form-data'); + } + else { + $req = GET($uri); + } + $session->add_cookie_header($req); + if ($config{externalauth}) { + $req->header(%$h); + } + + # Then we send the request and parse the response. + DEBUG(3, $req->as_string); + my $res = $ua->request($req); + DEBUG(3, $res->as_string); + + if ($res->is_success) { + # The content of the response we get from the RT server consists + # of an HTTP-like status line followed by optional header lines, + # a blank line, and arbitrary text. + + my ($head, $text) = split /\n\n/, $res->content, 2; + my ($status, @headers) = split /\n/, $head; + $text =~ s/\n*$/\n/ if ($text); + + # "RT/3.0.1 401 Credentials required" + if ($status !~ m#^RT/\d+(?:\S+) (\d+) ([\w\s]+)$#) { + warn "rt: Malformed RT response from $config{server}.\n"; + warn "(Rerun with RTDEBUG=3 for details.)\n" if $config{debug} < 3; + exit -1; + } + + # Our caller can pretend that the server returned a custom HTTP + # response code and message. (Doing that directly is apparently + # not sufficiently portable and uncomplicated.) + $res->code($1); + $res->message($2); + $res->content($text); + $session->update($res) if ($res->is_success || $res->code != 401); + + if (!$res->is_success) { + # We can deal with authentication failures ourselves. Either + # we sent invalid credentials, or our session has expired. + if ($res->code == 401) { + my %d = @$data; + if (exists $d{user}) { + warn "rt: Incorrect username or password.\n"; + exit -1; + } + elsif ($req->header("Cookie")) { + # We'll retry the request with credentials, unless + # we only wanted to logout in the first place. + $session->delete; + return submit(@_) unless $uri eq "$REST/logout"; + } + } + # Conflicts should be dealt with by the handler and user. + # For anything else, we just die. + elsif ($res->code != 409) { + warn "rt: ", $res->content; + #exit; + } + } + } + else { + warn "rt: Server error: ", $res->message, " (", $res->code, ")\n"; + exit -1; + } + + return $res; +} + +# Session management. +# ------------------- +# +# Maintains a list of active sessions in the ~/.rt_sessions file. +{ + package Session; + my ($s, $u); + + # Initialises the session cache. + sub new { + my ($class, $file) = @_; + my $self = { + file => $file || "$HOME/.rt_sessions", + sids => { } + }; + + # The current session is identified by the currently configured + # server and user. + ($s, $u) = @config{"server", "user"}; + + bless $self, $class; + $self->load(); + + return $self; + } + + # Returns the current session cookie. + sub cookie { + my ($self) = @_; + my $cookie = $self->{sids}{$s}{$u}; + return defined $cookie ? "RT_SID_$cookie" : undef; + } + + # Deletes the current session cookie. + sub delete { + my ($self) = @_; + delete $self->{sids}{$s}{$u}; + } + + # Adds a Cookie header to an outgoing HTTP request. + sub add_cookie_header { + my ($self, $request) = @_; + my $cookie = $self->cookie(); + + $request->header(Cookie => $cookie) if defined $cookie; + } + + # Extracts the Set-Cookie header from an HTTP response, and updates + # session information accordingly. + sub update { + my ($self, $response) = @_; + my $cookie = $response->header("Set-Cookie"); + + if (defined $cookie && $cookie =~ /^RT_SID_(.[^;,\s]+=[0-9A-Fa-f]+);/) { + $self->{sids}{$s}{$u} = $1; + } + } + + # Loads the session cache from the specified file. + sub load { + my ($self, $file) = @_; + $file ||= $self->{file}; + + open( my $handle, '<', $file ) or return 0; + + $self->{file} = $file; + my $sids = $self->{sids} = {}; + while (<$handle>) { + chomp; + next if /^$/ || /^#/; + next unless m#^https?://[^ ]+ \w+ [^;,\s]+=[0-9A-Fa-f]+$#; + my ($server, $user, $cookie) = split / /, $_; + $sids->{$server}{$user} = $cookie; + } + return 1; + } + + # Writes the current session cache to the specified file. + sub save { + my ($self, $file) = shift; + $file ||= $self->{file}; + + open( my $handle, '>', "$file" ) or return 0; + + my $sids = $self->{sids}; + foreach my $server (keys %$sids) { + foreach my $user (keys %{ $sids->{$server} }) { + my $sid = $sids->{$server}{$user}; + if (defined $sid) { + print $handle "$server $user $sid\n"; + } + } + } + close($handle); + chmod 0600, $file; + return 1; + } + + sub DESTROY { + my $self = shift; + $self->save; + } +} + +# Form handling. +# -------------- +# +# Forms are RFC822-style sets of (field, value) specifications with some +# initial comments and interspersed blank lines allowed for convenience. +# Sets of forms are separated by --\n (in a cheap parody of MIME). +# +# Each form is parsed into an array with four elements: commented text +# at the start of the form, an array with the order of keys, a hash with +# key/value pairs, and optional error text if the form syntax was wrong. + +# Returns a reference to an array of parsed forms. +sub Form::parse { + my $state = 0; + my @forms = (); + my @lines = split /\n/, $_[0] if $_[0]; + my ($c, $o, $k, $e) = ("", [], {}, ""); + + LINE: + while (@lines) { + my $line = shift @lines; + + next LINE if $line eq ''; + + if ($line eq '--') { + # We reached the end of one form. We'll ignore it if it was + # empty, and store it otherwise, errors and all. + if ($e || $c || @$o) { + push @forms, [ $c, $o, $k, $e ]; + $c = ""; $o = []; $k = {}; $e = ""; + } + $state = 0; + } + elsif ($state != -1) { + if ($state == 0 && $line =~ /^#/) { + # Read an optional block of comments (only) at the start + # of the form. + $state = 1; + $c = $line; + while (@lines && $lines[0] =~ /^#/) { + $c .= "\n".shift @lines; + } + $c .= "\n"; + } + elsif ($state <= 1 && $line =~ /^($field):(?:\s+(.*))?$/) { + # Read a field: value specification. + my $f = $1; + my @v = ($2 || ()); + + # Read continuation lines, if any. + while (@lines && ($lines[0] eq '' || $lines[0] =~ /^\s+/)) { + push @v, shift @lines; + } + pop @v while (@v && $v[-1] eq ''); + + # Strip longest common leading indent from text. + my $ws = ""; + foreach my $ls (map {/^(\s+)/} @v[1..$#v]) { + $ws = $ls if (!$ws || length($ls) < length($ws)); + } + s/^$ws// foreach @v; + + push(@$o, $f) unless exists $k->{$f}; + vpush($k, $f, join("\n", @v)); + + $state = 1; + } + elsif ($line !~ /^#/) { + # We've found a syntax error, so we'll reconstruct the + # form parsed thus far, and add an error marker. (>>) + $state = -1; + $e = Form::compose([[ "", $o, $k, "" ]]); + $e.= $line =~ /^>>/ ? "$line\n" : ">> $line\n"; + } + } + else { + # We saw a syntax error earlier, so we'll accumulate the + # contents of this form until the end. + $e .= "$line\n"; + } + } + push(@forms, [ $c, $o, $k, $e ]) if ($e || $c || @$o); + + foreach my $l (keys %$k) { + $k->{$l} = vsplit($k->{$l}) if (ref $k->{$l} eq 'ARRAY'); + } + + return \@forms; +} + +# Returns text representing a set of forms. +sub Form::compose { + my ($forms) = @_; + my @text; + + foreach my $form (@$forms) { + my ($c, $o, $k, $e) = @$form; + my $text = ""; + + if ($c) { + $c =~ s/\n*$/\n/; + $text = "$c\n"; + } + if ($e) { + $text .= $e; + } + elsif ($o) { + my @lines; + + foreach my $key (@$o) { + my ($line, $sp); + my $v = $k->{$key}; + my @values = ref $v eq 'ARRAY' ? @$v : $v; + + $sp = " "x(length("$key: ")); + $sp = " "x4 if length($sp) > 16; + + foreach $v (@values) { + if ($v =~ /\n/) { + $v =~ s/^/$sp/gm; + $v =~ s/^$sp//; + + if ($line) { + push @lines, "$line\n\n"; + $line = ""; + } + elsif (@lines && $lines[-1] !~ /\n\n$/) { + $lines[-1] .= "\n"; + } + push @lines, "$key: $v\n\n"; + } + elsif ($line && + length($line)+length($v)-rindex($line, "\n") >= 70) + { + $line .= ",\n$sp$v"; + } + else { + $line = $line ? "$line,$v" : "$key: $v"; + } + } + + $line = "$key:" unless @values; + if ($line) { + if ($line =~ /\n/) { + if (@lines && $lines[-1] !~ /\n\n$/) { + $lines[-1] .= "\n"; + } + $line .= "\n"; + } + push @lines, "$line\n"; + } + } + + $text .= join "", @lines; + } + else { + chomp $text; + } + push @text, $text; + } + + return join "\n--\n\n", @text; +} + +# Configuration. +# -------------- + +# Returns configuration information from the environment. +sub config_from_env { + my %env; + + foreach my $k (qw(EXTERNALAUTH DEBUG USER PASSWD SERVER QUERY ORDERBY)) { + + if (exists $ENV{"RT$k"}) { + $env{lc $k} = $ENV{"RT$k"}; + } + } + + return %env; +} + +# Finds a suitable configuration file and returns information from it. +sub config_from_file { + my ($rc) = @_; + + if ($rc =~ m#^/#) { + # We'll use an absolute path if we were given one. + return parse_config_file($rc); + } + else { + # Otherwise we'll use the first file we can find in the current + # directory, or in one of its (increasingly distant) ancestors. + + my @dirs = split /\//, cwd; + while (@dirs) { + my $file = join('/', @dirs, $rc); + if (-r $file) { + return parse_config_file($file); + } + + # Remove the last directory component each time. + pop @dirs; + } + + # Still nothing? We'll fall back to some likely defaults. + for ("$HOME/$rc", "local/etc/rt.conf", "/etc/rt.conf") { + return parse_config_file($_) if (-r $_); + } + } + + return (); +} + +# Makes a hash of the specified configuration file. +sub parse_config_file { + my %cfg; + my ($file) = @_; + local $_; # $_ may be aliased to a constant, from line 1163 + + open( my $handle, '<', $file ) or return; + + while (<$handle>) { + chomp; + next if (/^#/ || /^\s*$/); + + if (/^(externalauth|user|passwd|server|query|orderby|queue)\s+(.*)\s?$/) { + $cfg{$1} = $2; + } + else { + die "rt: $file:$.: unknown configuration directive.\n"; + } + } + + return %cfg; +} + +# Helper functions. +# ----------------- + +sub whine { + my $sub = (caller(1))[3]; + $sub =~ s/^main:://; + warn "rt: $sub: @_\n"; + return 0; +} + +sub read_passwd { + eval 'require Term::ReadKey'; + if ($@) { + die "No password specified (and Term::ReadKey not installed).\n"; + } + + print "Password: "; + Term::ReadKey::ReadMode('noecho'); + chomp(my $passwd = Term::ReadKey::ReadLine(0)); + Term::ReadKey::ReadMode('restore'); + print "\n"; + + return $passwd; +} + +sub vi { + my ($text) = @_; + my $file = "/tmp/rt.form.$$"; + my $editor = $ENV{EDITOR} || $ENV{VISUAL} || "vi"; + + local $/ = undef; + + open( my $handle, '>', $file ) or die "$file: $!\n"; + print $handle $text; + close($handle); + + system($editor, $file) && die "Couldn't run $editor.\n"; + + open( $handle, '<', $file ) or die "$file: $!\n"; + $text = <$handle>; + close($handle); + + unlink($file); + + return $text; +} + +# Add a value to a (possibly multi-valued) hash key. +sub vpush { + my ($hash, $key, $val) = @_; + my @val = ref $val eq 'ARRAY' ? @$val : $val; + + if (exists $hash->{$key}) { + unless (ref $hash->{$key} eq 'ARRAY') { + my @v = $hash->{$key} ne '' ? $hash->{$key} : (); + $hash->{$key} = \@v; + } + push @{ $hash->{$key} }, @val; + } + else { + $hash->{$key} = $val; + } +} + +# "Normalise" a hash key that's known to be multi-valued. +sub vsplit { + my ($val) = @_; + my ($word, @words); + my @values = ref $val eq 'ARRAY' ? @$val : $val; + + foreach my $line (map {split /\n/} @values) { + # XXX: This should become a real parser, à la Text::ParseWords. + $line =~ s/^\s+//; + $line =~ s/\s+$//; + my ( $a, $b ) = split /\s*,\s*/, $line, 2; + + while ($a) { + no warnings 'uninitialized'; + if ( $a =~ /^'/ ) { + my $s = $a; + while ( $a !~ /'$/ || ( $a !~ /(\\\\)+'$/ + && $a =~ /(\\)+'$/ )) { + ( $a, $b ) = split /\s*,\s*/, $b, 2; + $s .= ',' . $a; + } + push @words, $s; + } + elsif ( $a =~ /^q{/ ) { + my $s = $a; + while ( $a !~ /}$/ ) { + ( $a, $b ) = + split /\s*,\s*/, $b, 2; + $s .= ',' . $a; + } + $s =~ s/^q{/'/; + $s =~ s/}/'/; + push @words, $s; + } + else { + push @words, $a; + } + ( $a, $b ) = split /\s*,\s*/, $b, 2; + } + + + } + + return \@words; +} + +# WARN: this code is duplicated in lib/RT/Interface/REST.pm +# change both functions at once +sub expand_list { + my ($list) = @_; + + my @elts; + foreach (split /\s*,\s*/, $list) { + push @elts, /^(\d+)-(\d+)$/? ($1..$2): $_; + } + + return map $_->[0], # schwartzian transform + sort { + defined $a->[1] && defined $b->[1]? + # both numbers + $a->[1] <=> $b->[1] + :!defined $a->[1] && !defined $b->[1]? + # both letters + $a->[2] cmp $b->[2] + # mix, number must be first + :defined $a->[1]? -1: 1 + } + map [ $_, (defined( /^(\d+)$/ )? $1: undef), lc($_) ], + @elts; +} + +sub get_type_argument { + my $type; + + if (@ARGV) { + $type = shift @ARGV; + unless ($type =~ /^[A-Za-z0-9_.-]+$/) { + # We want whine to mention our caller, not us. + @_ = ("Invalid type '$type' specified."); + goto &whine; + } + } + else { + @_ = ("No type argument specified with -t."); + goto &whine; + } + + $type =~ s/s$//; # "Plural". Ugh. + return $type; +} + +sub get_var_argument { + my ($data) = @_; + + if (@ARGV) { + my $kv = shift @ARGV; + if (my ($k, $v) = $kv =~ /^($field)=(.*)$/) { + push @{ $data->{$k} }, $v; + } + else { + @_ = ("Invalid variable specification: '$kv'."); + goto &whine; + } + } + else { + @_ = ("No variable argument specified with -S."); + goto &whine; + } +} + +sub is_object_spec { + my ($spec, $type) = @_; + + $spec =~ s|^(?:$type/)?|$type/| if defined $type; + return $spec if ($spec =~ m{^$name/(?:$idlist|$labels)(?:/.*)?$}o); + return 0; +} + +sub suggest_help { + my ($action, $type, $rv) = @_; + + print STDERR "rt: For help, run 'rt help $action'.\n" if defined $action; + print STDERR "rt: For help, run 'rt help $type'.\n" if defined $type; + return $rv; +} + +sub str2time { + # simplified procedure for parsing date, avoid loading Date::Parse + my %month = (Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5, + Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11); + $_ = shift; + my ($mon, $day, $hr, $min, $sec, $yr, $monstr); + if ( /(\w{3})\s+(\d\d?)\s+(\d\d):(\d\d):(\d\d)\s+(\d{4})/ ) { + ($monstr, $day, $hr, $min, $sec, $yr) = ($1, $2, $3, $4, $5, $6); + $mon = $month{$monstr} if exists $month{$monstr}; + } elsif ( /(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)/ ) { + ($yr, $mon, $day, $hr, $min, $sec) = ($1, $2-1, $3, $4, $5, $6); + } + if ( $yr and defined $mon and $day and defined $hr and defined $sec ) { + return timelocal($sec,$min,$hr,$day,$mon,$yr); + } else { + print "Unknown date format in parsedate: $_\n"; + return undef; + } +} + +sub date_diff { + my ($old, $new) = @_; + $new = time() if ! $new; + $old = str2time($old) if $old !~ /^\d+$/; + $new = str2time($new) if $new !~ /^\d+$/; + return "???" if ! $old or ! $new; + + my %seconds = (min => 60, + hr => 60*60, + day => 60*60*24, + wk => 60*60*24*7, + mth => 60*60*24*30, + yr => 60*60*24*365); + + my $diff = $new - $old; + my $what = 'sec'; + my $howmuch = $diff; + for ( sort {$seconds{$a} <=> $seconds{$b}} keys %seconds) { + last if $diff < $seconds{$_}; + $what = $_; + $howmuch = int($diff/$seconds{$_}); + } + return "$howmuch $what"; +} + +sub prettyshow { + my $forms = shift; + my ($form) = grep { exists $_->[2]->{Queue} } @$forms; + my $k = $form->[2]; + # dates are in local time zone + if ( $k ) { + print "Date: $k->{Created}\n"; + print "From: $k->{Requestors}\n"; + print "Cc: $k->{Cc}\n" if $k->{Cc}; + print "X-AdminCc: $k->{AdminCc}\n" if $k->{AdminCc}; + print "X-Queue: $k->{Queue}\n"; + print "Subject: [rt #$k->{id}] $k->{Subject}\n\n"; + } + # dates in these attributes are in GMT and will be converted + foreach my $form (@$forms) { + my ($c, $o, $k, $e) = @$form; + next if ! $k->{id} or exists $k->{Queue}; + if ( exists $k->{Created} ) { + my ($y,$m,$d,$hh,$mm,$ss) = ($k->{Created} =~ /(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/); + $m--; + my $created = localtime(timegm($ss,$mm,$hh,$d,$m,$y)); + if ( exists $k->{Description} ) { + print "===> $k->{Description} on $created\n"; + } + } + print "$k->{Content}\n" if exists $k->{Content} and + $k->{Content} !~ /to have no content$/ and + $k->{Type} ne 'EmailRecord'; + print "$k->{Attachments}\n" if exists $k->{Attachments} and + $k->{Attachments}; + } +} + +sub prettylist { + my $forms = shift; + my $heading = "Ticket Owner Queue Age Told Status Requestor Subject\n"; + $heading .= '-' x 80 . "\n"; + my (@open, @me); + foreach my $form (@$forms) { + my ($c, $o, $k, $e) = @$form; + next if ! $k->{id}; + print $heading if $heading; + $heading = ''; + my $id = $k->{id}; + $id =~ s!^ticket/!!; + my $owner = $k->{Owner} eq 'Nobody' ? '' : $k->{Owner}; + $owner = substr($owner, 0, 5); + my $queue = substr($k->{Queue}, 0, 5); + my $subject = substr($k->{Subject}, 0, 30); + my $age = date_diff($k->{Created}); + my $told = $k->{Told} eq 'Not set' ? '' : date_diff($k->{Told}); + my $status = substr($k->{Status}, 0, 6); + my $requestor = substr($k->{Requestors}, 0, 9); + my $line = sprintf "%6s %5s %5s %6s %6s %-6s %-9s %-30s\n", + $id, $owner, $queue, $age, $told, $status, $requestor, $subject; + if ( $k->{Owner} eq 'Nobody' ) { + push @open, $line; + } elsif ($k->{Owner} eq $config{user} ) { + push @me, $line; + } else { + print $line; + } + } + print "No matches found\n" if $heading; + printf "========== my %2d open tickets ==========\n", scalar @me if @me; + print @me if @me; + printf "========== %2d unowned tickets ==========\n", scalar @open if @open; + print @open if @open; +} + +__DATA__ + +Title: intro +Title: introduction +Text: + + This is a command-line interface to RT 3.0 or newer. + + It allows you to interact with an RT server over HTTP, and offers an + interface to RT's functionality that is better-suited to automation + and integration with other tools. + + In general, each invocation of this program should specify an action + to perform on one or more objects, and any other arguments required + to complete the desired action. + + For more information: + + - rt help usage (syntax information) + - rt help objects (how to specify objects) + - rt help actions (a list of possible actions) + - rt help types (a list of object types) + + - rt help config (configuration details) + - rt help examples (a few useful examples) + - rt help topics (a list of help topics) + +-- + +Title: usage +Title: syntax +Text: + + Syntax: + + rt [options] [arguments] + or + rt shell + + Each invocation of this program must specify an action (e.g. "edit", + "create"), options to modify behaviour, and other arguments required + by the specified action. (For example, most actions expect a list of + numeric object IDs to act upon.) + + The details of the syntax and arguments for each action are given by + "rt help ". Some actions may be referred to by more than one + name ("create" is the same as "new", for example). + + You may also call "rt shell", which will give you an 'rt>' prompt at + which you can issue commands of the form " [options] + [arguments]". See "rt help shell" for details. + + Objects are identified by a type and an ID (which can be a name or a + number, depending on the type). For some actions, the object type is + implied (you can only comment on tickets); for others, the user must + specify it explicitly. See "rt help objects" for details. + + In syntax descriptions, mandatory arguments that must be replaced by + appropriate value are enclosed in <>, and optional arguments are + indicated by [] (for example, and [options] above). + + For more information: + + - rt help objects (how to specify objects) + - rt help actions (a list of actions) + - rt help types (a list of object types) + - rt help shell (how to use the shell) + +-- + +Title: conf +Title: config +Title: configuration +Text: + + This program has two major sources of configuration information: its + configuration files, and the environment. + + The program looks for configuration directives in a file named .rtrc + (or $RTCONFIG; see below) in the current directory, and then in more + distant ancestors, until it reaches /. If no suitable configuration + files are found, it will also check for ~/.rtrc, local/etc/rt.conf + and /etc/rt.conf. + + Configuration directives: + + The following directives may occur, one per line: + + - server URL to RT server. + - user RT username. + - passwd RT user's password. + - query Default RT Query for list action + - orderby Default RT order for list action + - queue Default RT Queue for list action + - externalauth <0|1> Use HTTP Basic authentication + explicitely setting externalauth to 0 inhibits also GSSAPI based + authentication, if LWP::Authen::Negotiate (and GSSAPI) is installed + + Blank and #-commented lines are ignored. + + Sample configuration file contents: + + server https://rt.somewhere.com/ + # more than one queue can be given (by adding a query expression) + queue helpdesk or queue=support + query Status != resolved and Owner=myaccount + + + Environment variables: + + The following environment variables override any corresponding + values defined in configuration files: + + - RTUSER + - RTPASSWD + - RTEXTERNALAUTH + - RTSERVER + - RTDEBUG Numeric debug level. (Set to 3 for full logs.) + - RTCONFIG Specifies a name other than ".rtrc" for the + configuration file. + - RTQUERY Default RT Query for rt list + - RTORDERBY Default order for rt list + +-- + +Title: objects +Text: + + Syntax: + + /[/] + + Every object in RT has a type (e.g. "ticket", "queue") and a numeric + ID. Some types of objects can also be identified by name (like users + and queues). Furthermore, objects may have named attributes (such as + "ticket/1/history"). + + An object specification is like a path in a virtual filesystem, with + object types as top-level directories, object IDs as subdirectories, + and named attributes as further subdirectories. + + A comma-separated list of names, numeric IDs, or numeric ranges can + be used to specify more than one object of the same type. Note that + the list must be a single argument (i.e., no spaces). For example, + "user/root,1-3,5,7-10,ams" is a list of ten users; the same list + can also be written as "user/ams,root,1,2,3,5,7,8-10". + + If just a number is given as object specification it will be + interpreted as ticket/ + + Examples: + + 1 # the same as ticket/1 + ticket/1 + ticket/1/attachments + ticket/1/attachments/3 + ticket/1/attachments/3/content + ticket/1-3/links + ticket/1-3,5-7/history + + user/ams + user/ams/rights + user/ams,rai,1/rights + + For more information: + + - rt help (action-specific details) + - rt help (type-specific details) + +-- + +Title: actions +Title: commands +Text: + + You can currently perform the following actions on all objects: + + - list (list objects matching some condition) + - show (display object details) + - edit (edit object details) + - create (create a new object) + + Each type may define actions specific to itself; these are listed in + the help item about that type. + + For more information: + + - rt help (action-specific details) + - rt help types (a list of possible types) + + The following actions on tickets are also possible: + + - comment Add comments to a ticket + - correspond Add comments to a ticket + - merge Merge one ticket into another + - link Link one ticket to another + - take Take a ticket (steal and untake are possible as well) + + For several edit set subcommands that are frequently used abbreviations + have been introduced. These abbreviations are: + + - delete or del delete a ticket (edit set status=deleted) + - resolve or res resolve a ticket (edit set status=resolved) + - subject change subject of ticket (edit set subject=string) + - give give a ticket to somebody (edit set owner=user) + +-- + +Title: types +Text: + + You can currently operate on the following types of objects: + + - tickets + - users + - groups + - queues + + For more information: + + - rt help (type-specific details) + - rt help objects (how to specify objects) + - rt help actions (a list of possible actions) + +-- + +Title: ticket +Text: + + Tickets are identified by a numeric ID. + + The following generic operations may be performed upon tickets: + + - list + - show + - edit + - create + + In addition, the following ticket-specific actions exist: + + - link + - merge + - comment + - correspond + - take + - steal + - untake + - give + - resolve + - delete + - subject + + Attributes: + + The following attributes can be used with "rt show" or "rt edit" + to retrieve or edit other information associated with tickets: + + links A ticket's relationships with others. + history All of a ticket's transactions. + history/type/ Only a particular type of transaction. + history/id/ Only the transaction of the specified id. + attachments A list of attachments. + attachments/ The metadata for an individual attachment. + attachments//content The content of an individual attachment. + +-- + +Title: user +Title: group +Text: + + Users and groups are identified by name or numeric ID. + + The following generic operations may be performed upon them: + + - list + - show + - edit + - create + + In addition, the following type-specific actions exist: + + - grant + - revoke + + Attributes: + + The following attributes can be used with "rt show" or "rt edit" + to retrieve or edit other information associated with users and + groups: + + rights Global rights granted to this user. + rights/ Queue rights for this user. + +-- + +Title: queue +Text: + + Queues are identified by name or numeric ID. + + Currently, they can be subjected to the following actions: + + - show + - edit + - create + +-- + +Title: subject +Text: + + Syntax: + + rt subject + + Change the subject of a ticket whose ticket id is given. + +-- + +Title: give +Text: + + Syntax: + + rt give + + Give a ticket whose ticket id is given to another user. + +-- + +Title: steal +Text: + + rt steal + + Steal a ticket whose ticket id is given, i.e. set the owner to myself. + +-- + +Title: take +Text: + + Syntax: + + rt take + + Take a ticket whose ticket id is given, i.e. set the owner to myself. + +-- + +Title: untake +Text: + + Syntax: + + rt untake + + Untake a ticket whose ticket id is given, i.e. set the owner to Nobody. + +-- + +Title: resolve +Title: res +Text: + + Syntax: + + rt resolve + + Resolves a ticket whose ticket id is given. + +-- + +Title: delete +Title: del +Text: + + Syntax: + + rt delete + + Deletes a ticket whose ticket id is given. + +-- + +Title: logout +Text: + + Syntax: + + rt logout + + Terminates the currently established login session. You will need to + provide authentication credentials before you can continue using the + server. (See "rt help config" for details about authentication.) + +-- + +Title: ls +Title: list +Title: search +Text: + + Syntax: + + rt [options] "query string" + + Displays a list of objects matching the specified conditions. + ("ls", "list", and "search" are synonyms.) + + Conditions are expressed in the SQL-like syntax used internally by + RT. (For more information, see "rt help query".) The query string + must be supplied as one argument. + + (Right now, the server doesn't support listing anything but tickets. + Other types will be supported in future; this client will be able to + take advantage of that support without any changes.) + + Options: + + The following options control how much information is displayed + about each matching object: + + -i Numeric IDs only. (Useful for |rt edit -; see examples.) + -s Short description. + -l Longer description. + -f Orders the returned list by the specified field. + -r reversed order (useful if a default was given) + -q queue[s] restricts the query to the queue[s] given + multiple queues are separated by comma + -S var=val Submits the specified variable with the request. + -t type Specifies the type of object to look for. (The + default is "ticket".) + + Examples: + + rt ls "Priority > 5 and Status=new" + rt ls -o +Subject "Priority > 5 and Status=new" + rt ls -o -Created "Priority > 5 and Status=new" + rt ls -i "Priority > 5"|rt edit - set status=resolved + rt ls -t ticket "Subject like '[PATCH]%'" + rt ls -q systems + rt ls -f owner,subject + +-- + +Title: show +Text: + + Syntax: + + rt show [options] + + Displays details of the specified objects. + + For some types, object information is further classified into named + attributes (for example, "1-3/links" is a valid ticket specification + that refers to the links for tickets 1-3). Consult "rt help " + and "rt help objects" for further details. + + If only a number is given it will be interpreted as the objects + ticket/number and ticket/number/history + + This command writes a set of forms representing the requested object + data to STDOUT. + + Options: + + The following options control how much information is displayed + about each matching object: + + Without any formatting options prettyprinted output is generated. + Giving any of the two options below reverts to raw output. + -s Short description (history and attachments only). + -l Longer description (history and attachments only). + + In addition, + - Read IDs from STDIN instead of the command-line. + -t type Specifies object type. + -f a,b,c Restrict the display to the specified fields. + -S var=val Submits the specified variable with the request. + + Examples: + + rt show -t ticket -f id,subject,status 1-3 + rt show ticket/3/attachments/29 + rt show ticket/3/attachments/29/content + rt show ticket/1-3/links + rt show ticket/3/history + rt show -l ticket/3/history + rt show -t user 2 + rt show 2 + +-- + +Title: new +Title: edit +Title: create +Text: + + Syntax: + + rt edit [options] set field=value [field=value] ... + add field=value [field=value] ... + del field=value [field=value] ... + + Edits information corresponding to the specified objects. + + A purely numeric object id nnn is translated into ticket/nnn + + If, instead of "edit", an action of "new" or "create" is specified, + then a new object is created. In this case, no numeric object IDs + may be specified, but the syntax and behaviour remain otherwise + unchanged. + + This command typically starts an editor to allow you to edit object + data in a form for submission. If you specified enough information + on the command-line, however, it will make the submission directly. + + The command line may specify field-values in three different ways. + "set" sets the named field to the given value, "add" adds a value + to a multi-valued field, and "del" deletes the corresponding value. + Each "field=value" specification must be given as a single argument. + + For some types, object information is further classified into named + attributes (for example, "1-3/links" is a valid ticket specification + that refers to the links for tickets 1-3). These attributes may also + be edited. Consult "rt help " and "rt help object" for further + details. + + Options: + + - Read numeric IDs from STDIN instead of the command-line. + (Useful with rt ls ... | rt edit -; see examples below.) + -i Read a completed form from STDIN before submitting. + -o Dump the completed form to STDOUT instead of submitting. + -e Allows you to edit the form even if the command-line has + enough information to make a submission directly. + -S var=val + Submits the specified variable with the request. + -t type Specifies object type. + + Examples: + + # Interactive (starts $EDITOR with a form). + rt edit ticket/3 + rt create -t ticket + + # Non-interactive. + rt edit ticket/1-3 add cc=foo@example.com set priority=3 due=tomorrow + rt ls -t tickets -i 'Priority > 5' | rt edit - set status=resolved + rt edit ticket/4 set priority=3 owner=bar@example.com \ + add cc=foo@example.com bcc=quux@example.net + rt create -t ticket set subject='new ticket' priority=10 \ + add cc=foo@example.com + +-- + +Title: comment +Title: correspond +Text: + + Syntax: + + rt [options] + + Adds a comment (or correspondence) to the specified ticket (the only + difference being that comments aren't sent to the requestors.) + + This command will typically start an editor and allow you to type a + comment into a form. If, however, you specified all the necessary + information on the command line, it submits the comment directly. + + (See "rt help forms" for more information about forms.) + + Options: + + -m Specify comment text. + -a Attach a file to the comment. (May be used more + than once to attach multiple files.) + -c A comma-separated list of Cc addresses. + -b A comma-separated list of Bcc addresses. + -w