[ic] Email and &and profile check

Peter peter at pajamian.dhs.org
Fri Sep 26 02:29:53 UTC 2008

On 09/25/2008 08:02 AM, Mike Heins wrote:
> Quoting Stefan Hornburg (Racke) (racke at linuxia.de):
>> Hello, 
>> the &and is kind of counterintuitive when it comes to check the same variable multiple times:
>> email=email_only Please enter a valid email address.
>> &and
>> email=match email_verify Emails you entered do not match.
>> &and
>> email=unique userdb:email Unfortunately, an account with this email address already exists.
>> So if fail to enter an email address at all, I see all three error messages at once.
>> Isn't that confusing?

Perhaps, but I think the point is to tell the user all the errors at 
once as opposed to making them fix one error before telling them the 
next one (thereby resulting in them having to continuously refresh the 
page time after time until they get all the errors fixed).  I would not 
be in favor of changing this behavior unless there is some way to 
control it and the default is the current behavior.

> If we can determine the bounds of the entire expression, and can determine
> if it is an &and, then we probably should not perform tests 2 and 3. I am
> not sure that state machine is sophisticated enough to do that, but it
> is in the check_order routine of Vend::Order, or more precisely &chain_checks.
> I can see right now the problem is that we have no real way to bound
> the expression. So probably for right now, there is no solution

I don't think it's needed to determine the bounds of the entire 
expression.  Since it is evaluated top to bottom anyways, all we need to 
know is if we can skip the current expression or not based on what the 
previous expression evaluated to.  We would do this in the check_order 
sub, actually, around line 1054 or so, and all the info needed is 
available there already.

> short
> of enhancing the error tag to allow display of only the first error.

I don't think that would be possible as the error messages get catted 
together in one message separated by " and " (around line 1085).


More information about the interchange-users mailing list