summaryrefslogtreecommitdiff
path: root/rt/share
diff options
context:
space:
mode:
authormark <mark>2011-05-31 23:30:13 +0000
committermark <mark>2011-05-31 23:30:13 +0000
commite02e5448d8fdad322dbe5562f92d9623e5d6f0dd (patch)
tree0b7385d69d9a8bac89f8d7387387faa8eb55ac2e /rt/share
parentdd65ba99bb9281571f19744154a3b03bcd3f01ab (diff)
improve mandatory fields, #9260
Diffstat (limited to 'rt/share')
-rw-r--r--rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Elements/Tabs/Default12
-rw-r--r--rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Modify.html/BeforeActionList15
-rw-r--r--rt/share/html/Callbacks/CheckMandatoryFields/Ticket/Update.html/BeforeDisplay24
-rwxr-xr-xrt/share/html/Search/Bulk.html13
-rwxr-xr-xrt/share/html/Ticket/Display.html16
-rw-r--r--rt/share/html/Ticket/Elements/CheckMandatoryFields9
-rwxr-xr-xrt/share/html/Ticket/Elements/EditCustomFields5
-rwxr-xr-xrt/share/html/Ticket/Modify.html4
-rwxr-xr-xrt/share/html/Ticket/ModifyAll.html1
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;