diff options
author | mark <mark> | 2011-05-31 23:30:13 +0000 |
---|---|---|
committer | mark <mark> | 2011-05-31 23:30:13 +0000 |
commit | e02e5448d8fdad322dbe5562f92d9623e5d6f0dd (patch) | |
tree | 0b7385d69d9a8bac89f8d7387387faa8eb55ac2e /rt/share | |
parent | dd65ba99bb9281571f19744154a3b03bcd3f01ab (diff) |
improve mandatory fields, #9260
Diffstat (limited to 'rt/share')
9 files changed, 32 insertions, 67 deletions
diff --git a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default b/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default deleted file mode 100644 index 2c0698ec2..000000000 --- a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default +++ /dev/null @@ -1,12 +0,0 @@ -<%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 deleted file mode 100644 index 4779411ce..000000000 --- a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList +++ /dev/null @@ -1,15 +0,0 @@ -<%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 deleted file mode 100644 index 0d69bc27b..000000000 --- a/rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay +++ /dev/null @@ -1,24 +0,0 @@ -<%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/Search/Bulk.html b/rt/share/html/Search/Bulk.html index 84f2c8230..4a510ce97 100755 --- a/rt/share/html/Search/Bulk.html +++ b/rt/share/html/Search/Bulk.html @@ -441,13 +441,20 @@ unless ( $ARGS{'AddMoreAttach'} ) { } } } - my @tempresults = ( + my @statusresults = + ProcessTicketStatus( TicketObj => $Ticket, ARGSRef => \%ARGS ); + + my @tempresults = ( @watchresults, @basicresults, @dateresults, - @updateresults, @linkresults, @cfresults + @updateresults, @linkresults, @cfresults, + @statusresults ); @tempresults = - map { loc( "Ticket [_1]: [_2]", $Ticket->Id, $_ ) } @tempresults; + map { + $_ =~ /^Ticket \d+:/ ? $_ : + loc( "Ticket [_1]: [_2]", $Ticket->Id, $_ ) + } @tempresults; @results = ( @results, @tempresults ); } diff --git a/rt/share/html/Ticket/Display.html b/rt/share/html/Ticket/Display.html index a6850bb1e..59adbd68d 100755 --- a/rt/share/html/Ticket/Display.html +++ b/rt/share/html/Ticket/Display.html @@ -164,9 +164,12 @@ if ($ARGS{'id'} eq 'new') { push @Actions, ProcessTicketLinks( ARGSRef => \%ARGS, TicketObj => $TicketObj ); push @Actions, ProcessTicketDates( ARGSRef => \%ARGS, TicketObj => $TicketObj ); push @Actions, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj ); + # If this fails due to required fields being empty, it will set + # notes('RedirectToBasics'). + push @Actions, ProcessTicketStatus( ARGSRef => \%ARGS, TicketObj => $TicketObj ); - # XXX: we shouldn't block actions here if user has no right to see the ticket, - # but we should allow him to see actions he has done + # XXX: we shouldn't block actions here if user has no right to see the + # ticket, but we should allow him to see actions he has done unless ($TicketObj->CurrentUserHasRight('ShowTicket')) { Abort("No permission to view ticket"); } @@ -197,7 +200,14 @@ if (@Actions) { my $key = Digest::MD5::md5_hex( rand(1024) ); push @{ $session{"Actions"}->{$key} ||= [] }, @Actions; $session{'i'}++; - my $url = RT->Config->Get('WebURL') . "Ticket/Display.html?id=" . $TicketObj->id . "&results=" . $key; + my $url = RT->Config->Get('WebURL'); + if ( $m->notes('RedirectToBasics') ) { + $url .= 'Ticket/Modify.html'; + } + else { + $url .= 'Ticket/Display.html'; + } + $url .= '?id=' . $TicketObj->id . "&results=" . $key; $url .= '#' . $ARGS{Anchor} if $ARGS{Anchor}; RT::Interface::Web::Redirect($url); } diff --git a/rt/share/html/Ticket/Elements/CheckMandatoryFields b/rt/share/html/Ticket/Elements/CheckMandatoryFields deleted file mode 100644 index 3d0324f98..000000000 --- a/rt/share/html/Ticket/Elements/CheckMandatoryFields +++ /dev/null @@ -1,9 +0,0 @@ -<%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/Elements/EditCustomFields b/rt/share/html/Ticket/Elements/EditCustomFields index 918f4d4f5..943170677 100755 --- a/rt/share/html/Ticket/Elements/EditCustomFields +++ b/rt/share/html/Ticket/Elements/EditCustomFields @@ -105,6 +105,11 @@ $m->callback( %ARGS, CallbackName => 'MassageCustomFields', CustomFields => $Cus my $single_column = RT->Config->Get('EditCustomFieldsSingleColumn'); +# show hints for missing required fields +foreach my $field ( $TicketObj->MissingRequiredFields ) { + $m->notes('InvalidField-' . $field->Id => 'Required to resolve'); +} + </%INIT> <%ARGS> $NamePrefix => '' diff --git a/rt/share/html/Ticket/Modify.html b/rt/share/html/Ticket/Modify.html index b80d86f68..9f1a95932 100755 --- a/rt/share/html/Ticket/Modify.html +++ b/rt/share/html/Ticket/Modify.html @@ -79,8 +79,10 @@ $m->comp( # Now let callbacks have a chance at editing %ARGS $m->callback( TicketObj => $TicketObj, CustomFields => $CustomFields, ARGSRef => \%ARGS ); -my @results = ProcessTicketBasics(TicketObj => $TicketObj, ARGSRef => \%ARGS); +my @results; +push @results, ProcessTicketBasics(TicketObj => $TicketObj, ARGSRef => \%ARGS); push @results, ProcessObjectCustomFieldUpdates(Object => $TicketObj, ARGSRef => \%ARGS); +push @results, ProcessTicketStatus(TicketObj => $TicketObj, ARGSRef => \%ARGS); $TicketObj->ApplyTransactionBatch; diff --git a/rt/share/html/Ticket/ModifyAll.html b/rt/share/html/Ticket/ModifyAll.html index 1776c40d8..cd9bb3891 100755 --- a/rt/share/html/Ticket/ModifyAll.html +++ b/rt/share/html/Ticket/ModifyAll.html @@ -236,6 +236,7 @@ unless ($OnlySearchForPeople or $OnlySearchForGroup or $ARGS{'AddMoreAttach'} ) push @results, ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS ); push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS); } + push @results, ProcessTicketStatus( TicketObj => $Ticket, ARGSRef => \%ARGS ); $Ticket->ApplyTransactionBatch; |