[Seaside] Re: Seaside Async and form submission

Ryan Simmons ryan.craig.simmons at gmail.com
Thu Feb 19 08:22:20 UTC 2009


Had a quick look at Seaside Async, can't see that it supports
submitting a whole form.

If you need to use Seaside Async, you could use liveCallbacks on all
the selects but link them up to a momento then commit the momento back
to your model when the user clicks on the anchor

2009/2/19 Ryan Simmons <ryan.craig.simmons at gmail.com>:
> Hi Carl you can do this with Scriptaculous as follows
> just change the anchor to
>
> anchor
>  onClick: (html updater
>                     triggerForm: 'testForm';
>                     id: '' " You need a id fro the html element Id
> that you are updating with the render "
>                     callback: [:r |
>                              self counter: counter + 1.
>                              self renderOnHtml: r]);
>  with: 'test'.
>
> This is from 2.8 though, never worked on 2.6 :)
>
> Ryan
>
> 2009/2/18 Carl Gundel <carlg at libertybasic.com>:
>> I tried this with Seaside 2.8 with the same results.  :-/  I also noticed
>> that my renderOnHtml: method was rendering the form again, so I put the form
>> code in the renderContentOn: method.  No difference.
>>
>> Okay, I can see that this can be made to work (sort of) by assigning the
>> liveCallback to the selectTag, but this just doesn't meet my needs.  Isn't
>> there some way to force a form's contents to be submitted when an anchor has
>> a liveCallback?  Shouldn't an Ajax action be able to use all the contents of
>> a form?
>>
>> -Carl
>>
>> On Feb 18, 2009, at 2:42 PM, Carl Gundel wrote:
>>
>>>
>>> On Feb 18, 2009, at 12:59 PM, Carl Gundel wrote:
>>>
>>>> I'm using Async with my Run BASIC project.  I am still using Seaside 2.6,
>>>> but I plan to migrate forward as soon as I can get my Ajax stuff working
>>>> okay.  have a dynamically generated form with a couple of listboxes and an
>>>> anchor.  When the link is clicked I am expecting the values to get scraped
>>>> from the controls and assigned to my model, but it doesn't seem to be
>>>> happening.  The form is getting built and rendered correctly as far as I can
>>>> tell.
>>>
>>> Okay, here is a complete tiny class that seems to exhibit the same
>>> behavior.  The counter increments when the anchor is clicked, but the value
>>> of selection is always nil.
>>>
>>> Any ideas?
>>>
>>> -Carl
>>>
>>> Smalltalk defineClass: #AsyncTest
>>>        superclass: #{Seaside.WAComponent}
>>>        indexedType: #none
>>>        private: false
>>>        instanceVariableNames: 'list selection counter '
>>>        classInstanceVariableNames: ''
>>>        imports: ''
>>>        category: 'Run BASIC'!
>>>
>>> !AsyncTest class methodsFor: 'as yet unclassified'!
>>>
>>> canBeRoot
>>>        ^ true!
>>>
>>> initialize
>>>        self registerAsApplication: 'asyncTest'.! !
>>>
>>> !AsyncTest methodsFor: 'rendering'!
>>>
>>> renderContentOn: html
>>>        self renderOnHtml: html!
>>>
>>> rendererClass
>>>        ^Seaside.WARenderCanvas!
>>>
>>> renderOnHtml: html
>>>        | select anchor |
>>>        html
>>>                text: 'Async test';
>>>                break.
>>>        (html form)
>>>                id: 'testForm';
>>>                with:
>>>                                [html
>>>                                        text: 'Counter = ' , self counter
>>> asString;
>>>                                        break.
>>>                                (html div)
>>>                                        id: 'section';
>>>                                        with:
>>>                                                        [select := html
>>> select.
>>>                                                        select list: self
>>> list.
>>>                                                        select on:
>>> #selection of: self.
>>>                                                        anchor := html
>>> anchor.
>>>                                                        anchor
>>>
>>>  liveCallback:
>>>
>>>      [:h |
>>>
>>>      self counter: counter + 1.
>>>
>>>      self renderOnHtml: h];
>>>
>>>  submitFormNamed: 'testForm';
>>>                                                                text:
>>> 'test'.
>>>                                                        html break.
>>>                                                        html text: self
>>> selection]]! !
>>>
>>> !AsyncTest methodsFor: 'accessing'!
>>>
>>> counter
>>>        counter isNil ifTrue: [ counter := 0 ].
>>>        ^counter!
>>>
>>> counter: anObject
>>>        counter := anObject!
>>>
>>> list
>>>        list isNil ifTrue: [ list := OrderedCollection with: '1' with:
>>> 'one' with: 'won' with: 'Juan' ].
>>>        ^list!
>>>
>>> list: anObject
>>>        list := anObject!
>>>
>>> selection
>>>        ^selection!
>>>
>>> selection: anObject
>>>        selection := anObject! !
>>>
>>> #{AsyncTest} initialize!
>>>
>>
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>


More information about the seaside mailing list