From 3ec758e3885dbd204c3c015fe8587d905cedf274 Mon Sep 17 00:00:00 2001 From: sunnavy Date: Mon, 30 Oct 2023 10:56:28 -0400 Subject: [PATCH] Support custom labels for ValidateCustomFields This is initially for FormTools, where we support to customize field labels, so the validation messages can be consistent with input labels. --- share/html/Elements/ValidateCustomFields | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/share/html/Elements/ValidateCustomFields b/share/html/Elements/ValidateCustomFields index 9655db7ce88..d435fa9641e 100644 --- a/share/html/Elements/ValidateCustomFields +++ b/share/html/Elements/ValidateCustomFields @@ -82,9 +82,15 @@ while ( my $CF = $CustomFields->Next ) { $m->notes(('Field-' . $CF->Id) => $submitted->{Values} // $submitted->{Value}); + # Validation messages can display an alternate label if the RT UI + # shows something other than the default CF Name. To use a different + # label, provide %Labels with the CF name as the key and the alternate + # label as the value. + + my $label = $Labels{$CF->Name} || $CF->Name; if ( $invalid ) { $m->notes( 'InvalidField-' . $CF->Id => $invalid_message ); - push @res, $CF->Name . ': ' . $invalid_message; + push @res, $label . ': ' . $invalid_message; $valid = 0; next; } @@ -112,7 +118,7 @@ while ( my $CF = $CustomFields->Next ) { my ($ok, $msg) = $CF->_CanonicalizeValue( $ref ); unless ($ok) { $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg ); - push @res, $CF->Name .': '. $msg; + push @res, $label . ': ' . $msg; $valid = 0; } } @@ -120,7 +126,7 @@ while ( my $CF = $CustomFields->Next ) { if (!$CF->MatchPattern($value)) { my $msg = $CF->FriendlyPattern; $m->notes( ('InvalidField-' . $CF->Id) => $msg ); - push @res, $CF->Name .': '. $msg; + push @res, $label . ': ' . $msg; $valid = 0; } @@ -138,7 +144,7 @@ while ( my $CF = $CustomFields->Next ) { while (my $ocfv = $existing->Next) { my $msg = loc("'[_1]' is not a unique value", $value); $m->notes( ('InvalidField-' . $CF->Id) => $msg ); - push @res, $CF->Name .': '. $msg; + push @res, $label . ': ' . $msg; $valid = 0; last; } @@ -153,4 +159,5 @@ $Object => RT::Ticket->new( $session{'CurrentUser'}) $CustomFields $ARGSRef $ValidateUnsubmitted => 0 +%Labels => () # Optional hash of alternate labels for CFs