From 4a03b0b62cef514f9217e7be61cf7a16218ea387 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 7 Jul 2015 11:31:42 -0700 Subject: optionally include discounts in sales report, #37124 --- FS/FS/Report/Table.pm | 58 +++++++++++------------------- httemplate/graph/cust_bill_pkg.cgi | 57 +++++++++++++++++------------ httemplate/graph/report_cust_bill_pkg.html | 6 ++++ httemplate/search/cust_bill_pkg.cgi | 56 +++++++++++++++++++---------- 4 files changed, 98 insertions(+), 79 deletions(-) diff --git a/FS/FS/Report/Table.pm b/FS/FS/Report/Table.pm index eef983d68..cba968b43 100644 --- a/FS/FS/Report/Table.pm +++ b/FS/FS/Report/Table.pm @@ -439,8 +439,8 @@ sub cust_pkg_recur_cost { =item cust_bill_pkg: the total package charges on invoice line items. -'charges': limit the type of charges included (setup, recur, usage). -Should be a string containing one or more of 'S', 'R', or 'U'; if +'charges': limit the type of charges included (setup, recur, usage, discount). +Should be a string containing one or more of 'S', 'R', 'U', or 'D'; if unspecified, defaults to all three. 'classnum': limit to this package class. @@ -470,6 +470,7 @@ sub cust_bill_pkg { $sum += $self->cust_bill_pkg_setup(@_) if $charges{S}; $sum += $self->cust_bill_pkg_recur(@_) if $charges{R}; $sum += $self->cust_bill_pkg_detail(@_) if $charges{U}; + $sum += $self->cust_bill_pkg_discount(@_) if $charges{D}; if ($opt{'average_per_cust_pkg'}) { my $count = $self->cust_bill_pkg_count_pkgnum(@_); @@ -656,47 +657,28 @@ sub cust_bill_pkg_detail { } sub cust_bill_pkg_discount { - my( $self, $speriod, $eperiod, $agentnum, %opt ) = @_; - - #need to do this the new multi-classnum way if it gets re-enabled - #my $where = ''; - #my $comparison = ''; - #if ( $opt{'classnum'} =~ /^(\d+)$/ ) { - # if ( $1 == 0 ) { - # $comparison = "IS NULL"; - # } else { - # $comparison = "= $1"; - # } - # - # if ( $opt{'use_override'} ) { - # $where = "( - # part_pkg.classnum $comparison AND pkgpart_override IS NULL OR - # override.classnum $comparison AND pkgpart_override IS NOT NULL - # )"; - # } else { - # $where = "part_pkg.classnum $comparison"; - # } - #} + my $self = shift; + my ($speriod, $eperiod, $agentnum, %opt) = @_; + # apply all the same constraints here as for setup/recur $agentnum ||= $opt{'agentnum'}; - my $total_sql = - " SELECT COALESCE( SUM( cust_bill_pkg_discount.amount ), 0 ) "; + my @where = ( + '(pkgnum != 0 OR feepart IS NOT NULL)', + $self->with_classnum($opt{'classnum'}, $opt{'use_override'}), + $self->with_report_option(%opt), + $self->in_time_period_and_agent($speriod, $eperiod, $agentnum), + $self->with_refnum(%opt), + $self->with_cust_classnum(%opt) + ); - $total_sql .= - " FROM cust_bill_pkg_discount - LEFT JOIN cust_bill_pkg USING ( billpkgnum ) - LEFT JOIN cust_bill USING ( invnum ) - LEFT JOIN cust_main USING ( custnum ) - WHERE ". $self->in_time_period_and_agent($speriod, $eperiod, $agentnum); - # LEFT JOIN cust_pkg_discount USING ( pkgdiscountnum ) - # LEFT JOIN discount USING ( discountnum ) - # LEFT JOIN cust_pkg USING ( pkgnum ) - # LEFT JOIN part_pkg USING ( pkgpart ) - # LEFT JOIN part_pkg AS override ON pkgpart_override = override.pkgpart - - return $self->scalar_sql($total_sql); + my $total_sql = "SELECT COALESCE(SUM(cust_bill_pkg_discount.amount), 0) + FROM cust_bill_pkg_discount + JOIN cust_bill_pkg USING (billpkgnum) + $cust_bill_pkg_join + WHERE " . join(' AND ', grep $_, @where); + $self->scalar_sql($total_sql); } ##### package churn report ##### diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index ea7fee932..b5486f4af 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -27,6 +27,8 @@ my $bottom_link = "$link;"; my $use_usage = $cgi->param('use_usage') || 0; my $use_setup = $cgi->param('use_setup') || 0; +my $use_discount = $cgi->param('use_discount') || 2; + my $use_override = $cgi->param('use_override') ? 1 : 0; my $average_per_cust_pkg = $cgi->param('average_per_cust_pkg') ? 1 : 0; my $distribute = $cgi->param('distribute') ? 1 : 0; @@ -41,11 +43,13 @@ if ( $average_per_cust_pkg ) { } my %charge_labels = ( + 'SRU'=> 'setup + recurring', 'SR' => 'setup + recurring', 'RU' => 'recurring', 'S' => 'setup', 'R' => 'recurring', 'U' => 'usage', + 'D' => 'discount', ); #XXX or virtual @@ -186,6 +190,10 @@ elsif ( $use_usage == 2 ) { $components[-1] =~ s/U//; } +if ( $use_discount == 1 ) { + push @components, 'D'; +} # else leave discounts off entirely; never combine them with setup/recur + # Categorization of line items goes # Agent -> Referral -> Package class -> Component (setup/recur/usage) # If per-agent totals are enabled, they go under the Agent level. @@ -240,21 +248,26 @@ foreach my $agent ( $all_agent || $sel_agent || $FS::CurrentUser::CurrentUser->a 'charges' => $component, ); - # XXX this is very silly. we should cache it server-side and - # just put a cache identifier in the link - my $rowlink = "$link;". - ($all_agent ? '' : "agentnum=$row_agentnum;"). + my $row_link = "$link;". + "charges=$component;". + "distribute=$distribute;"; + + if ( $component eq 'D' ) { + # discounts ignore 'charges' and 'distribute' + $row_link = "${p}search/cust_bill_pkg_discount.html?"; + } + + $row_link .= ($all_agent ? '' : "agentnum=$row_agentnum;"). ($all_part_referral ? '' : "refnum=$row_refnum;"). (join('',map {"cust_classnum=$_;"} @cust_classnums)). - "distribute=$distribute;". - "use_override=$use_override;charges=$component;"; - $rowlink .= "$class_param=$_;" foreach @classnums; + "use_override=$use_override;"; + $row_link .= "$class_param=$_;" foreach @classnums; if ( $all_report_options ) { push @row_params, 'all_report_options', 1; - $rowlink .= 'all_report_options=1'; + $row_link .= 'all_report_options=1'; } push @params, \@row_params; - push @links, $rowlink; + push @links, $row_link; @colorbuf = @agent_colors unless @colorbuf; push @colors, shift @colorbuf; @@ -293,13 +306,22 @@ foreach my $agent ( $all_agent || $sel_agent || $FS::CurrentUser::CurrentUser->a ($all_part_referral ? () : ('refnum' => $row_refnum)), 'charges' => $component, ); + my $row_link = "$link;". - ($all_agent ? '' : "agentnum=$row_agentnum;"). + "charges=$component;". + "distribute=$distribute;"; + + if ( $component eq 'D' ) { + # discounts ignore 'charges' and 'distribute' + $row_link ="${p}search/cust_bill_pkg_discount.html?"; + } + + $row_link .= ($all_agent ? '' : "agentnum=$row_agentnum;"). ($all_part_referral ? '' : "refnum=$row_refnum;"). (join('',map {"cust_classnum=$_;"} @cust_classnums)). "$class_param=$row_classnum;". - "distribute=$distribute;". - "use_override=$use_override;charges=$component;"; + "use_override=$use_override;"; + if ( $class_param eq 'report_optionnum' ) { push @row_params, 'all_report_options' => 1, @@ -366,17 +388,6 @@ foreach my $agent ( $all_agent || $sel_agent || $FS::CurrentUser::CurrentUser->a } -# may be useful at some point... -#if ( $average_per_cust_pkg ) { -# @items = map { ('cust_bill_pkg', 'cust_bill_pkg_count_pkgnum') } @items; -# @labels = map { $_, "Packages" } @labels; -# @params = map { $_, $_ } @params; -# @links = map { $_, $_ } @links; -# @colors = map { $_, $_ } @colors; -# @no_graph = map { $_, 1 } @no_graph; -#} -# - #use Data::Dumper; if ( $cgi->param('debug') == 1 ) { $FS::Report::Table::DEBUG = 1; diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html index 76d3a6ca3..1db86e393 100644 --- a/httemplate/graph/report_cust_bill_pkg.html +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -190,6 +190,12 @@ window.onload = class_mode_changed; 'onchange'=> 'enable_agent_totals', &> % } +<& /elements/tr-select.html, + 'label' => 'Discounts', + 'field' => 'use_discount', + 'options' => [ 1, 2 ], + 'labels' => { 1 => 'Separate', 2 => 'Do not show' }, +&> Colors diff --git a/httemplate/search/cust_bill_pkg.cgi b/httemplate/search/cust_bill_pkg.cgi index 91fe4e028..6c2cfde1b 100644 --- a/httemplate/search/cust_bill_pkg.cgi +++ b/httemplate/search/cust_bill_pkg.cgi @@ -193,8 +193,8 @@ my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; my @select = ( 'cust_bill_pkg.*', 'cust_bill._date' ); -my @total = ( 'COUNT(*)', 'SUM(cust_bill_pkg.setup + cust_bill_pkg.recur)'); -my @total_desc = ( $money_char.'%.2f total' ); # sprintf strings +my @total = ( 'COUNT(*)' ); +my @total_desc = (); my @peritem = ( 'setup', 'recur' ); my @peritem_desc = ( 'Setup charges', 'Recurring charges' ); @@ -516,14 +516,32 @@ if ( $cgi->param('nottax') ) { # setup/recur/usage separation my %charges = map { $_ => 1 } split('', $cgi->param('charges') || 'SRU'); - if ( $charges{R} and $charges{U} ) { + if ( $charges{S} and $charges{R} and $charges{U} ) { + # in this case, show discounts - # default, don't change @peritem or @total - if ( !$charges{S} ) { - push @where, 'cust_bill_pkg.recur > 0'; - $total[1] = "SUM(cust_bill_pkg.recur)"; - $total_desc[0] = "$money_char%.2f recurring"; - } + $join_pkg .= ' JOIN ( + SELECT billpkgnum, COALESCE(SUM(amount), 0) AS discounted + FROM cust_bill_pkg_discount RIGHT JOIN cust_bill_pkg USING (billpkgnum) + GROUP BY billpkgnum + ) AS _discount ON (cust_bill_pkg.billpkgnum = _discount.billpkgnum) + '; + push @select, '_discount.discounted'; + + push @peritem, 'discounted'; + push @peritem_desc, 'Discount'; + push @total, 'SUM(cust_bill_pkg.setup + cust_bill_pkg.recur + discounted)', + 'SUM(discounted)', + 'SUM(cust_bill_pkg.setup + cust_bill_pkg.recur)'; + push @total_desc, "$money_char%.2f gross sales", + "− $money_char%.2f discounted", + "= $money_char%.2f invoiced"; + + } elsif ( $charges{R} and $charges{U} ) { + + # hide rows with no recurring fee, and show the sum of recurring fees only + push @where, 'cust_bill_pkg.recur > 0'; + push @total, "SUM(cust_bill_pkg.recur)"; + push @total_desc, "$money_char%.2f recurring"; } elsif ( $charges{R} and !$charges{U} ) { @@ -532,8 +550,8 @@ if ( $cgi->param('nottax') ) { push @select, "($recur_no_usage) AS recur_no_usage"; $peritem[1] = 'recur_no_usage'; $peritem_desc[1] = 'Recurring charges (excluding usage)'; - $total[1] = "SUM($recur_no_usage)"; - $total_desc[0] = "$money_char%.2f recurring"; + push @total, "SUM($recur_no_usage)"; + push @total_desc, "$money_char%.2f recurring"; if ( !$charges{S} ) { push @where, "($recur_no_usage) > 0"; } @@ -545,8 +563,8 @@ if ( $cgi->param('nottax') ) { # there's already a method named 'usage' $peritem[1] = '_usage'; $peritem_desc[1] = 'Usage charge'; - $total[1] = "SUM($usage)"; - $total_desc[0] = "$money_char%.2f usage charges"; + push @total, "SUM($usage)"; + push @total_desc, "$money_char%.2f usage charges"; if ( !$charges{S} ) { push @where, "($usage) > 0"; } @@ -554,8 +572,8 @@ if ( $cgi->param('nottax') ) { } elsif ( $charges{S} ) { push @where, "cust_bill_pkg.setup > 0"; - $total[1] = "SUM(cust_bill_pkg.setup)"; - $total_desc[0] = "$money_char%.2f setup"; + push @total, "SUM(cust_bill_pkg.setup)"; + push @total_desc, "$money_char%.2f setup"; } # else huh? you have to have SOME charges @@ -578,10 +596,11 @@ if ( $cgi->param('nottax') ) { } } - $total[1] = 'SUM( + push @total, 'SUM( COALESCE(cust_bill_pkg_tax_rate_location.amount, cust_bill_pkg.setup + cust_bill_pkg.recur) )'; + push @total_desc, "$money_char%.2f total"; } else { # the internal-tax case @@ -591,8 +610,9 @@ if ( $cgi->param('nottax') ) { '; # don't double-count the components of consolidated taxes - $total[0] = 'COUNT(DISTINCT cust_bill_pkg.billpkgnum)'; - $total[1] = 'SUM(cust_bill_pkg_tax_location.amount)'; + @total = ( 'COUNT(DISTINCT cust_bill_pkg.billpkgnum)', + 'SUM(cust_bill_pkg_tax_location.amount)' ); + @total_desc = "$money_char%.2f total"; # package classnum if ( grep { $_ eq 'classnum' } $cgi->param ) { -- cgit v1.2.1 From ba95860daaf6c4de2f90ef28057516bc7d44c8a0 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 7 Jul 2015 14:48:14 -0700 Subject: add a tab to grouped search containing all rows, #25944 --- httemplate/search/elements/cust_pay_or_refund.html | 10 ++++++---- httemplate/search/elements/grouped-search/core | 9 +++++++++ httemplate/search/elements/grouped-search/html | 18 ++++++++++++++++++ httemplate/search/elements/grouped-search/html-print | 4 +++- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/httemplate/search/elements/cust_pay_or_refund.html b/httemplate/search/elements/cust_pay_or_refund.html index ce513ab15..5808e5f3e 100755 --- a/httemplate/search/elements/cust_pay_or_refund.html +++ b/httemplate/search/elements/cust_pay_or_refund.html @@ -57,13 +57,14 @@ Examples: 'group_column' => 'payby', 'group_label' => 'payby_name', - 'subtotal' => { 'paid' => 'sum(paid)' }, + 'subtotal' => { $opt{name_verb} => "sum($amount_field)" }, 'subtotal_row' => [ 'Subtotal', - sub { sprintf($money, $_[0]->paid) }, + sub { sprintf($money, $_[0]->$amount_field) }, ], 'total_row' => [ 'Total', - sub { sprintf("$money", $_[0]->paid) }, + sub { sprintf("$money", $_[0]->$amount_field) }, ], + 'show_combined' => 1, &> <%init> @@ -181,7 +182,7 @@ push @fields, 'payby_payinfo_pretty', sub { sprintf($money, shift->$amount_field() ) }, ; push @link_onclicks, $sub_receipt, ''; -push @sort_fields, '', $amount_field; +push @sort_fields, 'paysort', $amount_field; if ( $unapplied ) { push @header, emt('Unapplied'); @@ -243,6 +244,7 @@ if ( $cgi->param('magic') ) { my @search = (); my @select = ( "$table.*", + "( $table.payby || ' ' || coalesce($table.paymask, $table.payinfo) ) AS paysort", FS::UI::Web::cust_sql_fields(), 'cust_main.custnum AS cust_main_custnum', ); diff --git a/httemplate/search/elements/grouped-search/core b/httemplate/search/elements/grouped-search/core index fe47fb7d1..ffa8cee39 100644 --- a/httemplate/search/elements/grouped-search/core +++ b/httemplate/search/elements/grouped-search/core @@ -130,6 +130,15 @@ for my $i (0 .. scalar(@groups) - 1) { push @queries, $detail_query; } +if ( $opt{show_combined} ) { + # set up group 0 as a combined view + unshift @groups, $totals; + unshift @group_labels, 'All ' . PL($opt{name_singular}) . + ' (' . $totals->num_rows . ')'; + unshift @group_footers, []; # the total footer will suffice + unshift @queries, $base_query->clone; +} + my @total_footer; if ($opt{'total_row'}) { for( my $col = 0; diff --git a/httemplate/search/elements/grouped-search/html b/httemplate/search/elements/grouped-search/html index aff17cea0..df1471a52 100644 --- a/httemplate/search/elements/grouped-search/html +++ b/httemplate/search/elements/grouped-search/html @@ -71,6 +71,23 @@ for (my $i = 0; $i < $group_info->{num}; $i++) { push @menubar, $group_info->{group_labels}[$i], ";group=$i"; } +# not enabled yet; if we need this at some point, enable it on a per-report +# basis and then disable it for search/cust_pay.html, because it's redundant +# to see "Check Check #130108", "Credit card Card #401...", etc. + +## if this is the combined view, add a column for the group key +#if ( $curr_group == 0 and $opt{'show_combined'} ) { +# unshift @{$opt{'header'}}, ''; +# unshift @{$opt{'fields'}}, $opt{group_label}; +# unshift @{$opt{'sort_fields'}}, $opt{group_column} if $opt{'sort_fields'}; +# $opt{'align'} = 'c'.$opt{'align'}; +# foreach (qw(header2 links link_onclicks color size style cell_style xls_format)) { +# if ( $opt{$_} ) { +# unshift @{$opt{$_}}, ''; +# } +# } +#} + <& /elements/header.html, $opt{title} &> @@ -93,6 +110,7 @@ for (my $i = 0; $i < $group_info->{num}; $i++) { <% emt('as Excel spreadsheet') %>
% $cgi->param('type', 'html-print'); <% emt('as printable copy') %>
+% $cgi->delete('type');

<% $pager %> diff --git a/httemplate/search/elements/grouped-search/html-print b/httemplate/search/elements/grouped-search/html-print index c4c3b1ef5..6d9521ba3 100644 --- a/httemplate/search/elements/grouped-search/html-print +++ b/httemplate/search/elements/grouped-search/html-print @@ -5,7 +5,9 @@ The "printable" view (all groups on one page). <%init> my %opt = @_; -my $group_info = $m->comp('core', %opt); +my $group_info = $m->comp('core', %opt, + 'show_combined' => 0 +); my $ncols = scalar(@{ $opt{header} }); my $total_footer = $group_info->{total_footer} || []; -- cgit v1.2.1 From 04969741a587fa292c830b83b077c4c7522621b9 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Wed, 8 Jul 2015 17:38:36 -0500 Subject: RT#36889: cust-fields options to include agent --- FS/FS/ConfDefaults.pm | 3 +++ FS/FS/UI/Web.pm | 1 + 2 files changed, 4 insertions(+) diff --git a/FS/FS/ConfDefaults.pm b/FS/FS/ConfDefaults.pm index de08f7d68..5b8399af5 100644 --- a/FS/FS/ConfDefaults.pm +++ b/FS/FS/ConfDefaults.pm @@ -71,6 +71,9 @@ sub cust_fields_avail { ( 'Cust# | Cust. Status | Name | Company | (bill) Address 1 | (bill) Address 2 | (bill) City | (bill) State | (bill) Zip | (bill) Country | Day phone | Night phone | Mobile phone | Fax number | (service) Address 1 | (service) Address 2 | (service) City | (service) State | (service) Zip | (service) Country | Invoicing email(s) | Payment Type | Current Balance' => 'custnum | Status | Last, First | Company | (address) | (all phones) | (service address) | Invoicing email(s) | Payment Type | Current Balance', + 'Cust# | Cust. Status | Name | Company | (bill) Address 1 | (bill) Address 2 | (bill) City | (bill) State | (bill) Zip | (bill) Country | Day phone | Night phone | Mobile phone | Fax number | (service) Address 1 | (service) Address 2 | (service) City | (service) State | (service) Zip | (service) Country | Invoicing email(s) | Payment Type | Current Balance | Agent Cust#' => + 'custnum | Status | Last, First | Company | (address) | (all phones) | (service address) | Invoicing email(s) | Payment Type | Current Balance | Agent Cust#', + 'Cust# | Cust. Status | Name | Company | (bill) Address 1 | (bill) Address 2 | (bill) City | (bill) State | (bill) Zip | (bill) Country | (bill) Latitude | (bill) Longitude | Day phone | Night phone | Mobile phone | Fax number | (service) Address 1 | (service) Address 2 | (service) City | (service) State | (service) Zip | (service) Country | (service) Latitude | (service) Longitude | Invoicing email(s) | Payment Type | Current Balance' => 'custnum | Status | Last, First | Company | (address+coord) | (all phones) | (service address+coord) | Invoicing email(s) | Payment Type | Current Balance', diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index ca50b278e..6655f270f 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -273,6 +273,7 @@ sub cust_header { 'Invoicing email(s)' => 'invoicing_list_emailonly_scalar', 'Payment Type' => 'payby', 'Current Balance' => 'current_balance', + 'Agent Cust#' => 'agent_custid', ); $header2method{'Cust#'} = 'display_custnum' if $conf->exists('cust_main-default_agent_custid'); -- cgit v1.2.1 From 4f5619288413a185e9933088d9dd8c5afbc55dfa Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Wed, 8 Jul 2015 19:15:33 -0500 Subject: RT#34078: Payment History Report / Statement [Fixes for acl and text preview] --- FS/FS/cust_main.pm | 2 ++ httemplate/misc/email-customer-statement.html | 6 +++++- httemplate/misc/email-customers.html | 20 +++++++++++++++----- .../misc/process/email-customer-statement.html | 9 +++++++++ httemplate/view/cust_main/menu.html | 2 +- 5 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 httemplate/misc/process/email-customer-statement.html diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index c6602c1a0..f55c3493c 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -4253,6 +4253,8 @@ sub payment_history { 'description' => 'Previous balance', 'amount' => sprintf("%.2f",$previous), 'balance' => sprintf("%.2f",$previous), + 'date' => $$opt{'start_date'}, + 'date_pretty' => $self->time2str_local('short', $$opt{'start_date'} ), }; #false laziness with above foreach my $key ( qw(amount balance) ) { diff --git a/httemplate/misc/email-customer-statement.html b/httemplate/misc/email-customer-statement.html index 65660f1be..92ce1c4d1 100644 --- a/httemplate/misc/email-customer-statement.html +++ b/httemplate/misc/email-customer-statement.html @@ -5,13 +5,17 @@ 'no_search_fields' => [ 'start_date', 'end_date' ], 'alternate_form' => $alternate_form, 'post_search_hook' => $post_search_hook, + 'acl' => $acl, + 'process_url' => 'process/email-customer-statement.html', ) %> <%init> +my $acl = 'Resend invoices'; + die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('View invoices'); + unless $FS::CurrentUser::CurrentUser->access_right($acl); my $alternate_form = sub { # this could maaaybe be a separate element, for cleanliness diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html index 3327303e4..57f451fdc 100644 --- a/httemplate/misc/email-customers.html +++ b/httemplate/misc/email-customers.html @@ -10,8 +10,12 @@ This may also be used as an element in other pages, enabling you to provide an alternate initial form while using this for search freezing/thawing and preview/send actions, with the following options: +acl - the access right to use (defaults to 'Bulk send customer notices') + form_action - the URL to submit the form to +process_url - the URL for starting the JSRPC process + title - the title of the page no_search_fields - arrayref of additional fields that are not search parameters @@ -50,7 +54,7 @@ should be used to set msgnum or from/subject/html_body cgi params <% include('/elements/progress-init.html', 'OneTrueForm', [ qw( search table from subject html_body text_body msgnum ) ], - 'process/email-customers.html', + $process_url, $pdest, ) %> @@ -90,7 +94,7 @@ should be used to set msgnum or from/subject/html_body cgi params - Message (HTML display): + Message (HTML display): <% $html_body %> @@ -101,8 +105,11 @@ should be used to set msgnum or from/subject/html_body cgi params % ); - Message (Text display): -
<% $text_body %>
+ Message (Text display): + + click to view + + @@ -192,13 +199,16 @@ Template: my %opt = @_; +$opt{'acl'} ||= 'Bulk send customer notices'; + die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Bulk send customer notices'); + unless $FS::CurrentUser::CurrentUser->access_right($opt{'acl'}); my $conf = FS::Conf->new; my @no_search_fields = qw( action table from subject html_body text_body popup url ); my $form_action = $opt{'form_action'} || 'email-customers.html'; +my $process_url = $opt{'process_url'} || 'process/email-customers.html'; my $title = $opt{'title'} || 'Send customer notices'; push( @no_search_fields, @{$opt{'no_search_fields'}} ) if $opt{'no_search_fields'}; diff --git a/httemplate/misc/process/email-customer-statement.html b/httemplate/misc/process/email-customer-statement.html new file mode 100644 index 000000000..40a8a702a --- /dev/null +++ b/httemplate/misc/process/email-customer-statement.html @@ -0,0 +1,9 @@ +<% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Resend invoices'); + +my $server = new FS::UI::Web::JSRPC 'FS::cust_main_Mixin::process_email_search_result', $cgi; + + diff --git a/httemplate/view/cust_main/menu.html b/httemplate/view/cust_main/menu.html index 9486c24e0..ab56bcfcb 100644 --- a/httemplate/view/cust_main/menu.html +++ b/httemplate/view/cust_main/menu.html @@ -493,7 +493,7 @@ my @menu = ( uri_escape($cgi->self_url); }, condition => sub { $invoicing_list_emailonly }, - acl => [ 'View invoices', 'Bulk send customer notices' ], + acl => 'Resend invoices', }, ], [ -- cgit v1.2.1 From 1c538bfabc2cd31f27067505f0c3d1a46cba6ef0 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Thu, 9 Jul 2015 22:18:55 -0700 Subject: RT 4.2.11, ticket#13852 --- rt/.perlcriticrc | 20 + rt/Makefile.in | 56 +- rt/README | 64 +- rt/aclocal.m4 | 6 +- rt/bin/rt | 242 +- rt/bin/rt-crontool.in | 71 +- rt/bin/rt-mailgate.in | 50 +- rt/bin/rt.in | 242 +- rt/configure | 267 +- rt/configure.ac | 109 +- rt/devel/tools/cmd-boilerplate | 89 + rt/devel/tools/css_tidy | 59 + rt/devel/tools/extract-message-catalog | 365 +- rt/devel/tools/factory | 373 - rt/devel/tools/merge-rosetta.pl | 51 - rt/devel/tools/rt-apache | 46 +- rt/devel/tools/rt-attributes-editor | 15 +- rt/devel/tools/rt-message-catalog | 224 + rt/devel/tools/rt-static-docs | 20 +- rt/docs/UPGRADING-3.8 | 10 +- rt/docs/UPGRADING-4.0 | 20 +- rt/docs/UPGRADING-4.2 | 337 + rt/docs/authentication.pod | 168 + rt/docs/automating_rt.pod | 234 + rt/docs/backups.pod | 106 +- rt/docs/charts.pod | 246 + rt/docs/customizing/approvals.pod | 6 +- rt/docs/customizing/articles_introduction.pod | 21 +- rt/docs/customizing/styling_rt.pod | 46 +- rt/docs/customizing/templates.pod | 56 +- rt/docs/dashboards.pod | 206 + rt/docs/extending/clickable_links.pod | 1 + rt/docs/extending/external_custom_fields.pod | 10 +- rt/docs/extensions.pod | 102 + rt/docs/full_text_indexing.pod | 157 +- rt/docs/hacking.pod | 12 +- rt/docs/initialdata.pod | 85 +- rt/docs/reminders.pod | 67 + rt/docs/rt_perl.pod | 163 + rt/docs/schema.dot | 7 +- rt/docs/security.pod | 6 +- rt/docs/web_deployment.pod | 67 +- rt/docs/writing_extensions.pod | 376 + rt/etc/RT_Config.pm.in | 1106 ++- rt/etc/RT_SiteConfig.pm | 2 +- rt/etc/acl.Pg | 13 +- rt/etc/acl.mysql | 7 +- rt/etc/initialdata | 350 +- rt/etc/schema.Pg | 52 +- rt/etc/schema.SQLite | 257 +- rt/etc/schema.mysql | 55 +- rt/etc/upgrade/3.1.0/content | 2 - rt/etc/upgrade/3.1.0/schema.Oracle | 20 +- rt/etc/upgrade/3.1.15/content | 5 +- rt/etc/upgrade/3.1.17/content | 7 +- rt/etc/upgrade/3.3.0/content | 1 - rt/etc/upgrade/3.3.11/content | 1 - rt/etc/upgrade/3.5.1/content | 21 +- rt/etc/upgrade/3.7.1/content | 5 +- rt/etc/upgrade/3.7.10/content | 5 +- rt/etc/upgrade/3.7.15/content | 5 +- rt/etc/upgrade/3.7.19/content | 49 +- rt/etc/upgrade/3.7.82/content | 5 +- rt/etc/upgrade/3.7.85/content | 15 +- rt/etc/upgrade/3.7.86/content | 13 +- rt/etc/upgrade/3.7.87/content | 5 +- rt/etc/upgrade/3.8-ical-extension.in | 6 +- rt/etc/upgrade/3.8.0/content | 13 +- rt/etc/upgrade/3.8.1/content | 13 +- rt/etc/upgrade/3.8.2/content | 77 +- rt/etc/upgrade/3.8.3/content | 55 +- rt/etc/upgrade/3.8.4/content | 10 +- rt/etc/upgrade/3.8.6/content | 5 +- rt/etc/upgrade/3.8.8/content | 9 +- rt/etc/upgrade/3.8.9/content | 10 +- rt/etc/upgrade/3.9.1/content | 15 +- rt/etc/upgrade/3.9.2/content | 15 +- rt/etc/upgrade/3.9.3/schema.Oracle | 3 +- rt/etc/upgrade/3.9.3/schema.Pg | 5 +- rt/etc/upgrade/3.9.3/schema.mysql | 5 +- rt/etc/upgrade/3.9.5/backcompat | 16 +- rt/etc/upgrade/3.9.5/schema.Oracle | 30 +- rt/etc/upgrade/3.9.5/schema.Pg | 27 +- rt/etc/upgrade/3.9.5/schema.mysql | 9 +- rt/etc/upgrade/3.9.7/content | 29 +- rt/etc/upgrade/3.9.7/schema.Oracle | 16 +- rt/etc/upgrade/3.9.7/schema.Pg | 14 +- rt/etc/upgrade/3.9.7/schema.mysql | 8 +- rt/etc/upgrade/3.9.8/content | 11 +- rt/etc/upgrade/3.9.8/schema.Pg | 5 + rt/etc/upgrade/3.9.8/schema.SQLite | 6 +- rt/etc/upgrade/3.9.8/schema.mysql | 5 + rt/etc/upgrade/4.0-customfield-checkbox-extension | 7 +- .../upgrade/4.0-customfield-checkbox-extension.in | 7 +- rt/etc/upgrade/4.0.0rc7/content | 13 +- rt/etc/upgrade/4.0.1/content | 42 +- rt/etc/upgrade/4.0.18/content | 14 + rt/etc/upgrade/4.0.19/content | 29 + rt/etc/upgrade/4.0.19/schema.mysql | 5 + rt/etc/upgrade/4.0.3/content | 5 +- rt/etc/upgrade/4.0.4/content | 7 +- rt/etc/upgrade/4.0.6/content | 7 +- rt/etc/upgrade/4.0.9/content | 12 +- rt/etc/upgrade/4.1.0/content | 43 + rt/etc/upgrade/4.1.1/acl.Pg | 31 + rt/etc/upgrade/4.1.1/content | 36 + rt/etc/upgrade/4.1.1/schema.Oracle | 29 + rt/etc/upgrade/4.1.1/schema.Pg | 36 + rt/etc/upgrade/4.1.1/schema.SQLite | 31 + rt/etc/upgrade/4.1.1/schema.mysql | 32 + rt/etc/upgrade/4.1.10/schema.Oracle | 1 + rt/etc/upgrade/4.1.10/schema.Pg | 1 + rt/etc/upgrade/4.1.10/schema.mysql | 1 + rt/etc/upgrade/4.1.11/schema.Oracle | 1 + rt/etc/upgrade/4.1.11/schema.Pg | 1 + rt/etc/upgrade/4.1.11/schema.mysql | 1 + rt/etc/upgrade/4.1.12/content | 10 + rt/etc/upgrade/4.1.13/backcompat | 34 + rt/etc/upgrade/4.1.13/schema.Oracle | 3 + rt/etc/upgrade/4.1.13/schema.Pg | 3 + rt/etc/upgrade/4.1.13/schema.SQLite | 3 + rt/etc/upgrade/4.1.13/schema.mysql | 2 + rt/etc/upgrade/4.1.14/schema.Oracle | 1 + rt/etc/upgrade/4.1.14/schema.Pg | 3 + rt/etc/upgrade/4.1.14/schema.mysql | 3 + rt/etc/upgrade/4.1.15/content | 22 + rt/etc/upgrade/4.1.16/content | 16 + rt/etc/upgrade/4.1.17/content | 26 + rt/etc/upgrade/4.1.18/content | 16 + rt/etc/upgrade/4.1.19/schema.Oracle | 1 + rt/etc/upgrade/4.1.19/schema.Pg | 3 + rt/etc/upgrade/4.1.19/schema.mysql | 3 + rt/etc/upgrade/4.1.20/content | 56 + rt/etc/upgrade/4.1.21/content | 64 + rt/etc/upgrade/4.1.22/content | 85 + rt/etc/upgrade/4.1.22/schema.Oracle | 1 + rt/etc/upgrade/4.1.22/schema.Pg | 1 + rt/etc/upgrade/4.1.22/schema.SQLite | 1 + rt/etc/upgrade/4.1.22/schema.mysql | 1 + rt/etc/upgrade/4.1.23/indexes | 168 + rt/etc/upgrade/4.1.4/content | 49 + rt/etc/upgrade/4.1.4/schema.Oracle | 1 + rt/etc/upgrade/4.1.4/schema.Pg | 1 + rt/etc/upgrade/4.1.4/schema.SQLite | 1 + rt/etc/upgrade/4.1.4/schema.mysql | 1 + rt/etc/upgrade/4.1.5/content | 34 + rt/etc/upgrade/4.1.5/schema.Oracle | 6 + rt/etc/upgrade/4.1.5/schema.Pg | 2 + rt/etc/upgrade/4.1.5/schema.mysql | 2 + rt/etc/upgrade/4.1.6/content | 43 + rt/etc/upgrade/4.1.7/schema.Oracle | 5 + rt/etc/upgrade/4.1.7/schema.Pg | 5 + rt/etc/upgrade/4.1.7/schema.SQLite | 2 + rt/etc/upgrade/4.1.7/schema.mysql | 5 + rt/etc/upgrade/4.1.8/schema.Oracle | 2 + rt/etc/upgrade/4.1.8/schema.Pg | 2 + rt/etc/upgrade/4.1.8/schema.SQLite | 3 + rt/etc/upgrade/4.1.8/schema.mysql | 2 + rt/etc/upgrade/4.1.9/content | 190 + rt/etc/upgrade/4.2.1/content | 14 + rt/etc/upgrade/4.2.10/content | 19 + rt/etc/upgrade/4.2.11/content | 60 + rt/etc/upgrade/4.2.2/content | 59 + rt/etc/upgrade/4.2.2/schema.mysql | 5 + rt/etc/upgrade/4.2.4/content | 47 + rt/etc/upgrade/4.2.6/content | 9 + rt/etc/upgrade/4.2.6/schema.mysql | 4 + rt/etc/upgrade/4.2.7/content | 15 + rt/etc/upgrade/4.2.8/content | 16 + rt/etc/upgrade/generate-rtaddressregexp.in | 11 +- rt/etc/upgrade/sanity-check-stylesheets.in | 88 + rt/etc/upgrade/sanity-check-stylesheets.pl | 87 - rt/etc/upgrade/shrink-cgm-table.in | 124 + rt/etc/upgrade/shrink-transactions-table.in | 126 + rt/etc/upgrade/shrink_cgm_table.pl | 124 - rt/etc/upgrade/shrink_transactions_table.pl | 124 - rt/etc/upgrade/split-out-cf-categories.in | 11 +- rt/etc/upgrade/switch-templates-to.in | 145 + rt/etc/upgrade/time-worked-history.in | 111 + rt/etc/upgrade/upgrade-articles | 13 +- rt/etc/upgrade/upgrade-articles.in | 9 +- rt/etc/upgrade/vulnerable-passwords.in | 5 +- rt/lib/RT.pm | 208 +- rt/lib/RT/ACE.pm | 191 +- rt/lib/RT/ACL.pm | 119 +- rt/lib/RT/Action.pm | 20 - rt/lib/RT/Action/AutoOpen.pm | 3 +- rt/lib/RT/Action/AutoOpenInactive.pm | 105 + rt/lib/RT/Action/Autoreply.pm | 14 +- rt/lib/RT/Action/CreateTickets.pm | 113 +- rt/lib/RT/Action/CreateTickets.pm.orig | 9 +- rt/lib/RT/Action/EscalatePriority.pm | 165 +- rt/lib/RT/Action/LinearEscalate.pm | 15 +- rt/lib/RT/Action/Notify.pm | 54 +- rt/lib/RT/Action/NotifyGroup.pm | 16 +- rt/lib/RT/Action/NotifyGroupAsComment.pm | 8 +- rt/lib/RT/Action/NotifyOwnerOrAdminCc.pm | 76 + rt/lib/RT/Action/OpenOnStarted.pm | 87 + rt/lib/RT/Action/RecordComment.pm | 23 +- rt/lib/RT/Action/RecordCorrespondence.pm | 24 +- rt/lib/RT/Action/SendEmail.pm | 181 +- rt/lib/RT/Action/SendEmail.pm.orig | 42 +- rt/lib/RT/Action/SendForward.pm | 138 + rt/lib/RT/Action/SetStatus.pm | 2 +- rt/lib/RT/Approval/Rule/NewPending.pm | 2 +- rt/lib/RT/Approval/Rule/Passed.pm | 2 +- rt/lib/RT/Approval/Rule/Rejected.pm | 2 +- rt/lib/RT/Article.pm | 130 +- rt/lib/RT/Articles.pm | 39 +- rt/lib/RT/Attachment.pm | 406 +- rt/lib/RT/Attachments.pm | 45 +- rt/lib/RT/Attribute.pm | 63 +- rt/lib/RT/Attributes.pm | 32 +- rt/lib/RT/Base.pm | 2 +- rt/lib/RT/CachedGroupMember.pm | 55 +- rt/lib/RT/CachedGroupMembers.pm | 30 +- rt/lib/RT/Class.pm | 217 +- rt/lib/RT/Classes.pm | 16 +- rt/lib/RT/Condition.pm | 26 +- rt/lib/RT/Condition/BeforeDue.pm | 23 +- rt/lib/RT/Condition/Overdue.pm | 10 +- rt/lib/RT/Condition/OwnerChange.pm | 16 +- rt/lib/RT/Condition/PriorityChange.pm | 6 +- rt/lib/RT/Condition/PriorityExceeds.pm | 6 +- rt/lib/RT/Condition/QueueChange.pm | 6 +- rt/lib/RT/Condition/StatusChange.pm | 4 +- rt/lib/RT/Config.pm | 605 +- rt/lib/RT/Crypt.pm | 843 ++ rt/lib/RT/Crypt/GnuPG.pm | 1942 ++-- rt/lib/RT/Crypt/GnuPG/CRLFHandle.pm | 70 + rt/lib/RT/Crypt/Role.pm | 254 + rt/lib/RT/Crypt/SMIME.pm | 956 ++ rt/lib/RT/CurrentUser.pm | 45 +- rt/lib/RT/CustomField.pm | 780 +- rt/lib/RT/CustomFieldValue.pm | 61 +- rt/lib/RT/CustomFieldValues.pm | 61 +- rt/lib/RT/CustomFieldValues/External.pm | 12 +- rt/lib/RT/CustomFields.pm | 195 +- rt/lib/RT/Dashboard.pm | 43 +- rt/lib/RT/Dashboard/Mailer.pm | 68 +- rt/lib/RT/Dashboards.pm | 4 +- rt/lib/RT/Date.pm | 250 +- rt/lib/RT/DependencyWalker.pm | 305 + rt/lib/RT/DependencyWalker/FindDependencies.pm | 65 + rt/lib/RT/EmailParser.pm | 43 +- rt/lib/RT/Generated.pm.in | 4 + rt/lib/RT/Graph/Tickets.pm | 9 +- rt/lib/RT/Group.pm | 913 +- rt/lib/RT/GroupMember.pm | 217 +- rt/lib/RT/GroupMembers.pm | 32 +- rt/lib/RT/Groups.pm | 95 +- rt/lib/RT/Handle.pm | 683 +- rt/lib/RT/I18N.pm | 342 +- rt/lib/RT/I18N/cs.pm | 40 +- rt/lib/RT/I18N/fr.pm | 10 +- rt/lib/RT/I18N/ru.pm | 4 +- rt/lib/RT/Installer.pm | 10 +- rt/lib/RT/Interface/CLI.pm | 195 +- rt/lib/RT/Interface/Email.pm | 533 +- rt/lib/RT/Interface/Email.pm.orig | 81 +- rt/lib/RT/Interface/Email/Auth/Crypt.pm | 294 + rt/lib/RT/Interface/Email/Auth/GnuPG.pm | 257 - rt/lib/RT/Interface/REST.pm | 59 +- rt/lib/RT/Interface/Web.pm | 1358 ++- rt/lib/RT/Interface/Web.pm.orig | 3454 ------- rt/lib/RT/Interface/Web/Handler.pm | 96 +- rt/lib/RT/Interface/Web/Menu.pm | 14 +- .../RT/Interface/Web/Middleware/StaticHeaders.pm | 80 + rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm | 7 +- rt/lib/RT/Interface/Web/Request.pm | 3 - rt/lib/RT/Interface/Web/Session.pm | 30 +- rt/lib/RT/Lifecycle.pm | 232 +- rt/lib/RT/Lifecycle/Ticket.pm | 125 + rt/lib/RT/Link.pm | 205 +- rt/lib/RT/Links.pm | 33 +- rt/lib/RT/Migrate.pm | 193 + rt/lib/RT/Migrate/Importer.pm | 468 + rt/lib/RT/Migrate/Importer/File.pm | 208 + rt/lib/RT/Migrate/Incremental.pm | 657 ++ rt/lib/RT/Migrate/Serializer.pm | 492 + rt/lib/RT/Migrate/Serializer/File.pm | 171 + rt/lib/RT/Migrate/Serializer/IncrementalRecord.pm | 80 + rt/lib/RT/Migrate/Serializer/IncrementalRecords.pm | 69 + rt/lib/RT/ObjectClass.pm | 37 +- rt/lib/RT/ObjectClasses.pm | 12 +- rt/lib/RT/ObjectCustomField.pm | 269 +- rt/lib/RT/ObjectCustomFieldValue.pm | 49 +- rt/lib/RT/ObjectCustomFieldValues.pm | 30 +- rt/lib/RT/ObjectCustomFields.pm | 53 +- rt/lib/RT/ObjectScrip.pm | 277 + rt/lib/RT/ObjectScrips.pm | 92 + rt/lib/RT/ObjectTopic.pm | 44 +- rt/lib/RT/ObjectTopics.pm | 18 +- rt/lib/RT/PlackRunner.pm | 165 + rt/lib/RT/Plugin.pm | 10 +- rt/lib/RT/Pod/HTML.pm | 6 + rt/lib/RT/Principal.pm | 152 +- rt/lib/RT/Principals.pm | 15 +- rt/lib/RT/Queue.pm | 889 +- rt/lib/RT/Queues.pm | 22 +- rt/lib/RT/Record.pm | 994 +- rt/lib/RT/Record/AddAndSort.pm | 621 ++ rt/lib/RT/Record/Role.pm | 78 + rt/lib/RT/Record/Role/Lifecycle.pm | 219 + rt/lib/RT/Record/Role/Links.pm | 174 + rt/lib/RT/Record/Role/Rights.pm | 133 + rt/lib/RT/Record/Role/Roles.pm | 633 ++ rt/lib/RT/Record/Role/Status.pm | 314 + rt/lib/RT/Reminders.pm | 23 +- rt/lib/RT/Report/Tickets.pm | 1107 ++- rt/lib/RT/Report/Tickets/Entry.pm | 83 +- rt/lib/RT/Rule.pm | 3 +- rt/lib/RT/Ruleset.pm | 1 - rt/lib/RT/SQL.pm | 81 +- rt/lib/RT/SavedSearches.pm | 13 +- rt/lib/RT/Scrip.pm | 543 +- rt/lib/RT/ScripAction.pm | 246 +- rt/lib/RT/ScripActions.pm | 24 +- rt/lib/RT/ScripCondition.pm | 129 +- rt/lib/RT/ScripConditions.pm | 28 +- rt/lib/RT/Scrips.pm | 209 +- rt/lib/RT/Search/ActiveTicketsInQueue.pm | 5 +- rt/lib/RT/Search/Googleish.pm | 271 - rt/lib/RT/Search/Simple.pm | 289 + rt/lib/RT/SearchBuilder.pm | 777 +- rt/lib/RT/SearchBuilder/AddAndSort.pm | 219 + rt/lib/RT/SearchBuilder/Role.pm | 77 + rt/lib/RT/SearchBuilder/Role/Roles.pm | 399 + rt/lib/RT/SharedSetting.pm | 30 +- rt/lib/RT/SharedSettings.pm | 4 +- rt/lib/RT/Shredder.pm | 88 +- rt/lib/RT/Shredder/ACE.pm | 101 - rt/lib/RT/Shredder/Attachment.pm | 136 - rt/lib/RT/Shredder/CachedGroupMember.pm | 143 - rt/lib/RT/Shredder/Constants.pm | 44 +- rt/lib/RT/Shredder/CustomField.pm | 126 - rt/lib/RT/Shredder/CustomFieldValue.pm | 94 - rt/lib/RT/Shredder/Dependencies.pm | 2 +- rt/lib/RT/Shredder/Dependency.pm | 13 +- rt/lib/RT/Shredder/Exceptions.pm | 18 +- rt/lib/RT/Shredder/Group.pm | 185 - rt/lib/RT/Shredder/GroupMember.pm | 183 - rt/lib/RT/Shredder/Link.pm | 140 - rt/lib/RT/Shredder/ObjectCustomFieldValue.pm | 116 - rt/lib/RT/Shredder/POD.pm | 6 + rt/lib/RT/Shredder/Plugin.pm | 16 +- rt/lib/RT/Shredder/Plugin/Attachments.pm | 2 +- rt/lib/RT/Shredder/Plugin/Base.pm | 9 +- rt/lib/RT/Shredder/Plugin/Summary.pm | 11 +- rt/lib/RT/Shredder/Plugin/Users.pm | 91 +- rt/lib/RT/Shredder/Principal.pm | 127 - rt/lib/RT/Shredder/Queue.pm | 107 - rt/lib/RT/Shredder/Record.pm | 121 +- rt/lib/RT/Shredder/Scrip.pm | 130 - rt/lib/RT/Shredder/ScripAction.pm | 100 - rt/lib/RT/Shredder/ScripCondition.pm | 101 - rt/lib/RT/Shredder/Template.pm | 120 - rt/lib/RT/Shredder/Ticket.pm | 126 - rt/lib/RT/Shredder/Transaction.pm | 115 - rt/lib/RT/Shredder/User.pm | 191 - rt/lib/RT/Squish/CSS.pm | 23 +- rt/lib/RT/Squish/JS.pm | 14 +- rt/lib/RT/StyleGuide.pod | 347 +- rt/lib/RT/System.pm | 264 +- rt/lib/RT/Template.pm | 287 +- rt/lib/RT/Templates.pm | 16 +- rt/lib/RT/Test.pm | 548 +- rt/lib/RT/Test/Apache.pm | 30 +- rt/lib/RT/Test/GnuPG.pm | 15 +- rt/lib/RT/Test/SMIME.pm | 164 + rt/lib/RT/Test/Shredder.pm | 324 + rt/lib/RT/Test/Web.pm | 73 +- rt/lib/RT/Ticket.pm | 2281 ++--- rt/lib/RT/Tickets.pm | 1814 ++-- rt/lib/RT/Tickets_SQL.pm | 512 - rt/lib/RT/Topic.pm | 66 +- rt/lib/RT/Topics.pm | 12 - rt/lib/RT/Transaction.pm | 873 +- rt/lib/RT/Transactions.pm | 28 +- rt/lib/RT/URI.pm | 25 +- rt/lib/RT/URI/a.pm | 10 +- rt/lib/RT/URI/fsck_com_article.pm | 96 +- rt/lib/RT/URI/fsck_com_rt.pm | 18 +- rt/lib/RT/User.pm | 627 +- rt/lib/RT/Users.pm | 144 +- rt/lib/RT/Util.pm | 10 +- rt/sbin/rt-attributes-viewer.in | 31 +- rt/sbin/rt-clean-sessions.in | 19 +- rt/sbin/rt-dump-metadata.in | 53 +- rt/sbin/rt-email-dashboards.in | 21 +- rt/sbin/rt-email-digest.in | 35 +- rt/sbin/rt-email-group-admin.in | 18 +- rt/sbin/rt-fulltext-indexer.in | 508 +- rt/sbin/rt-importer.in | 283 + rt/sbin/rt-message-catalog | 270 - rt/sbin/rt-preferences-viewer.in | 29 +- rt/sbin/rt-serializer.in | 399 + rt/sbin/rt-server.fcgi.in | 150 +- rt/sbin/rt-server.in | 150 +- rt/sbin/rt-session-viewer.in | 31 +- rt/sbin/rt-setup-database.in | 277 +- rt/sbin/rt-setup-fulltext-index.in | 119 +- rt/sbin/rt-shredder.in | 175 +- rt/sbin/rt-test-dependencies.in | 315 +- rt/sbin/rt-validate-aliases.in | 32 +- rt/sbin/rt-validator.in | 460 +- rt/sbin/standalone_httpd.in | 150 +- rt/share/html/Admin/Articles/Classes/Modify.html | 66 +- rt/share/html/Admin/Articles/Classes/Objects.html | 11 +- rt/share/html/Admin/Articles/Classes/index.html | 5 +- rt/share/html/Admin/Articles/index.html | 2 +- rt/share/html/Admin/CustomFields/GroupRights.html | 2 +- rt/share/html/Admin/CustomFields/Modify.html | 35 +- rt/share/html/Admin/CustomFields/Objects.html | 27 +- rt/share/html/Admin/CustomFields/index.html | 47 +- .../html/Admin/Elements/ConfigureDashboardsInMenu | 76 + rt/share/html/Admin/Elements/CreateUserCalled | 50 - rt/share/html/Admin/Elements/EditCustomField | 15 +- .../Admin/Elements/EditCustomFieldValuesSource | 4 +- rt/share/html/Admin/Elements/EditCustomFields | 23 +- rt/share/html/Admin/Elements/EditQueueWatchers | 7 +- rt/share/html/Admin/Elements/EditRights | 39 +- .../html/Admin/Elements/EditRightsCategoryTabs | 15 +- rt/share/html/Admin/Elements/EditScrips | 171 +- rt/share/html/Admin/Elements/EditTemplates | 2 + rt/share/html/Admin/Elements/EditUserComments | 56 - .../html/Admin/Elements/ListGlobalCustomFields | 61 - rt/share/html/Admin/Elements/ListGlobalScrips | 68 - rt/share/html/Admin/Elements/LoggingSummary | 92 + rt/share/html/Admin/Elements/MembershipsPage | 152 + rt/share/html/Admin/Elements/ModifyTemplate | 11 +- rt/share/html/Admin/Elements/PickCustomFields | 98 - rt/share/html/Admin/Elements/PickObjects | 81 - rt/share/html/Admin/Elements/Portal | 2 +- rt/share/html/Admin/Elements/QueueRightsForUser | 64 - rt/share/html/Admin/Elements/SelectGroups | 2 +- rt/share/html/Admin/Elements/SelectModifyGroup | 57 - rt/share/html/Admin/Elements/SelectModifyQueue | 57 - rt/share/html/Admin/Elements/SelectModifyUser | 73 - rt/share/html/Admin/Elements/SelectNewGroupMembers | 42 +- rt/share/html/Admin/Elements/SelectRights | 120 - rt/share/html/Admin/Elements/SelectScrip | 72 - .../html/Admin/Elements/SelectSingleOrMultiple | 67 - rt/share/html/Admin/Elements/SelectStage | 18 +- rt/share/html/Admin/Elements/SelectStageForAdded | 54 + rt/share/html/Admin/Elements/SelectTemplate | 77 - rt/share/html/Admin/Elements/ShowKeyInfo | 49 +- rt/share/html/Admin/Elements/UpgradeHistory | 71 + rt/share/html/Admin/Elements/UpgradeHistoryRow | 98 + rt/share/html/Admin/Global/DashboardsInMenu.html | 113 + rt/share/html/Admin/Global/MyRT.html | 10 +- rt/share/html/Admin/Global/Scrip.html | 63 - rt/share/html/Admin/Global/Template.html | 56 +- rt/share/html/Admin/Global/index.html | 2 +- rt/share/html/Admin/Groups/History.html | 5 +- rt/share/html/Admin/Groups/Memberships.html | 48 + rt/share/html/Admin/Groups/Modify.html | 25 +- rt/share/html/Admin/Groups/index.html | 40 +- rt/share/html/Admin/Queues/History.html | 5 +- rt/share/html/Admin/Queues/Modify.html | 74 +- rt/share/html/Admin/Queues/People.html | 5 +- rt/share/html/Admin/Queues/Scrip.html | 77 - rt/share/html/Admin/Queues/Scrips.html | 15 +- rt/share/html/Admin/Queues/Template.html | 10 +- rt/share/html/Admin/Queues/index.html | 45 +- rt/share/html/Admin/Scrips/Create.html | 147 + rt/share/html/Admin/Scrips/Elements/EditBasics | 74 + rt/share/html/Admin/Scrips/Elements/EditCustomCode | 77 + rt/share/html/Admin/Scrips/Elements/SelectTemplate | 108 + rt/share/html/Admin/Scrips/Modify.html | 141 + rt/share/html/Admin/Scrips/Objects.html | 172 + rt/share/html/Admin/Scrips/index.html | 72 + rt/share/html/Admin/Tools/Configuration.html | 95 +- rt/share/html/Admin/Tools/Queries.html | 2 +- .../Admin/Tools/Shredder/Elements/ObjectCheckBox | 4 +- .../html/Admin/Tools/Shredder/Elements/PluginHelp | 4 +- rt/share/html/Admin/Tools/Shredder/autohandler | 4 +- rt/share/html/Admin/Tools/Theme.html | 219 +- rt/share/html/Admin/Tools/index.html | 2 +- rt/share/html/Admin/Users/DashboardsInMenu.html | 118 + rt/share/html/Admin/Users/GnuPG.html | 116 - rt/share/html/Admin/Users/History.html | 5 +- rt/share/html/Admin/Users/Keys.html | 131 + rt/share/html/Admin/Users/Memberships.html | 90 +- rt/share/html/Admin/Users/Modify.html | 287 +- rt/share/html/Admin/Users/MyRT.html | 11 +- rt/share/html/Admin/Users/index.html | 25 +- rt/share/html/Admin/index.html | 2 +- rt/share/html/Approvals/Display.html | 2 +- rt/share/html/Approvals/Elements/Approve | 4 +- rt/share/html/Approvals/Elements/PendingMyApproval | 41 +- rt/share/html/Approvals/Elements/ShowDependency | 26 +- rt/share/html/Articles/Article/Edit.html | 67 +- .../Articles/Article/Elements/EditCustomFields | 10 +- rt/share/html/Articles/Article/Elements/EditLinks | 12 +- .../html/Articles/Article/Elements/Preformatted | 15 +- .../html/Articles/Article/Elements/ShowHistory | 76 - rt/share/html/Articles/Article/Elements/ShowLinks | 8 +- .../Articles/Article/Elements/ShowSavedSearches | 7 +- .../Articles/Article/Elements/ShowSearchCriteria | 10 +- rt/share/html/Articles/Article/History.html | 20 +- rt/share/html/Articles/Article/PreCreate.html | 36 +- rt/share/html/Articles/Article/Search.html | 145 +- rt/share/html/Articles/Elements/CreateArticle | 4 +- rt/share/html/Articles/Elements/MaybeNeedsSetup | 55 + rt/share/html/Articles/Elements/NeedsSetup | 52 + rt/share/html/Articles/Elements/NewestArticles | 4 +- rt/share/html/Articles/Elements/QuickSearch | 4 +- rt/share/html/Articles/Elements/ShowTopicLink | 2 +- rt/share/html/Articles/Elements/SubjectOverride | 92 + rt/share/html/Articles/Elements/UpdatedArticles | 4 +- rt/share/html/Articles/index.html | 1 + .../html/Dashboards/Elements/DashboardsForObject | 6 +- rt/share/html/Dashboards/Elements/ListOfDashboards | 7 +- rt/share/html/Dashboards/Elements/SelectPrivacy | 6 +- rt/share/html/Dashboards/Elements/ShowDashboards | 1 + .../html/Dashboards/Elements/ShowPortlet/component | 12 +- .../html/Dashboards/Elements/ShowPortlet/dashboard | 1 - rt/share/html/Dashboards/Modify.html | 8 +- rt/share/html/Dashboards/Queries.html | 6 +- rt/share/html/Dashboards/Render.html | 1 - rt/share/html/Dashboards/Subscription.html | 37 +- rt/share/html/Download/CustomFieldValue/dhandler | 4 +- rt/share/html/Elements/AddLinks | 106 + rt/share/html/Elements/BevelBoxRaisedEnd | 50 - rt/share/html/Elements/BevelBoxRaisedStart | 50 - rt/share/html/Elements/BulkCustomFields | 105 + rt/share/html/Elements/BulkLinks | 197 + rt/share/html/Elements/Callback | 5 +- rt/share/html/Elements/CollectionAsTable/Header | 21 +- rt/share/html/Elements/CollectionAsTable/Row | 1 - rt/share/html/Elements/CollectionList | 31 +- rt/share/html/Elements/CollectionListPaging | 20 +- rt/share/html/Elements/ColumnMap | 110 +- rt/share/html/Elements/Crypt/KeyIssues | 94 + .../html/Elements/Crypt/SelectKeyForEncryption | 80 + rt/share/html/Elements/Crypt/SelectKeyForSigning | 67 + rt/share/html/Elements/Crypt/SignEncryptWidget | 188 + rt/share/html/Elements/CryptStatus | 195 + rt/share/html/Elements/EditCustomField | 50 +- rt/share/html/Elements/EditCustomFieldAutocomplete | 15 +- rt/share/html/Elements/EditCustomFieldBinary | 17 +- rt/share/html/Elements/EditCustomFieldCombobox | 13 +- .../html/Elements/EditCustomFieldCustomGroupings | 73 + rt/share/html/Elements/EditCustomFieldDate | 3 +- rt/share/html/Elements/EditCustomFieldDateTime | 3 +- rt/share/html/Elements/EditCustomFieldFreeform | 5 +- rt/share/html/Elements/EditCustomFieldImage | 17 +- rt/share/html/Elements/EditCustomFieldSelect | 31 +- rt/share/html/Elements/EditCustomFieldText | 6 +- rt/share/html/Elements/EditCustomFieldWikitext | 6 +- rt/share/html/Elements/EditCustomFields | 119 + rt/share/html/Elements/EditLinks | 94 +- rt/share/html/Elements/EditTimeValue | 12 +- rt/share/html/Elements/EmailInput | 4 +- rt/share/html/Elements/Error | 13 +- rt/share/html/Elements/FindUser | 50 + rt/share/html/Elements/FoldStanzaJS | 50 + rt/share/html/Elements/GnuPG/KeyIssues | 92 - .../html/Elements/GnuPG/SelectKeyForEncryption | 81 - rt/share/html/Elements/GnuPG/SelectKeyForSigning | 64 - rt/share/html/Elements/GnuPG/SignEncryptWidget | 181 - rt/share/html/Elements/GotoUser | 62 + rt/share/html/Elements/Header | 52 +- rt/share/html/Elements/HeaderJavascript | 20 +- rt/share/html/Elements/JavascriptConfig | 84 + rt/share/html/Elements/ListActions | 5 +- rt/share/html/Elements/ListMenu | 4 + rt/share/html/Elements/Login | 7 +- rt/share/html/Elements/LoginHelp | 54 + rt/share/html/Elements/Logo | 5 +- rt/share/html/Elements/MakeClicky | 18 +- rt/share/html/Elements/Menu | 36 +- rt/share/html/Elements/MessageBox | 26 +- rt/share/html/Elements/MyRT | 28 +- rt/share/html/Elements/MyReminders | 1 - rt/share/html/Elements/MyRequests | 49 - rt/share/html/Elements/MyTickets | 49 - rt/share/html/Elements/PageLayout | 11 + rt/share/html/Elements/QueryString | 3 +- rt/share/html/Elements/QueueSummaryByLifecycle | 13 +- rt/share/html/Elements/QueueSummaryByStatus | 4 +- rt/share/html/Elements/QuickCreate | 2 +- rt/share/html/Elements/RT__Article/ColumnMap | 13 +- rt/share/html/Elements/RT__Class/ColumnMap | 13 +- rt/share/html/Elements/RT__CustomField/ColumnMap | 39 +- rt/share/html/Elements/RT__Dashboard/ColumnMap | 9 +- rt/share/html/Elements/RT__Group/ColumnMap | 21 +- rt/share/html/Elements/RT__Queue/ColumnMap | 21 +- rt/share/html/Elements/RT__SavedSearch/ColumnMap | 9 +- rt/share/html/Elements/RT__Scrip/ColumnMap | 110 +- rt/share/html/Elements/RT__Template/ColumnMap | 35 +- rt/share/html/Elements/RT__Ticket/ColumnMap | 94 +- rt/share/html/Elements/RT__User/ColumnMap | 13 +- rt/share/html/Elements/Refresh | 2 +- rt/share/html/Elements/SelectBoolean | 4 +- rt/share/html/Elements/SelectCustomFieldValue | 17 +- rt/share/html/Elements/SelectDate | 18 +- rt/share/html/Elements/SelectDateRelation | 2 +- rt/share/html/Elements/SelectLang | 2 - rt/share/html/Elements/SelectLinkType | 57 - rt/share/html/Elements/SelectMatch | 10 +- rt/share/html/Elements/SelectObject | 141 + rt/share/html/Elements/SelectOwnerAutocomplete | 2 +- rt/share/html/Elements/SelectOwnerDropdown | 32 +- rt/share/html/Elements/SelectQueue | 92 +- rt/share/html/Elements/SelectSortOrder | 65 - rt/share/html/Elements/SelectStatus | 58 +- rt/share/html/Elements/SelectTicketSortBy | 62 - rt/share/html/Elements/SelectTicketTypes | 58 - rt/share/html/Elements/SelectTimeUnits | 6 +- .../html/Elements/ShowCustomFieldCustomGroupings | 78 + rt/share/html/Elements/ShowCustomFieldImage | 2 +- rt/share/html/Elements/ShowCustomFields | 20 +- rt/share/html/Elements/ShowHistory | 191 + rt/share/html/Elements/ShowLink | 25 +- rt/share/html/Elements/ShowLinks | 155 +- rt/share/html/Elements/ShowLinksOfType | 127 + rt/share/html/Elements/ShowMemberships | 4 +- rt/share/html/Elements/ShowMessageHeaders | 101 + rt/share/html/Elements/ShowMessageStanza | 176 + rt/share/html/Elements/ShowPrincipal | 72 + rt/share/html/Elements/ShowRecord | 100 + rt/share/html/Elements/ShowRelationLabel | 30 +- rt/share/html/Elements/ShowReminders | 8 +- rt/share/html/Elements/ShowSearch | 21 +- rt/share/html/Elements/ShowTransaction | 265 + rt/share/html/Elements/ShowTransactionAttachments | 293 + rt/share/html/Elements/ShowUser | 53 +- rt/share/html/Elements/ShowUserConcise | 67 - rt/share/html/Elements/ShowUserVerbose | 72 - rt/share/html/Elements/SimpleSearch | 5 +- rt/share/html/Elements/Submit | 4 +- rt/share/html/Elements/TSVExport | 131 + rt/share/html/Elements/Tabs | 270 +- rt/share/html/Elements/TicketList | 12 +- rt/share/html/Elements/TitleBox | 1 + rt/share/html/Elements/TitleBoxEnd | 1 + rt/share/html/Elements/TitleBoxStart | 1 + rt/share/html/Elements/ValidateCustomFields | 73 +- rt/share/html/Errors/WebRemoteUser/Deauthorized | 50 + rt/share/html/Errors/WebRemoteUser/NoInternalUser | 50 + rt/share/html/Errors/WebRemoteUser/NoRemoteUser | 50 + .../WebRemoteUser/UserAutocreateDefaultsOnLogin | 50 + rt/share/html/Errors/WebRemoteUser/Wrapper | 80 + .../html/Helpers/Autocomplete/CustomFieldValues | 27 +- rt/share/html/Helpers/Autocomplete/Groups | 12 +- rt/share/html/Helpers/Autocomplete/Owners | 33 +- rt/share/html/Helpers/Autocomplete/Tickets | 109 + rt/share/html/Helpers/Autocomplete/Users | 71 +- rt/share/html/Helpers/TicketHistory | 23 +- rt/share/html/Helpers/UserInfo | 77 + rt/share/html/Install/DatabaseDetails.html | 4 - rt/share/html/Install/DatabaseType.html | 2 +- rt/share/html/Install/Finish.html | 4 +- rt/share/html/Install/Global.html | 1 - rt/share/html/Install/Initialize.html | 1 + rt/share/html/Install/index.html | 2 +- rt/share/html/NoAuth/Logout.html | 2 +- rt/share/html/NoAuth/Reminder.html | 50 - .../html/NoAuth/RichText/ckeditor/LICENSE.html | 1327 --- .../NoAuth/RichText/ckeditor/adapters/jquery.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js | 153 - rt/share/html/NoAuth/RichText/ckeditor/config.js | 47 - .../html/NoAuth/RichText/ckeditor/contents.css | 25 - .../NoAuth/RichText/ckeditor/lang/_languages.js | 6 - .../RichText/ckeditor/lang/_translationstatus.txt | 65 - rt/share/html/NoAuth/RichText/ckeditor/lang/af.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/da.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/de.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/el.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/en-au.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/en-ca.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/en-gb.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/en.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/es.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/et.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js | 822 -- rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/fr-ca.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/he.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/id.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/is.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/it.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ka.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/km.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ku.js | 821 -- rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/mk.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/no.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/pt-br.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/sr-latn.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/th.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/ug.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js | 6 - .../html/NoAuth/RichText/ckeditor/lang/zh-cn.js | 6 - rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js | 6 - .../ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js | 7 - .../plugins/a11yhelp/lang/_translationstatus.txt | 28 - .../RichText/ckeditor/plugins/a11yhelp/lang/cs.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/cy.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/da.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/de.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/el.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/en.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/eo.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/fa.js | 94 - .../RichText/ckeditor/plugins/a11yhelp/lang/fi.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/fr.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/gu.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/he.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/it.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/ku.js | 94 - .../RichText/ckeditor/plugins/a11yhelp/lang/lv.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/mk.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/nb.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/nl.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/no.js | 6 - .../ckeditor/plugins/a11yhelp/lang/pt-br.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/ro.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/sk.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/tr.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/ug.js | 6 - .../RichText/ckeditor/plugins/a11yhelp/lang/vi.js | 6 - .../ckeditor/plugins/a11yhelp/lang/zh-cn.js | 6 - .../ckeditor/plugins/about/dialogs/about.js | 6 - .../RichText/ckeditor/plugins/adobeair/plugin.js | 6 - .../RichText/ckeditor/plugins/ajax/plugin.js | 6 - .../RichText/ckeditor/plugins/autogrow/plugin.js | 6 - .../RichText/ckeditor/plugins/bbcode/plugin.js | 9 - .../ckeditor/plugins/clipboard/dialogs/paste.js | 7 - .../plugins/colordialog/dialogs/colordialog.js | 7 - .../plugins/devtools/lang/_translationstatus.txt | 31 - .../RichText/ckeditor/plugins/devtools/lang/bg.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/cs.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/cy.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/da.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/de.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/el.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/en.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/eo.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/et.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/fa.js | 21 - .../RichText/ckeditor/plugins/devtools/lang/fi.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/fr.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/gu.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/he.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/hr.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/it.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/ku.js | 21 - .../RichText/ckeditor/plugins/devtools/lang/lv.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/nb.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/nl.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/no.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/pl.js | 6 - .../ckeditor/plugins/devtools/lang/pt-br.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/sk.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/tr.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/ug.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/uk.js | 6 - .../RichText/ckeditor/plugins/devtools/lang/vi.js | 6 - .../ckeditor/plugins/devtools/lang/zh-cn.js | 6 - .../RichText/ckeditor/plugins/devtools/plugin.js | 6 - .../ckeditor/plugins/dialog/dialogDefinition.js | 4 - .../RichText/ckeditor/plugins/div/dialogs/div.js | 8 - .../ckeditor/plugins/docprops/dialogs/docprops.js | 10 - .../RichText/ckeditor/plugins/docprops/plugin.js | 6 - .../RichText/ckeditor/plugins/find/dialogs/find.js | 10 - .../ckeditor/plugins/flash/dialogs/flash.js | 9 - .../ckeditor/plugins/forms/dialogs/button.js | 6 - .../ckeditor/plugins/forms/dialogs/checkbox.js | 6 - .../ckeditor/plugins/forms/dialogs/form.js | 6 - .../ckeditor/plugins/forms/dialogs/hiddenfield.js | 6 - .../ckeditor/plugins/forms/dialogs/radio.js | 6 - .../ckeditor/plugins/forms/dialogs/select.js | 9 - .../ckeditor/plugins/forms/dialogs/textarea.js | 6 - .../ckeditor/plugins/forms/dialogs/textfield.js | 6 - .../ckeditor/plugins/iframe/dialogs/iframe.js | 7 - .../ckeditor/plugins/iframedialog/plugin.js | 6 - .../ckeditor/plugins/image/dialogs/image.js | 13 - .../ckeditor/plugins/link/dialogs/anchor.js | 6 - .../RichText/ckeditor/plugins/link/dialogs/link.js | 12 - .../plugins/liststyle/dialogs/liststyle.js | 7 - .../plugins/pastefromword/filter/default.js | 11 - .../plugins/pastetext/dialogs/pastetext.js | 6 - .../plugins/placeholder/dialogs/placeholder.js | 6 - .../placeholder/lang/_translationstatus.txt | 30 - .../ckeditor/plugins/placeholder/lang/bg.js | 6 - .../ckeditor/plugins/placeholder/lang/cs.js | 6 - .../ckeditor/plugins/placeholder/lang/cy.js | 6 - .../ckeditor/plugins/placeholder/lang/da.js | 6 - .../ckeditor/plugins/placeholder/lang/de.js | 6 - .../ckeditor/plugins/placeholder/lang/el.js | 6 - .../ckeditor/plugins/placeholder/lang/en.js | 6 - .../ckeditor/plugins/placeholder/lang/eo.js | 6 - .../ckeditor/plugins/placeholder/lang/et.js | 6 - .../ckeditor/plugins/placeholder/lang/fa.js | 21 - .../ckeditor/plugins/placeholder/lang/fi.js | 6 - .../ckeditor/plugins/placeholder/lang/fr.js | 6 - .../ckeditor/plugins/placeholder/lang/he.js | 6 - .../ckeditor/plugins/placeholder/lang/hr.js | 6 - .../ckeditor/plugins/placeholder/lang/it.js | 6 - .../ckeditor/plugins/placeholder/lang/ku.js | 21 - .../ckeditor/plugins/placeholder/lang/lv.js | 6 - .../ckeditor/plugins/placeholder/lang/nb.js | 6 - .../ckeditor/plugins/placeholder/lang/nl.js | 6 - .../ckeditor/plugins/placeholder/lang/no.js | 6 - .../ckeditor/plugins/placeholder/lang/pl.js | 6 - .../ckeditor/plugins/placeholder/lang/pt-br.js | 6 - .../ckeditor/plugins/placeholder/lang/sk.js | 6 - .../ckeditor/plugins/placeholder/lang/tr.js | 6 - .../ckeditor/plugins/placeholder/lang/ug.js | 6 - .../ckeditor/plugins/placeholder/lang/uk.js | 6 - .../ckeditor/plugins/placeholder/lang/vi.js | 6 - .../ckeditor/plugins/placeholder/lang/zh-cn.js | 6 - .../ckeditor/plugins/placeholder/plugin.js | 6 - .../RichText/ckeditor/plugins/preview/preview.html | 10 - .../ckeditor/plugins/scayt/dialogs/options.js | 8 - .../ckeditor/plugins/scayt/dialogs/toolbar.css | 6 - .../ckeditor/plugins/smiley/dialogs/smiley.js | 7 - .../plugins/specialchar/dialogs/specialchar.js | 7 - .../specialchar/lang/_translationstatus.txt | 25 - .../ckeditor/plugins/specialchar/lang/cs.js | 6 - .../ckeditor/plugins/specialchar/lang/cy.js | 6 - .../ckeditor/plugins/specialchar/lang/de.js | 6 - .../ckeditor/plugins/specialchar/lang/el.js | 6 - .../ckeditor/plugins/specialchar/lang/en.js | 6 - .../ckeditor/plugins/specialchar/lang/eo.js | 6 - .../ckeditor/plugins/specialchar/lang/et.js | 6 - .../ckeditor/plugins/specialchar/lang/fa.js | 131 - .../ckeditor/plugins/specialchar/lang/fi.js | 6 - .../ckeditor/plugins/specialchar/lang/fr.js | 6 - .../ckeditor/plugins/specialchar/lang/he.js | 6 - .../ckeditor/plugins/specialchar/lang/hr.js | 6 - .../ckeditor/plugins/specialchar/lang/it.js | 6 - .../ckeditor/plugins/specialchar/lang/ku.js | 131 - .../ckeditor/plugins/specialchar/lang/lv.js | 6 - .../ckeditor/plugins/specialchar/lang/nb.js | 6 - .../ckeditor/plugins/specialchar/lang/nl.js | 6 - .../ckeditor/plugins/specialchar/lang/no.js | 6 - .../ckeditor/plugins/specialchar/lang/pt-br.js | 6 - .../ckeditor/plugins/specialchar/lang/sk.js | 6 - .../ckeditor/plugins/specialchar/lang/tr.js | 6 - .../ckeditor/plugins/specialchar/lang/ug.js | 6 - .../ckeditor/plugins/specialchar/lang/zh-cn.js | 6 - .../ckeditor/plugins/styles/styles/default.js | 6 - .../ckeditor/plugins/stylesheetparser/plugin.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 - .../ckeditor/plugins/uicolor/dialogs/uicolor.js | 7 - .../plugins/uicolor/lang/_translationstatus.txt | 31 - .../RichText/ckeditor/plugins/uicolor/lang/bg.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/cs.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/cy.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/da.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/de.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/el.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/en.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/eo.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/et.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/fa.js | 20 - .../RichText/ckeditor/plugins/uicolor/lang/fi.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/fr.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/he.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/hr.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/it.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/ku.js | 20 - .../RichText/ckeditor/plugins/uicolor/lang/lv.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/mk.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/nb.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/nl.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/no.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/pl.js | 6 - .../ckeditor/plugins/uicolor/lang/pt-br.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/sk.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/tr.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/ug.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/uk.js | 6 - .../RichText/ckeditor/plugins/uicolor/lang/vi.js | 6 - .../ckeditor/plugins/uicolor/lang/zh-cn.js | 6 - .../RichText/ckeditor/plugins/uicolor/plugin.js | 6 - .../ckeditor/plugins/uicolor/yui/assets/yui.css | 6 - .../RichText/ckeditor/plugins/uicolor/yui/yui.js | 76 - .../ckeditor/plugins/wsc/dialogs/ciframe.html | 49 - .../ckeditor/plugins/wsc/dialogs/tmpFrameset.html | 52 - .../RichText/ckeditor/plugins/wsc/dialogs/wsc.css | 6 - .../RichText/ckeditor/plugins/wsc/dialogs/wsc.js | 7 - .../NoAuth/RichText/ckeditor/plugins/xml/plugin.js | 6 - .../NoAuth/RichText/ckeditor/skins/kama/dialog.css | 10 - .../NoAuth/RichText/ckeditor/skins/kama/editor.css | 13 - .../NoAuth/RichText/ckeditor/skins/kama/skin.js | 7 - .../RichText/ckeditor/skins/kama/templates.css | 6 - .../RichText/ckeditor/skins/office2003/dialog.css | 10 - .../RichText/ckeditor/skins/office2003/editor.css | 14 - .../RichText/ckeditor/skins/office2003/skin.js | 6 - .../ckeditor/skins/office2003/templates.css | 6 - .../NoAuth/RichText/ckeditor/skins/v2/dialog.css | 9 - .../NoAuth/RichText/ckeditor/skins/v2/editor.css | 13 - .../html/NoAuth/RichText/ckeditor/skins/v2/skin.js | 6 - .../RichText/ckeditor/skins/v2/templates.css | 6 - .../RichText/ckeditor/themes/default/theme.js | 8 - rt/share/html/NoAuth/RichText/dhandler | 69 - rt/share/html/NoAuth/css/aileron/AfterMenus | 71 + rt/share/html/NoAuth/css/aileron/InHeader | 15 +- rt/share/html/NoAuth/css/aileron/base.css | 62 - rt/share/html/NoAuth/css/aileron/boxes.css | 180 - rt/share/html/NoAuth/css/aileron/forms.css | 80 - rt/share/html/NoAuth/css/aileron/images/dhandler | 55 - rt/share/html/NoAuth/css/aileron/layout.css | 174 - rt/share/html/NoAuth/css/aileron/login.css | 50 - rt/share/html/NoAuth/css/aileron/main.css | 63 - rt/share/html/NoAuth/css/aileron/misc.css | 58 - rt/share/html/NoAuth/css/aileron/msie.css | 180 - rt/share/html/NoAuth/css/aileron/msie6.css | 110 - rt/share/html/NoAuth/css/aileron/nav.css | 165 - rt/share/html/NoAuth/css/aileron/ticket-lists.css | 238 - rt/share/html/NoAuth/css/aileron/ticket-search.css | 242 - rt/share/html/NoAuth/css/aileron/ticket.css | 282 - rt/share/html/NoAuth/css/autohandler | 21 +- rt/share/html/NoAuth/css/ballard/InHeader | 4 +- rt/share/html/NoAuth/css/ballard/base.css | 62 - rt/share/html/NoAuth/css/ballard/boxes.css | 189 - rt/share/html/NoAuth/css/ballard/images/dhandler | 55 - rt/share/html/NoAuth/css/ballard/layout.css | 177 - rt/share/html/NoAuth/css/ballard/main.css | 62 - rt/share/html/NoAuth/css/ballard/misc.css | 58 - rt/share/html/NoAuth/css/ballard/msie.css | 234 - rt/share/html/NoAuth/css/ballard/msie6.css | 98 - rt/share/html/NoAuth/css/ballard/nav.css | 191 - rt/share/html/NoAuth/css/ballard/ticket-lists.css | 237 - rt/share/html/NoAuth/css/ballard/ticket-search.css | 244 - rt/share/html/NoAuth/css/ballard/ticket.css | 278 - rt/share/html/NoAuth/css/base/admin.css | 97 - rt/share/html/NoAuth/css/base/articles.css | 54 - rt/share/html/NoAuth/css/base/collection.css | 50 - rt/share/html/NoAuth/css/base/forms.css | 278 - rt/share/html/NoAuth/css/base/history-folding.css | 91 - .../NoAuth/css/base/jquery-ui-timepicker-addon.css | 19 - rt/share/html/NoAuth/css/base/jquery-ui.css | 48 - .../NoAuth/css/base/jquery-ui.custom.modified.css | 478 - rt/share/html/NoAuth/css/base/login.css | 114 - rt/share/html/NoAuth/css/base/main.css | 74 - rt/share/html/NoAuth/css/base/misc.css | 117 - rt/share/html/NoAuth/css/base/msie6.css | 67 - rt/share/html/NoAuth/css/base/nav.css | 64 - rt/share/html/NoAuth/css/base/portlets.css | 64 - rt/share/html/NoAuth/css/base/rights-editor.css | 177 - rt/share/html/NoAuth/css/base/superfish-navbar.css | 95 - .../html/NoAuth/css/base/superfish-vertical.css | 23 - rt/share/html/NoAuth/css/base/superfish.css | 138 - rt/share/html/NoAuth/css/base/tablesorter.css | 52 - rt/share/html/NoAuth/css/base/theme-editor.css | 111 - rt/share/html/NoAuth/css/base/ticket-form.css | 122 - rt/share/html/NoAuth/css/base/ticket.css | 149 - rt/share/html/NoAuth/css/base/tools.css | 54 - rt/share/html/NoAuth/css/base/yui-fonts.css | 7 - rt/share/html/NoAuth/css/dhandler | 2 +- rt/share/html/NoAuth/css/print.css | 218 - rt/share/html/NoAuth/css/rudder/AfterMenus | 71 + rt/share/html/NoAuth/css/rudder/InHeader | 50 + rt/share/html/NoAuth/css/web2/AfterMenus | 74 + rt/share/html/NoAuth/css/web2/InHeader | 25 +- rt/share/html/NoAuth/css/web2/base.css | 62 - rt/share/html/NoAuth/css/web2/boxes.css | 191 - rt/share/html/NoAuth/css/web2/images/dhandler | 55 - rt/share/html/NoAuth/css/web2/layout.css | 210 - rt/share/html/NoAuth/css/web2/main.css | 62 - rt/share/html/NoAuth/css/web2/misc.css | 58 - rt/share/html/NoAuth/css/web2/msie.css | 242 - rt/share/html/NoAuth/css/web2/msie6.css | 101 - rt/share/html/NoAuth/css/web2/nav.css | 292 - rt/share/html/NoAuth/css/web2/ticket-lists.css | 237 - rt/share/html/NoAuth/css/web2/ticket-search.css | 244 - rt/share/html/NoAuth/css/web2/ticket.css | 280 - rt/share/html/NoAuth/iCal/dhandler | 68 +- rt/share/html/NoAuth/images/autohandler | 55 - rt/share/html/NoAuth/images/test.png | 2 - rt/share/html/NoAuth/js/autohandler | 17 +- rt/share/html/NoAuth/js/cascaded.js | 152 - rt/share/html/NoAuth/js/class.js | 15 - rt/share/html/NoAuth/js/combobox.js | 262 - rt/share/html/NoAuth/js/dhandler | 4 - rt/share/html/NoAuth/js/farbtastic.js | 347 - rt/share/html/NoAuth/js/history-folding.js | 73 - rt/share/html/NoAuth/js/jquery-1.4.2.min.js | 154 - .../html/NoAuth/js/jquery-ui-1.8.4.custom.min.js | 274 - .../html/NoAuth/js/jquery-ui-patch-datepicker.js | 92 - .../html/NoAuth/js/jquery-ui-timepicker-addon.js | 1326 --- rt/share/html/NoAuth/js/jquery.cookie.js | 89 - rt/share/html/NoAuth/js/jquery.event.hover-1.0.js | 85 - rt/share/html/NoAuth/js/jquery.supposition.js | 83 - rt/share/html/NoAuth/js/jquery.tablesorter.min.js | 16 - rt/share/html/NoAuth/js/jquery_noconflict.js | 51 - rt/share/html/NoAuth/js/late.js | 49 - rt/share/html/NoAuth/js/list.js | 112 - rt/share/html/NoAuth/js/superfish.js | 121 - rt/share/html/NoAuth/js/supersubs.js | 90 - rt/share/html/NoAuth/js/titlebox-state.js | 83 - rt/share/html/NoAuth/js/userautocomplete.js | 126 - rt/share/html/NoAuth/js/util.js | 372 - rt/share/html/NoAuth/rss/dhandler | 35 +- rt/share/html/Prefs/DashboardsInMenu.html | 113 + rt/share/html/Prefs/MyRT.html | 12 +- rt/share/html/Prefs/Other.html | 6 +- rt/share/html/Prefs/Quicksearch.html | 13 +- rt/share/html/Prefs/Search.html | 4 +- rt/share/html/Prefs/SearchOptions.html | 4 +- rt/share/html/REST/1.0/Forms/group/default | 49 +- rt/share/html/REST/1.0/Forms/group/ns | 2 +- rt/share/html/REST/1.0/Forms/queue/default | 9 +- rt/share/html/REST/1.0/Forms/queue/ns | 2 +- rt/share/html/REST/1.0/Forms/ticket/attachments | 32 +- rt/share/html/REST/1.0/Forms/ticket/default | 105 +- rt/share/html/REST/1.0/Forms/ticket/history | 96 +- rt/share/html/REST/1.0/Forms/transaction/default | 109 +- rt/share/html/REST/1.0/Forms/user/default | 49 +- rt/share/html/REST/1.0/Forms/user/ns | 2 +- rt/share/html/REST/1.0/NoAuth/mail-gateway | 18 +- rt/share/html/REST/1.0/dhandler | 32 +- rt/share/html/REST/1.0/search/dhandler | 245 +- rt/share/html/REST/1.0/search/ticket | 165 - rt/share/html/Search/Build.html | 26 +- rt/share/html/Search/Bulk.html | 226 +- rt/share/html/Search/Chart | 463 +- rt/share/html/Search/Chart.html | 140 +- rt/share/html/Search/Elements/BuildFormatString | 13 +- rt/share/html/Search/Elements/Chart | 105 +- rt/share/html/Search/Elements/ChartTable | 119 + rt/share/html/Search/Elements/ConditionRow | 8 +- rt/share/html/Search/Elements/EditFormat | 13 +- rt/share/html/Search/Elements/EditSearches | 20 +- rt/share/html/Search/Elements/EditSort | 2 +- rt/share/html/Search/Elements/PickBasics | 26 +- rt/share/html/Search/Elements/PickCFs | 21 +- rt/share/html/Search/Elements/PickCriteria | 2 + rt/share/html/Search/Elements/PickObjectCFs | 76 + rt/share/html/Search/Elements/PickTicketCFs | 5 +- rt/share/html/Search/Elements/ResultsRSSView | 122 +- rt/share/html/Search/Elements/SearchPrivacy | 6 +- rt/share/html/Search/Elements/SearchesForObject | 4 +- rt/share/html/Search/Elements/SelectAndOr | 4 +- rt/share/html/Search/Elements/SelectChartFunction | 79 + rt/share/html/Search/Elements/SelectChartType | 3 +- rt/share/html/Search/Elements/SelectGroup | 2 +- rt/share/html/Search/Elements/SelectGroupBy | 26 +- rt/share/html/Search/Elements/SelectLinks | 19 +- rt/share/html/Search/Elements/SelectPersonType | 4 +- rt/share/html/Search/Graph.html | 50 - rt/share/html/Search/Results.html | 24 +- rt/share/html/Search/Results.tsv | 66 +- rt/share/html/Search/Simple.html | 4 +- rt/share/html/Search/index.html | 50 + rt/share/html/SelfService/Closed.html | 6 +- rt/share/html/SelfService/Create.html | 43 +- rt/share/html/SelfService/Display.html | 135 +- rt/share/html/SelfService/Elements/MyRequests | 21 +- rt/share/html/SelfService/Error.html | 71 - .../Helpers/Autocomplete/CustomFieldValues | 48 + .../html/SelfService/Helpers/Autocomplete/Users | 48 + rt/share/html/SelfService/Prefs.html | 6 +- rt/share/html/SelfService/Update.html | 10 +- rt/share/html/SelfService/index.html | 2 +- rt/share/html/Ticket/Attachment/dhandler | 87 +- rt/share/html/Ticket/Create.html | 138 +- rt/share/html/Ticket/Crypt.html | 100 + rt/share/html/Ticket/Display.html | 45 +- rt/share/html/Ticket/Elements/AddAttachments | 17 +- rt/share/html/Ticket/Elements/AddWatchers | 22 +- rt/share/html/Ticket/Elements/Bookmark | 44 +- rt/share/html/Ticket/Elements/ClickToShowHistory | 11 +- rt/share/html/Ticket/Elements/DelayShowHistory | 78 + rt/share/html/Ticket/Elements/EditBasics | 9 +- rt/share/html/Ticket/Elements/EditCustomFields | 63 +- rt/share/html/Ticket/Elements/EditDates | 1 + rt/share/html/Ticket/Elements/EditMerge | 79 + rt/share/html/Ticket/Elements/EditPeople | 30 +- .../Ticket/Elements/EditTransactionCustomFields | 11 +- rt/share/html/Ticket/Elements/EditWatchers | 2 +- rt/share/html/Ticket/Elements/FindAttachments | 95 - rt/share/html/Ticket/Elements/FindTransactions | 72 - rt/share/html/Ticket/Elements/FoldStanzaJS | 50 - rt/share/html/Ticket/Elements/LoadTextAttachments | 45 +- rt/share/html/Ticket/Elements/PreviewScrips | 28 +- rt/share/html/Ticket/Elements/Reminders | 72 +- rt/share/html/Ticket/Elements/SelectStatus | 83 + rt/share/html/Ticket/Elements/ShowAttachments | 32 +- rt/share/html/Ticket/Elements/ShowBasics | 7 + rt/share/html/Ticket/Elements/ShowCustomFields | 2 +- rt/share/html/Ticket/Elements/ShowDates | 31 +- rt/share/html/Ticket/Elements/ShowDependencies | 66 - rt/share/html/Ticket/Elements/ShowDependencyStatus | 78 + rt/share/html/Ticket/Elements/ShowGnuPGStatus | 177 - rt/share/html/Ticket/Elements/ShowGroupMembers | 24 +- rt/share/html/Ticket/Elements/ShowHistory | 161 - rt/share/html/Ticket/Elements/ShowMembers | 74 - rt/share/html/Ticket/Elements/ShowMessageHeaders | 96 - rt/share/html/Ticket/Elements/ShowMessageStanza | 188 - rt/share/html/Ticket/Elements/ShowPeople | 1 + rt/share/html/Ticket/Elements/ShowRequestor | 40 +- .../html/Ticket/Elements/ShowRequestorExtraInfo | 40 +- rt/share/html/Ticket/Elements/ShowRequestorTickets | 36 +- .../html/Ticket/Elements/ShowSimplifiedRecipients | 15 +- rt/share/html/Ticket/Elements/ShowSummary | 21 +- rt/share/html/Ticket/Elements/ShowTime | 4 +- rt/share/html/Ticket/Elements/ShowTransaction | 240 - .../Ticket/Elements/ShowTransactionAttachments | 301 - rt/share/html/Ticket/Elements/ShowUserEntry | 56 - rt/share/html/Ticket/Elements/UpdateCc | 11 +- rt/share/html/Ticket/Forward.html | 35 +- rt/share/html/Ticket/GnuPG.html | 100 - .../Ticket/Graphs/Elements/EditGraphProperties | 10 +- rt/share/html/Ticket/History.html | 13 +- rt/share/html/Ticket/Modify.html | 51 +- rt/share/html/Ticket/ModifyAll.html | 97 +- rt/share/html/Ticket/ModifyDates.html | 7 +- rt/share/html/Ticket/ModifyLinks.html | 18 +- rt/share/html/Ticket/ModifyPeople.html | 9 +- rt/share/html/Ticket/Reminders.html | 7 +- rt/share/html/Ticket/ShowEmailRecord.html | 59 +- rt/share/html/Ticket/Update.html | 62 +- rt/share/html/Tools/MyDay.html | 5 +- rt/share/html/Tools/Offline.html | 165 - rt/share/html/User/Elements/Portlets/ActiveTickets | 70 + rt/share/html/User/Elements/Portlets/CreateTicket | 58 + rt/share/html/User/Elements/Portlets/ExtraInfo | 56 + .../html/User/Elements/Portlets/InactiveTickets | 70 + rt/share/html/User/Elements/TicketList | 115 + rt/share/html/User/Elements/UserInfo | 64 + rt/share/html/User/History.html | 67 + rt/share/html/User/Prefs.html | 27 +- rt/share/html/User/Search.html | 101 + rt/share/html/User/Summary.html | 99 + rt/share/html/Widgets/ComboBox | 2 +- rt/share/html/Widgets/Form/Select | 4 +- rt/share/html/Widgets/SavedSearch | 7 +- rt/share/html/Widgets/SelectionBox | 121 +- rt/share/html/Widgets/TitleBoxStart | 4 +- rt/share/html/autohandler | 5 - rt/share/html/index.html | 49 +- rt/share/html/m/_elements/footer | 2 +- rt/share/html/m/_elements/header | 8 +- rt/share/html/m/_elements/login | 9 +- rt/share/html/m/_elements/raw_style | 500 - rt/share/html/m/_elements/ticket_list | 6 +- rt/share/html/m/style.css | 52 - rt/share/html/m/ticket/create | 82 +- rt/share/html/m/ticket/history | 2 +- rt/share/html/m/ticket/reply | 19 +- rt/share/html/m/ticket/show | 57 +- rt/share/html/m/tickets/search | 19 +- rt/share/po/ar.po | 5751 +++++++----- rt/share/po/bg.po | 6475 ++++++------- rt/share/po/ca.po | 6073 ++++++------ rt/share/po/cs.po | 6385 +++++++------ rt/share/po/da.po | 8576 +++++++---------- rt/share/po/de.po | 8525 ++++++++--------- rt/share/po/el.po | 8265 ++++++++-------- rt/share/po/en.po | 24 +- rt/share/po/en_GB.po | 7711 +-------------- rt/share/po/es.po | 8863 +++++++----------- rt/share/po/et.po | 6859 +++++++------- rt/share/po/eu.po | 9772 +++++++++++++++++++ rt/share/po/fa.po | 9770 +++++++++++++++++++ rt/share/po/fi.po | 7908 +++++++--------- rt/share/po/fr.po | 7301 +++++++-------- rt/share/po/he.po | 9429 ------------------- rt/share/po/hr.po | 8179 +++++++--------- rt/share/po/hu.po | 8169 ++++++++-------- rt/share/po/id.po | 6796 +++++++------- rt/share/po/is.po | 6695 +++++++------ rt/share/po/it.po | 8825 +++++++----------- rt/share/po/ja.po | 6600 ++++++------- rt/share/po/lt.po | 7489 ++++++++------- rt/share/po/lv.po | 6486 ++++++------- rt/share/po/mk.po | 8933 ------------------ rt/share/po/nb.po | 8695 +++++++---------- rt/share/po/nl.po | 7863 +++++++--------- rt/share/po/nn.po | 6522 +++++++------ rt/share/po/oc.po | 5725 +++++++----- rt/share/po/pl.po | 8434 +++++++---------- rt/share/po/pt.po | 7489 ++++++++------- rt/share/po/pt_BR.po | 8991 ++++++++---------- rt/share/po/pt_PT.po | 6423 +++++++------ rt/share/po/rt.pot | 5575 ++++++----- rt/share/po/ru.po | 7469 ++++++++------- rt/share/po/sk.po | 5737 +++++++----- rt/share/po/sl.po | 6505 ++++++------- rt/share/po/sr.po | 9770 +++++++++++++++++++ rt/share/po/sv.po | 7590 ++++++++------- rt/share/po/tr.po | 6958 +++++++------- rt/share/po/zh_CN.po | 9822 +++++++------------ rt/share/po/zh_TW.po | 9857 +++++++------------- rt/share/static/RichText/LICENSE.md | 1264 +++ rt/share/static/RichText/ckeditor.js | 871 ++ rt/share/static/RichText/config.js | 47 + rt/share/static/RichText/contents.css | 99 + rt/share/static/RichText/lang/af.js | 5 + rt/share/static/RichText/lang/ar.js | 5 + rt/share/static/RichText/lang/bg.js | 5 + rt/share/static/RichText/lang/bn.js | 5 + rt/share/static/RichText/lang/bs.js | 5 + rt/share/static/RichText/lang/ca.js | 5 + rt/share/static/RichText/lang/cs.js | 5 + rt/share/static/RichText/lang/cy.js | 5 + rt/share/static/RichText/lang/da.js | 5 + rt/share/static/RichText/lang/de.js | 5 + rt/share/static/RichText/lang/el.js | 5 + rt/share/static/RichText/lang/en-au.js | 5 + rt/share/static/RichText/lang/en-ca.js | 5 + rt/share/static/RichText/lang/en-gb.js | 5 + rt/share/static/RichText/lang/en.js | 5 + rt/share/static/RichText/lang/eo.js | 5 + rt/share/static/RichText/lang/es.js | 5 + rt/share/static/RichText/lang/et.js | 5 + rt/share/static/RichText/lang/eu.js | 5 + rt/share/static/RichText/lang/fa.js | 5 + rt/share/static/RichText/lang/fi.js | 5 + rt/share/static/RichText/lang/fo.js | 5 + rt/share/static/RichText/lang/fr-ca.js | 5 + rt/share/static/RichText/lang/fr.js | 5 + rt/share/static/RichText/lang/gl.js | 5 + rt/share/static/RichText/lang/gu.js | 5 + rt/share/static/RichText/lang/he.js | 5 + rt/share/static/RichText/lang/hi.js | 5 + rt/share/static/RichText/lang/hr.js | 5 + rt/share/static/RichText/lang/hu.js | 5 + rt/share/static/RichText/lang/is.js | 5 + rt/share/static/RichText/lang/it.js | 5 + rt/share/static/RichText/lang/ja.js | 5 + rt/share/static/RichText/lang/ka.js | 5 + rt/share/static/RichText/lang/km.js | 5 + rt/share/static/RichText/lang/ko.js | 5 + rt/share/static/RichText/lang/ku.js | 5 + rt/share/static/RichText/lang/lt.js | 5 + rt/share/static/RichText/lang/lv.js | 5 + rt/share/static/RichText/lang/mk.js | 5 + rt/share/static/RichText/lang/mn.js | 5 + rt/share/static/RichText/lang/ms.js | 5 + rt/share/static/RichText/lang/nb.js | 5 + rt/share/static/RichText/lang/nl.js | 5 + rt/share/static/RichText/lang/no.js | 5 + rt/share/static/RichText/lang/pl.js | 5 + rt/share/static/RichText/lang/pt-br.js | 5 + rt/share/static/RichText/lang/pt.js | 5 + rt/share/static/RichText/lang/ro.js | 5 + rt/share/static/RichText/lang/ru.js | 5 + rt/share/static/RichText/lang/sk.js | 5 + rt/share/static/RichText/lang/sl.js | 5 + rt/share/static/RichText/lang/sr-latn.js | 5 + rt/share/static/RichText/lang/sr.js | 5 + rt/share/static/RichText/lang/sv.js | 5 + rt/share/static/RichText/lang/th.js | 5 + rt/share/static/RichText/lang/tr.js | 5 + rt/share/static/RichText/lang/ug.js | 5 + rt/share/static/RichText/lang/uk.js | 5 + rt/share/static/RichText/lang/vi.js | 5 + rt/share/static/RichText/lang/zh-cn.js | 5 + rt/share/static/RichText/lang/zh.js | 5 + .../RichText/plugins/a11yhelp/dialogs/a11yhelp.js | 10 + .../a11yhelp/dialogs/lang/_translationstatus.txt | 25 + .../RichText/plugins/a11yhelp/dialogs/lang/ar.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/bg.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/ca.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/cs.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/cy.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/da.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/de.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/el.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/en.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/eo.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/es.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/et.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/fa.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/fi.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/fr.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/gu.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/he.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/hi.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/hr.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/hu.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/it.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/ja.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/ku.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/lt.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/lv.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/mk.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/mn.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/nb.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/nl.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/no.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/pl.js | 9 + .../plugins/a11yhelp/dialogs/lang/pt-br.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/pt.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/ro.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/ru.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/sk.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/sl.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/sv.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/tr.js | 10 + .../RichText/plugins/a11yhelp/dialogs/lang/ug.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/uk.js | 9 + .../RichText/plugins/a11yhelp/dialogs/lang/vi.js | 9 + .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 7 + .../static/RichText/plugins/about/dialogs/about.js | 6 + .../RichText/plugins/clipboard/dialogs/paste.js | 11 + .../plugins/colordialog/dialogs/colordialog.js | 13 + .../RichText/plugins/dialog/dialogDefinition.js | 4 + .../static/RichText/plugins/div/dialogs/div.js | 9 + .../static/RichText/plugins/find/dialogs/find.js | 24 + .../static/RichText/plugins/flash/dialogs/flash.js | 23 + .../RichText/plugins/forms/dialogs/button.js | 8 + .../RichText/plugins/forms/dialogs/checkbox.js | 8 + .../static/RichText/plugins/forms/dialogs/form.js | 8 + .../RichText/plugins/forms/dialogs/hiddenfield.js | 8 + .../static/RichText/plugins/forms/dialogs/radio.js | 8 + .../RichText/plugins/forms/dialogs/select.js | 20 + .../RichText/plugins/forms/dialogs/textarea.js | 8 + .../RichText/plugins/forms/dialogs/textfield.js | 10 + .../RichText/plugins/iframe/dialogs/iframe.js | 10 + .../static/RichText/plugins/image/dialogs/image.js | 41 + .../static/RichText/plugins/link/dialogs/anchor.js | 8 + .../static/RichText/plugins/link/dialogs/link.js | 36 + .../plugins/liststyle/dialogs/liststyle.js | 10 + .../plugins/pastefromword/filter/default.js | 31 + .../static/RichText/plugins/preview/preview.html | 10 + rt/share/static/RichText/plugins/scayt/LICENSE.md | 28 + rt/share/static/RichText/plugins/scayt/README.md | 25 + .../RichText/plugins/scayt/dialogs/options.js | 19 + .../RichText/plugins/scayt/dialogs/toolbar.css | 71 + .../RichText/plugins/smiley/dialogs/smiley.js | 10 + .../dialogs/lang/_translationstatus.txt | 20 + .../plugins/specialchar/dialogs/lang/ca.js | 13 + .../plugins/specialchar/dialogs/lang/cs.js | 13 + .../plugins/specialchar/dialogs/lang/cy.js | 14 + .../plugins/specialchar/dialogs/lang/de.js | 13 + .../plugins/specialchar/dialogs/lang/el.js | 13 + .../plugins/specialchar/dialogs/lang/en.js | 13 + .../plugins/specialchar/dialogs/lang/eo.js | 12 + .../plugins/specialchar/dialogs/lang/et.js | 13 + .../plugins/specialchar/dialogs/lang/fa.js | 13 + .../plugins/specialchar/dialogs/lang/fi.js | 13 + .../plugins/specialchar/dialogs/lang/fr.js | 11 + .../plugins/specialchar/dialogs/lang/he.js | 13 + .../plugins/specialchar/dialogs/lang/hr.js | 13 + .../plugins/specialchar/dialogs/lang/it.js | 14 + .../plugins/specialchar/dialogs/lang/ku.js | 14 + .../plugins/specialchar/dialogs/lang/lv.js | 13 + .../plugins/specialchar/dialogs/lang/nb.js | 11 + .../plugins/specialchar/dialogs/lang/nl.js | 13 + .../plugins/specialchar/dialogs/lang/no.js | 11 + .../plugins/specialchar/dialogs/lang/pt-br.js | 11 + .../plugins/specialchar/dialogs/lang/sk.js | 13 + .../plugins/specialchar/dialogs/lang/sv.js | 11 + .../plugins/specialchar/dialogs/lang/tr.js | 12 + .../plugins/specialchar/dialogs/lang/ug.js | 13 + .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 + .../plugins/specialchar/dialogs/specialchar.js | 14 + .../static/RichText/plugins/table/dialogs/table.js | 20 + .../plugins/tabletools/dialogs/tableCell.js | 16 + .../plugins/templates/dialogs/templates.css | 84 + .../plugins/templates/dialogs/templates.js | 10 + .../plugins/templates/templates/default.js | 6 + rt/share/static/RichText/plugins/wsc/LICENSE.md | 28 + rt/share/static/RichText/plugins/wsc/README.md | 25 + .../RichText/plugins/wsc/dialogs/ciframe.html | 49 + .../RichText/plugins/wsc/dialogs/tmpFrameset.html | 52 + .../static/RichText/plugins/wsc/dialogs/wsc.css | 82 + .../static/RichText/plugins/wsc/dialogs/wsc.js | 11 + rt/share/static/RichText/skins/kama/dialog.css | 5 + rt/share/static/RichText/skins/kama/dialog_ie.css | 5 + rt/share/static/RichText/skins/kama/dialog_ie7.css | 5 + rt/share/static/RichText/skins/kama/dialog_ie8.css | 5 + .../static/RichText/skins/kama/dialog_iequirks.css | 5 + .../static/RichText/skins/kama/dialog_opera.css | 5 + rt/share/static/RichText/skins/kama/editor.css | 5 + rt/share/static/RichText/skins/kama/editor_ie.css | 5 + rt/share/static/RichText/skins/kama/editor_ie7.css | 5 + rt/share/static/RichText/skins/kama/editor_ie8.css | 5 + .../static/RichText/skins/kama/editor_iequirks.css | 5 + rt/share/static/RichText/skins/kama/readme.md | 40 + rt/share/static/RichText/styles.js | 112 + rt/share/static/css/aileron/base.css | 15 + rt/share/static/css/aileron/boxes.css | 133 + rt/share/static/css/aileron/forms.css | 33 + rt/share/static/css/aileron/layout.css | 127 + rt/share/static/css/aileron/login.css | 3 + rt/share/static/css/aileron/main.css | 12 + rt/share/static/css/aileron/misc.css | 11 + rt/share/static/css/aileron/msie.css | 133 + rt/share/static/css/aileron/msie6.css | 62 + rt/share/static/css/aileron/nav.css | 170 + rt/share/static/css/aileron/ticket-lists.css | 195 + rt/share/static/css/aileron/ticket-search.css | 206 + rt/share/static/css/aileron/ticket.css | 9 + rt/share/static/css/ballard/base.css | 15 + rt/share/static/css/ballard/boxes.css | 156 + rt/share/static/css/ballard/layout.css | 130 + rt/share/static/css/ballard/main.css | 9 + rt/share/static/css/ballard/misc.css | 11 + rt/share/static/css/ballard/msie.css | 187 + rt/share/static/css/ballard/msie6.css | 50 + rt/share/static/css/ballard/nav.css | 144 + rt/share/static/css/ballard/ticket-lists.css | 191 + rt/share/static/css/ballard/ticket-search.css | 197 + rt/share/static/css/base/accordion.css | 53 + rt/share/static/css/base/admin.css | 84 + rt/share/static/css/base/articles.css | 11 + rt/share/static/css/base/charts.css | 28 + rt/share/static/css/base/collection.css | 16 + rt/share/static/css/base/farbtastic.css | 51 + rt/share/static/css/base/forms.css | 252 + rt/share/static/css/base/history-folding.css | 65 + rt/share/static/css/base/history.css | 165 + .../static/css/base/jquery-ui-timepicker-addon.css | 22 + rt/share/static/css/base/jquery-ui.css | 1 + .../static/css/base/jquery-ui.custom.modified.css | 854 ++ rt/share/static/css/base/jquery.modal.css | 66 + rt/share/static/css/base/login.css | 71 + rt/share/static/css/base/main.css | 28 + rt/share/static/css/base/misc.css | 81 + rt/share/static/css/base/msie6.css | 19 + rt/share/static/css/base/nav.css | 17 + rt/share/static/css/base/portlets.css | 17 + rt/share/static/css/base/print.css | 192 + rt/share/static/css/base/record.css | 10 + rt/share/static/css/base/rights-editor.css | 130 + rt/share/static/css/base/superfish-navbar.css | 95 + rt/share/static/css/base/superfish-vertical.css | 23 + rt/share/static/css/base/superfish.css | 138 + rt/share/static/css/base/tablesorter.css | 52 + rt/share/static/css/base/theme-editor.css | 69 + rt/share/static/css/base/ticket-form.css | 75 + rt/share/static/css/base/ticket.css | 127 + rt/share/static/css/base/tools.css | 7 + rt/share/static/css/base/yui-fonts.css | 7 + rt/share/static/css/freeside3/InHeader | 67 + rt/share/static/css/freeside3/base.css | 62 + rt/share/static/css/freeside3/boxes.css | 180 + rt/share/static/css/freeside3/forms.css | 79 + rt/share/static/css/freeside3/freeside.css | 7 + rt/share/static/css/freeside3/images/dhandler | 8 + rt/share/static/css/freeside3/layout.css | 181 + rt/share/static/css/freeside3/login.css | 50 + rt/share/static/css/freeside3/main.css | 64 + rt/share/static/css/freeside3/misc.css | 58 + rt/share/static/css/freeside3/msie-pie.css | 58 + rt/share/static/css/freeside3/msie.css | 188 + rt/share/static/css/freeside3/msie6.css | 86 + rt/share/static/css/freeside3/nav.css | 171 + rt/share/static/css/freeside3/ticket-lists.css | 236 + rt/share/static/css/freeside3/ticket-search.css | 242 + rt/share/static/css/freeside3/ticket.css | 289 + rt/share/static/css/freeside4/admin.css | 16 + rt/share/static/css/freeside4/base.css | 17 + rt/share/static/css/freeside4/boxes.css | 151 + rt/share/static/css/freeside4/dashboards.css | 7 + rt/share/static/css/freeside4/forms.css | 104 + rt/share/static/css/freeside4/history.css | 80 + rt/share/static/css/freeside4/layout.css | 116 + rt/share/static/css/freeside4/login.css | 7 + rt/share/static/css/freeside4/main.css | 16 + rt/share/static/css/freeside4/misc.css | 40 + rt/share/static/css/freeside4/msie.css | 109 + rt/share/static/css/freeside4/nav.css | 223 + rt/share/static/css/freeside4/ticket-forms.css | 10 + rt/share/static/css/freeside4/ticket-lists.css | 229 + rt/share/static/css/freeside4/ticket-search.css | 188 + rt/share/static/css/freeside4/ticket.css | 66 + rt/share/static/css/mobile.css | 459 + rt/share/static/css/rudder/admin.css | 16 + rt/share/static/css/rudder/base.css | 17 + rt/share/static/css/rudder/boxes.css | 151 + rt/share/static/css/rudder/dashboards.css | 7 + rt/share/static/css/rudder/forms.css | 104 + rt/share/static/css/rudder/history.css | 80 + rt/share/static/css/rudder/layout.css | 116 + rt/share/static/css/rudder/login.css | 7 + rt/share/static/css/rudder/main.css | 16 + rt/share/static/css/rudder/misc.css | 40 + rt/share/static/css/rudder/msie.css | 109 + rt/share/static/css/rudder/nav.css | 223 + rt/share/static/css/rudder/ticket-forms.css | 10 + rt/share/static/css/rudder/ticket-lists.css | 229 + rt/share/static/css/rudder/ticket-search.css | 188 + rt/share/static/css/rudder/ticket.css | 66 + rt/share/static/css/web2/base.css | 15 + rt/share/static/css/web2/boxes.css | 158 + rt/share/static/css/web2/layout.css | 163 + rt/share/static/css/web2/main.css | 9 + rt/share/static/css/web2/misc.css | 11 + rt/share/static/css/web2/msie.css | 195 + rt/share/static/css/web2/msie6.css | 54 + rt/share/static/css/web2/nav.css | 245 + rt/share/static/css/web2/ticket-lists.css | 191 + rt/share/static/css/web2/ticket-search.css | 197 + rt/share/static/images/test.png | 2 + rt/share/static/js/autocomplete.js | 89 + rt/share/static/js/cascaded.js | 107 + rt/share/static/js/combobox.js | 215 + rt/share/static/js/event-registration.js | 110 + rt/share/static/js/farbtastic.js | 347 + rt/share/static/js/forms.js | 18 + rt/share/static/js/history-folding.js | 26 + rt/share/static/js/i18n.js | 15 + rt/share/static/js/jquery-1.9.1.min.js | 5 + rt/share/static/js/jquery-ui-1.10.0.custom.min.js | 6 + rt/share/static/js/jquery-ui-patch-datepicker.js | 45 + rt/share/static/js/jquery-ui-timepicker-addon.js | 1919 ++++ rt/share/static/js/jquery.cookie.js | 92 + rt/share/static/js/jquery.event.hover-1.0.js | 85 + rt/share/static/js/jquery.modal-defaults.js | 2 + rt/share/static/js/jquery.modal.min.js | 26 + rt/share/static/js/jquery.supposition.js | 83 + rt/share/static/js/jquery.tablesorter.min.js | 16 + rt/share/static/js/jquery_noconflict.js | 4 + rt/share/static/js/late.js | 39 + rt/share/static/js/superfish.js | 126 + rt/share/static/js/supersubs.js | 90 + rt/share/static/js/titlebox-state.js | 36 + rt/share/static/js/util.js | 345 + rt/t/00-mason-syntax.t | 2 +- rt/t/99-policy.t | 20 +- rt/t/api/attachment_filename.t | 6 +- rt/t/api/cfsearch.t | 24 +- rt/t/api/config.t | 8 +- rt/t/api/cron.t | 26 +- rt/t/api/customfield.t | 423 +- rt/t/api/date.t | 98 +- rt/t/api/db_indexes.t | 165 + rt/t/api/group-rights.t | 2 +- rt/t/api/group.t | 2 +- rt/t/api/groups.t | 5 +- rt/t/api/i18n_guess.t | 4 +- rt/t/api/i18n_mime_encoding.t | 32 + rt/t/api/initialdata.t | 16 + rt/t/api/link.t | 6 +- rt/t/api/password-types.t | 16 +- rt/t/api/queue.t | 12 +- rt/t/api/record.t | 4 +- rt/t/api/reminder-permissions.t | 49 + rt/t/api/rights.t | 12 +- rt/t/api/rtname.t | 7 +- rt/t/api/savedsearch.t | 66 +- rt/t/api/scrip.t | 221 +- rt/t/api/scrip_order.t | 313 +- rt/t/api/searchbuilder.t | 2 +- rt/t/api/system-available-rights.t | 65 + rt/t/api/system.t | 54 +- rt/t/api/template.t | 179 +- rt/t/api/ticket.t | 72 +- rt/t/api/tickets.t | 35 +- rt/t/api/txn_content.t | 8 +- rt/t/api/user-prefs.t | 59 + rt/t/api/user.t | 31 +- rt/t/api/users.t | 2 +- rt/t/approval/admincc.t | 46 +- rt/t/approval/basic.t | 36 +- rt/t/articles/interface.t | 138 +- rt/t/articles/search-interface.t | 108 +- rt/t/articles/set-subject.t | 110 + rt/t/articles/upload-customfields.t | 8 +- rt/t/articles/uri-articles.t | 26 +- rt/t/charts/basics.t | 91 + rt/t/charts/compound-sql-function.t | 121 + rt/t/charts/group-by-cf.t | 71 + rt/t/crypt/gnupg/attachments-in-db.t | 49 + rt/t/crypt/no-signer-address.t | 42 + rt/t/crypt/smime/attachments-in-db.t | 45 + rt/t/crypt/smime/bad-recipients.t | 58 + rt/t/crypt/smime/status-string.t | 26 + rt/t/customfields/access_via_queue.t | 7 +- rt/t/customfields/api.t | 172 +- rt/t/customfields/date_search.t | 27 +- rt/t/customfields/datetime_search.t | 28 +- rt/t/customfields/external.t | 8 +- rt/t/customfields/ip.t | 10 +- rt/t/customfields/iprange.t | 6 +- rt/t/customfields/iprangev6.t | 2 +- rt/t/customfields/ipv6.t | 6 +- rt/t/customfields/sort_order.t | 2 +- rt/t/customfields/transaction.t | 17 +- rt/t/customfields/transaction_searching.t | 140 + rt/t/data/configs/apache2.2+fastcgi.conf.in | 1 - rt/t/data/initialdata/initialdata | 101 + rt/t/data/initialdata/transaction-cfs | 52 + .../lib/RT/Extension/PSGIWrap.pm | 16 + rt/t/data/smime/keys/demoCA/cacert.pem | 58 + rt/t/data/smime/keys/demoCA/private/cakey.pem | 18 + rt/t/data/smime/keys/demoCA/serial | 1 + rt/t/data/smime/keys/otherCA/cacert.pem | 80 + rt/t/data/smime/keys/otherCA/private/cakey.pem | 27 + rt/t/data/smime/keys/otherCA/serial | 1 + rt/t/data/smime/keys/root@example.com.crt | 43 + rt/t/data/smime/keys/root@example.com.csr | 9 + rt/t/data/smime/keys/root@example.com.key | 12 + rt/t/data/smime/keys/root@example.com.pem | 55 + rt/t/data/smime/keys/sender@example.com.crt | 43 + rt/t/data/smime/keys/sender@example.com.csr | 9 + rt/t/data/smime/keys/sender@example.com.key | 12 + rt/t/data/smime/keys/sender@example.com.pem | 55 + rt/t/data/smime/mails/1-signed.eml | 74 + rt/t/data/smime/mails/2-signed-attachment.eml | 90 + rt/t/data/smime/mails/3-signed-binary.eml | 95 + rt/t/data/smime/mails/4-encrypted-plain.eml | 32 + rt/t/data/smime/mails/5-encrypted-attachment.eml | 42 + rt/t/data/smime/mails/6-encrypted-binary.eml | 48 + rt/t/data/smime/mails/7-signed-encrypted-plain.eml | 97 + .../smime/mails/8-signed-encrypted-attachment.eml | 107 + .../data/smime/mails/9-signed-encrypted-binary.eml | 113 + rt/t/fts/indexed_mysql.t | 84 +- rt/t/fts/indexed_pg.t | 2 +- rt/t/fts/indexed_sphinx.t | 150 + rt/t/lifecycles/basics.t | 8 +- rt/t/lifecycles/dates.t | 67 +- rt/t/lifecycles/moving.t | 4 +- rt/t/lifecycles/types.t | 33 + rt/t/lifecycles/unresolved-deps.t | 4 +- rt/t/lifecycles/utils.pl | 7 +- rt/t/mail/autogenerated.t | 22 + rt/t/mail/charsets-outgoing-plaintext.t | 315 + rt/t/mail/charsets-outgoing.t | 6 +- rt/t/mail/crypt-gnupg.t | 94 +- rt/t/mail/dashboard-chart-with-utf8.t | 15 +- rt/t/mail/dashboards.t | 2 +- rt/t/mail/digest-attributes.t | 34 +- rt/t/mail/gateway.t | 38 +- rt/t/mail/gnupg-bad.t | 2 +- rt/t/mail/gnupg-incoming.t | 12 +- rt/t/mail/gnupg-outgoing-encrypted-plaintext.t | 27 + rt/t/mail/gnupg-outgoing-plain-plaintext.t | 25 + rt/t/mail/gnupg-outgoing-signed-plaintext.t | 27 + .../gnupg-outgoing-signed_encrypted-plaintext.t | 28 + rt/t/mail/gnupg-realmail.t | 2 +- rt/t/mail/gnupg-reverification.t | 9 +- rt/t/mail/header-characters.t | 40 +- rt/t/mail/html-outgoing.t | 187 + rt/t/mail/mime_decoding.t | 177 +- rt/t/mail/multipart.t | 4 +- rt/t/mail/one-time-recipients.t | 312 +- rt/t/mail/outlook.t | 32 +- rt/t/mail/sendmail-plaintext.t | 150 + rt/t/mail/sendmail.t | 41 +- rt/t/mail/smime/incoming.t | 202 + rt/t/mail/smime/other-signed.t | 135 + rt/t/mail/smime/outgoing.t | 80 + rt/t/mail/smime/realmail.t | 125 + rt/t/mail/smime/reject_on_unencrypted.t | 137 + rt/t/mail/specials-in-encodedwords.t | 2 +- rt/t/mail/wrong_mime_charset.t | 9 +- rt/t/pod.t | 9 +- rt/t/security/CVE-2011-2083-clickable-xss.t | 3 +- rt/t/security/CVE-2011-2084-cf-values.t | 2 +- .../CVE-2011-2084-modifyscrips-templates.t | 37 +- rt/t/security/CVE-2011-5092-graph-links.t | 4 +- rt/t/shredder/00load.t | 10 +- rt/t/shredder/00skeleton.t | 18 +- rt/t/shredder/01basics.t | 20 +- rt/t/shredder/01ticket.t | 55 +- rt/t/shredder/02group_member.t | 211 +- rt/t/shredder/02queue.t | 75 +- rt/t/shredder/02template.t | 45 +- rt/t/shredder/02user.t | 32 +- rt/t/shredder/03plugin.t | 10 +- rt/t/shredder/03plugin_summary.t | 11 +- rt/t/shredder/03plugin_tickets.t | 30 +- rt/t/shredder/03plugin_users.t | 24 +- rt/t/shredder/utils.pl | 394 - rt/t/ticket/action_linear_escalate.t | 2 +- rt/t/ticket/add-watchers.t | 22 +- rt/t/ticket/cfsort-freeform-single.t | 269 +- rt/t/ticket/circular_links.t | 45 + rt/t/ticket/deferred_owner.t | 21 +- rt/t/ticket/googleish_search.t | 42 - rt/t/ticket/linking.t | 36 +- rt/t/ticket/merge.t | 45 +- rt/t/ticket/scrips_batch.t | 41 +- rt/t/ticket/search.t | 31 + rt/t/ticket/search_by_cf_freeform_multiple.t | 225 +- rt/t/ticket/search_by_cf_freeform_single.t | 231 +- rt/t/ticket/search_by_watcher_group.t | 75 + rt/t/ticket/simple_search.t | 42 + rt/t/ticket/time-worked.t | 80 + rt/t/validator/group_members.t | 41 +- rt/t/web/admin_queue_lifecycle.t | 2 +- rt/t/web/admin_user.t | 6 +- rt/t/web/articles-links.t | 2 +- rt/t/web/attachment_dropping.t | 52 + rt/t/web/attachment_encoding.t | 2 +- rt/t/web/attachment_truncation.t | 53 + rt/t/web/attachments.t | 586 +- rt/t/web/basic.t | 12 +- rt/t/web/basic_auth.t | 34 + rt/t/web/case-sensitivity.t | 4 +- rt/t/web/cf_access.t | 10 +- rt/t/web/cf_date.t | 8 +- rt/t/web/cf_datetime.t | 6 +- rt/t/web/cf_groupings.t | 277 + rt/t/web/cf_groupings_user.t | 110 + rt/t/web/cf_image.t | 61 + rt/t/web/cf_onqueue.t | 2 +- rt/t/web/cf_pattern.t | 80 + rt/t/web/cf_render_type.t | 2 +- rt/t/web/cf_select_one.t | 37 +- rt/t/web/cf_textarea.t | 75 + rt/t/web/cf_values_class.t | 2 +- rt/t/web/charting.t | 51 +- rt/t/web/class_create.t | 2 +- rt/t/web/command_line.t | 121 +- rt/t/web/compilation_errors.t | 10 +- rt/t/web/config_tab_right.t | 6 +- rt/t/web/crypt-gnupg.t | 70 +- rt/t/web/csrf.t | 6 +- rt/t/web/custom_search.t | 2 +- rt/t/web/dashboards-basics.t | 30 +- rt/t/web/dashboards-groups.t | 10 +- rt/t/web/dashboards-in-menu.t | 85 + rt/t/web/dashboards-search-cache.t | 46 +- rt/t/web/gnupg-select-keys-on-create.t | 16 +- rt/t/web/gnupg-select-keys-on-update.t | 19 +- rt/t/web/googleish_search.t | 222 - rt/t/web/group_create.t | 2 +- rt/t/web/helpers-http-cache-headers.t | 8 +- .../Callbacks/logout.t/NoAuth/Logout.html/Default | 6 - .../NoAuth/Logout.html/ModifyLoginRedirect | 6 + rt/t/web/html/NoAuth/js/not-by-default.js | 3 - rt/t/web/html_template.t | 4 +- rt/t/web/install.t | 173 + rt/t/web/language_update.t | 22 + rt/t/web/login.t | 5 +- rt/t/web/mobile.t | 210 + rt/t/web/offline.t | 77 - rt/t/web/offline_messages_utf8.t | 64 - rt/t/web/offline_utf8.t | 53 - rt/t/web/owner_disabled_group_19221.t | 4 +- rt/t/web/path-traversal.t | 23 +- rt/t/web/psgi-wrap.t | 15 + rt/t/web/query_builder.t | 6 +- rt/t/web/query_builder_queue_limits.t | 30 +- rt/t/web/query_log.t | 3 +- rt/t/web/queue_create.t | 2 +- rt/t/web/redirect-after-login.t | 4 +- rt/t/web/reminder-permissions.t | 178 + rt/t/web/reminders.t | 2 +- rt/t/web/remote_user.t | 207 +- rt/t/web/rest-search-group.t | 102 + rt/t/web/rest-search-queue.t | 104 + rt/t/web/rest-search-user.t | 115 + rt/t/web/rest.t | 6 +- rt/t/web/rest_user_cf.t | 26 + rt/t/web/richtext-autohandler.t | 14 - rt/t/web/rights.t | 2 +- rt/t/web/rights1.t | 24 +- rt/t/web/saved_search_chart.t | 8 +- rt/t/web/saved_search_permissions.t | 2 +- rt/t/web/scrips.t | 219 +- rt/t/web/search_bulk_update_links.t | 4 +- rt/t/web/search_ical.t | 196 + rt/t/web/search_rss.t | 13 +- rt/t/web/search_simple.t | 4 +- rt/t/web/self_service.t | 5 +- rt/t/web/simple_search.t | 225 + rt/t/web/smime/outgoing.t | 384 + rt/t/web/squish.t | 16 +- rt/t/web/static/js/not-by-default.js | 3 + rt/t/web/template.t | 2 +- rt/t/web/ticket-create-utf8.t | 6 +- rt/t/web/ticket_forward.t | 72 +- rt/t/web/ticket_links.t | 6 +- rt/t/web/ticket_modify_all.t | 33 +- rt/t/web/ticket_modify_people.t | 14 +- rt/t/web/ticket_owner.t | 120 +- rt/t/web/ticket_preserve_basics.t | 110 + rt/t/web/ticket_txn_content.t | 4 +- rt/t/web/user_update.t | 10 +- rt/t/web/walk.t | 2 +- 1811 files changed, 229998 insertions(+), 215100 deletions(-) create mode 100644 rt/devel/tools/cmd-boilerplate create mode 100644 rt/devel/tools/css_tidy delete mode 100644 rt/devel/tools/factory delete mode 100644 rt/devel/tools/merge-rosetta.pl create mode 100644 rt/devel/tools/rt-message-catalog create mode 100644 rt/docs/UPGRADING-4.2 create mode 100644 rt/docs/authentication.pod create mode 100644 rt/docs/automating_rt.pod create mode 100644 rt/docs/charts.pod create mode 100644 rt/docs/dashboards.pod create mode 100644 rt/docs/extensions.pod create mode 100644 rt/docs/reminders.pod create mode 100644 rt/docs/rt_perl.pod create mode 100644 rt/docs/writing_extensions.pod delete mode 100644 rt/etc/upgrade/3.1.0/content delete mode 100644 rt/etc/upgrade/3.3.0/content delete mode 100644 rt/etc/upgrade/3.3.11/content create mode 100644 rt/etc/upgrade/4.0.18/content create mode 100644 rt/etc/upgrade/4.0.19/content create mode 100644 rt/etc/upgrade/4.0.19/schema.mysql create mode 100644 rt/etc/upgrade/4.1.0/content create mode 100644 rt/etc/upgrade/4.1.1/acl.Pg create mode 100644 rt/etc/upgrade/4.1.1/content create mode 100644 rt/etc/upgrade/4.1.1/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.1/schema.Pg create mode 100644 rt/etc/upgrade/4.1.1/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.1/schema.mysql create mode 100644 rt/etc/upgrade/4.1.10/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.10/schema.Pg create mode 100644 rt/etc/upgrade/4.1.10/schema.mysql create mode 100644 rt/etc/upgrade/4.1.11/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.11/schema.Pg create mode 100644 rt/etc/upgrade/4.1.11/schema.mysql create mode 100644 rt/etc/upgrade/4.1.12/content create mode 100644 rt/etc/upgrade/4.1.13/backcompat create mode 100644 rt/etc/upgrade/4.1.13/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.13/schema.Pg create mode 100644 rt/etc/upgrade/4.1.13/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.13/schema.mysql create mode 100644 rt/etc/upgrade/4.1.14/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.14/schema.Pg create mode 100644 rt/etc/upgrade/4.1.14/schema.mysql create mode 100644 rt/etc/upgrade/4.1.15/content create mode 100644 rt/etc/upgrade/4.1.16/content create mode 100644 rt/etc/upgrade/4.1.17/content create mode 100644 rt/etc/upgrade/4.1.18/content create mode 100644 rt/etc/upgrade/4.1.19/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.19/schema.Pg create mode 100644 rt/etc/upgrade/4.1.19/schema.mysql create mode 100644 rt/etc/upgrade/4.1.20/content create mode 100644 rt/etc/upgrade/4.1.21/content create mode 100644 rt/etc/upgrade/4.1.22/content create mode 100644 rt/etc/upgrade/4.1.22/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.22/schema.Pg create mode 100644 rt/etc/upgrade/4.1.22/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.22/schema.mysql create mode 100644 rt/etc/upgrade/4.1.23/indexes create mode 100644 rt/etc/upgrade/4.1.4/content create mode 100644 rt/etc/upgrade/4.1.4/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.4/schema.Pg create mode 100644 rt/etc/upgrade/4.1.4/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.4/schema.mysql create mode 100644 rt/etc/upgrade/4.1.5/content create mode 100644 rt/etc/upgrade/4.1.5/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.5/schema.Pg create mode 100644 rt/etc/upgrade/4.1.5/schema.mysql create mode 100644 rt/etc/upgrade/4.1.6/content create mode 100644 rt/etc/upgrade/4.1.7/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.7/schema.Pg create mode 100644 rt/etc/upgrade/4.1.7/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.7/schema.mysql create mode 100644 rt/etc/upgrade/4.1.8/schema.Oracle create mode 100644 rt/etc/upgrade/4.1.8/schema.Pg create mode 100644 rt/etc/upgrade/4.1.8/schema.SQLite create mode 100644 rt/etc/upgrade/4.1.8/schema.mysql create mode 100644 rt/etc/upgrade/4.1.9/content create mode 100644 rt/etc/upgrade/4.2.1/content create mode 100644 rt/etc/upgrade/4.2.10/content create mode 100644 rt/etc/upgrade/4.2.11/content create mode 100644 rt/etc/upgrade/4.2.2/content create mode 100644 rt/etc/upgrade/4.2.2/schema.mysql create mode 100644 rt/etc/upgrade/4.2.4/content create mode 100644 rt/etc/upgrade/4.2.6/content create mode 100644 rt/etc/upgrade/4.2.6/schema.mysql create mode 100644 rt/etc/upgrade/4.2.7/content create mode 100644 rt/etc/upgrade/4.2.8/content create mode 100644 rt/etc/upgrade/sanity-check-stylesheets.in delete mode 100644 rt/etc/upgrade/sanity-check-stylesheets.pl create mode 100644 rt/etc/upgrade/shrink-cgm-table.in create mode 100644 rt/etc/upgrade/shrink-transactions-table.in delete mode 100644 rt/etc/upgrade/shrink_cgm_table.pl delete mode 100644 rt/etc/upgrade/shrink_transactions_table.pl create mode 100644 rt/etc/upgrade/switch-templates-to.in create mode 100644 rt/etc/upgrade/time-worked-history.in create mode 100644 rt/lib/RT/Action/AutoOpenInactive.pm create mode 100644 rt/lib/RT/Action/NotifyOwnerOrAdminCc.pm create mode 100644 rt/lib/RT/Action/OpenOnStarted.pm create mode 100644 rt/lib/RT/Action/SendForward.pm create mode 100644 rt/lib/RT/Crypt.pm create mode 100644 rt/lib/RT/Crypt/GnuPG/CRLFHandle.pm create mode 100644 rt/lib/RT/Crypt/Role.pm create mode 100644 rt/lib/RT/Crypt/SMIME.pm create mode 100644 rt/lib/RT/DependencyWalker.pm create mode 100644 rt/lib/RT/DependencyWalker/FindDependencies.pm create mode 100644 rt/lib/RT/Interface/Email/Auth/Crypt.pm delete mode 100755 rt/lib/RT/Interface/Email/Auth/GnuPG.pm delete mode 100644 rt/lib/RT/Interface/Web.pm.orig create mode 100644 rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm create mode 100644 rt/lib/RT/Lifecycle/Ticket.pm create mode 100644 rt/lib/RT/Migrate.pm create mode 100644 rt/lib/RT/Migrate/Importer.pm create mode 100644 rt/lib/RT/Migrate/Importer/File.pm create mode 100644 rt/lib/RT/Migrate/Incremental.pm create mode 100644 rt/lib/RT/Migrate/Serializer.pm create mode 100644 rt/lib/RT/Migrate/Serializer/File.pm create mode 100644 rt/lib/RT/Migrate/Serializer/IncrementalRecord.pm create mode 100644 rt/lib/RT/Migrate/Serializer/IncrementalRecords.pm create mode 100644 rt/lib/RT/ObjectScrip.pm create mode 100644 rt/lib/RT/ObjectScrips.pm create mode 100644 rt/lib/RT/PlackRunner.pm create mode 100644 rt/lib/RT/Record/AddAndSort.pm create mode 100644 rt/lib/RT/Record/Role.pm create mode 100644 rt/lib/RT/Record/Role/Lifecycle.pm create mode 100644 rt/lib/RT/Record/Role/Links.pm create mode 100644 rt/lib/RT/Record/Role/Rights.pm create mode 100644 rt/lib/RT/Record/Role/Roles.pm create mode 100644 rt/lib/RT/Record/Role/Status.pm delete mode 100644 rt/lib/RT/Search/Googleish.pm create mode 100644 rt/lib/RT/Search/Simple.pm create mode 100644 rt/lib/RT/SearchBuilder/AddAndSort.pm create mode 100644 rt/lib/RT/SearchBuilder/Role.pm create mode 100644 rt/lib/RT/SearchBuilder/Role/Roles.pm delete mode 100644 rt/lib/RT/Shredder/ACE.pm delete mode 100644 rt/lib/RT/Shredder/Attachment.pm delete mode 100644 rt/lib/RT/Shredder/CachedGroupMember.pm delete mode 100644 rt/lib/RT/Shredder/CustomField.pm delete mode 100644 rt/lib/RT/Shredder/CustomFieldValue.pm delete mode 100644 rt/lib/RT/Shredder/Group.pm delete mode 100644 rt/lib/RT/Shredder/GroupMember.pm delete mode 100644 rt/lib/RT/Shredder/Link.pm delete mode 100644 rt/lib/RT/Shredder/ObjectCustomFieldValue.pm delete mode 100644 rt/lib/RT/Shredder/Principal.pm delete mode 100644 rt/lib/RT/Shredder/Queue.pm delete mode 100644 rt/lib/RT/Shredder/Scrip.pm delete mode 100644 rt/lib/RT/Shredder/ScripAction.pm delete mode 100644 rt/lib/RT/Shredder/ScripCondition.pm delete mode 100644 rt/lib/RT/Shredder/Template.pm delete mode 100644 rt/lib/RT/Shredder/Ticket.pm delete mode 100644 rt/lib/RT/Shredder/Transaction.pm delete mode 100644 rt/lib/RT/Shredder/User.pm create mode 100644 rt/lib/RT/Test/SMIME.pm create mode 100644 rt/lib/RT/Test/Shredder.pm delete mode 100644 rt/lib/RT/Tickets_SQL.pm create mode 100644 rt/sbin/rt-importer.in delete mode 100755 rt/sbin/rt-message-catalog create mode 100644 rt/sbin/rt-serializer.in create mode 100644 rt/share/html/Admin/Elements/ConfigureDashboardsInMenu delete mode 100755 rt/share/html/Admin/Elements/CreateUserCalled delete mode 100755 rt/share/html/Admin/Elements/EditUserComments delete mode 100755 rt/share/html/Admin/Elements/ListGlobalCustomFields delete mode 100755 rt/share/html/Admin/Elements/ListGlobalScrips create mode 100644 rt/share/html/Admin/Elements/LoggingSummary create mode 100644 rt/share/html/Admin/Elements/MembershipsPage delete mode 100644 rt/share/html/Admin/Elements/PickCustomFields delete mode 100644 rt/share/html/Admin/Elements/PickObjects delete mode 100755 rt/share/html/Admin/Elements/QueueRightsForUser delete mode 100755 rt/share/html/Admin/Elements/SelectModifyGroup delete mode 100755 rt/share/html/Admin/Elements/SelectModifyQueue delete mode 100755 rt/share/html/Admin/Elements/SelectModifyUser delete mode 100755 rt/share/html/Admin/Elements/SelectRights delete mode 100755 rt/share/html/Admin/Elements/SelectScrip delete mode 100755 rt/share/html/Admin/Elements/SelectSingleOrMultiple create mode 100644 rt/share/html/Admin/Elements/SelectStageForAdded delete mode 100755 rt/share/html/Admin/Elements/SelectTemplate create mode 100644 rt/share/html/Admin/Elements/UpgradeHistory create mode 100644 rt/share/html/Admin/Elements/UpgradeHistoryRow create mode 100644 rt/share/html/Admin/Global/DashboardsInMenu.html delete mode 100755 rt/share/html/Admin/Global/Scrip.html create mode 100644 rt/share/html/Admin/Groups/Memberships.html delete mode 100755 rt/share/html/Admin/Queues/Scrip.html create mode 100644 rt/share/html/Admin/Scrips/Create.html create mode 100644 rt/share/html/Admin/Scrips/Elements/EditBasics create mode 100644 rt/share/html/Admin/Scrips/Elements/EditCustomCode create mode 100644 rt/share/html/Admin/Scrips/Elements/SelectTemplate create mode 100644 rt/share/html/Admin/Scrips/Modify.html create mode 100644 rt/share/html/Admin/Scrips/Objects.html create mode 100644 rt/share/html/Admin/Scrips/index.html create mode 100644 rt/share/html/Admin/Users/DashboardsInMenu.html delete mode 100644 rt/share/html/Admin/Users/GnuPG.html create mode 100644 rt/share/html/Admin/Users/Keys.html delete mode 100644 rt/share/html/Articles/Article/Elements/ShowHistory create mode 100644 rt/share/html/Articles/Elements/MaybeNeedsSetup create mode 100644 rt/share/html/Articles/Elements/NeedsSetup create mode 100644 rt/share/html/Articles/Elements/SubjectOverride create mode 100644 rt/share/html/Elements/AddLinks delete mode 100755 rt/share/html/Elements/BevelBoxRaisedEnd delete mode 100755 rt/share/html/Elements/BevelBoxRaisedStart create mode 100644 rt/share/html/Elements/BulkCustomFields create mode 100644 rt/share/html/Elements/BulkLinks create mode 100644 rt/share/html/Elements/Crypt/KeyIssues create mode 100644 rt/share/html/Elements/Crypt/SelectKeyForEncryption create mode 100644 rt/share/html/Elements/Crypt/SelectKeyForSigning create mode 100644 rt/share/html/Elements/Crypt/SignEncryptWidget create mode 100644 rt/share/html/Elements/CryptStatus create mode 100644 rt/share/html/Elements/EditCustomFieldCustomGroupings create mode 100644 rt/share/html/Elements/EditCustomFields create mode 100644 rt/share/html/Elements/FindUser create mode 100644 rt/share/html/Elements/FoldStanzaJS delete mode 100644 rt/share/html/Elements/GnuPG/KeyIssues delete mode 100644 rt/share/html/Elements/GnuPG/SelectKeyForEncryption delete mode 100644 rt/share/html/Elements/GnuPG/SelectKeyForSigning delete mode 100644 rt/share/html/Elements/GnuPG/SignEncryptWidget create mode 100644 rt/share/html/Elements/GotoUser create mode 100644 rt/share/html/Elements/JavascriptConfig create mode 100644 rt/share/html/Elements/LoginHelp delete mode 100755 rt/share/html/Elements/MyRequests delete mode 100755 rt/share/html/Elements/MyTickets delete mode 100755 rt/share/html/Elements/SelectLinkType create mode 100644 rt/share/html/Elements/SelectObject delete mode 100755 rt/share/html/Elements/SelectSortOrder delete mode 100755 rt/share/html/Elements/SelectTicketSortBy delete mode 100755 rt/share/html/Elements/SelectTicketTypes create mode 100644 rt/share/html/Elements/ShowCustomFieldCustomGroupings create mode 100644 rt/share/html/Elements/ShowHistory create mode 100644 rt/share/html/Elements/ShowLinksOfType create mode 100644 rt/share/html/Elements/ShowMessageHeaders create mode 100644 rt/share/html/Elements/ShowMessageStanza create mode 100644 rt/share/html/Elements/ShowPrincipal create mode 100644 rt/share/html/Elements/ShowRecord create mode 100644 rt/share/html/Elements/ShowTransaction create mode 100644 rt/share/html/Elements/ShowTransactionAttachments delete mode 100644 rt/share/html/Elements/ShowUserConcise delete mode 100644 rt/share/html/Elements/ShowUserVerbose create mode 100644 rt/share/html/Elements/TSVExport create mode 100644 rt/share/html/Errors/WebRemoteUser/Deauthorized create mode 100644 rt/share/html/Errors/WebRemoteUser/NoInternalUser create mode 100644 rt/share/html/Errors/WebRemoteUser/NoRemoteUser create mode 100644 rt/share/html/Errors/WebRemoteUser/UserAutocreateDefaultsOnLogin create mode 100644 rt/share/html/Errors/WebRemoteUser/Wrapper create mode 100644 rt/share/html/Helpers/Autocomplete/Tickets create mode 100644 rt/share/html/Helpers/UserInfo delete mode 100755 rt/share/html/NoAuth/Reminder.html delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/LICENSE.html delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/config.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/contents.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/_languages.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/af.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/da.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/en-au.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/es.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/et.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/id.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/is.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ka.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/km.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/mk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/th.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/da.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/gu.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/mk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/ro.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/vi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/adobeair/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/ajax/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/bbcode/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/bg.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/da.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/et.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/gu.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/hr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/pl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/uk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/vi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/devtools/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/docprops/dialogs/docprops.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/docprops/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/iframe/dialogs/iframe.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/dialogs/placeholder.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/bg.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/da.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/et.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/hr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/pl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/uk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/vi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/placeholder/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/preview/preview.html delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/et.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/hr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/stylesheetparser/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/_translationstatus.txt delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/bg.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/cs.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/cy.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/da.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/de.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/el.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/eo.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/et.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/fa.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/fi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/fr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/he.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/hr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/it.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/ku.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/lv.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/mk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/nb.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/nl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/no.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/pl.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/pt-br.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/sk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/tr.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/ug.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/uk.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/vi.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/zh-cn.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/plugins/xml/plugin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css delete mode 100644 rt/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js delete mode 100644 rt/share/html/NoAuth/RichText/dhandler create mode 100644 rt/share/html/NoAuth/css/aileron/AfterMenus delete mode 100644 rt/share/html/NoAuth/css/aileron/base.css delete mode 100644 rt/share/html/NoAuth/css/aileron/boxes.css delete mode 100644 rt/share/html/NoAuth/css/aileron/forms.css delete mode 100644 rt/share/html/NoAuth/css/aileron/images/dhandler delete mode 100644 rt/share/html/NoAuth/css/aileron/layout.css delete mode 100644 rt/share/html/NoAuth/css/aileron/login.css delete mode 100644 rt/share/html/NoAuth/css/aileron/main.css delete mode 100644 rt/share/html/NoAuth/css/aileron/misc.css delete mode 100644 rt/share/html/NoAuth/css/aileron/msie.css delete mode 100644 rt/share/html/NoAuth/css/aileron/msie6.css delete mode 100644 rt/share/html/NoAuth/css/aileron/nav.css delete mode 100644 rt/share/html/NoAuth/css/aileron/ticket-lists.css delete mode 100644 rt/share/html/NoAuth/css/aileron/ticket-search.css delete mode 100644 rt/share/html/NoAuth/css/aileron/ticket.css delete mode 100644 rt/share/html/NoAuth/css/ballard/base.css delete mode 100644 rt/share/html/NoAuth/css/ballard/boxes.css delete mode 100644 rt/share/html/NoAuth/css/ballard/images/dhandler delete mode 100644 rt/share/html/NoAuth/css/ballard/layout.css delete mode 100644 rt/share/html/NoAuth/css/ballard/main.css delete mode 100644 rt/share/html/NoAuth/css/ballard/misc.css delete mode 100644 rt/share/html/NoAuth/css/ballard/msie.css delete mode 100644 rt/share/html/NoAuth/css/ballard/msie6.css delete mode 100644 rt/share/html/NoAuth/css/ballard/nav.css delete mode 100644 rt/share/html/NoAuth/css/ballard/ticket-lists.css delete mode 100644 rt/share/html/NoAuth/css/ballard/ticket-search.css delete mode 100644 rt/share/html/NoAuth/css/ballard/ticket.css delete mode 100644 rt/share/html/NoAuth/css/base/admin.css delete mode 100644 rt/share/html/NoAuth/css/base/articles.css delete mode 100644 rt/share/html/NoAuth/css/base/collection.css delete mode 100644 rt/share/html/NoAuth/css/base/forms.css delete mode 100644 rt/share/html/NoAuth/css/base/history-folding.css delete mode 100644 rt/share/html/NoAuth/css/base/jquery-ui-timepicker-addon.css delete mode 100644 rt/share/html/NoAuth/css/base/jquery-ui.css delete mode 100644 rt/share/html/NoAuth/css/base/jquery-ui.custom.modified.css delete mode 100644 rt/share/html/NoAuth/css/base/login.css delete mode 100644 rt/share/html/NoAuth/css/base/main.css delete mode 100644 rt/share/html/NoAuth/css/base/misc.css delete mode 100644 rt/share/html/NoAuth/css/base/msie6.css delete mode 100644 rt/share/html/NoAuth/css/base/nav.css delete mode 100644 rt/share/html/NoAuth/css/base/portlets.css delete mode 100644 rt/share/html/NoAuth/css/base/rights-editor.css delete mode 100644 rt/share/html/NoAuth/css/base/superfish-navbar.css delete mode 100644 rt/share/html/NoAuth/css/base/superfish-vertical.css delete mode 100644 rt/share/html/NoAuth/css/base/superfish.css delete mode 100644 rt/share/html/NoAuth/css/base/tablesorter.css delete mode 100644 rt/share/html/NoAuth/css/base/theme-editor.css delete mode 100644 rt/share/html/NoAuth/css/base/ticket-form.css delete mode 100644 rt/share/html/NoAuth/css/base/ticket.css delete mode 100644 rt/share/html/NoAuth/css/base/tools.css delete mode 100644 rt/share/html/NoAuth/css/base/yui-fonts.css delete mode 100644 rt/share/html/NoAuth/css/print.css create mode 100644 rt/share/html/NoAuth/css/rudder/AfterMenus create mode 100644 rt/share/html/NoAuth/css/rudder/InHeader create mode 100644 rt/share/html/NoAuth/css/web2/AfterMenus delete mode 100644 rt/share/html/NoAuth/css/web2/base.css delete mode 100644 rt/share/html/NoAuth/css/web2/boxes.css delete mode 100644 rt/share/html/NoAuth/css/web2/images/dhandler delete mode 100644 rt/share/html/NoAuth/css/web2/layout.css delete mode 100644 rt/share/html/NoAuth/css/web2/main.css delete mode 100644 rt/share/html/NoAuth/css/web2/misc.css delete mode 100644 rt/share/html/NoAuth/css/web2/msie.css delete mode 100644 rt/share/html/NoAuth/css/web2/msie6.css delete mode 100644 rt/share/html/NoAuth/css/web2/nav.css delete mode 100644 rt/share/html/NoAuth/css/web2/ticket-lists.css delete mode 100644 rt/share/html/NoAuth/css/web2/ticket-search.css delete mode 100644 rt/share/html/NoAuth/css/web2/ticket.css delete mode 100644 rt/share/html/NoAuth/images/autohandler delete mode 100644 rt/share/html/NoAuth/images/test.png delete mode 100644 rt/share/html/NoAuth/js/cascaded.js delete mode 100644 rt/share/html/NoAuth/js/class.js delete mode 100644 rt/share/html/NoAuth/js/combobox.js delete mode 100644 rt/share/html/NoAuth/js/farbtastic.js delete mode 100644 rt/share/html/NoAuth/js/history-folding.js delete mode 100644 rt/share/html/NoAuth/js/jquery-1.4.2.min.js delete mode 100644 rt/share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js delete mode 100644 rt/share/html/NoAuth/js/jquery-ui-patch-datepicker.js delete mode 100644 rt/share/html/NoAuth/js/jquery-ui-timepicker-addon.js delete mode 100644 rt/share/html/NoAuth/js/jquery.cookie.js delete mode 100644 rt/share/html/NoAuth/js/jquery.event.hover-1.0.js delete mode 100644 rt/share/html/NoAuth/js/jquery.supposition.js delete mode 100644 rt/share/html/NoAuth/js/jquery.tablesorter.min.js delete mode 100644 rt/share/html/NoAuth/js/jquery_noconflict.js delete mode 100644 rt/share/html/NoAuth/js/late.js delete mode 100644 rt/share/html/NoAuth/js/list.js delete mode 100644 rt/share/html/NoAuth/js/superfish.js delete mode 100644 rt/share/html/NoAuth/js/supersubs.js delete mode 100644 rt/share/html/NoAuth/js/titlebox-state.js delete mode 100644 rt/share/html/NoAuth/js/userautocomplete.js delete mode 100644 rt/share/html/NoAuth/js/util.js create mode 100644 rt/share/html/Prefs/DashboardsInMenu.html delete mode 100755 rt/share/html/REST/1.0/search/ticket create mode 100644 rt/share/html/Search/Elements/ChartTable create mode 100644 rt/share/html/Search/Elements/PickObjectCFs create mode 100644 rt/share/html/Search/Elements/SelectChartFunction delete mode 100644 rt/share/html/Search/Graph.html create mode 100644 rt/share/html/Search/index.html delete mode 100755 rt/share/html/SelfService/Error.html create mode 100644 rt/share/html/SelfService/Helpers/Autocomplete/CustomFieldValues create mode 100644 rt/share/html/SelfService/Helpers/Autocomplete/Users create mode 100644 rt/share/html/Ticket/Crypt.html create mode 100644 rt/share/html/Ticket/Elements/DelayShowHistory create mode 100644 rt/share/html/Ticket/Elements/EditMerge delete mode 100644 rt/share/html/Ticket/Elements/FindAttachments delete mode 100644 rt/share/html/Ticket/Elements/FindTransactions delete mode 100644 rt/share/html/Ticket/Elements/FoldStanzaJS create mode 100644 rt/share/html/Ticket/Elements/SelectStatus delete mode 100755 rt/share/html/Ticket/Elements/ShowDependencies create mode 100644 rt/share/html/Ticket/Elements/ShowDependencyStatus delete mode 100644 rt/share/html/Ticket/Elements/ShowGnuPGStatus delete mode 100755 rt/share/html/Ticket/Elements/ShowHistory delete mode 100755 rt/share/html/Ticket/Elements/ShowMembers delete mode 100755 rt/share/html/Ticket/Elements/ShowMessageHeaders delete mode 100755 rt/share/html/Ticket/Elements/ShowMessageStanza delete mode 100755 rt/share/html/Ticket/Elements/ShowTransaction delete mode 100644 rt/share/html/Ticket/Elements/ShowTransactionAttachments delete mode 100644 rt/share/html/Ticket/Elements/ShowUserEntry delete mode 100644 rt/share/html/Ticket/GnuPG.html delete mode 100644 rt/share/html/Tools/Offline.html create mode 100644 rt/share/html/User/Elements/Portlets/ActiveTickets create mode 100644 rt/share/html/User/Elements/Portlets/CreateTicket create mode 100644 rt/share/html/User/Elements/Portlets/ExtraInfo create mode 100644 rt/share/html/User/Elements/Portlets/InactiveTickets create mode 100644 rt/share/html/User/Elements/TicketList create mode 100644 rt/share/html/User/Elements/UserInfo create mode 100644 rt/share/html/User/History.html create mode 100644 rt/share/html/User/Search.html create mode 100644 rt/share/html/User/Summary.html delete mode 100644 rt/share/html/m/_elements/raw_style delete mode 100644 rt/share/html/m/style.css create mode 100644 rt/share/po/eu.po create mode 100644 rt/share/po/fa.po delete mode 100644 rt/share/po/he.po delete mode 100644 rt/share/po/mk.po create mode 100644 rt/share/po/sr.po create mode 100644 rt/share/static/RichText/LICENSE.md create mode 100644 rt/share/static/RichText/ckeditor.js create mode 100644 rt/share/static/RichText/config.js create mode 100644 rt/share/static/RichText/contents.css create mode 100644 rt/share/static/RichText/lang/af.js create mode 100644 rt/share/static/RichText/lang/ar.js create mode 100644 rt/share/static/RichText/lang/bg.js create mode 100644 rt/share/static/RichText/lang/bn.js create mode 100644 rt/share/static/RichText/lang/bs.js create mode 100644 rt/share/static/RichText/lang/ca.js create mode 100644 rt/share/static/RichText/lang/cs.js create mode 100644 rt/share/static/RichText/lang/cy.js create mode 100644 rt/share/static/RichText/lang/da.js create mode 100644 rt/share/static/RichText/lang/de.js create mode 100644 rt/share/static/RichText/lang/el.js create mode 100644 rt/share/static/RichText/lang/en-au.js create mode 100644 rt/share/static/RichText/lang/en-ca.js create mode 100644 rt/share/static/RichText/lang/en-gb.js create mode 100644 rt/share/static/RichText/lang/en.js create mode 100644 rt/share/static/RichText/lang/eo.js create mode 100644 rt/share/static/RichText/lang/es.js create mode 100644 rt/share/static/RichText/lang/et.js create mode 100644 rt/share/static/RichText/lang/eu.js create mode 100644 rt/share/static/RichText/lang/fa.js create mode 100644 rt/share/static/RichText/lang/fi.js create mode 100644 rt/share/static/RichText/lang/fo.js create mode 100644 rt/share/static/RichText/lang/fr-ca.js create mode 100644 rt/share/static/RichText/lang/fr.js create mode 100644 rt/share/static/RichText/lang/gl.js create mode 100644 rt/share/static/RichText/lang/gu.js create mode 100644 rt/share/static/RichText/lang/he.js create mode 100644 rt/share/static/RichText/lang/hi.js create mode 100644 rt/share/static/RichText/lang/hr.js create mode 100644 rt/share/static/RichText/lang/hu.js create mode 100644 rt/share/static/RichText/lang/is.js create mode 100644 rt/share/static/RichText/lang/it.js create mode 100644 rt/share/static/RichText/lang/ja.js create mode 100644 rt/share/static/RichText/lang/ka.js create mode 100644 rt/share/static/RichText/lang/km.js create mode 100644 rt/share/static/RichText/lang/ko.js create mode 100644 rt/share/static/RichText/lang/ku.js create mode 100644 rt/share/static/RichText/lang/lt.js create mode 100644 rt/share/static/RichText/lang/lv.js create mode 100644 rt/share/static/RichText/lang/mk.js create mode 100644 rt/share/static/RichText/lang/mn.js create mode 100644 rt/share/static/RichText/lang/ms.js create mode 100644 rt/share/static/RichText/lang/nb.js create mode 100644 rt/share/static/RichText/lang/nl.js create mode 100644 rt/share/static/RichText/lang/no.js create mode 100644 rt/share/static/RichText/lang/pl.js create mode 100644 rt/share/static/RichText/lang/pt-br.js create mode 100644 rt/share/static/RichText/lang/pt.js create mode 100644 rt/share/static/RichText/lang/ro.js create mode 100644 rt/share/static/RichText/lang/ru.js create mode 100644 rt/share/static/RichText/lang/sk.js create mode 100644 rt/share/static/RichText/lang/sl.js create mode 100644 rt/share/static/RichText/lang/sr-latn.js create mode 100644 rt/share/static/RichText/lang/sr.js create mode 100644 rt/share/static/RichText/lang/sv.js create mode 100644 rt/share/static/RichText/lang/th.js create mode 100644 rt/share/static/RichText/lang/tr.js create mode 100644 rt/share/static/RichText/lang/ug.js create mode 100644 rt/share/static/RichText/lang/uk.js create mode 100644 rt/share/static/RichText/lang/vi.js create mode 100644 rt/share/static/RichText/lang/zh-cn.js create mode 100644 rt/share/static/RichText/lang/zh.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/_translationstatus.txt create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ar.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/bg.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ca.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/cs.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/cy.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/da.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/de.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/el.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/en.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/eo.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/es.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/et.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/fa.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/fi.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/fr.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/gu.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/he.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/hi.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/hr.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/hu.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/it.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ja.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ku.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/lt.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/lv.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/mk.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/mn.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/nb.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/nl.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/no.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/pl.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/pt-br.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/pt.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ro.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ru.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/sk.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/sl.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/sv.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/tr.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/ug.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/uk.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/vi.js create mode 100644 rt/share/static/RichText/plugins/a11yhelp/dialogs/lang/zh-cn.js create mode 100644 rt/share/static/RichText/plugins/about/dialogs/about.js create mode 100644 rt/share/static/RichText/plugins/clipboard/dialogs/paste.js create mode 100644 rt/share/static/RichText/plugins/colordialog/dialogs/colordialog.js create mode 100644 rt/share/static/RichText/plugins/dialog/dialogDefinition.js create mode 100644 rt/share/static/RichText/plugins/div/dialogs/div.js create mode 100644 rt/share/static/RichText/plugins/find/dialogs/find.js create mode 100644 rt/share/static/RichText/plugins/flash/dialogs/flash.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/button.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/checkbox.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/form.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/hiddenfield.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/radio.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/select.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/textarea.js create mode 100644 rt/share/static/RichText/plugins/forms/dialogs/textfield.js create mode 100644 rt/share/static/RichText/plugins/iframe/dialogs/iframe.js create mode 100644 rt/share/static/RichText/plugins/image/dialogs/image.js create mode 100644 rt/share/static/RichText/plugins/link/dialogs/anchor.js create mode 100644 rt/share/static/RichText/plugins/link/dialogs/link.js create mode 100644 rt/share/static/RichText/plugins/liststyle/dialogs/liststyle.js create mode 100644 rt/share/static/RichText/plugins/pastefromword/filter/default.js create mode 100644 rt/share/static/RichText/plugins/preview/preview.html create mode 100644 rt/share/static/RichText/plugins/scayt/LICENSE.md create mode 100644 rt/share/static/RichText/plugins/scayt/README.md create mode 100644 rt/share/static/RichText/plugins/scayt/dialogs/options.js create mode 100644 rt/share/static/RichText/plugins/scayt/dialogs/toolbar.css create mode 100644 rt/share/static/RichText/plugins/smiley/dialogs/smiley.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/_translationstatus.txt create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/ca.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/cs.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/cy.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/de.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/el.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/en.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/eo.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/et.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/fa.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/fi.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/fr.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/he.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/hr.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/it.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/ku.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/lv.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/nb.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/nl.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/no.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/pt-br.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/sk.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/sv.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/tr.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/ug.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/lang/zh-cn.js create mode 100644 rt/share/static/RichText/plugins/specialchar/dialogs/specialchar.js create mode 100644 rt/share/static/RichText/plugins/table/dialogs/table.js create mode 100644 rt/share/static/RichText/plugins/tabletools/dialogs/tableCell.js create mode 100644 rt/share/static/RichText/plugins/templates/dialogs/templates.css create mode 100644 rt/share/static/RichText/plugins/templates/dialogs/templates.js create mode 100644 rt/share/static/RichText/plugins/templates/templates/default.js create mode 100644 rt/share/static/RichText/plugins/wsc/LICENSE.md create mode 100644 rt/share/static/RichText/plugins/wsc/README.md create mode 100644 rt/share/static/RichText/plugins/wsc/dialogs/ciframe.html create mode 100644 rt/share/static/RichText/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 rt/share/static/RichText/plugins/wsc/dialogs/wsc.css create mode 100644 rt/share/static/RichText/plugins/wsc/dialogs/wsc.js create mode 100644 rt/share/static/RichText/skins/kama/dialog.css create mode 100644 rt/share/static/RichText/skins/kama/dialog_ie.css create mode 100644 rt/share/static/RichText/skins/kama/dialog_ie7.css create mode 100644 rt/share/static/RichText/skins/kama/dialog_ie8.css create mode 100644 rt/share/static/RichText/skins/kama/dialog_iequirks.css create mode 100644 rt/share/static/RichText/skins/kama/dialog_opera.css create mode 100644 rt/share/static/RichText/skins/kama/editor.css create mode 100644 rt/share/static/RichText/skins/kama/editor_ie.css create mode 100644 rt/share/static/RichText/skins/kama/editor_ie7.css create mode 100644 rt/share/static/RichText/skins/kama/editor_ie8.css create mode 100644 rt/share/static/RichText/skins/kama/editor_iequirks.css create mode 100644 rt/share/static/RichText/skins/kama/readme.md create mode 100644 rt/share/static/RichText/styles.js create mode 100644 rt/share/static/css/aileron/base.css create mode 100644 rt/share/static/css/aileron/boxes.css create mode 100644 rt/share/static/css/aileron/forms.css create mode 100644 rt/share/static/css/aileron/layout.css create mode 100644 rt/share/static/css/aileron/login.css create mode 100644 rt/share/static/css/aileron/main.css create mode 100644 rt/share/static/css/aileron/misc.css create mode 100644 rt/share/static/css/aileron/msie.css create mode 100644 rt/share/static/css/aileron/msie6.css create mode 100644 rt/share/static/css/aileron/nav.css create mode 100644 rt/share/static/css/aileron/ticket-lists.css create mode 100644 rt/share/static/css/aileron/ticket-search.css create mode 100644 rt/share/static/css/aileron/ticket.css create mode 100644 rt/share/static/css/ballard/base.css create mode 100644 rt/share/static/css/ballard/boxes.css create mode 100644 rt/share/static/css/ballard/layout.css create mode 100644 rt/share/static/css/ballard/main.css create mode 100644 rt/share/static/css/ballard/misc.css create mode 100644 rt/share/static/css/ballard/msie.css create mode 100644 rt/share/static/css/ballard/msie6.css create mode 100644 rt/share/static/css/ballard/nav.css create mode 100644 rt/share/static/css/ballard/ticket-lists.css create mode 100644 rt/share/static/css/ballard/ticket-search.css create mode 100644 rt/share/static/css/base/accordion.css create mode 100644 rt/share/static/css/base/admin.css create mode 100644 rt/share/static/css/base/articles.css create mode 100644 rt/share/static/css/base/charts.css create mode 100644 rt/share/static/css/base/collection.css create mode 100644 rt/share/static/css/base/farbtastic.css create mode 100644 rt/share/static/css/base/forms.css create mode 100644 rt/share/static/css/base/history-folding.css create mode 100644 rt/share/static/css/base/history.css create mode 100644 rt/share/static/css/base/jquery-ui-timepicker-addon.css create mode 100644 rt/share/static/css/base/jquery-ui.css create mode 100644 rt/share/static/css/base/jquery-ui.custom.modified.css create mode 100644 rt/share/static/css/base/jquery.modal.css create mode 100644 rt/share/static/css/base/login.css create mode 100644 rt/share/static/css/base/main.css create mode 100644 rt/share/static/css/base/misc.css create mode 100644 rt/share/static/css/base/msie6.css create mode 100644 rt/share/static/css/base/nav.css create mode 100644 rt/share/static/css/base/portlets.css create mode 100644 rt/share/static/css/base/print.css create mode 100644 rt/share/static/css/base/record.css create mode 100644 rt/share/static/css/base/rights-editor.css create mode 100644 rt/share/static/css/base/superfish-navbar.css create mode 100644 rt/share/static/css/base/superfish-vertical.css create mode 100644 rt/share/static/css/base/superfish.css create mode 100644 rt/share/static/css/base/tablesorter.css create mode 100644 rt/share/static/css/base/theme-editor.css create mode 100644 rt/share/static/css/base/ticket-form.css create mode 100644 rt/share/static/css/base/ticket.css create mode 100644 rt/share/static/css/base/tools.css create mode 100644 rt/share/static/css/base/yui-fonts.css create mode 100644 rt/share/static/css/freeside3/InHeader create mode 100644 rt/share/static/css/freeside3/base.css create mode 100644 rt/share/static/css/freeside3/boxes.css create mode 100644 rt/share/static/css/freeside3/forms.css create mode 100644 rt/share/static/css/freeside3/freeside.css create mode 100644 rt/share/static/css/freeside3/images/dhandler create mode 100644 rt/share/static/css/freeside3/layout.css create mode 100644 rt/share/static/css/freeside3/login.css create mode 100644 rt/share/static/css/freeside3/main.css create mode 100644 rt/share/static/css/freeside3/misc.css create mode 100644 rt/share/static/css/freeside3/msie-pie.css create mode 100644 rt/share/static/css/freeside3/msie.css create mode 100644 rt/share/static/css/freeside3/msie6.css create mode 100644 rt/share/static/css/freeside3/nav.css create mode 100644 rt/share/static/css/freeside3/ticket-lists.css create mode 100644 rt/share/static/css/freeside3/ticket-search.css create mode 100644 rt/share/static/css/freeside3/ticket.css create mode 100644 rt/share/static/css/freeside4/admin.css create mode 100644 rt/share/static/css/freeside4/base.css create mode 100644 rt/share/static/css/freeside4/boxes.css create mode 100644 rt/share/static/css/freeside4/dashboards.css create mode 100644 rt/share/static/css/freeside4/forms.css create mode 100644 rt/share/static/css/freeside4/history.css create mode 100644 rt/share/static/css/freeside4/layout.css create mode 100644 rt/share/static/css/freeside4/login.css create mode 100644 rt/share/static/css/freeside4/main.css create mode 100644 rt/share/static/css/freeside4/misc.css create mode 100644 rt/share/static/css/freeside4/msie.css create mode 100644 rt/share/static/css/freeside4/nav.css create mode 100644 rt/share/static/css/freeside4/ticket-forms.css create mode 100644 rt/share/static/css/freeside4/ticket-lists.css create mode 100644 rt/share/static/css/freeside4/ticket-search.css create mode 100644 rt/share/static/css/freeside4/ticket.css create mode 100644 rt/share/static/css/mobile.css create mode 100644 rt/share/static/css/rudder/admin.css create mode 100644 rt/share/static/css/rudder/base.css create mode 100644 rt/share/static/css/rudder/boxes.css create mode 100644 rt/share/static/css/rudder/dashboards.css create mode 100644 rt/share/static/css/rudder/forms.css create mode 100644 rt/share/static/css/rudder/history.css create mode 100644 rt/share/static/css/rudder/layout.css create mode 100644 rt/share/static/css/rudder/login.css create mode 100644 rt/share/static/css/rudder/main.css create mode 100644 rt/share/static/css/rudder/misc.css create mode 100644 rt/share/static/css/rudder/msie.css create mode 100644 rt/share/static/css/rudder/nav.css create mode 100644 rt/share/static/css/rudder/ticket-forms.css create mode 100644 rt/share/static/css/rudder/ticket-lists.css create mode 100644 rt/share/static/css/rudder/ticket-search.css create mode 100644 rt/share/static/css/rudder/ticket.css create mode 100644 rt/share/static/css/web2/base.css create mode 100644 rt/share/static/css/web2/boxes.css create mode 100644 rt/share/static/css/web2/layout.css create mode 100644 rt/share/static/css/web2/main.css create mode 100644 rt/share/static/css/web2/misc.css create mode 100644 rt/share/static/css/web2/msie.css create mode 100644 rt/share/static/css/web2/msie6.css create mode 100644 rt/share/static/css/web2/nav.css create mode 100644 rt/share/static/css/web2/ticket-lists.css create mode 100644 rt/share/static/css/web2/ticket-search.css create mode 100644 rt/share/static/images/test.png create mode 100644 rt/share/static/js/autocomplete.js create mode 100644 rt/share/static/js/cascaded.js create mode 100644 rt/share/static/js/combobox.js create mode 100644 rt/share/static/js/event-registration.js create mode 100644 rt/share/static/js/farbtastic.js create mode 100644 rt/share/static/js/forms.js create mode 100644 rt/share/static/js/history-folding.js create mode 100644 rt/share/static/js/i18n.js create mode 100644 rt/share/static/js/jquery-1.9.1.min.js create mode 100644 rt/share/static/js/jquery-ui-1.10.0.custom.min.js create mode 100644 rt/share/static/js/jquery-ui-patch-datepicker.js create mode 100644 rt/share/static/js/jquery-ui-timepicker-addon.js create mode 100644 rt/share/static/js/jquery.cookie.js create mode 100644 rt/share/static/js/jquery.event.hover-1.0.js create mode 100644 rt/share/static/js/jquery.modal-defaults.js create mode 100644 rt/share/static/js/jquery.modal.min.js create mode 100644 rt/share/static/js/jquery.supposition.js create mode 100644 rt/share/static/js/jquery.tablesorter.min.js create mode 100644 rt/share/static/js/jquery_noconflict.js create mode 100644 rt/share/static/js/late.js create mode 100644 rt/share/static/js/superfish.js create mode 100644 rt/share/static/js/supersubs.js create mode 100644 rt/share/static/js/titlebox-state.js create mode 100644 rt/share/static/js/util.js create mode 100644 rt/t/api/db_indexes.t create mode 100644 rt/t/api/i18n_mime_encoding.t create mode 100644 rt/t/api/initialdata.t create mode 100644 rt/t/api/reminder-permissions.t create mode 100644 rt/t/api/system-available-rights.t create mode 100644 rt/t/api/user-prefs.t create mode 100644 rt/t/articles/set-subject.t create mode 100644 rt/t/charts/basics.t create mode 100644 rt/t/charts/compound-sql-function.t create mode 100644 rt/t/charts/group-by-cf.t create mode 100644 rt/t/crypt/gnupg/attachments-in-db.t create mode 100644 rt/t/crypt/no-signer-address.t create mode 100644 rt/t/crypt/smime/attachments-in-db.t create mode 100644 rt/t/crypt/smime/bad-recipients.t create mode 100644 rt/t/crypt/smime/status-string.t create mode 100644 rt/t/customfields/transaction_searching.t create mode 100644 rt/t/data/initialdata/initialdata create mode 100644 rt/t/data/initialdata/transaction-cfs create mode 100644 rt/t/data/plugins/RT-Extension-PSGIWrap/lib/RT/Extension/PSGIWrap.pm create mode 100644 rt/t/data/smime/keys/demoCA/cacert.pem create mode 100644 rt/t/data/smime/keys/demoCA/private/cakey.pem create mode 100644 rt/t/data/smime/keys/demoCA/serial create mode 100644 rt/t/data/smime/keys/otherCA/cacert.pem create mode 100644 rt/t/data/smime/keys/otherCA/private/cakey.pem create mode 100644 rt/t/data/smime/keys/otherCA/serial create mode 100644 rt/t/data/smime/keys/root@example.com.crt create mode 100644 rt/t/data/smime/keys/root@example.com.csr create mode 100644 rt/t/data/smime/keys/root@example.com.key create mode 100644 rt/t/data/smime/keys/root@example.com.pem create mode 100644 rt/t/data/smime/keys/sender@example.com.crt create mode 100644 rt/t/data/smime/keys/sender@example.com.csr create mode 100644 rt/t/data/smime/keys/sender@example.com.key create mode 100644 rt/t/data/smime/keys/sender@example.com.pem create mode 100644 rt/t/data/smime/mails/1-signed.eml create mode 100644 rt/t/data/smime/mails/2-signed-attachment.eml create mode 100644 rt/t/data/smime/mails/3-signed-binary.eml create mode 100644 rt/t/data/smime/mails/4-encrypted-plain.eml create mode 100644 rt/t/data/smime/mails/5-encrypted-attachment.eml create mode 100644 rt/t/data/smime/mails/6-encrypted-binary.eml create mode 100644 rt/t/data/smime/mails/7-signed-encrypted-plain.eml create mode 100644 rt/t/data/smime/mails/8-signed-encrypted-attachment.eml create mode 100644 rt/t/data/smime/mails/9-signed-encrypted-binary.eml create mode 100644 rt/t/fts/indexed_sphinx.t create mode 100644 rt/t/lifecycles/types.t create mode 100644 rt/t/mail/autogenerated.t create mode 100644 rt/t/mail/charsets-outgoing-plaintext.t create mode 100644 rt/t/mail/gnupg-outgoing-encrypted-plaintext.t create mode 100644 rt/t/mail/gnupg-outgoing-plain-plaintext.t create mode 100644 rt/t/mail/gnupg-outgoing-signed-plaintext.t create mode 100644 rt/t/mail/gnupg-outgoing-signed_encrypted-plaintext.t create mode 100644 rt/t/mail/html-outgoing.t create mode 100644 rt/t/mail/sendmail-plaintext.t create mode 100644 rt/t/mail/smime/incoming.t create mode 100644 rt/t/mail/smime/other-signed.t create mode 100644 rt/t/mail/smime/outgoing.t create mode 100644 rt/t/mail/smime/realmail.t create mode 100644 rt/t/mail/smime/reject_on_unencrypted.t delete mode 100644 rt/t/shredder/utils.pl create mode 100644 rt/t/ticket/circular_links.t delete mode 100644 rt/t/ticket/googleish_search.t create mode 100644 rt/t/ticket/search_by_watcher_group.t create mode 100644 rt/t/ticket/simple_search.t create mode 100644 rt/t/ticket/time-worked.t create mode 100644 rt/t/web/attachment_dropping.t create mode 100644 rt/t/web/attachment_truncation.t create mode 100644 rt/t/web/basic_auth.t create mode 100644 rt/t/web/cf_groupings.t create mode 100644 rt/t/web/cf_groupings_user.t create mode 100644 rt/t/web/cf_image.t create mode 100644 rt/t/web/cf_pattern.t create mode 100644 rt/t/web/cf_textarea.t create mode 100644 rt/t/web/dashboards-in-menu.t delete mode 100644 rt/t/web/googleish_search.t delete mode 100644 rt/t/web/html/Callbacks/logout.t/NoAuth/Logout.html/Default create mode 100644 rt/t/web/html/Callbacks/logout.t/NoAuth/Logout.html/ModifyLoginRedirect delete mode 100644 rt/t/web/html/NoAuth/js/not-by-default.js create mode 100644 rt/t/web/install.t create mode 100644 rt/t/web/language_update.t create mode 100644 rt/t/web/mobile.t delete mode 100644 rt/t/web/offline.t delete mode 100644 rt/t/web/offline_messages_utf8.t delete mode 100644 rt/t/web/offline_utf8.t create mode 100644 rt/t/web/psgi-wrap.t create mode 100644 rt/t/web/reminder-permissions.t create mode 100644 rt/t/web/rest-search-group.t create mode 100644 rt/t/web/rest-search-queue.t create mode 100644 rt/t/web/rest-search-user.t create mode 100644 rt/t/web/rest_user_cf.t delete mode 100644 rt/t/web/richtext-autohandler.t create mode 100644 rt/t/web/search_ical.t create mode 100644 rt/t/web/simple_search.t create mode 100644 rt/t/web/smime/outgoing.t create mode 100644 rt/t/web/static/js/not-by-default.js create mode 100644 rt/t/web/ticket_preserve_basics.t diff --git a/rt/.perlcriticrc b/rt/.perlcriticrc index 9cf8f633f..14246309a 100644 --- a/rt/.perlcriticrc +++ b/rt/.perlcriticrc @@ -4,3 +4,23 @@ exclude = Subroutines::ProhibitExplicitReturnUndef Modules::RequireFilenameMatchesPackage TestingAndDebugging::ProhibitNoStrict color = 1 verbose = 7 + + +# we don't unpack @_ right away as we mostly use named vars with defaults: +# sub foo { +# my $self = shift; +# my %args = ( default => 'value', ..., @_ ); +# ... +[-Subroutines::RequireArgUnpacking] + +# Readonly superiority is not convincing, especially considering +# that 'use constant' participates in constants folding during +# compilation +[-ValuesAndExpressions::ProhibitConstantPragma] + +# brutal +[BuiltinFunctions::RequireBlockGrep] +severity = 1 + +[BuiltinFunctions::RequireBlockMap] +severity = 1 diff --git a/rt/Makefile.in b/rt/Makefile.in index 8d109f371..9034a9393 100644 --- a/rt/Makefile.in +++ b/rt/Makefile.in @@ -86,10 +86,6 @@ LIBS_GROUP = @LIBS_GROUP@ WEB_USER = @WEB_USER@ WEB_GROUP = @WEB_GROUP@ - -APACHECTL = @APACHECTL@ - - # DESTDIR allows you to specify that RT be installed somewhere other than # where it will eventually reside. DESTDIR _must_ have a trailing slash # if it's defined. @@ -108,11 +104,13 @@ RT_VAR_PATH = @RT_VAR_PATH_R@ RT_DOC_PATH = @RT_DOC_PATH_R@ RT_FONT_PATH = @RT_FONT_PATH_R@ RT_LEXICON_PATH = @RT_LEXICON_PATH_R@ +RT_STATIC_PATH = @RT_STATIC_PATH_R@ RT_LOCAL_PATH = @RT_LOCAL_PATH_R@ LOCAL_PLUGIN_PATH = @RT_LOCAL_PATH_R@/plugins LOCAL_ETC_PATH = @LOCAL_ETC_PATH_R@ LOCAL_LIB_PATH = @LOCAL_LIB_PATH_R@ LOCAL_LEXICON_PATH = @LOCAL_LEXICON_PATH_R@ +LOCAL_STATIC_PATH = @LOCAL_STATIC_PATH_R@ MASON_HTML_PATH = @MASON_HTML_PATH_R@ MASON_LOCAL_HTML_PATH = @MASON_LOCAL_HTML_PATH_R@ MASON_DATA_PATH = @MASON_DATA_PATH_R@ @@ -147,7 +145,9 @@ SYSTEM_BINARIES = rt-attributes-viewer \ rt-email-digest \ rt-email-group-admin \ rt-fulltext-indexer \ + rt-importer \ rt-preferences-viewer \ + rt-serializer \ rt-server \ rt-session-viewer \ rt-server.fcgi \ @@ -223,7 +223,7 @@ DB_RT_PASS = @DB_RT_PASS@ -TEST_FILES = t/*.t t/*/*.t +TEST_FILES = t/*.t t/*/*.t t/*/*/*.t TEST_VERBOSE = 0 RT_TEST_PARALLEL_NUM ?= 5 @@ -315,15 +315,21 @@ fixperms: chmod -R u+rwX,go-w,go+rX $(DESTDIR)$(MASON_HTML_PATH) \ $(DESTDIR)$(MASON_LOCAL_HTML_PATH) \ $(DESTDIR)$(RT_LEXICON_PATH) \ - $(DESTDIR)$(LOCAL_LEXICON_PATH) + $(DESTDIR)$(LOCAL_LEXICON_PATH) \ + $(DESTDIR)$(RT_STATIC_PATH) \ + $(DESTDIR)$(LOCAL_STATIC_PATH) chown -R $(LIBS_OWNER) $(DESTDIR)$(MASON_HTML_PATH) \ $(DESTDIR)$(MASON_LOCAL_HTML_PATH) \ $(DESTDIR)$(RT_LEXICON_PATH) \ - $(DESTDIR)$(LOCAL_LEXICON_PATH) + $(DESTDIR)$(LOCAL_LEXICON_PATH) \ + $(DESTDIR)$(RT_STATIC_PATH) \ + $(DESTDIR)$(LOCAL_STATIC_PATH) chgrp -R $(LIBS_GROUP) $(DESTDIR)$(MASON_HTML_PATH) \ $(DESTDIR)$(MASON_LOCAL_HTML_PATH) \ $(DESTDIR)$(RT_LEXICON_PATH) \ - $(DESTDIR)$(LOCAL_LEXICON_PATH) + $(DESTDIR)$(LOCAL_LEXICON_PATH) \ + $(DESTDIR)$(RT_STATIC_PATH) \ + $(DESTDIR)$(LOCAL_STATIC_PATH) # Make the web ui's data dir writable chmod 0770 $(DESTDIR)$(MASON_DATA_PATH) \ @@ -337,6 +343,7 @@ dirs: $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_LOG_PATH) $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_FONT_PATH) $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_LEXICON_PATH) + $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_STATIC_PATH) $(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH) $(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH)/cache $(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH)/etc @@ -348,10 +355,16 @@ dirs: $(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_LIB_PATH) $(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_PLUGIN_PATH) $(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_LEXICON_PATH) + $(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_STATIC_PATH) + +clean-mason-cache: + rm -rf $(DESTDIR)$(MASON_DATA_PATH)/cache/* + rm -rf $(DESTDIR)$(MASON_DATA_PATH)/etc/* + rm -rf $(DESTDIR)$(MASON_DATA_PATH)/obj/* install: testdeps config-install dirs files-install fixperms instruct -files-install: libs-install etc-install config-install bin-install sbin-install html-install doc-install font-install po-install +files-install: libs-install etc-install config-install bin-install sbin-install html-install doc-install font-install po-install static-install config-install: @COMMENT_INPLACE_LAYOUT@ $(INSTALL) -m 0755 -o $(BIN_OWNER) -g $(RTGROUP) -d $(DESTDIR)$(CONFIG_FILE_PATH) @@ -404,6 +417,7 @@ html-install: @COMMENT_INPLACE_LAYOUT@ -( cd share/html && find . -type f -print ) | while read file ; do \ @COMMENT_INPLACE_LAYOUT@ $(INSTALL) -m 0644 "share/html/$$file" "$(DESTDIR)$(MASON_HTML_PATH)/$$file" ; \ @COMMENT_INPLACE_LAYOUT@ done +@COMMENT_INPLACE_LAYOUT@ $(MAKE) clean-mason-cache font-install: @COMMENT_INPLACE_LAYOUT@ [ -d $(DESTDIR)$(RT_FONT_PATH) ] || $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_FONT_PATH) @@ -418,6 +432,14 @@ po-install: @COMMENT_INPLACE_LAYOUT@ $(INSTALL) -m 0644 "share/po/$$file" "$(DESTDIR)$(RT_LEXICON_PATH)/$$file" ; \ @COMMENT_INPLACE_LAYOUT@ done +static-install: +@COMMENT_INPLACE_LAYOUT@ [ -d $(DESTDIR)$(RT_STATIC_PATH) ] || $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_STATIC_PATH) +@COMMENT_INPLACE_LAYOUT@ -( cd share/static && find . -type d -print ) | while read dir ; do \ +@COMMENT_INPLACE_LAYOUT@ $(INSTALL) -m 0755 -d "$(DESTDIR)$(RT_STATIC_PATH)/$$dir" ; \ +@COMMENT_INPLACE_LAYOUT@ done +@COMMENT_INPLACE_LAYOUT@ -( cd share/static && find . -type f -print ) | while read file ; do \ +@COMMENT_INPLACE_LAYOUT@ $(INSTALL) -m 0644 "share/static/$$file" "$(DESTDIR)$(RT_STATIC_PATH)/$$file" ; \ +@COMMENT_INPLACE_LAYOUT@ done doc-install: @@ -469,20 +491,12 @@ regenerate-catalogs: license-tag: $(PERL) devel/tools/license_tag -factory: initialize-database - cd lib; $(PERL) ../devel/tools/factory $(DB_DATABASE) RT - start-httpd: $(PERL) sbin/standalone_httpd & start-server: $(PERL) sbin/rt-server & -apachectl: - $(APACHECTL) stop - sleep 10 - $(APACHECTL) start - sleep 5 SNAPSHOT=$(shell git describe --tags) THIRD_PARTY=devel/third-party/ @@ -504,7 +518,7 @@ build-snapshot: rm -fr "$(SNAPSHOT)/" clearsign-snapshot: - gpg --no-armor --detach-sign "$(SNAPSHOT).tar.gz" + gpg --armor --detach-sign "$(SNAPSHOT).tar.gz" build-third-party: git archive --prefix "$(SNAPSHOT)/$(THIRD_PARTY)" HEAD:$(THIRD_PARTY) \ @@ -512,7 +526,7 @@ build-third-party: rm -rf "$(SNAPSHOT)/$(THIRD_PARTY)" clearsign-third-party: - gpg --no-armor --detach-sign "$(SNAPSHOT)-third-party-source.tar.gz" + gpg --armor --detach-sign "$(SNAPSHOT)-third-party-source.tar.gz" snapshot-shasums: sha1sum $(SNAPSHOT)*.tar.gz* @@ -530,8 +544,8 @@ vessel-import: build-snapshot --skip cpan-capitalization,cpan-mod_perl,cpan-Encode,cpan-PPI,cpan-Test-Exception-LessClever,cpan-Test-Manifest,cpan-Test-Object,cpan-Test-Pod,cpan-Test-Requires,cpan-Test-SubCalls,cpan-Test-cpan-Tester,cpan-Test-Warn --skip-all-recommends mv $(VESSEL)/scripts/RT/build $(VESSEL)/scripts/RT/build.pl -JSMIN_URL = http://download.bestpractical.com/mirror/jsmin-2011-01-22.c -JSMIN_SHA = 8a6b3b980a52c028eb73aee4a82ebe060c1ee854 +JSMIN_URL = http://download.bestpractical.com/mirror/jsmin-2013-03-29.c +JSMIN_SHA = 67dc8d73a8878f88cdaeb1a86775872eae5c3077 jsmin: jsmin-checkcc jsmin-fetch jsmin-verify jsmin-confirm jsmin-build jsmin-install @echo "" diff --git a/rt/README b/rt/README index 5a4b92386..bdd8e0928 100755 --- a/rt/README +++ b/rt/README @@ -14,21 +14,21 @@ us at . REQUIRED PACKAGES ----------------- -o Perl 5.8.3 or later (http://www.perl.org). +o Perl 5.10.1 or later (http://www.perl.org). - Perl versions prior to 5.8.3 contain bugs that could result in - data corruption. RT won't start on older versions. + RT won't start on versions of Perl older than 5.10.1. o A supported SQL database - Currently supported: MySQL 4.1 or later with InnoDB support. - Postgres 8.1 or later. + Currently supported: MySQL 5.1 or later with InnoDB support. + Postgres 8.4 or later; 9.0 or later suggested Oracle 9iR2 or later. - SQLite 3.0. (Not recommended for production) + SQLite 3.0 or later; for testing only, no + upgrade path guaranteed o Apache version 1.3.x or 2.x (http://httpd.apache.org) with mod_perl -- (http://perl.apache.org) - or with FastCGI -- (www.fastcgi.com) + or with FastCGI -- (http://www.fastcgi.com) or other webserver with FastCGI support RT's FastCGI handler needs to access RT's configuration file. @@ -66,10 +66,10 @@ GENERAL INSTALLATION If you are upgrading from a previous version of RT, please review the upgrade notes for the appropriate versions, which can be found - in docs/UPGRADING-* If you are coming from 3.8.6 to 4.0.x you should - review both the UPGRADING-3.8 and UPGRADING-4.0 file. Similarly, if - you were coming from 3.6.7, you would want to review UPGRADING-3.6, - UPGRADING-3.8 and UPGRADING-4.0 + in docs/UPGRADING-* If you are coming from 4.0.x to 4.2.x you should + review both the UPGRADING-4.0 and UPGRADING-4.2 file. Similarly, if + you were coming from 3.8.x, you would want to review UPGRADING-3.8, + UPGRADING-4.0 and UPGRADING-4.2 Any upgrade steps given in version-specific UPGRADING files should be run after the rest of the steps below; however, please read the @@ -94,18 +94,9 @@ GENERAL INSTALLATION Some modules require user input or environment variables to install correctly, so it may be necessary to install them manually. - If you are installing with CPAN module older than 1.84, you will - need to start CPAN (by running perl -MCPAN -e shell) and upgrade the - CPAN shell with: - - install CPAN - - If you are unsure of your CPAN version, it will be printed when you - run the shell. - - If you are having trouble installing GD or Graphviz, you should - install gd-devel and the graphviz libraries using your - distribution's package manager. + If you are having trouble installing GD, refer to "Installing GD libraries" + in docs/charts.pod. Ticket relationship graphing requires the graphviz + library which you should install using your distribution's package manager. 5) Check to make sure everything was installed properly. @@ -168,13 +159,9 @@ GENERAL INSTALLATION You should back up your database before running this command. When you run it, you will be prompted for your previous version of - RT (such as 3.6.4) so that the appropriate set of database + RT (such as 3.8.1) so that the appropriate set of database upgrades can be applied. - Finally, clear the Mason cache dir: - - rm -fr /opt/rt4/var/mason_data/obj - If 'make upgrade-database' completes without error, your upgrade has been successful; you should now run any commands that were supplied in version-specific UPGRADING documentation. You should @@ -192,7 +179,7 @@ GENERAL INSTALLATION logout for inactive sessions. For more information about how to do that, run: - perldoc /path/to/rt/sbin/rt-clean-sessions + perldoc /opt/rt4/sbin/rt-clean-sessions 8) Set up users, groups, queues, scrips and access control. @@ -205,14 +192,12 @@ GENERAL INSTALLATION To generate email digest messages, you must arrange for the provided utility to be run once daily, and once weekly. You may also want to arrange for the rt-email-dashboards utility to be run hourly. For - example, if your task scheduler is cron, you can configure it as - follows: + example, if your task scheduler is cron, you can configure it by + adding the following lines as /etc/cron.d/rt: - crontab -e # as the RT administrator (probably root) - # insert the following lines: - 0 0 * * * /opt/rt4/sbin/rt-email-digest -m daily - 0 0 * * 0 /opt/rt4/sbin/rt-email-digest -m weekly - 0 * * * * /opt/rt4/sbin/rt-email-dashboards + 0 0 * * * root /opt/rt4/sbin/rt-email-digest -m daily + 0 0 * * 0 root /opt/rt4/sbin/rt-email-digest -m weekly + 0 * * * * root /opt/rt4/sbin/rt-email-dashboards 10) Configure the RT email gateway. To let email flow to your RT server, you need to add a few lines of configuration to your mail @@ -231,13 +216,6 @@ GENERAL INSTALLATION perldoc /opt/rt4/bin/rt-mailgate - If your webserver uses SSL, rt-mailgate will require several new - Perl libraries. RT can detect and install these for you automatically - if you include --enable-ssl-mailgate when running configure and then - run make fixdeps as described in step 4. It is safe to rerun configure - and make fixdeps after you have installed RT, you should be sure to include - all the arguments you used in step 2 plus --enable-ssl-mailgate. - GETTING HELP ------------ diff --git a/rt/aclocal.m4 b/rt/aclocal.m4 index d427e1356..793644f12 100644 --- a/rt/aclocal.m4 +++ b/rt/aclocal.m4 @@ -91,9 +91,9 @@ AC_DEFUN([RT_LAYOUT],[ changequote({,}) for var in prefix exec_prefix bindir sbindir \ sysconfdir mandir libdir datadir htmldir fontdir\ - lexdir localstatedir logfiledir masonstatedir \ + lexdir staticdir localstatedir logfiledir masonstatedir \ sessionstatedir customdir custometcdir customhtmldir \ - customlexdir customplugindir customlibdir manualdir; do + customlexdir customstaticdir customplugindir customlibdir manualdir; do eval "val=\"\$$var\"" val=`echo $val | sed -e 's:\(.\)/*$:\1:'` val=`echo $val | @@ -114,6 +114,7 @@ AC_DEFUN([RT_LAYOUT],[ RT_SUBST_EXPANDED_ARG(mandir) RT_SUBST_EXPANDED_ARG(libdir) RT_SUBST_EXPANDED_ARG(lexdir) + RT_SUBST_EXPANDED_ARG(staticdir) RT_SUBST_EXPANDED_ARG(datadir) RT_SUBST_EXPANDED_ARG(htmldir) RT_SUBST_EXPANDED_ARG(fontdir) @@ -128,6 +129,7 @@ AC_DEFUN([RT_LAYOUT],[ RT_SUBST_EXPANDED_ARG(customplugindir) RT_SUBST_EXPANDED_ARG(customhtmldir) RT_SUBST_EXPANDED_ARG(customlexdir) + RT_SUBST_EXPANDED_ARG(customstaticdir) RT_SUBST_EXPANDED_ARG(customlibdir) ])dnl diff --git a/rt/bin/rt b/rt/bin/rt index 6d46c346c..9c0ed8dc8 100755 --- a/rt/bin/rt +++ b/rt/bin/rt @@ -70,16 +70,6 @@ use Term::ReadLine; use Time::Local; # used in prettyshow use File::Temp; -# 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. @@ -99,18 +89,16 @@ my %config = ( 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, + auth => "rt", ), config_from_file($ENV{RTCONFIG} || ".rtrc"), config_from_env() ); + +$config{auth} = "basic" if delete $config{externalauth}; + 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> '; @@ -330,32 +318,53 @@ sub list { $data{orderby} =~ s/^\+?(.*)/-$1/; } - if (!defined $q) { - $q = $config{query}; + $type ||= "ticket"; + + if (!defined $q ) { + if ( $type eq 'ticket' ) { + $q = $config{query}; + } + else { + $q = ''; + } } - - $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; + + if ( $type ne 'ticket' ) { + $rawprint = 1; } - # correctly quote strings in a query - $q =~ s/(=|like\s)\s*([^'\d\s]\S*)\b/$1\'$2\'/g; - $type ||= "ticket"; - unless ($type && defined $q) { + unless (defined $q) { my $item = $type ? "query string" : "object type"; whine "No $item specified."; $bad = 1; } + + $q =~ s/^#//; # get rid of leading hash + if ( $type eq 'ticket' ) { + 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; + } + #return help("list", $type) if $bad; return suggest_help("list", $type, $bad) if $bad; @@ -772,6 +781,7 @@ sub comment { my ($action) = @_; my (%data, $id, @files, @bcc, @cc, $msg, $content_type, $wtime, $edit); my $bad = 0; + my $status = ''; while (@ARGV) { $_ = shift @ARGV; @@ -779,7 +789,7 @@ sub comment { if (/^-e$/) { $edit = 1; } - elsif (/^-(?:[abcmw]|ct)$/) { + elsif (/^-(?:[abcmws]|ct)$/) { unless (@ARGV) { whine "No argument specified with $_."; $bad = 1; last; @@ -795,6 +805,9 @@ sub comment { elsif (/-ct/) { $content_type = shift @ARGV; } + elsif (/-s/) { + $status = shift @ARGV; + } elsif (/-([bc])/) { my $a = $_ eq "-b" ? \@bcc : \@cc; @$a = split /\s*,\s*/, shift @ARGV; @@ -837,9 +850,12 @@ sub comment { TimeWorked => $wtime || '', 'Content-Type' => $content_type || 'text/plain', Text => $msg || '', - Status => '' + Status => $status } ]; + if ($status ne '') { + push(@{$form->[1]}, "Status"); + } my $text = Form::compose([ $form ]); @@ -1036,20 +1052,23 @@ sub submit { # Should we send authentication information to start a new session? my $how = $config{server} =~ /^https/ ? 'over SSL' : 'unencrypted'; my($server) = $config{server} =~ m{^.*//([^/]+)}; - if ($config{externalauth}) { + + if ($config{auth} eq "gssapi") { + die "GSSAPI support not available; failed to load perl module GSSAPI:\n$@\n" + unless eval { require GSSAPI; 1 }; + die "GSSAPI support not available; failed to load perl module LWP::Authen::Negotiate:\n$@\n" + unless eval { require LWP::Authen::Negotiate; 1 }; + } elsif ($config{auth} eq "basic") { + print " Password will be sent to $server $how\n", + " Press CTRL-C now if you do not want to continue\n" + if ! $config{passwd}; $h->authorization_basic($config{user}, $config{passwd} || read_passwd() ); + } elsif ( !defined $session->cookie ) { 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() ); - } + push @$data, ( user => $config{user} ); + push @$data, ( pass => $config{passwd} || read_passwd() ); } # Now, we construct the request. @@ -1060,9 +1079,7 @@ sub submit { $req = GET($uri); } $session->add_cookie_header($req); - if ($config{externalauth}) { - $req->header(%$h); - } + $req->header(%$h) if %$h; # Then we send the request and parse the response. DEBUG(3, $req->as_string); @@ -1400,7 +1417,7 @@ sub Form::compose { sub config_from_env { my %env; - foreach my $k (qw(EXTERNALAUTH DEBUG USER PASSWD SERVER QUERY ORDERBY)) { + foreach my $k (qw(EXTERNALAUTH AUTH DEBUG USER PASSWD SERVER QUERY ORDERBY)) { if (exists $ENV{"RT$k"}) { $env{lc $k} = $ENV{"RT$k"}; @@ -1454,7 +1471,7 @@ sub parse_config_file { chomp; next if (/^#/ || /^\s*$/); - if (/^(externalauth|user|passwd|server|query|orderby|queue)\s+(.*)\s?$/) { + if (/^(externalauth|auth|user|passwd|server|query|orderby|queue)\s+(.*)\s?$/) { $cfg{$1} = $2; } else { @@ -1563,49 +1580,56 @@ sub vpush { } } +# WARNING: this code is duplicated in lib/RT/Interface/REST.pm +# If you change one, change both functions at once # "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; + my ($val, $strip) = @_; + my @words; + my @values = map {split /\n/} (ref $val eq 'ARRAY' ? @$val : $val); + + foreach my $line (@values) { + while ($line =~ /\S/) { + $line =~ s/^ + \s* # Trim leading whitespace + (?: + (") # Quoted string + ((?>[^\\"]*(?:\\.[^\\"]*)*))" + | + (') # Single-quoted string + ((?>[^\\']*(?:\\.[^\\']*)*))' + | + q\{(.*?)\} # A perl-ish q{} string; this does + # no paren balancing, however, and + # only exists for back-compat + | + (.*?) # Anything else, until the next comma + ) + \s* # Trim trailing whitespace + (?: + \Z # Finish at end-of-line + | + , # Or a comma + ) + //xs or last; # There should be no way this match + # fails, but add a failsafe to + # prevent infinite-looping if it + # somehow does. + my ($quote, $quoted) = ($1 ? ($1, $2) : $3 ? ($3, $4) : ('', $5 || $6)); + # Only unquote the quote character, or the backslash -- and + # only if we were originally quoted.. + if ($5) { + $quoted =~ s/([\\'])/\\$1/g; + $quote = "'"; } - else { - push @words, $a; + if ($strip) { + $quoted =~ s/\\([\\$quote])/$1/g if $quote; + push @words, $quoted; + } else { + push @words, "$quote$quoted$quote"; } - ( $a, $b ) = split /\s*,\s*/, $b, 2; } - - } - return \@words; } @@ -1892,15 +1916,17 @@ Text: 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 + - 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 + - auth Method to authenticate via; "basic" + means HTTP Basic authentication, "gssapi" means + Kerberos credentials, if your RT is configured + with $WebRemoteUserAuth. For backwards + compatibility, "externalauth 1" means "auth basic" Blank and #-commented lines are ignored. @@ -1919,7 +1945,7 @@ Text: - RTUSER - RTPASSWD - - RTEXTERNALAUTH + - RTAUTH - RTSERVER - RTDEBUG Numeric debug level. (Set to 3 for full logs.) - RTCONFIG Specifies a name other than ".rtrc" for the @@ -2199,13 +2225,14 @@ Text: 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. + The query string must be supplied as one argument. + + if on tickets, query is in the SQL-like syntax used internally by + RT. (For more information, see "rt help query".), otherwise, query + is plain string with format "FIELD OP VALUE", e.g. "Name = General". - (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.) + if query string is absent, we limit to privileged ones on users and + user defined ones on groups automatically. Options: @@ -2236,6 +2263,9 @@ Text: rt ls -t ticket "Subject like '[PATCH]%'" rt ls -q systems rt ls -f owner,subject + rt ls -t queue 'Name = General' + rt ls -t user 'EmailAddress like foo@bar.com' + rt ls -t group 'Name like foo' -- @@ -2378,6 +2408,8 @@ Text: than once to attach multiple files.) -c A comma-separated list of Cc addresses. -b A comma-separated list of Bcc addresses. + -s Set a new status for the ticket (default will + leave the status unchanged) -w