[Rt-commit] rt branch, 4.2/cf-validation-messages, created. rt-4.0.6-489-g0e59860
Ruslan Zakirov
ruz at bestpractical.com
Thu Aug 23 21:00:40 EDT 2012
The branch, 4.2/cf-validation-messages has been created
at 0e5986034ed4c750338938f80af3c0ad751991ae (commit)
- Log -----------------------------------------------------------------
commit 0e5986034ed4c750338938f80af3c0ad751991ae
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Fri Aug 24 04:09:24 2012 +0400
use messages returned by ValidateCustomFields
ValidateCustomFields component returns validation
errors in list context for a while. We can use it
instead of looping through custom fields once again.
Prefix messages with custom field name as we did in
every caller.
diff --git a/share/html/Elements/ValidateCustomFields b/share/html/Elements/ValidateCustomFields
index 922b885..855f460 100644
--- a/share/html/Elements/ValidateCustomFields
+++ b/share/html/Elements/ValidateCustomFields
@@ -90,7 +90,7 @@ while ( my $CF = $CustomFields->Next ) {
my $msg =
loc( "Input can not be parsed as an IP address" );
$m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
- push @res, $msg;
+ push @res, loc($CF->Name) .': '. $msg;
$valid = 0;
}
}
@@ -101,7 +101,7 @@ while ( my $CF = $CustomFields->Next ) {
my $msg =
loc( "Input can not be parsed as an IP address range" );
$m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
- push @res, $msg;
+ push @res, loc($CF->Name) .': '. $msg;
$valid = 0;
}
}
@@ -111,7 +111,7 @@ while ( my $CF = $CustomFields->Next ) {
my $msg = loc("Input must match [_1]", $CF->FriendlyPattern);
$m->notes( ('InvalidField-' . $CF->Id) => $msg );
- push @res, $msg;
+ push @res, loc($CF->Name) .': '. $msg;
$valid = 0;
}
}
diff --git a/share/html/SelfService/Create.html b/share/html/SelfService/Create.html
index e28ab0f..097cad4 100755
--- a/share/html/SelfService/Create.html
+++ b/share/html/SelfService/Create.html
@@ -121,29 +121,29 @@ $Queue => undef
my @results;
my $queue_obj = RT::Queue->new($session{'CurrentUser'});
$queue_obj->Load($Queue);
-my $CFs = $queue_obj->TicketCustomFields();
-my $ValidCFs = $m->comp(
- '/Elements/ValidateCustomFields',
- CustomFields => $CFs,
- ARGSRef => \%ARGS
-);
my $skip_create = 0;
+
+{
+ my ($status, @msg) = $m->comp(
+ '/Elements/ValidateCustomFields',
+ CustomFields => $queue_obj->TicketCustomFields,
+ ARGSRef => \%ARGS
+ );
+ unless ($status) {
+ push @results, @msg;
+ $skip_create = 1;
+ }
+}
+
$m->callback( CallbackName => 'BeforeCreate', ARGSRef => \%ARGS, skip_create => \$skip_create, results => \@results );
if ( defined($ARGS{'id'}) and $ARGS{'id'} eq 'new' ) { # new ticket?
- if ( $ValidCFs && !$skip_create ) {
+ if ( !$skip_create ) {
$m->comp('Display.html', %ARGS);
$RT::Logger->crit("After display call; error is $@");
$m->abort();
}
- elsif ( !$ValidCFs ) {
- # Invalid CFs
- while (my $CF = $CFs->Next) {
- my $msg = $m->notes('InvalidField-' . $CF->Id) or next;
- push @results, $CF->Name . ': ' . $msg;
- }
- }
}
</%init>
diff --git a/share/html/Ticket/Update.html b/share/html/Ticket/Update.html
index 14d13ad..d3bc54a 100755
--- a/share/html/Ticket/Update.html
+++ b/share/html/Ticket/Update.html
@@ -284,21 +284,17 @@ if ( $ARGS{'SubmitTicket'} ) {
my @squelchlist = grep {not $checked{$_}} split /,/, ($ARGS{'TxnRecipients'}||'');
$ARGS{'SquelchMailTo'} = \@squelchlist if @squelchlist;
- my $CFs = $TicketObj->TransactionCustomFields;
- my $ValidCFs = $m->comp(
+ my ($status, @msg) = $m->comp(
'/Elements/ValidateCustomFields',
- CustomFields => $CFs,
+ CustomFields => $TicketObj->TransactionCustomFields,
NamePrefix => "Object-RT::Transaction--CustomField-",
ARGSRef => \%ARGS
);
- unless ( $ValidCFs ) {
+ unless ( $status ) {
+ push @results, @msg;
$checks_failure = 1;
- while (my $CF = $CFs->Next) {
- my $msg = $m->notes('InvalidField-' . $CF->Id) or next;
- push @results, loc($CF->Name) . ': ' . $msg;
- }
}
- my $status = $m->comp('/Elements/GnuPG/SignEncryptWidget:Check',
+ $status = $m->comp('/Elements/GnuPG/SignEncryptWidget:Check',
self => $gnupg_widget,
TicketObj => $TicketObj,
);
diff --git a/share/html/m/ticket/create b/share/html/m/ticket/create
index b42787d..b460488 100644
--- a/share/html/m/ticket/create
+++ b/share/html/m/ticket/create
@@ -147,14 +147,6 @@ $m->callback( QueueObj => $QueueObj, title => \$title, results => \@results, ARG
$QueueObj->Disabled && Abort(loc("Cannot create tickets in a disabled queue."));
-my $CFs = $QueueObj->TicketCustomFields();
-
-my $ValidCFs = $m->comp(
- '/Elements/ValidateCustomFields',
- CustomFields => $CFs,
- ARGSRef => \%ARGS
-);
-
# deal with deleting uploaded attachments
foreach my $key (keys %ARGS) {
if ($key =~ m/^DeleteAttach-(.+)$/) {
@@ -183,6 +175,18 @@ unless (keys %{$session{'Attachments'}} and $ARGS{'id'} eq 'new') {
my $checks_failure = 0;
+{
+ my ($status, @msg) = $m->comp(
+ '/Elements/ValidateCustomFields',
+ CustomFields => $QueueObj->TicketCustomFields,
+ ARGSRef => \%ARGS
+ );
+ unless ( $status ) {
+ $checks_failure = 1;
+ push @results, @msg;
+ }
+}
+
my $gnupg_widget = $m->comp('/Elements/GnuPG/SignEncryptWidget:new', Arguments => \%ARGS );
$m->comp( '/Elements/GnuPG/SignEncryptWidget:Process',
self => $gnupg_widget,
@@ -220,18 +224,11 @@ $m->callback( CallbackName => 'BeforeCreate', ARGSRef => \%ARGS, skip_create =>
checks_failure => $checks_failure, results => \@results );
if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} eq 'new')) { # new ticket?
- if ( $ValidCFs && !$checks_failure && !$skip_create ) {
+ if ( !$checks_failure && !$skip_create ) {
$m->comp('show', %ARGS);
$RT::Logger->crit("After display call; error is $@");
$m->abort();
}
- elsif ( !$ValidCFs ) {
- # Invalid CFs
- while (my $CF = $CFs->Next) {
- my $msg = $m->notes('InvalidField-' . $CF->Id) or next;
- push @results, $CF->Name . ': ' . $msg;
- }
- }
}
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list