[Seaside] SUCondition problem
Florian Minjat
florian.minjat at emn.fr
Mon May 21 18:02:06 UTC 2007
Hi again,
I just played a little with the SUCondition which is clearly the key
to my problem (sorry I didn't saw it before). I have a problem though.
If I use an evaluator as the condition, the result is returned in
javascript as a string. The immediate problem is that a string as
condition in javascript always equals true.
The following code always shows an alert :
html scriptaculous script alert: 'test !'; condition: (html evaluator
callback: [:s | false])
I tried to add an '== ''false''' in several ways inside the condition,
but I can't manage to get something to work.
So I add a new SUStatement named SUEquals with this method :
printContentOn: aStream
super printContentOn: aStream.
aStream nextPut: $=; nextPut: $=; javascript: self statement
So now this script doesn't show an alert :
html scriptaculous script alert: 'test !'; condition: ((html evaluator
callback: [:s | false]) equals: 'false')
Was this possible without the creation of the SUEquals class ?
Florian
Florian Minjat wrote:
> Cédrick ENIT wrote:
>> Florian Minjat a écrit :
>>> Hi,
>>> I am trying to do a form with validators and confirmation in ajax.
>>> All the validation need to be done server-side. My problem is to do
>>> something like this in a onClick statement :
>>> isFormValid ifTrue: [html updater id: 'formDivId'; callback: [:r
>>> | self renderValidFormOn: r]
>>> But I need to evaluate isFormValid server-side with an Ajax request
>>> because it will only be set as true when the form is validate by
>>> ajax. So currently this updater never shows up.
>>> I think I could use the SUEvaluator, but couldn't find any example.
>>> So I don't really know how to use it.
>>> Does somebody know how to do that using as much seaside as
>>> possible? And can somebody give me an example of SUEvaluator?
>> you have an example in the scriptaculous demo... CSS highlight in the
>> ajax tab...
>> SUEvaluator is like an updater except it injects a javascript chunk in
>> the pasge if I remember well...
>>
>> your problem is because isFormValid is always set to false ?
>>
>> maybe after each form input, you need to make a SURequest so as to
>> change this...
>>
>> hth
>>
>> cédrick
>
> My problem is that isFormValid must be processed server-side. I could
> add an hidden input for each validator and check it at the end but this
> is pretty heavy, not very secure, and I still need to add a test in
> javascript before the updater. I would rather prefer to use an Ajax
> request to get the value to test.
>
> I looked at the example in the demo. SUEvaluator could be the trick to
> change the value of an hidden input.
>
> But isn't there a simple way to do something like this :
> onClick: ('if (', html ajaxRequest callback: [^ self isFormValid] ,')',
> html updater... )
>
> Florian
More information about the seaside
mailing list