diff options
Diffstat (limited to 'rt/share/html')
-rw-r--r-- | rt/share/html/Admin/CustomFields/Modify.html | 23 | ||||
-rw-r--r-- | rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default | 12 | ||||
-rw-r--r-- | rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList | 15 | ||||
-rw-r--r-- | rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay | 24 | ||||
-rw-r--r-- | rt/share/html/Elements/AddCustomers | 5 | ||||
-rw-r--r-- | rt/share/html/Elements/ColumnMap | 7 | ||||
-rwxr-xr-x | rt/share/html/Elements/Header | 6 | ||||
-rw-r--r-- | rt/share/html/Elements/RT__CustomField/ColumnMap | 4 | ||||
-rw-r--r-- | rt/share/html/Elements/RefreshHomepage | 6 | ||||
-rw-r--r-- | rt/share/html/Ticket/Elements/AddCustomers | 5 | ||||
-rw-r--r-- | rt/share/html/Ticket/Elements/CheckMandatoryFields | 9 | ||||
-rw-r--r-- | rt/share/html/Ticket/Graphs/index.html | 4 | ||||
-rwxr-xr-x | rt/share/html/autohandler | 4 |
13 files changed, 98 insertions, 26 deletions
diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html index f75607a8d..fc2c49d59 100644 --- a/rt/share/html/Admin/CustomFields/Modify.html +++ b/rt/share/html/Admin/CustomFields/Modify.html @@ -119,6 +119,11 @@ % } <tr><td class="label"> </td><td> +<input type="checkbox" class="checkbox" name="Required" value="1" <% $RequiredChecked |n%> /> +<&|/l&>Required for ticket resolution</&> +</td></tr> + +<tr><td class="label"> </td><td> <input type="hidden" class="hidden" name="SetEnabled" value="1" /> <input type="checkbox" class="checkbox" name="Enabled" value="1" <% $EnabledChecked |n%> /> <&|/l&>Enabled (Unchecking this box disables this custom field)</&> @@ -171,11 +176,12 @@ else { } if ( $ARGS{'Update'} && $id ne 'new' ) { - #we're asking about enabled on the web page but really care about disabled. $ARGS{'Disabled'} = $Disabled = $Enabled? 0 : 1; + + $ARGS{'Required'} ||= 0; - my @attribs = qw(Disabled Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue); + my @attribs = qw(Disabled Required Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue); push @results, UpdateRecordObject( AttributesRef => \@attribs, Object => $CustomFieldObj, @@ -193,6 +199,15 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { push (@results, $msg); } + # Clean up values + foreach my $param (grep /^$paramtag-/, keys(%ARGS)) { + for ($ARGS{$param}) { + s/\r+\n/\n/g; + s/^\s+//; + s/\s+$//; + } + } + # Update any existing values my $values = $CustomFieldObj->ValuesObj; while ( my $value = $values->Next ) { @@ -200,7 +215,6 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { my $param = join("-", $paramtag, $value->Id, $attr); next unless exists $ARGS{$param}; next if ($value->$attr()||'') eq ($ARGS{$param}||''); - my $mutator = "Set$attr"; my ($id, $msg) = $value->$mutator( $ARGS{$param} ); push (@results, $msg); @@ -222,6 +236,9 @@ $id = $CustomFieldObj->id if $CustomFieldObj->id; my $EnabledChecked = qq[checked="checked"]; $EnabledChecked = '' if $CustomFieldObj->Disabled; +my $RequiredChecked = ''; +$RequiredChecked = qq[checked="checked"] if $CustomFieldObj->Required; + my @CFvalidations = ( '(?#Mandatory).', '(?#Digits)^[\d.]+$', diff --git a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default new file mode 100644 index 000000000..2c0698ec2 --- /dev/null +++ b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default @@ -0,0 +1,12 @@ +<%doc> +If mandatory fields aren't set yet, point the "Resolve" link back +to "Ticket Basics". +</%doc> +<%init> +my $TicketObj = delete($ARGS{'Ticket'}); +my $actions = $ARGS{'actions'}; +if( $m->comp('/Ticket/Elements/CheckMandatoryFields', Ticket => $TicketObj) + ) { + $actions->{'G'}->{'path'} = 'Ticket/Modify.html?id='.$TicketObj->Id.'&resolve=1'; +} +</%init> diff --git a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList new file mode 100644 index 000000000..4779411ce --- /dev/null +++ b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList @@ -0,0 +1,15 @@ +<%init> +use Data::Dumper; +my $ARGSRef = $ARGS{'ARGSRef'}; +my $TicketObj = $ARGS{'Ticket'}; +my $results = $ARGS{'Actions'}; +if(defined($ARGSRef->{'resolve'})) { + my @errors = + $m->comp('/Ticket/Elements/CheckMandatoryFields', Ticket => $TicketObj); + return if !@errors; + my $msg = 'Missing required field'.(@errors > 1 ? 's' : '').': ' . + join(', ', map { $_->Name } @errors); + $m->notes( ('InvalidField-' . $_->Id) => 'Required' ) foreach @errors; + push @$results, $msg; +} +</%init> diff --git a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay new file mode 100644 index 000000000..0d69bc27b --- /dev/null +++ b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay @@ -0,0 +1,24 @@ +<%doc> +When the user tries to change a ticket's status to "resolved" through +the Update interface, check mandatory fields. If they aren't all set, +redirect to Ticket Basics instead of updating. Note that this will +lose any comments/time/other information the user has entered. +</%doc> + +<%init> +my $TicketObj = $ARGS{'Ticket'}; +my $ARGSRef = $ARGS{'ARGSRef'}; +my $oldStatus = $TicketObj->Status(); +my $newStatus = $ARGSRef->{'Status'} || $ARGSRef->{'DefaultStatus'}; +if( $oldStatus ne 'resolved' and + $newStatus eq 'resolved' and + $m->comp('/Ticket/Elements/CheckMandatoryFields', + Ticket => $TicketObj + ) ) { + $m->clear_buffer; + RT::Interface::Web::Redirect( + RT->Config->Get('WebURL')."Ticket/Modify.html?id=".$TicketObj->Id."&resolve=1" + ); + $m->abort; +} +</%init> diff --git a/rt/share/html/Elements/AddCustomers b/rt/share/html/Elements/AddCustomers index aaf8ca8ba..9828d7d53 100644 --- a/rt/share/html/Elements/AddCustomers +++ b/rt/share/html/Elements/AddCustomers @@ -39,7 +39,10 @@ warn "/Elements/AddCustomers called with CustomerString $CustomerString\n" my @Customers = (); if ( $CustomerString ) { - @Customers = &RT::URI::freeside::smart_search( 'search' => $CustomerString ); + @Customers = &RT::URI::freeside::smart_search( + 'search' => $CustomerString, + 'no_fuzzy_on_exact' => 1, #pref? + ); } my @Services = (); diff --git a/rt/share/html/Elements/ColumnMap b/rt/share/html/Elements/ColumnMap index 6a1c23779..a1475a99d 100644 --- a/rt/share/html/Elements/ColumnMap +++ b/rt/share/html/Elements/ColumnMap @@ -157,12 +157,7 @@ my $COLUMN_MAP = { } qw(WebPath WebBaseURL WebURL)), WebRequestPath => { value => sub { substr( $m->request_path, 1 ) } }, - #WebRequestPathDir => { value => sub { substr( $m->request_comp->dir_path, 1 ) } }, - WebRequestPathDir => { value => sub { - my $wrpd = substr( $m->request_comp->dir_path, 1 ); - $wrpd =~ s(^rt/)(); #hacky, dunno why this happens - $wrpd; - } }, + WebRequestPathDir => { value => sub { substr( $m->request_comp->dir_path, 1 ) } }, }; $COLUMN_MAP->{'CF'} = $COLUMN_MAP->{'CustomField'}; diff --git a/rt/share/html/Elements/Header b/rt/share/html/Elements/Header index d970ac52f..72e3e7220 100755 --- a/rt/share/html/Elements/Header +++ b/rt/share/html/Elements/Header @@ -45,14 +45,14 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -<% include( '/elements/header.html', { +<& /elements/header.html, { 'title' => $Title, 'head' => $head, 'etc' => $etc, 'nobr' => 1, 'nocss' => 1, - }) |n -%> + } +&> <%INIT> $r->headers_out->{'Pragma'} = 'no-cache'; $r->headers_out->{'Cache-control'} = 'no-cache'; diff --git a/rt/share/html/Elements/RT__CustomField/ColumnMap b/rt/share/html/Elements/RT__CustomField/ColumnMap index 0a867eb26..6d8d76a4c 100644 --- a/rt/share/html/Elements/RT__CustomField/ColumnMap +++ b/rt/share/html/Elements/RT__CustomField/ColumnMap @@ -155,9 +155,7 @@ my $COLUMN_MAP = { : ($args->{'PassArguments'}); my %pass = map { $_ => $args->{$_} } grep exists $args->{$_}, @pass; - my $path = $m->request_path; - $path =~ s(^/rt)(); #hacky, dunno why this happens - my $uri = RT->Config->Get('WebPath') . $path; + my $uri = RT->Config->Get('WebPath') . $m->request_path; my @res = ( \'<a href="', diff --git a/rt/share/html/Elements/RefreshHomepage b/rt/share/html/Elements/RefreshHomepage index 7840f59cc..bf91a9522 100644 --- a/rt/share/html/Elements/RefreshHomepage +++ b/rt/share/html/Elements/RefreshHomepage @@ -46,13 +46,9 @@ %# %# END BPS TAGGED BLOCK }}} <&|/Widgets/TitleBox, title => loc('Refresh')&> -<form method="get" action="<% RT->Config->Get('WebPath') . $path %>"> +<form method="get" action="<% RT->Config->Get('WebPath') . $m->request_path %>"> <& /Elements/Refresh, Name => 'HomeRefreshInterval', Default => $session{'home_refresh_interval'}||RT->Config->Get('HomePageRefreshInterval', $session{'CurrentUser'}) &> <& /Elements/Submit, Label => loc('Go!') &> </&> </form> -<%init> -my $path = $m->request_path; -$path =~ s(^/rt)(); #hacky, dunno why this happens -</%init> diff --git a/rt/share/html/Ticket/Elements/AddCustomers b/rt/share/html/Ticket/Elements/AddCustomers index e04c07702..09acdfd3f 100644 --- a/rt/share/html/Ticket/Elements/AddCustomers +++ b/rt/share/html/Ticket/Elements/AddCustomers @@ -36,7 +36,10 @@ my $freeside_url = &RT::URI::freeside::FreesideURL(); my @Customers = (); if ( $CustomerString ) { - @Customers = &RT::URI::freeside::smart_search( 'search' => $CustomerString ); + @Customers = &RT::URI::freeside::smart_search( + 'search' => $CustomerString, + 'no_fuzzy_on_exact' => 1, #pref? + ); } my @Services = (); diff --git a/rt/share/html/Ticket/Elements/CheckMandatoryFields b/rt/share/html/Ticket/Elements/CheckMandatoryFields new file mode 100644 index 000000000..3d0324f98 --- /dev/null +++ b/rt/share/html/Ticket/Elements/CheckMandatoryFields @@ -0,0 +1,9 @@ +<%init> + +my $TicketObj = $ARGS{'Ticket'} or return (); +my $ARGSRef = $ARGS{'ARGSRef'}; +my @fields = grep { $_->Required } + @{ $TicketObj->CustomFields->ItemsArrayRef }; +return grep { !defined($TicketObj->FirstCustomFieldValue($_->id)) } @fields; + +</%init> diff --git a/rt/share/html/Ticket/Graphs/index.html b/rt/share/html/Ticket/Graphs/index.html index 211d3a0cb..e23737c8e 100644 --- a/rt/share/html/Ticket/Graphs/index.html +++ b/rt/share/html/Ticket/Graphs/index.html @@ -56,9 +56,7 @@ <& Elements/ShowGraph, %ARGS, Ticket => $ticket &> -% my $path = $m->request_comp->path; -% $path =~ s(^/rt)(); #hacky, dunno why this happens -<form action="<% RT->Config->Get('WebPath') . $path %>"> +<form action="<% RT->Config->Get('WebPath') . $m->request_comp->path %>"> <input type="hidden" class="hidden" name="id" value="<% $id %>" /> <& Elements/EditGraphProperties, %ARGS, Ticket => $ticket &> diff --git a/rt/share/html/autohandler b/rt/share/html/autohandler index 1bb2c939f..b44bd68d5 100755 --- a/rt/share/html/autohandler +++ b/rt/share/html/autohandler @@ -52,7 +52,9 @@ $m->callback( ARGSRef => \%ARGS, CallbackName => 'Init', CallbackPage => '/autoh RT::Interface::Web::HandleRequest(\%ARGS); -$m->comp( '/Elements/Footer', %ARGS ); +$m->comp( '/Elements/Footer', %ARGS ) + unless $r->content_type =~ qr<^(text|application)/(x-)?(css|javascript)>; + </%INIT> <%ARGS> $user => undef |